Transaction History

Contract Address: 0xb87b6077d59b01ab9fa8cd5a1a21d02a4d60d358 (POA Bridge Contract)


  • POA Balance:
  • Transaction Count: 1947
  • POA Value: Coming soon.

The POA Value was calculated using the CoinMarketCap.com API price of 0.1030582624 per POA token.



Showing 20 out of a total 1947 transactions.

BlockTX HashAgeFromToValue
5211495 0xa1850cc47216714ee86...7 hours Bridge Validator IN  POA Bridge Contract POA ERC200 POA
5211460 0xd3685c80d39b2f0e7a0...7 hours Bridge Validator IN  POA Bridge Contract POA ERC200 POA
5211379 0xdf5c0dcfd31f45f0dbe...7 hours 0xb500a1429000ae31571.... IN  POA Bridge Contract POA ERC207632.97200014 POA
5211322 0x7f55270ba1e879568d3...7 hours 0xb500a1429000ae31571.... IN  POA Bridge Contract POA ERC2011418.7587501 POA
5211260 0x09d65c4f952ffb13a4e...7 hours 0xb500a1429000ae31571.... IN  POA Bridge Contract POA ERC2011418.7587501 POA
5211206 0x74922095f888ec7b059...7 hours Bridge Validator IN  POA Bridge Contract POA ERC200 POA
5211121 0x98e089bdb1a79c48d05...8 hours 0xb500a1429000ae31571.... IN  POA Bridge Contract POA ERC207461.08375014 POA
5211054 0x700ca2c7c51df3b0595...8 hours Bridge Validator IN  POA Bridge Contract POA ERC200 POA
5211039 0xf34e7037f58e144baaf...8 hours 0xf1fd52ee843bfed02de.... IN  POA Bridge Contract POA ERC209591.9 POA
5211037 0x602736be0b138ad2508...8 hours 0xb500a1429000ae31571.... IN  POA Bridge Contract POA ERC207461.08375014 POA
5210941 0x3efe12f59faf610677e...8 hours 0xb500a1429000ae31571.... IN  POA Bridge Contract POA ERC2014999.9889991 POA
5210886 0x4e1b96fd3d7089d9710...8 hours 0xb500a1429000ae31571.... IN  POA Bridge Contract POA ERC2014999.9897501 POA
5210800 0x470769787c2eec1b832...8 hours 0xb500a1429000ae31571.... IN  POA Bridge Contract POA ERC207999.98975014 POA
5210762 0x8679a040425b8f0b362...8 hours Bridge Validator IN  POA Bridge Contract POA ERC200 POA
5210740 0xbc2dfa2583703c4a4e1...8 hours 0xf1fd52ee843bfed02de.... IN  POA Bridge Contract POA ERC2010523.99 POA
5210682 0x8c59084176317a0873d...8 hours 0xb500a1429000ae31571.... IN  POA Bridge Contract POA ERC2014999.9897501 POA
5210675 0xd224a20617c2b2e945f...8 hours 0xb500a1429000ae31571.... IN  POA Bridge Contract POA ERC2011323.0000001 POA
5210618 0xafb421b58ecc614aeb5...8 hours 0xb500a1429000ae31571.... IN  POA Bridge Contract POA ERC203676.38875014 POA
5209918 0xf20d5c6defd7167345a...9 hours Bridge Validator IN  POA Bridge Contract POA ERC200 POA
5209146 0xbd784f4c7e783134ead...10 hours 0xb500a1429000ae31571.... IN  POA Bridge Contract POA ERC2011554.5877501 POA
ParentTxHashBlockAgeFromToValue
0xa1850cc47216714ee8652114957 hours 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...7632.972
0xd3685c80d39b2f0e7a052114607 hours 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...3785.7765
0x74922095f888ec7b05952112067 hours 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...7461.0735
0x700ca2c7c51df3b059552110548 hours 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...3886.9435
0x8679a040425b8f0b36252107628 hours 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...11323.9795
0xf20d5c6defd7167345a52099189 hours 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...11461.32081
0xac26a9973fdc185e751520888211 hours 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...3715.2625
0x9672e2a4097d46e3338520827512 hours 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...11194.22338
0xd4c07e3fa10401e5fd6520786112 hours 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...7250.058253
0x0ea2146db234a868587520772212 hours 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...10823.890165
0xcd2e4afe5d3760e92ad520760612 hours 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...3698.889238
0xfec286d3b9a58425d2b520754413 hours 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...3726.068087
0x099c3b312c37e5a0ccd520751813 hours 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...7460.958221
0x316c08b9ec6b837ab76520743513 hours 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...7618.253427
0x42ce698f8da4d4daff5520738013 hours 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...11404.463668
0xd49be3236a669902570520561815 hours 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...7703.298037
0xf2968c7c865b267d904520395018 hours 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...3552.187552
0x58d52b31579cae3f5cb520390518 hours 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...10994.2617
0x0c7366734a300048e25520350818 hours 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...3744.535751
0x1435bd725b9fb809e8e520196920 hours 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...6969.589567
0x5e078194e1ca00b348a520188121 hours 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...10558.555216
0x1df3da6b7458170f1ff520136021 hours 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...7108.777583
0xb27bd8481cdbf20ad7b520129021 hours 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...7135.533499
0xa4da30494f4ca83a4a0520120622 hours 0xb87b6077d59b01ab9fa...0x074976a8d5f07da5dad...82570
0xc45bb71956ee79f921a520113922 hours 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...10860.921572
0x1e9f5f8dc5b700e0dd6520097422 hours 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...7017.266168
0x1da8017ba0f4f5b9cf9520088922 hours 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...7150.308767
0x304bed2eacb9d7a6d64520081922 hours 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...7289.160059
0xc81dab4f3a0f4cb08cd520068222 hours 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...3595.015423
0xf2b2da7835be99603ad520066822 hours 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...10900.036206
0xe3ecbb5813928b2f868520061022 hours 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...3670.674574
0x58ffdddf3feb09a3b25520053822 hours 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...15088.751497
0x9743d0e94f2e0fc13ac520019823 hours 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...11490.565525
0x685a9edd90b5f17cc0d519997223 hours 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...16028.192495
0xf4a6991c4cbad6c9e9c51987241 day 0xb87b6077d59b01ab9fa...0x074976a8d5f07da5dad...36017
0x0ba4eeebed2de035d1151967701 day 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...10134.258573
0xb0da66669174cee698851962561 day 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...6740.765703
0x273e104470b840de48151962001 day 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...13741.009168
0x21b70dc4a7984efafcb51958831 day 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...10393.628891
0xbcec512c886c8866e3951867511 day 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...10999.9795
0x1b43f78e7e5d78a494251863341 day 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...9999.989751
0x1bad7857bf0c708aa1f51863061 day 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...10628.0095
0x5dc3178566aa1f5f82d51855841 day 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...6826.962737
0x824b8c70cd7328ffeaa51854541 day 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...6843.464447
0x1f34534b3d221effa1651854171 day 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...10478.243758
0x99998d48106bc78d77351852611 day 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...6935.326131
0x05128da8309464552f551852201 day 0xb87b6077d59b01ab9fa...0xf1fd52ee843bfed02de...12393
0x5f9ec6fcab6551d1c9e51851721 day 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...10798.810134
0xe4885515206588f7f0c51826792 days 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...10855.13598
0xf6edc94bf2dd18014e751824792 days 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...10999.311007
0xc33143655dca3d974cd51817972 days 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...11102.153278
0x37f2a25c2fbf57d9a7d51815552 days 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...11199.770998
0xd52807d64e3c0f2c27251611933 days 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...11582.462588
0x8a9e5836ad63d8633c851599423 days 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...7834.391627
0x9910b04f755b824ad3751557403 days 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...11913.15575
0xdd15924381f41203c1351509193 days 0xb87b6077d59b01ab9fa...0xcf085317456133e93d7...999.956294427
0x22d2a7d35d3d1e43dc551502363 days 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...10957.803177
0x692c58a262223d1da1251500243 days 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...11030.249957
0xc0970f946973dd0f8d051495453 days 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...7354.534125
0x94ccac18b675332b9d151434044 days 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...14803.414501
0x76acabfa851def9a6fd51432124 days 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...4823.98975
0xec73ac86e83294cb59f51380024 days 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...9198.719355
0x2bdc147e07324eb742151378884 days 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...6130.953238
0xe1deb7101c08da2104551347904 days 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...12443.432552
0x531def55902c117854751338014 days 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...12608.579004
0x8871554c9482aeedcf151336264 days 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...9526.515427
0x2d695a8764f7d786ec251333224 days 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...6374.790442
0x1145214592324f16b0e51326314 days 0xb87b6077d59b01ab9fa...0x074976a8d5f07da5dad...115029
0x51759e6e20264cecd1a51320645 days 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...12781.941552
0x9ea8053bb45799b450751294105 days 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...12734.175303
0xc1d28515ca2c994dcbd51289445 days 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...6462.096209
0x7a64493ae718ce09a0651254935 days 0xb87b6077d59b01ab9fa...0x46188f0bb4928e3d851...50300.31
0x5271d9641071168c66951240755 days 0xb87b6077d59b01ab9fa...0x46188f0bb4928e3d851...818
0x7da382532269d3bd14551236225 days 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...9259.373245
0x20d56e05bca533d96b551234505 days 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...12481.190541
0xa052692e7526b7fcae751233145 days 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...9384.348313
0xac5d800b3ad7356824851229445 days 0xb87b6077d59b01ab9fa...0xf1fd52ee843bfed02de...10155
0x7f9e423077ba04c842e51229155 days 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...6376.99743
0xf0b919d8a87c72f056751228855 days 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...6420.499395
0x2eb4c724d6426938c2e51205705 days 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...6459.149232
0x2db1a25a037d70f3b7651196935 days 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...9775.63456
0xc950df5825b1683c4bf51096876 days 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...12986.48145
0x526e3b37a63428df40f50949331 week 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...8388.924697
0xe0b9e5bfc150430e52750884071 week 0xb87b6077d59b01ab9fa...0x4a6f9846fbbde38fe51...1539
0x642d754cf23444d3f7c50721481 week 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...12447.868288
0xbb03d0aa36c011f8c6150715901 week 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...8490.40513
0x021f45ed3717ae1726050691411 week 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...12667.320616
0x9fd921dde15280c568650690011 week 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...12807.037084
0x709db9fd21a26301a8f50684761 week 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...8510.722481
0x62cb00a13d23c888f3750684181 week 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...4279.197077
0x526d5d790df9125bfbb50683471 week 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...8670.416981
0x9e2a588e517dccba23050668001 week 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...8741.488162
0xda001e652853d0dd66750644411 week 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...8664.230766
0xea6b64b12238673209450602941 week 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...13285.58896
0x5efb2260f16a94384ec50598171 week 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...7543.139975
0x3681041bdeb0116635350481571 week 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...13476.886731
0x431cc0a3ddfca8d464a50472311 week 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...9218.966221
0x7cecff37562b04c2d2450233411 week 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...13445.197768
0xcbd5b551555c19128ea50175781 week 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...9364.356258
0x9def70503cda952f3be49893351 week 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...13106.663154
0x9da9779ebc484e71eea49764002 weeks 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...4312.712973
0x3dea622fa194409acc349762962 weeks 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...8774.189221
0x0168bbdcd52885669e249535112 weeks 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...8518.887983
0x9babb84b40c2256dce749527812 weeks 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...12744.600232
0x0a583bb14cecd9c124449493392 weeks 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...12680.369181
0x0619aad9b0a2a4c230c49491892 weeks 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...12661.571143
0xf8123e21aa41f97044949459852 weeks 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...8510.189114
0xc3bb8bb437a9c2469fa49451822 weeks 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...12894.122817
0x15c00e10f5d0fa9cc1a49412492 weeks 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...8700.763958
0x8dfa535cbc51736442349405462 weeks 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...8548.489995
0x997c7379cc02e69785c49405052 weeks 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...4391.574368
0x93185dccfc11473fe9149403962 weeks 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...13369.108782
0xdba2772abc83fc14a9949402692 weeks 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...13655.694986
0x267b01fc01df4f921ad49401212 weeks 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...9044.109251
0x4002ec71235828524d749398592 weeks 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...13680.605002
0x1fc4e486ae810a3a71c49396972 weeks 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...9384.991932
0x59a927fce7bc36585a849390482 weeks 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...14221.27049
0x9243fbde6de7226455849345012 weeks 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...14189.142026
0x8b1da3f41d1608d947249288542 weeks 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...13998.870615
0x4c8014fbc525d81bbb049269542 weeks 0xb87b6077d59b01ab9fa...0x18d32ea483eae1e2578...1050
0x5e89020d1a7e307cb3049106332 weeks 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...2000
0xf836ce9841ca7daeab949105742 weeks 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...14442.805677
0x4f5220c3db8fcf5fb3649101322 weeks 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...14640.563914
0xc6c0977e17b812dc32a49099692 weeks 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...9811.23225
0x92eb07c77fb86acba0c49098952 weeks 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...4917.546377
0x80af71a66a2132c301d49098452 weeks 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...10022.418022
0xf2f777e095f22e27e1e48960002 weeks 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...9663.605197
0x5aae476f61ef11f3f3248940122 weeks 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...14789.650982
0xc271b937990d5af17b648813482 weeks 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...15128.486577
0x40db7d207d9cfc41ec248810932 weeks 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...10166.420839
0xd466c1ca6698da9efab48805012 weeks 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...5097.084717
0xa398448159e3aafb3ac48802852 weeks 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...10488.579124
0x360205a62eac248929848752032 weeks 0xb87b6077d59b01ab9fa...0x0bee6c5ae91178415a1...15843.000489

Contract Source Code Verified!

Contract Name:EternalStorageProxy
Compiler Version:v0.4.23+commit.124ca40d
Optimization Enabled:Yes

Contract Source Code

pragma solidity 0.4.23;

// File: contracts/upgradeability/EternalStorage.sol

/**
 * @title EternalStorage
 * @dev This contract holds all the necessary state variables to carry out the storage of any contract.
 */
contract EternalStorage {

    mapping(bytes32 => uint256) internal uintStorage;
    mapping(bytes32 => string) internal stringStorage;
    mapping(bytes32 => address) internal addressStorage;
    mapping(bytes32 => bytes) internal bytesStorage;
    mapping(bytes32 => bool) internal boolStorage;
    mapping(bytes32 => int256) internal intStorage;

}

// File: contracts/upgradeability/UpgradeabilityOwnerStorage.sol

/**
 * @title UpgradeabilityOwnerStorage
 * @dev This contract keeps track of the upgradeability owner
 */
contract UpgradeabilityOwnerStorage {
    // Owner of the contract
    address private _upgradeabilityOwner;

    /**
    * @dev Tells the address of the owner
    * @return the address of the owner
    */
    function upgradeabilityOwner() public view returns (address) {
        return _upgradeabilityOwner;
    }

    /**
    * @dev Sets the address of the owner
    */
    function setUpgradeabilityOwner(address newUpgradeabilityOwner) internal {
        _upgradeabilityOwner = newUpgradeabilityOwner;
    }
}

// File: contracts/upgradeability/Proxy.sol

/**
 * @title Proxy
 * @dev Gives the possibility to delegate any call to a foreign implementation.
 */
contract Proxy {

  /**
  * @dev Tells the address of the implementation where every call will be delegated.
  * @return address of the implementation to which it will be delegated
  */
    function implementation() public view returns (address);

  /**
  * @dev Fallback function allowing to perform a delegatecall to the given implementation.
  * This function will return whatever the implementation call returns
  */
    function () payable public {
        address _impl = implementation();
        require(_impl != address(0));
        assembly {
            /*
                0x40 is the "free memory slot", meaning a pointer to next slot of empty memory. mload(0x40)
                loads the data in the free memory slot, so `ptr` is a pointer to the next slot of empty
                memory. It's needed because we're going to write the return data of delegatecall to the
                free memory slot.
            */
            let ptr := mload(0x40)
            /*
                `calldatacopy` is copy calldatasize bytes from calldata
                First argument is the destination to which data is copied(ptr)
                Second argument specifies the start position of the copied data.
                    Since calldata is sort of its own unique location in memory,
                    0 doesn't refer to 0 in memory or 0 in storage - it just refers to the zeroth byte of calldata.
                    That's always going to be the zeroth byte of the function selector.
                Third argument, calldatasize, specifies how much data will be copied.
                    calldata is naturally calldatasize bytes long (same thing as msg.data.length)
            */
            calldatacopy(ptr, 0, calldatasize)
            /*
                delegatecall params explained:
                gas: the amount of gas to provide for the call. `gas` is an Opcode that gives
                    us the amount of gas still available to execution

                _impl: address of the contract to delegate to

                ptr: to pass copied data

                calldatasize: loads the size of `bytes memory data`, same as msg.data.length

                0, 0: These are for the `out` and `outsize` params. Because the output could be dynamic,
                        these are set to 0, 0 so the output data will not be written to memory. The output
                        data will be read using `returndatasize` and `returdatacopy` instead.

                result: This will be 0 if the call fails and 1 if it succeeds
            */
            let result := delegatecall(gas, _impl, ptr, calldatasize, 0, 0)
            /*

            */
            /*
                ptr current points to the value stored at 0x40,
                because we assigned it like ptr := mload(0x40).
                Because we use 0x40 as a free memory pointer,
                we want to make sure that the next time we want to allocate memory,
                we aren't overwriting anything important.
                So, by adding ptr and returndatasize,
                we get a memory location beyond the end of the data we will be copying to ptr.
                We place this in at 0x40, and any reads from 0x40 will now read from free memory
            */
            mstore(0x40, add(ptr, returndatasize))
            /*
                `returndatacopy` is an Opcode that copies the last return data to a slot. `ptr` is the
                    slot it will copy to, 0 means copy from the beginning of the return data, and size is
                    the amount of data to copy.
                `returndatasize` is an Opcode that gives us the size of the last return data. In this case, that is the size of the data returned from delegatecall
            */
            returndatacopy(ptr, 0, returndatasize)

            /*
                if `result` is 0, revert.
                if `result` is 1, return `size` amount of data from `ptr`. This is the data that was
                copied to `ptr` from the delegatecall return data
            */
            switch result
            case 0 { revert(ptr, returndatasize) }
            default { return(ptr, returndatasize) }
        }
    }
}

// File: contracts/upgradeability/UpgradeabilityStorage.sol

/**
 * @title UpgradeabilityStorage
 * @dev This contract holds all the necessary state variables to support the upgrade functionality
 */
contract UpgradeabilityStorage {
    // Version name of the current implementation
    uint256 internal _version;

    // Address of the current implementation
    address internal _implementation;

    /**
    * @dev Tells the version name of the current implementation
    * @return string representing the name of the current version
    */
    function version() public view returns (uint256) {
        return _version;
    }

    /**
    * @dev Tells the address of the current implementation
    * @return address of the current implementation
    */
    function implementation() public view returns (address) {
        return _implementation;
    }
}

// File: contracts/upgradeability/UpgradeabilityProxy.sol

/**
 * @title UpgradeabilityProxy
 * @dev This contract represents a proxy where the implementation address to which it will delegate can be upgraded
 */
contract UpgradeabilityProxy is Proxy, UpgradeabilityStorage {
    /**
    * @dev This event will be emitted every time the implementation gets upgraded
    * @param version representing the version name of the upgraded implementation
    * @param implementation representing the address of the upgraded implementation
    */
    event Upgraded(uint256 version, address indexed implementation);

    /**
    * @dev Upgrades the implementation address
    * @param version representing the version name of the new implementation to be set
    * @param implementation representing the address of the new implementation to be set
    */
    function _upgradeTo(uint256 version, address implementation) internal {
        require(_implementation != implementation);
        require(version > _version);
        _version = version;
        _implementation = implementation;
        emit Upgraded(version, implementation);
    }
}

// File: contracts/upgradeability/OwnedUpgradeabilityProxy.sol

/**
 * @title OwnedUpgradeabilityProxy
 * @dev This contract combines an upgradeability proxy with basic authorization control functionalities
 */
contract OwnedUpgradeabilityProxy is UpgradeabilityOwnerStorage, UpgradeabilityProxy {
  /**
  * @dev Event to show ownership has been transferred
  * @param previousOwner representing the address of the previous owner
  * @param newOwner representing the address of the new owner
  */
    event ProxyOwnershipTransferred(address previousOwner, address newOwner);

    /**
    * @dev the constructor sets the original owner of the contract to the sender account.
    */
    function OwnedUpgradeabilityProxy() public {
        setUpgradeabilityOwner(msg.sender);
    }

    /**
    * @dev Throws if called by any account other than the owner.
    */
    modifier onlyProxyOwner() {
        require(msg.sender == proxyOwner());
        _;
    }

    /**
    * @dev Tells the address of the proxy owner
    * @return the address of the proxy owner
    */
    function proxyOwner() public view returns (address) {
        return upgradeabilityOwner();
    }

    /**
    * @dev Allows the current owner to transfer control of the contract to a newOwner.
    * @param newOwner The address to transfer ownership to.
    */
    function transferProxyOwnership(address newOwner) public onlyProxyOwner {
        require(newOwner != address(0));
        emit ProxyOwnershipTransferred(proxyOwner(), newOwner);
        setUpgradeabilityOwner(newOwner);
    }

    /**
    * @dev Allows the upgradeability owner to upgrade the current version of the proxy.
    * @param version representing the version name of the new implementation to be set.
    * @param implementation representing the address of the new implementation to be set.
    */
    function upgradeTo(uint256 version, address implementation) public onlyProxyOwner {
        _upgradeTo(version, implementation);
    }

    /**
    * @dev Allows the upgradeability owner to upgrade the current version of the proxy and call the new implementation
    * to initialize whatever is needed through a low level call.
    * @param version representing the version name of the new implementation to be set.
    * @param implementation representing the address of the new implementation to be set.
    * @param data represents the msg.data to bet sent in the low level call. This parameter may include the function
    * signature of the implementation to be called with the needed payload
    */
    function upgradeToAndCall(uint256 version, address implementation, bytes data) payable public onlyProxyOwner {
        upgradeTo(version, implementation);
        require(address(this).call.value(msg.value)(data));
    }
}

// File: contracts/upgradeability/EternalStorageProxy.sol

/**
 * @title EternalStorageProxy
 * @dev This proxy holds the storage of the token contract and delegates every call to the current implementation set.
 * Besides, it allows to upgrade the token's behaviour towards further implementations, and provides basic
 * authorization control functionalities
 */
contract EternalStorageProxy is OwnedUpgradeabilityProxy, EternalStorage {}

Contract ABI

[{"constant":true,"inputs":[],"name":"proxyOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"version","type":"uint256"},{"name":"implementation","type":"address"}],"name":"upgradeTo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"version","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"implementation","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"upgradeabilityOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"version","type":"uint256"},{"name":"implementation","type":"address"},{"name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferProxyOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"previousOwner","type":"address"},{"indexed":false,"name":"newOwner","type":"address"}],"name":"ProxyOwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"version","type":"uint256"},{"indexed":true,"name":"implementation","type":"address"}],"name":"Upgraded","type":"event"}]

Contract Creation Code

6080604052600436106100825763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663025313a281146100cd5780633ad06d16146100fe57806354fd4d50146101245780635c60da1b1461014b5780636fde820214610160578063a9c45fcb14610175578063f1739cae146101d1575b600061008c6101f2565b9050600160a060020a03811615156100a357600080fd5b60405136600082376000803683855af43d82016040523d6000833e8080156100c9573d83f35b3d83fd5b3480156100d957600080fd5b506100e2610201565b60408051600160a060020a039092168252519081900360200190f35b34801561010a57600080fd5b50610122600435600160a060020a0360243516610210565b005b34801561013057600080fd5b50610139610245565b60408051918252519081900360200190f35b34801561015757600080fd5b506100e26101f2565b34801561016c57600080fd5b506100e261024b565b604080516020600460443581810135601f81018490048402850184019095528484526101229482359460248035600160a060020a03169536959460649492019190819084018382808284375094975061025a9650505050505050565b3480156101dd57600080fd5b50610122600160a060020a0360043516610313565b600254600160a060020a031690565b600061020b61024b565b905090565b610218610201565b600160a060020a031633600160a060020a031614151561023757600080fd5b61024182826103a6565b5050565b60015490565b600054600160a060020a031690565b610262610201565b600160a060020a031633600160a060020a031614151561028157600080fd5b61028b8383610210565b30600160a060020a0316348260405180828051906020019080838360005b838110156102c15781810151838201526020016102a9565b50505050905090810190601f1680156102ee5780820380516001836020036101000a031916815260200191505b5091505060006040518083038185875af192505050151561030e57600080fd5b505050565b61031b610201565b600160a060020a031633600160a060020a031614151561033a57600080fd5b600160a060020a038116151561034f57600080fd5b7f5a3e66efaa1e445ebd894728a69d6959842ea1e97bd79b892797106e270efcd9610378610201565b60408051600160a060020a03928316815291841660208301528051918290030190a16103a381610437565b50565b600254600160a060020a03828116911614156103c157600080fd5b60015482116103cf57600080fd5b600182905560028054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff1990911681179091556040805184815290517f4289d6195cf3c2d2174adf98d0e19d4d2d08887995b99cb7b100e7ffe795820e9181900360200190a25050565b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790555600a165627a7a72305820ee68763dc3da53f2c2c3e189b5f2ad5cfcb6aef82028308b340be7a7aaf766740029

Swarm Source

bzzr://ee68763dc3da53f2c2c3e189b5f2ad5cfcb6aef82028308b340be7a7a