Transaction History

Contract Address: 0xb87b6077d59b01ab9fa8cd5a1a21d02a4d60d358 (POA Bridge Contract)


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

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



Showing 20 out of a total 421 transactions.

BlockTX HashAgeFromToValue
2716111 0x9d67854b107e8bfd266...3 hours 0x02f2753aa71db52d79f.... IN  POA Bridge Contract POA ERC2012410.56 POA
2715427 0x5015bdfdd1f38728a43...4 hours 0x02f2753aa71db52d79f.... IN  POA Bridge Contract POA ERC209106.88 POA
2712823 0x8e588406de04862a8a4...8 hours 0x02f2753aa71db52d79f.... IN  POA Bridge Contract POA ERC208920.06 POA
2711922 0xf93bd48def0a953d089...9 hours 0x02f2753aa71db52d79f.... IN  POA Bridge Contract POA ERC208846.13 POA
2711179 0xce6fabd40c6460a9131...10 hours 0xae37aab6be8c20d1c71.... IN  POA Bridge Contract POA ERC204310.99 POA
2706320 0x7878a70dc9cea22c802...17 hours 0xb7253b640d10963c6e7.... IN  POA Bridge Contract POA ERC20900 POA
2706150 0xb803212a81e74e5c1be...17 hours Bridge Validator IN  POA Bridge Contract POA ERC200 POA
2702623 0xab3d40e9882dd1762ea...22 hours Bridge Validator IN  POA Bridge Contract POA ERC200 POA
2701916 0xb15d96d85a60541ebed...23 hours 0x02f2753aa71db52d79f.... IN  POA Bridge Contract POA ERC2011922.06 POA
2701519 0xc3e9e96e47c219aa15f...1 day 0x02f2753aa71db52d79f.... IN  POA Bridge Contract POA ERC2011761.21 POA
2701339 0x0eb6cc0b02ac6d7eb63...1 day 0x02f2753aa71db52d79f.... IN  POA Bridge Contract POA ERC2011576.4 POA
2700042 0x45b4bb8238e05610dd4...1 day 0x02f2753aa71db52d79f.... IN  POA Bridge Contract POA ERC208448.54 POA
2697254 0x465dbe2223913a239a4...1 day 0x02f2753aa71db52d79f.... IN  POA Bridge Contract POA ERC205509.47 POA
2696145 0x649286f141aef8b7394...1 day 0x02f2753aa71db52d79f.... IN  POA Bridge Contract POA ERC208149.83 POA
2685451 0x523067fe40e7e1caa32...1 day Bridge Validator IN  POA Bridge Contract POA ERC200 POA
2685380 0xe26b155334adbf22ec1...1 day Bridge Validator IN  POA Bridge Contract POA ERC200 POA
2681702 0x2d287f1bc620e30ebd8...2 days 0xae37aab6be8c20d1c71.... IN  POA Bridge Contract POA ERC20738.9 POA
2681089 0x7cc91fef39fbcda9340...2 days Bridge Validator IN  POA Bridge Contract POA ERC200 POA
2675999 0x6dc9d1f59a83d33facc...2 days 0x9548df6469e35f6d1bc.... IN  POA Bridge Contract POA ERC20748 POA
2675986 0x8dd8ebd5362c283a2ac...2 days 0xcf0f9652fdb7f7c8ea5.... IN  POA Bridge Contract POA ERC201200000 POA
ParentTxHashBlockAgeFromToValue
0xb803212a81e74e5c1be270615017 hours 0xb87b6077d59b01ab9fa...0x306b16a86776d991788...21116.57
0xab3d40e9882dd1762ea270262322 hours 0xb87b6077d59b01ab9fa...0x2b4e5cfd55b90ad53f6...7138
0x523067fe40e7e1caa3226854511 day 0xb87b6077d59b01ab9fa...0xa518eb50f76d9f4737a...15858
0xe26b155334adbf22ec126853801 day 0xb87b6077d59b01ab9fa...0xa518eb50f76d9f4737a...2281.86
0x7cc91fef39fbcda934026810892 days 0xb87b6077d59b01ab9fa...0xa518eb50f76d9f4737a...6628.61
0xe38150625a16f33132126759682 days 0xb87b6077d59b01ab9fa...0xcf0f9652fdb7f7c8ea5...1200000
0x9ae38e7120a26c78b8c26676972 days 0xb87b6077d59b01ab9fa...0xa518eb50f76d9f4737a...7415.84
0xd0886c9f435c9b7a79c26671213 days 0xb87b6077d59b01ab9fa...0xa518eb50f76d9f4737a...13203.13
0xd0a55da065a67551c6626661613 days 0xb87b6077d59b01ab9fa...0xa518eb50f76d9f4737a...4685.16
0xd7a7c2d3110fe143df826654453 days 0xb87b6077d59b01ab9fa...0xa518eb50f76d9f4737a...10825
0xfd899cd316770442d0b26583033 days 0xb87b6077d59b01ab9fa...0xcf0f9652fdb7f7c8ea5...1200000
0x8e825d97e788cf93ea826534543 days 0xb87b6077d59b01ab9fa...0xb7253b640d10963c6e7...900
0x31dc2107bb9664a7e6c26532683 days 0xb87b6077d59b01ab9fa...0x306b16a86776d991788...81551.58
0x64cea5f23926b012d4b26521783 days 0xb87b6077d59b01ab9fa...0x717599610f7088e5ce8...10138.73
0x3fd3079755e1578374d26510143 days 0xb87b6077d59b01ab9fa...0xb7253b640d10963c6e7...999
0x6e6463dbf958b67522826508963 days 0xb87b6077d59b01ab9fa...0xb7253b640d10963c6e7...999
0x2aec5f426abc393b10626495124 days 0xb87b6077d59b01ab9fa...0xa518eb50f76d9f4737a...9765.23
0x9a1620f05be3d847e4526441204 days 0xb87b6077d59b01ab9fa...0xa518eb50f76d9f4737a...10686.24
0x2c8539e82c8cf3dc37b26386404 days 0xb87b6077d59b01ab9fa...0x9a4a90e2732f3fa4087...13998
0x7fe8825c8d7d141aaa626355704 days 0xb87b6077d59b01ab9fa...0xb7253b640d10963c6e7...900
0xc9f68d7eaa1a1a7077426338374 days 0xb87b6077d59b01ab9fa...0xb3205efce640778fa9d...800
0x4b8fac4230a1d268f4626333174 days 0xb87b6077d59b01ab9fa...0x39c7bc5496f4eaaa1ff...1000
0x5f70b28a2cb970d782226221055 days 0xb87b6077d59b01ab9fa...0x8d4bbc1b533ab9e3a74...75000
0xb28ff2bcea1aef1270a26196935 days 0xb87b6077d59b01ab9fa...0x8d4bbc1b533ab9e3a74...80000
0x9fc3351f0f8ad3f644c26175635 days 0xb87b6077d59b01ab9fa...0x8d4bbc1b533ab9e3a74...10000
0x552b4a15d1a5568d94626163345 days 0xb87b6077d59b01ab9fa...0x39c7bc5496f4eaaa1ff...1000
0x993c7b40922052f757526156025 days 0xb87b6077d59b01ab9fa...0xcea6435bd3463764f83...23248
0xe2efaecb7798b53f7b426152946 days 0xb87b6077d59b01ab9fa...0xc0ffcd8875843f0ca04...750
0x573c6149522c837e2de26140306 days 0xb87b6077d59b01ab9fa...0x306b16a86776d991788...60092.03
0xdb17dde79cb3a4347f026049996 days 0xb87b6077d59b01ab9fa...0x8d4bbc1b533ab9e3a74...85000
0x32dcd50ba9a02dd70c026027166 days 0xb87b6077d59b01ab9fa...0x8d4bbc1b533ab9e3a74...80000
0x855456a166f0dc60ecc26001686 days 0xb87b6077d59b01ab9fa...0x8d4bbc1b533ab9e3a74...750
0x24ca55702390026bd0725996766 days 0xb87b6077d59b01ab9fa...0x306b16a86776d991788...60069.93
0x900c5ae1f139857bfc025945751 week 0xb87b6077d59b01ab9fa...0x0def72cb13f38bfbd23...33829
0x9221b635b4aa8c0e3df25892691 week 0xb87b6077d59b01ab9fa...0x8d4bbc1b533ab9e3a74...86000
0x977aaaa1f445511bc9d25860081 week 0xb87b6077d59b01ab9fa...0x8d4bbc1b533ab9e3a74...10000
0x38f57e6647754c5214a25842161 week 0xb87b6077d59b01ab9fa...0x8d4bbc1b533ab9e3a74...50000
0x819d0597b7b04e8bcce25834281 week 0xb87b6077d59b01ab9fa...0x3752f0a521b2e383693...760
0x8f21d2dbb3204fa525d25816941 week 0xb87b6077d59b01ab9fa...0x3752f0a521b2e383693...800
0x5bd46c41ff80d1e2d7925807341 week 0xb87b6077d59b01ab9fa...0x39c7bc5496f4eaaa1ff...1000
0x3458b9e0a50da9ba86e25805441 week 0xb87b6077d59b01ab9fa...0x39c7bc5496f4eaaa1ff...1047.86
0x7d6c15d732e1beb437a25731111 week 0xb87b6077d59b01ab9fa...0x66d5c8c27d7454a0316...750
0x7bb7f7e23df462a34ad25666411 week 0xb87b6077d59b01ab9fa...0xa518eb50f76d9f4737a...4052.72
0x3aa977064de955f2ea525663371 week 0xb87b6077d59b01ab9fa...0xa518eb50f76d9f4737a...11793.44
0x21ad12f168befefc7ca25661671 week 0xb87b6077d59b01ab9fa...0xa518eb50f76d9f4737a...7629.33
0x4e3f2a90ab4d420541b25659011 week 0xb87b6077d59b01ab9fa...0xa518eb50f76d9f4737a...8999.99
0xd5fb79882f017ef0e4d25648131 week 0xb87b6077d59b01ab9fa...0xa518eb50f76d9f4737a...10872.59
0xed66f2342d3e80c69d025514631 week 0xb87b6077d59b01ab9fa...0xee303d6bd1928c0f16f...1526.41
0x5b85d5a1af1d0521f6625488881 week 0xb87b6077d59b01ab9fa...0x8d4bbc1b533ab9e3a74...50000
0x69d01cb9af5a8e3ec4f25465701 week 0xb87b6077d59b01ab9fa...0x8d4bbc1b533ab9e3a74...51000
0xbed8485baaefab2e44825446851 week 0xb87b6077d59b01ab9fa...0xa518eb50f76d9f4737a...7535.17
0x9d1590387ee09405e9d25429321 week 0xb87b6077d59b01ab9fa...0xa518eb50f76d9f4737a...10277.73
0x93da2b2de19aaceea9f25425561 week 0xb87b6077d59b01ab9fa...0xa518eb50f76d9f4737a...10398.04
0x7d86adbf4749b8ecbf225423361 week 0xb87b6077d59b01ab9fa...0xa518eb50f76d9f4737a...5300.98
0x5bb7cd71f9b269474b125358271 week 0xb87b6077d59b01ab9fa...0x4a6f9846fbbde38fe51...750
0xef0da5912032494b8af25345381 week 0xb87b6077d59b01ab9fa...0xf311950b445f936dc3f...750
0x254f46978d9f0e2f44d25345351 week 0xb87b6077d59b01ab9fa...0x4a6f9846fbbde38fe51...750
0xf1918641f0f265f902a25296431 week 0xb87b6077d59b01ab9fa...0xa518eb50f76d9f4737a...7974.17
0xcd9870ddb67aca487df25289871 week 0xb87b6077d59b01ab9fa...0xa518eb50f76d9f4737a...4721.59
0xa7286407e36e3ec39a625278671 week 0xb87b6077d59b01ab9fa...0xa518eb50f76d9f4737a...769.55
0xd843f089b00bee5d86f25277911 week 0xb87b6077d59b01ab9fa...0xecc996953e976a305ee...10161.28
0x618e32155d562a7a7c025277431 week 0xb87b6077d59b01ab9fa...0xecc996953e976a305ee...9899.99
0xb0fd3734c811afcd08225183131 week 0xb87b6077d59b01ab9fa...0xa91c173412015bb9742...1000
0x00be7446208a45682ab25174731 week 0xb87b6077d59b01ab9fa...0x7539dcdfa7a6b97d08f...10000
0xb6bc895532a0d36d9d225171231 week 0xb87b6077d59b01ab9fa...0x8d4bbc1b533ab9e3a74...750
0xc1ae060010f501ad58025170651 week 0xb87b6077d59b01ab9fa...0xcf0f9652fdb7f7c8ea5...750
0x84824e0f02738ffe31125138951 week 0xb87b6077d59b01ab9fa...0x30d53bb9b353f382290...1853.62
0x22d6baa9ea7a8dfcafd25138571 week 0xb87b6077d59b01ab9fa...0x918453d249a22b6a853...9972.5
0xf18e9ffbb85e7de887e25135471 week 0xb87b6077d59b01ab9fa...0x918453d249a22b6a853...9994.7515
0x8c7e2763501666ce8b525129051 week 0xb87b6077d59b01ab9fa...0x9f574c8612b76b47eb9...999
0x895cf8ba1e9801af3b625124631 week 0xb87b6077d59b01ab9fa...0xcf0f9652fdb7f7c8ea5...750
0x98dbbe7e16d4661620725123391 week 0xb87b6077d59b01ab9fa...0x8527153b9a747adce9f...750
0x343f0eb0c9c9736c55525113271 week 0xb87b6077d59b01ab9fa...0xcf0f9652fdb7f7c8ea5...1200000
0xbabd03d61ea18a7605425110351 week 0xb87b6077d59b01ab9fa...0x53c7227aefa01edb488...1000
0xc06efb72c0b4c5dd34325092061 week 0xb87b6077d59b01ab9fa...0x3752f0a521b2e383693...901.75
0x5fec684e09a2a995a2225079641 week 0xb87b6077d59b01ab9fa...0xc74a0ef003610328674...760.26
0xd4b8c72f3ce4e6205c425029191 week 0xb87b6077d59b01ab9fa...0x97deb1ac82aa596b491...865
0xa2b40e45724b2bcfe3a25026881 week 0xb87b6077d59b01ab9fa...0x53c7227aefa01edb488...1050
0x8f748d4ea770128309525002251 week 0xb87b6077d59b01ab9fa...0x53c7227aefa01edb488...1000
0x6126789568cbb79b19124992251 week 0xb87b6077d59b01ab9fa...0xcf0f9652fdb7f7c8ea5...1200000
0x79dc65bae29cd20e55a24989361 week 0xb87b6077d59b01ab9fa...0xcf0f9652fdb7f7c8ea5...750
0x2a1d778f4779adc35fb24928311 week 0xb87b6077d59b01ab9fa...0x3752f0a521b2e383693...0.5
0x398d90a9157b50ec71124912771 week 0xb87b6077d59b01ab9fa...0x3752f0a521b2e383693...0.5
0xad39f312737e03bbfdd24911041 week 0xb87b6077d59b01ab9fa...0x3752f0a521b2e383693...0.5
0x250280d3b3867e4fa7c24854861 week 0xb87b6077d59b01ab9fa...0xd14de4c642743245b26...0.5
0x354b2755438e35fd83c24854861 week 0xb87b6077d59b01ab9fa...0xd14de4c642743245b26...0.5
0x72b9ab29fc1d66935ff24854861 week 0xb87b6077d59b01ab9fa...0xd14de4c642743245b26...0.5
0xf782602d1a6fb099b4c24854861 week 0xb87b6077d59b01ab9fa...0xd14de4c642743245b26...0.5
0x9e6da1303ee257bd7b024854851 week 0xb87b6077d59b01ab9fa...0xd14de4c642743245b26...0.5
0x1bf03157f283572da0a24854851 week 0xb87b6077d59b01ab9fa...0xd14de4c642743245b26...0.5
0x92f86f2268d6393bfc424854851 week 0xb87b6077d59b01ab9fa...0xd14de4c642743245b26...0.5
0x19520006450915d6fd024854851 week 0xb87b6077d59b01ab9fa...0xd14de4c642743245b26...0.5
0xb0717222f667e402d4324854841 week 0xb87b6077d59b01ab9fa...0xd14de4c642743245b26...0.5
0xaea0cda4325ad66aeeb24854841 week 0xb87b6077d59b01ab9fa...0xd14de4c642743245b26...0.5
0xb39a705940474ce6d5024854841 week 0xb87b6077d59b01ab9fa...0xd14de4c642743245b26...0.5
0x293004043596d42e40624854841 week 0xb87b6077d59b01ab9fa...0xd14de4c642743245b26...0.5
0xbe0d684cbb6b1fbf48824854841 week 0xb87b6077d59b01ab9fa...0xd14de4c642743245b26...0.5
0xaee12679dddd216747b24854841 week 0xb87b6077d59b01ab9fa...0xd14de4c642743245b26...0.5
0x8c9aedcfecccab4956b24854831 week 0xb87b6077d59b01ab9fa...0xd14de4c642743245b26...0.5
0x55400cf1f1de275d73724854831 week 0xb87b6077d59b01ab9fa...0xd14de4c642743245b26...0.5
0xb83499e7d7c3e79ac5724854831 week 0xb87b6077d59b01ab9fa...0xd14de4c642743245b26...0.5
0x4fd05a94804a2c1124824854831 week 0xb87b6077d59b01ab9fa...0xd14de4c642743245b26...0.5
0xcff720dadc89f0505bd24854831 week 0xb87b6077d59b01ab9fa...0xd14de4c642743245b26...0.5
0xcfc464eea04a4c7709324854821 week 0xb87b6077d59b01ab9fa...0xd14de4c642743245b26...0.5
0x1e42713baa6bb83c1af24854821 week 0xb87b6077d59b01ab9fa...0xd14de4c642743245b26...0.5
0x5183d06b3563e1161a824854821 week 0xb87b6077d59b01ab9fa...0xd14de4c642743245b26...0.5
0xdd2740f1873c4419afb24854821 week 0xb87b6077d59b01ab9fa...0xd14de4c642743245b26...0.5
0x74c2ce7f90b75e628b724854821 week 0xb87b6077d59b01ab9fa...0xd14de4c642743245b26...0.5
0x179bc1e379020d10d8524854811 week 0xb87b6077d59b01ab9fa...0xd14de4c642743245b26...0.5
0x88bf9d539dcb4f75ea724854811 week 0xb87b6077d59b01ab9fa...0xd14de4c642743245b26...0.5
0x03038ffa1252fefd39224854811 week 0xb87b6077d59b01ab9fa...0xd14de4c642743245b26...0.5
0x0fed7449c9f08c38ac624854811 week 0xb87b6077d59b01ab9fa...0xd14de4c642743245b26...0.5
0x28ebc6b09b421b9566f24854811 week 0xb87b6077d59b01ab9fa...0xd14de4c642743245b26...0.5
0xeb213ae4e5ad6f80d2724854811 week 0xb87b6077d59b01ab9fa...0xd14de4c642743245b26...0.5
0x6d7584905ee01de673c24854801 week 0xb87b6077d59b01ab9fa...0xd14de4c642743245b26...0.5
0x9451745c5c4da9f836624854801 week 0xb87b6077d59b01ab9fa...0xd14de4c642743245b26...0.5
0x854772f1d31cde5622d24854801 week 0xb87b6077d59b01ab9fa...0xd14de4c642743245b26...0.5
0x893c4f8e74992d7336924854801 week 0xb87b6077d59b01ab9fa...0xd14de4c642743245b26...0.5
0x5333ef7e06af867ae4224854791 week 0xb87b6077d59b01ab9fa...0xd14de4c642743245b26...0.5
0x8bb08916378ab05f59b24854791 week 0xb87b6077d59b01ab9fa...0xd14de4c642743245b26...0.5
0x741817ecbde55c6796124854791 week 0xb87b6077d59b01ab9fa...0xd14de4c642743245b26...0.5
0xd0035524a1690332b4c24854791 week 0xb87b6077d59b01ab9fa...0xd14de4c642743245b26...0.5
0x8a7cd9010872d9d9bfe24854791 week 0xb87b6077d59b01ab9fa...0xd14de4c642743245b26...0.5
0x3352c18c4cbabfe4e9624854791 week 0xb87b6077d59b01ab9fa...0xd14de4c642743245b26...0.5
0xe4338fc1b4bdae3795324854781 week 0xb87b6077d59b01ab9fa...0xd14de4c642743245b26...0.5
0xcfefe119ae9663eba8724854781 week 0xb87b6077d59b01ab9fa...0xd14de4c642743245b26...0.5
0x5a3f5ab037c2d29007d24854781 week 0xb87b6077d59b01ab9fa...0xd14de4c642743245b26...0.5
0xe4177218959235d7a3924854781 week 0xb87b6077d59b01ab9fa...0xd14de4c642743245b26...0.5
0x9bc5c691c06d078b3da24854711 week 0xb87b6077d59b01ab9fa...0xd14de4c642743245b26...0.5
0xbd269cbced01601b43324854651 week 0xb87b6077d59b01ab9fa...0xd14de4c642743245b26...0.5
0xbf6f228a5e352fef19524854631 week 0xb87b6077d59b01ab9fa...0xd14de4c642743245b26...0.5
0xfa377f7e73b9b83fd7f24854591 week 0xb87b6077d59b01ab9fa...0xd14de4c642743245b26...0.5
0xf48c632416693d58b7e24854471 week 0xb87b6077d59b01ab9fa...0xd14de4c642743245b26...0.5
0x169dfda178b14f3b39024854351 week 0xb87b6077d59b01ab9fa...0xd14de4c642743245b26...0.5
0xf2e8e6b611a0df6bef624829441 week 0xb87b6077d59b01ab9fa...0xca9b0753e2ea13d7bbe...0.5
0xc27987ab9878ff125f024828711 week 0xb87b6077d59b01ab9fa...0x4471974679e4c956f37...25

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