Transaction Hash:
Block:
10733135 at Aug-26-2020 01:40:10 AM +UTC
Transaction Fee:
0.2721295608956301 ETH
$582.35
Gas Used:
5,110,271 Gas / 53.2514931 Gwei
Emitted Events:
| 20 |
ChiToken.Transfer( from=0x0000000000000000000000000000000000000000, to=[Sender] 0xaccd3bec3983eb916d9799e539abbde316e82851, value=140 )
|
Account State Difference:
| Address | Before | After | State Difference | ||
|---|---|---|---|---|---|
| 0x00000000...b0eF1fA1c | |||||
|
0x002e0800...64949070d
Miner
| (2Miners: SOLO) | 4.070314578241778254 Eth | 4.342444139137408354 Eth | 0.2721295608956301 | |
| 0x056202ea...32562c7E6 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x05a48b8c...CFc269177 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x09292008...9A7a2e343 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x0BcF09C1...a0D05992F |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x0cd9b92f...bC968e5F4 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x0E212536...89868ac77 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x1018783d...228c393ae |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x11282c16...1A8088224 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x184FFf5d...FA0BD4468 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x1aCc9ef3...b6A3B441f |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x1b180f61...5170BdE3D |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x1e49481E...E683A6c65 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x219feE08...14Dfc14ce |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x21aE1DE3...bC4a3bA99 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x2278caa3...c6B45b9E6 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x22cDb3ce...562d4397d |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x2482Bb3c...D9080e26E |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x26385b32...C5ad0cB01 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x28751177...2B88B480b |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x29379f9C...00Ee12695 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x2E0A11C2...d18aE2b23 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x30323DF9...Ac9df8C6c |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x3203A259...1C5F26EcC |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x333e49A2...800707160 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x355cA01d...59B27cF8F |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x35dDEd9B...975fA2fd5 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x3EB01aeC...570F998f2 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x3f9f4928...06e123009 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x42ce297A...d2448c29e |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x4716c2ea...8E31a7d27 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x48BaA581...758AbfB65 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x49A0d314...9C289C172 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x4A844866...28dfDFC4E |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x4AD0dD21...8C40939B9 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x4cB2Dc63...338f507cC |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x4DdA7Ff2...35d762689 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x4Df6d882...8790D060e |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x4eFa419f...64254C9fb |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x505f817b...c8AC95A6c |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x51D63e1C...e74A191b3 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x51DBa195...71973C777 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x52B6e5de...15f757A10 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x52Bd3Bb3...D7F039D00 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x551E1A40...6eE58aE82 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x558b93b5...29e1D45E7 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x57A44875...C29a19d77 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x5eD7992f...B637dD3DA |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x606d34C7...222231B08 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x62244BfE...b95CF99cd |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x63723361...1d058A565 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x6886f67E...A86555718 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x6ad91C47...A4f5368c6 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x6bE306c1...a0FAeb2Ec |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x6D5C1BA1...f71e5C207 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x74f9574F...A1C859be0 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x7BEcc6a9...7faBfa7F6 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x7D75702E...2E23B1bb6 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x7D91f8dD...Ce28D2B92 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x7e1C30d0...0e14068F0 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x7eF48705...0601Bc469 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x7Fd89086...d052F4cd1 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x8171A01A...f50095Bc4 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x81914E88...a5ad4B2E1 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x84d6BD14...e3E458da7 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x8AaE4572...F1C9e6878 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x8AF16109...B16a40126 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x8CcfADa3...f532525F3 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x8D1e4fB9...f917758cD |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x907F1fE6...ad6dbaB72 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x93dc77c0...52B9D0297 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x952b1A50...568b42D2f |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x96c6B449...3005df9e5 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x97839235...8566bB8a5 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x9837EF84...7BD031eE8 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x9862e583...263C58cDA |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x98BBF49C...039f75E74 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x9A05c230...1E2a11B72 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x9c573Fed...B85366d44 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x9cfe47cb...0cdc784a4 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x9d8a9089...d4cCc76C5 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0x9e1763bc...e88F3434f |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0xa03c556F...8f4a4f448 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0xA1E573e4...A80A92b50 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0xA2504BaC...26221D682 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0xa30aEAFF...C11552764 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0xA44ce253...254692218 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0xa57805FC...aA9bE671D |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0xa62C9FAb...21A3C4a68 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0xa8e6cff4...b7BAA46Fe |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0xa8fc7A6d...6Be02342a |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0xaCcD3BEc...316E82851 |
4.00904305501342124 Eth
Nonce: 446
|
3.73691349411779114 Eth
Nonce: 447
| 0.2721295608956301 | ||
| 0xb1c56c5A...ff421B5a9 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0xb20d5a7f...Fff1F0221 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0xb2caC1Ff...c439eA701 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0xb31478ba...784FC21E8 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0xB71c9b5D...acA19E724 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0xb7E66fFc...c48Dbb2D2 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0xbb33C3a4...c0aC5742C |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0xBBb70AdA...aE3692F75 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0xc0b09Be7...e05dff9FC |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0xC0BDf94B...fEAbAEC66 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0xc167c83d...28dae06fd |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0xc22ED7e5...A3424a183 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0xc307772F...4d65623F7 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0xC43B884c...0d5E733Da |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0xC7cE0620...ab27d83D0 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0xc88c4b6b...f0a03DA00 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0xC8b4567c...deAEbE2F2 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0xC8F6F58d...e25735Cd3 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0xC9fa8a2A...6d5b06b4A |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0xcA35e22c...56FB879e9 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0xca54F9D2...a939780F7 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0xca648d38...B0556Ca86 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0xcC290b65...B7da36943 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0xCe7cFf27...53C23952f |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0xCF42A93c...8D86Ac6EF |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0xd2cF8A7F...b01b215fF |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0xD35abFd2...C7E63094c |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0xd5Bb7072...1Ca716b93 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0xd87Cf53e...5a1932D84 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0xdBB68026...3cA2C2e93 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0xdc403b05...A1352232A |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0xDC7fBeeF...5E3199207 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0xdEEaE594...BA1FC1477 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0xE0434300...E5AF70f32 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0xE15c9C51...29D68ADb2 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0xE1eab1aD...4814d69BB |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0xe248C00b...Cebb7228c |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0xE2E9Ba08...E8317E593 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0xe4F5D363...32b3A04D3 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0xE50275c1...53a632F89 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0xE95dF36D...14F29302C |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0xEA41a7B7...5b0d20fc0 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0xeE54c253...A891Db680 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0xf0DA7A62...fD4939C54 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0xF42F1f17...FE6eeF5FD |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0xF64F30A8...e275b8AB1 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0xF6bb3616...e9C9E85b8 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0xf78938d4...0Cf47f8E6 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0xF93b0d0F...4aBBC7a62 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
| 0xFB8CbfB7...aAB76b743 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
|
Execution Trace
ChiToken.mint( value=140 )
-
0xb71c9b5d587e542da03eef8e7871e1eaca19e724.746d4946( ) -
0x6d5c1ba1ca1d388d039cc342ef265bff71e5c207.746d4946( ) -
0xc88c4b6bd235193d51926fd4c320e5bf0a03da00.746d4946( ) -
0x22cdb3cefc7f2e76b2f273636774959562d4397d.746d4946( ) -
0xc307772f4d264503f84f02e3507207e4d65623f7.746d4946( ) -
0xe15c9c5134a270534bceda8be7331c929d68adb2.746d4946( ) -
0xcc290b656c976cd1b427819089352c0b7da36943.746d4946( ) -
0xf42f1f17cf950293b54b6dac7c06c57fe6eef5fd.746d4946( ) -
0x7ef48705b6859ff6165e49b383b10af0601bc469.746d4946( ) -
0x606d34c73fab2bde7d0ae4a8dda8f08222231b08.746d4946( ) -
0xa62c9fab1b55ce2ecc25faf9932bc1d21a3c4a68.746d4946( ) -
0xea41a7b773f0298defa063cdf1704d35b0d20fc0.746d4946( ) -
0x4df6d8824da3d58618aa8f8eb005ddf8790d060e.746d4946( ) -
0x9c573fed27fdc20d74966a921070f8bb85366d44.746d4946( ) -
0x1acc9ef3b69ed3b0d37863fcbffc373b6a3b441f.746d4946( ) -
0xf6bb3616c262d45eed34d84c61dbde1e9c9e85b8.746d4946( ) -
0x287511777d27348e434b1e65530e74f2b88b480b.746d4946( ) -
0xe2e9ba087fd28a700dac0fbc5620618e8317e593.746d4946( ) -
0x9862e583b2d71e3af87433c12cc7579263c58cda.746d4946( ) -
0xca54f9d265c0aa6c1d47f07111f69fda939780f7.746d4946( ) -
0x30323df9ac2477b3803e8f7d5af14d7ac9df8c6c.746d4946( ) -
0xa44ce2532b94458037d850e8eb30eff254692218.746d4946( ) -
0x333e49a2deb05f006d8490af46aa2c6800707160.746d4946( ) -
0x51dba195b6f79cba196348010f6197f71973c777.746d4946( ) -
0x9e1763bc85d980c7b0099ff436a143de88f3434f.746d4946( ) -
0x2482bb3cc725555507fc1afd62c944cd9080e26e.746d4946( ) -
0x0cd9b92fb1e485fbf06ec7ecbac6acfbc968e5f4.746d4946( ) -
0x6ad91c4767ec8dd2903f61e427d25b4a4f5368c6.746d4946( ) -
0xc22ed7e5d16eb855578d5308033d34ea3424a183.746d4946( ) -
0x48baa581e4a308336b6ea5cdd850e8a758abfb65.746d4946( ) -
0xe50275c1548da3abd5173b4e567a86b53a632f89.746d4946( ) -
0x81914e88669c801a64382695e375eaaa5ad4b2e1.746d4946( ) -
0xf0da7a62c4e64bf64b846fb19c5bc53fd4939c54.746d4946( ) -
0xa8fc7a6d2ef3381aa6228174a47d5006be02342a.746d4946( ) -
0x4a8448665aeb313dee415d972525dbf28dfdfc4e.746d4946( ) -
0xee54c2538d42634243e6a6c068186e0a891db680.746d4946( ) -
0x0bcf09c1b24f6c2c5bbe4e4b4030992a0d05992f.746d4946( ) -
0x74f9574f2898055c9ab65609a6766d5a1c859be0.746d4946( ) -
0x9a05c2303275d85224622f39a904b0b1e2a11b72.746d4946( ) -
0xb20d5a7fd7e6f1c144005846e34437afff1f0221.746d4946( ) -
0xc167c83d3f050a383d20c18b3347d4128dae06fd.746d4946( ) -
0x907f1fe6756d3174d34b5485bd9c37ead6dbab72.746d4946( ) -
0x05a48b8ce3a3f97a93b4a7122d57afecfc269177.746d4946( ) -
0xf93b0d0fee0ccf38ea851a3b41d86e54abbc7a62.746d4946( ) -
0x8aae4572daad48803acd17b51bbbf1ff1c9e6878.746d4946( ) -
0x6886f67e965ce9c882fb1479204dd29a86555718.746d4946( ) -
0x1b180f6131f896f1ccf2f7415fa88525170bde3d.746d4946( ) -
0x26385b327e23b2938ca489da7ae8e24c5ad0cb01.746d4946( ) -
0x0e212536dea52baf65a4924dcfa947589868ac77.746d4946( ) -
0x4ad0dd213d434c7c1d5c37b3d67aeef8c40939b9.746d4946( ) -
0xa2504bac3a47c9bbe612aed3d77a85426221d682.746d4946( ) -
0x6be306c1c84138e414b9d4af1f13be9a0faeb2ec.746d4946( ) -
0xe4f5d3636217f91cbc1c0436eec9bfc32b3a04d3.746d4946( ) -
0x09292008e2e11d99b5de5afa560a7359a7a2e343.746d4946( ) -
0x52bd3bb3acc23810d8394ac8a9a1119d7f039d00.746d4946( ) -
0x8d1e4fb917cacfc0a010188fe29e030f917758cd.746d4946( ) -
0xbb33c3a49344911f43dced317757028c0ac5742c.746d4946( ) -
0x3203a2593ffe78dc6e18268b1ef104d1c5f26ecc.746d4946( ) -
0x49a0d314d3a8e96b0ec1cb1a59978d69c289c172.746d4946( ) -
0x219fee08e731a69729ec3245f10d86814dfc14ce.746d4946( ) -
0xc7ce0620b735cd21552206b37c72406ab27d83d0.746d4946( ) -
0x8ccfada311d74b5f05b547896e33356f532525f3.746d4946( ) -
0xa1e573e4564fc1aeada830e95e7f040a80a92b50.746d4946( ) -
0x96c6b449b5ef60727d74f6eac914ff63005df9e5.746d4946( ) -
0x62244bfec2464d06e1cd8cedf0f4489b95cf99cd.746d4946( ) -
0xa03c556f322f57accfa08d9846fbd5d8f4a4f448.746d4946( ) -
0xd2cf8a7fb31f1f1b750809b251c5512b01b215ff.746d4946( ) -
0x51d63e1c13f38836dbc2f96355db206e74a191b3.746d4946( ) -
0x57a44875c66ebd55cf54669ba7ec989c29a19d77.746d4946( ) -
0x52b6e5dec46efb0fd4efd7c039ee39015f757a10.746d4946( ) -
0x1018783ddf0bd2e44516fb82ac73acd228c393ae.746d4946( ) -
0x7fd8908652b6d2e77f7ea6969f5c521d052f4cd1.746d4946( ) -
0x97839235214d047a6edd182e0c00fdc8566bb8a5.746d4946( ) -
0x5ed7992f0b2b4c48337491d7da8f221b637dd3da.746d4946( ) -
0x551e1a402383b3245bf026b58bff9a56ee58ae82.746d4946( ) -
0x1e49481ecfa3d5f55ba0d4339077207e683a6c65.746d4946( ) -
0x184fff5d040c0ac8f6f94cd3a23af79fa0bd4468.746d4946( ) -
0xb1c56c5afd7aaca98e5a909de452296ff421b5a9.746d4946( ) -
0x2278caa39efe8d56e6bb017a2cddbfdc6b45b9e6.746d4946( ) -
0xd87cf53e3a81431e7ca215dcf1d4a565a1932d84.746d4946( ) -
0xfb8cbfb7606e6bf70273703c8793522aab76b743.746d4946( ) -
0xc0bdf94bf66d98a3ce9e925acea1350feabaec66.746d4946( ) -
0x93dc77c034e6f69803b0f94b016714452b9d0297.746d4946( ) -
0xca648d38256120fc673a0e2be201d09b0556ca86.746d4946( ) -
0x4716c2ea9d26a1515ff2b4e0443c4ac8e31a7d27.746d4946( ) -
0x11282c166e6211914db5d792305d3bc1a8088224.746d4946( ) -
0x7becc6a9598201cf26edc6c95ee3b737fabfa7f6.746d4946( ) -
0xb7e66ffc9bd6cafdd173c4ebd0cead1c48dbb2d2.746d4946( ) -
0xa8e6cff4e9bcb2f9e9677e447ef9d8db7baa46fe.746d4946( ) -
0xb31478ba54842034d7586a61bf7f401784fc21e8.746d4946( ) -
0x558b93b5cf88fa9abaf7e5e29e4bc8629e1d45e7.746d4946( ) -
0x056202ea49540532eac59bd4b4a6bab32562c7e6.746d4946( ) -
0xca35e22cb17ff7c544f7d4b755e26e356fb879e9.746d4946( ) -
0xf78938d42e107f43730e020a564ea330cf47f8e6.746d4946( ) -
0x84d6bd14a2eadb6c7fb21681c6a4c20e3e458da7.746d4946( ) -
0x29379f9cf6582eca507387a893064f200ee12695.746d4946( ) -
0x21ae1de34fa8a56d36ee94d56626b7abc4a3ba99.746d4946( ) -
0x7d91f8dd1b53df6918b5ee18edbbf3cce28d2b92.746d4946( ) -
0x9837ef849e16c25a7579d182ff821127bd031ee8.746d4946( ) -
0x9cfe47cb61b5a12d0faedb8c6b13e530cdc784a4.746d4946( ) -
0x505f817b21428325477d2ce2e41a9bbc8ac95a6c.746d4946( ) -
0x355ca01d37be65940fefffeac4a955659b27cf8f.746d4946( ) -
0xdbb68026c58e216bda7f80131d48d183ca2c2e93.746d4946( ) -
0xa57805fc46a1a1ecae34e19b6569602aa9be671d.746d4946( ) -
0xc8f6f58d6598535432443068453737ee25735cd3.746d4946( ) -
0xf64f30a8298311992d0756f3bf249a8e275b8ab1.746d4946( ) -
0x98bbf49cdf727779661b27f88512c54039f75e74.746d4946( ) -
0x3eb01aec0365128bd5fbe5ad0e7706f570f998f2.746d4946( ) -
0xe248c00bb16d341f376f7f3fb63e22dcebb7228c.746d4946( ) -
0x952b1a50d87493c55a3187524ac27ad568b42d2f.746d4946( ) -
0xe04343004be14bfbdcaf0354dec5ef5e5af70f32.746d4946( ) -
0xce7cff271e3a131b330a4fe6dbc0c6553c23952f.746d4946( ) -
0xe1eab1adfb821a3eecef2ee5a9223514814d69bb.746d4946( ) -
0xd35abfd2605916a44c6473a1467112fc7e63094c.746d4946( ) -
0xb2cac1ffc1a74a3a85921a78af34577c439ea701.746d4946( ) -
0xc0b09be7f99d9894ef964581bd08c61e05dff9fc.746d4946( ) -
0x7d75702e52a24c3bc22b05e03ec06142e23b1bb6.746d4946( ) -
0xc43b884cbe3dfc04d85d84c17bccf390d5e733da.746d4946( ) -
0xcf42a93c7f635784c0c8bd6d32f0e358d86ac6ef.746d4946( ) -
0x2e0a11c2c1425a8b1b60fecbf69c6d4d18ae2b23.746d4946( ) -
0x9d8a9089846465fa41daadac51a11f0d4ccc76c5.746d4946( ) -
0xdc7fbeef86fb3263428901063a2b44b5e3199207.746d4946( ) -
0x4cb2dc6300934b498c9de363cbc18e5338f507cc.746d4946( ) -
0x42ce297a8d1a51e6cc576b8deb1e693d2448c29e.746d4946( ) -
0x3f9f492872ec443a364d451d153c01406e123009.746d4946( ) -
0xbbb70ada908376c203937f49e8a1e03ae3692f75.746d4946( ) -
0xdc403b05f7b0a83088fb9f9c8ff15c3a1352232a.746d4946( ) -
0x7e1c30d0252d35d992e92d12a96928b0e14068f0.746d4946( ) -
0xd5bb70726de45c30af9b69c18494de91ca716b93.746d4946( ) -
0x63723361f0cdb88f0e28bc4adee09c31d058a565.746d4946( ) -
0x8171a01a64082bdac12f31b224469c6f50095bc4.746d4946( ) -
0x4efa419fa0d2c76962d1b03becc6a7564254c9fb.746d4946( ) -
0x35dded9b145309257aa62ff019c054f975fa2fd5.746d4946( ) -
0xa30aeaff9668386cbe9e819d852a106c11552764.746d4946( ) -
0xc9fa8a2a0146c8f9413ee13d1d8ef636d5b06b4a.746d4946( ) -
0xdeeae59415695287ec5172b04daec3cba1fc1477.746d4946( ) -
0x8af16109f8543c7204893d3d7b7056db16a40126.746d4946( ) -
0xc8b4567cc3571f235b478e633e573b2deaebe2f2.746d4946( ) -
0xe95df36d924aa0bf0972df5ef2846d714f29302c.746d4946( ) -
0x4dda7ff2a3ec83dfa634af01151f62335d762689.746d4946( )
/*
,╖╗#▒▓▓▓▓▓╣╬╣▓▓▓▓▒#╗╗╓,
,╗@▓╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬▓▓╗╖
╓#▓╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╝▀╠╠▄╣╝╜"""╙╙▀╝╝╣╬╬╬╬▓▌╖
╓▓╣╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬▀`╓å▓▓▓╙ ,▄▓▓██▓▓▓▄▄▄▄▄╠╠╙╠▄▄
╓@╣╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬▌ ê`' *▀▀▀▀▀▀▀▓██████████████▄
╔▓╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ ╙▀████████████▌
╓▓╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ ╙████████████▌
,▓╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬▓▀ ╗▄█████████████▄
é╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬▓▌ #╙ ╙▀█████████████▓
╣╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬▀ ╙▓╬╣▓▄ ╙▀▀███████████µ
▓╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬▀╣╝╙ ╒▓╬╬╬╬╬╬▓ ╙████████████████µ
▓╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬▌ ╖╖╖▄▓╬╬╬╬╬╬╬▓ █████████████████µ
╣╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ ,#▓╣╬╬▓╬╬╬╬╬╬╬╬╬╬╬╬▌ ▓█████████████████
]╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╓╖ ]╣╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╣╨ ██████████████████▌
▓╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬▓▌╖, ╙╠╠▓╬╬╬╬╬╬╬╬╬▓╝╙ ╫███████████████████
]╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╝▀╙ ▓████████████████████▌
║╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╝▀╙` ▄███████████████████████
╟╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬▓╝▀╙ ,▄█████████████████████████
╟╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╝╜` ▄▓████████████████████████████
║╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╣▀` ,▄▄▓████████████████████████████████
▐╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬▓╙ ,,,▄╠▓██████████████████████████████▌
╣╬╬╬╬╬╬╬╬╬╬╬╬╬╬▓╙╔▒` ╓▄▓████████████████████████████████████████⌐
╚╬╬╬╬╬╬╬╬╬╬╬╬╬▓▓╣▓ ▄▓████████████████████████████████████████████
▓╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬ ▄██████████████████████████████████████████████⌐
╣╬╬╬╬╬╬╬╬╬╬╬╬╬╛ ▄███████████████████████████████████████████████▌
└╣╬╬╬╬╬╬╬╬╬╬╬▓ ▄███████████████████████████████████████████████▌
└▓╬╬╬╬╬╬╬╬╬╬Γ ]███████████████████████████████████████████████▀
╣╬╬╬╬╬╬╬╬╬⌐ ╫████████████████████████████████▀▀▀▀▀▓████████╜
╙╬╬╬╬╬╬╬╬⌐ ╟███████████████████████████▀╙ ,▄▓▓▓▓▓████▓
╫╬╬╬╬╬╬b ████████████████████████▀` ,Φ▀▀█████████╙
╫╬╬╬╬▌╟ ██████████████████▀╓▀─ ▄▓█████████▀
╚╣╬▓╣▓ └▀████████████▀` ╓▓█████████▓╙
╙╝╬╬▓ .▄▄▓█▀▀▀` ▄▓█████████▀
╙▀▓▄ ƒ,▓███████▀▀
" ╓▓█▓█████▀▀└
╓▄▓████▀▀╙└
██████╗██╗ ██╗██╗ ██████╗ █████╗ ███████╗████████╗ ██████╗ ██╗ ██╗███████╗███╗ ██╗ ██████╗ ██╗ ██╗ ██╗██╗███╗ ██╗ ██████╗██╗ ██╗
██╔════╝██║ ██║██║ ██╔════╝ ██╔══██╗██╔════╝╚══██╔══╝██╔═══██╗██║ ██╔╝██╔════╝████╗ ██║ ██╔══██╗╚██╗ ██╔╝ ███║██║████╗ ██║██╔════╝██║ ██║
██║ ███████║██║ ██║ ███╗███████║███████╗ ██║ ██║ ██║█████╔╝ █████╗ ██╔██╗ ██║ ██████╔╝ ╚████╔╝ ╚██║██║██╔██╗ ██║██║ ███████║
██║ ██╔══██║██║ ██║ ██║██╔══██║╚════██║ ██║ ██║ ██║██╔═██╗ ██╔══╝ ██║╚██╗██║ ██╔══██╗ ╚██╔╝ ██║██║██║╚██╗██║██║ ██╔══██║
╚██████╗██║ ██║██║ ╚██████╔╝██║ ██║███████║ ██║ ╚██████╔╝██║ ██╗███████╗██║ ╚████║ ██████╔╝ ██║ ██║██║██║ ╚████║╚██████╗██║ ██║
╚═════╝╚═╝ ╚═╝╚═╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═══╝ ╚═════╝ ╚═╝ ╚═╝╚═╝╚═╝ ╚═══╝ ╚═════╝╚═╝ ╚═╝
Copyright by 1inch Corporation
https://1inch.exchange
---
Deployer wallet address:
0x7E1E3334130355799F833ffec2D731BCa3E68aF6
Signed raw transaction for chainId 1:
0xf90d7f808506fc23ac00830bd0fa8080b90d2c608060405234801561001057600080fd5b50610d0c806100206000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c806370a08231116100a2578063a9059cbb11610071578063a9059cbb14610305578063b0ac19a014610331578063d89135cd1461036a578063d8ccd0f314610372578063dd62ed3e1461038f5761010b565b806370a08231146102b057806395d89b41146102d6578063a0712d68146102de578063a2309ff8146102fd5761010b565b806323b872dd116100de57806323b872dd14610213578063313ce567146102495780635f2e2b45146102675780636366b936146102935761010b565b806306fdde0314610110578063079d229f1461018d578063095ea7b3146101cb57806318160ddd1461020b575b600080fd5b6101186103bd565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561015257818101518382015260200161013a565b50505050905090810190601f16801561017f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101b9600480360360408110156101a357600080fd5b506001600160a01b0381351690602001356103ee565b60408051918252519081900360200190f35b6101f7600480360360408110156101e157600080fd5b506001600160a01b03813516906020013561041f565b604080519115158252519081900360200190f35b6101b9610435565b6101f76004803603606081101561022957600080fd5b506001600160a01b03813581169160208101359091169060400135610453565b6102516104c2565b6040805160ff9092168252519081900360200190f35b6101b96004803603604081101561027d57600080fd5b506001600160a01b0381351690602001356104c7565b6101b9600480360360208110156102a957600080fd5b50356104e2565b6101b9600480360360208110156102c657600080fd5b50356001600160a01b03166104ff565b61011861051a565b6102fb600480360360208110156102f457600080fd5b5035610539565b005b6101b961070d565b6101f76004803603604081101561031b57600080fd5b506001600160a01b038135169060200135610713565b61034e6004803603602081101561034757600080fd5b5035610720565b604080516001600160a01b039092168252519081900360200190f35b6101b961078b565b6101b96004803603602081101561038857600080fd5b5035610791565b6101b9600480360360408110156103a557600080fd5b506001600160a01b03813581169160200135166107aa565b60405180604001604052806015815260200174086d0d2408ec2e6e8ded6cadc40c4f24062d2dcc6d605b1b81525081565b60006104188361041361040985610404886104ff565b6107d5565b61040487336107aa565b6104c7565b9392505050565b600061042c3384846107eb565b50600192915050565b600061044e60035460025461084d90919063ffffffff16565b905090565b600061046084848461088f565b6104b884336104b385604051806060016040528060288152602001610c8b602891396001600160a01b038a166000908152600160209081526040808320338452909152902054919063ffffffff61096116565b6107eb565b5060019392505050565b600081565b60006104d383836109f8565b6104dc82610a59565b50919050565b60006104f96104f483610404336104ff565b610791565b92915050565b6001600160a01b031660009081526020819052604090205490565b6040518060400160405280600381526020016243484960e81b81525081565b6002547f746d4946c0e9f43f4dee607b0ef1fa1c3318585733ff6000526015600bf30000600052602082045b80156106d85781601e600080f55060018201601e600080f55060028201601e600080f55060038201601e600080f55060048201601e600080f55060058201601e600080f55060068201601e600080f55060078201601e600080f55060088201601e600080f55060098201601e600080f550600a8201601e600080f550600b8201601e600080f550600c8201601e600080f550600d8201601e600080f550600e8201601e600080f550600f8201601e600080f55060108201601e600080f55060118201601e600080f55060128201601e600080f55060138201601e600080f55060148201601e600080f55060158201601e600080f55060168201601e600080f55060178201601e600080f55060188201601e600080f55060198201601e600080f550601a8201601e600080f550601b8201601e600080f550601c8201601e600080f550601d8201601e600080f550601e8201601e600080f550601f8201601e600080f5506020919091019060001901610565565b50601f82165b80156106fc5781601e600080f55060019190910190600019016106de565b506107073383610ad1565b60025550565b60025481565b600061042c33848461088f565b604080516001600160f81b03196020808301919091523060601b602183015260358201939093527f3c1644c68e5d6cb380c36d1bf847fdbc0c7ac28030025a2fc5e63cce23c16348605580830191909152825180830390910181526075909101909152805191012090565b60035481565b600061079d3383610b50565b6107a682610a59565b5090565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60008183106107e45781610418565b5090919050565b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b600061041883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610961565b6108d281604051806060016040528060268152602001610c65602691396001600160a01b038616600090815260208190526040902054919063ffffffff61096116565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610907908263ffffffff610be816565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156109f05760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156109b557818101518382015260200161099d565b50505050905090810190601f1680156109e25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b610a028282610b50565b610a5582336104b384604051806060016040528060248152602001610cb3602491396001600160a01b0388166000908152600160209081526040808320338452909152902054919063ffffffff61096116565b5050565b60035460005b82811015610aca57610a72818301610720565b6040516001600160a01b039190911690600081818181865af19150503d8060008114610aba576040519150601f19603f3d011682016040523d82523d6000602084013e610abf565b606091505b505050600101610a5f565b5001600355565b6001600160a01b038216600090815260208190526040902054610afa908263ffffffff610be816565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b610b9381604051806060016040528060228152602001610c43602291396001600160a01b038516600090815260208190526040902054919063ffffffff61096116565b6001600160a01b038316600081815260208181526040808320949094558351858152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35050565b600082820183811015610418576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fdfe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220687f814fb4c0b3c6abd66ebdb1f1eabcf69becf92a382c3af453e0b21c3d15b564736f6c6343000608003325a00ed87a047b4e415bd7f8cf7a7ce5a1c204125df1cedc35c7bdcb71bd2a29a35ea02db2490337fa6c425f1b3d74b7b217de8b394adb3f571827629c06dc16364b66
---
*/
// File: @openzeppelin/contracts/math/Math.sol
pragma solidity ^0.6.0;
/**
* @dev Standard math utilities missing in the Solidity language.
*/
library Math {
/**
* @dev Returns the largest of two numbers.
*/
function max(uint256 a, uint256 b) internal pure returns (uint256) {
return a >= b ? a : b;
}
/**
* @dev Returns the smallest of two numbers.
*/
function min(uint256 a, uint256 b) internal pure returns (uint256) {
return a < b ? a : b;
}
/**
* @dev Returns the average of two numbers. The result is rounded towards
* zero.
*/
function average(uint256 a, uint256 b) internal pure returns (uint256) {
// (a + b) / 2 can overflow, so we distribute
return (a / 2) + (b / 2) + ((a % 2 + b % 2) / 2);
}
}
// File: @openzeppelin/contracts/math/SafeMath.sol
pragma solidity ^0.6.0;
/**
* @dev Wrappers over Solidity's arithmetic operations with added overflow
* checks.
*
* Arithmetic operations in Solidity wrap on overflow. This can easily result
* in bugs, because programmers usually assume that an overflow raises an
* error, which is the standard behavior in high level programming languages.
* `SafeMath` restores this intuition by reverting the transaction when an
* operation overflows.
*
* Using this library instead of the unchecked operations eliminates an entire
* class of bugs, so it's recommended to use it always.
*/
library SafeMath {
/**
* @dev Returns the addition of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `+` operator.
*
* Requirements:
* - Addition cannot overflow.
*/
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting on
* overflow (when the result is negative).
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
* - Subtraction cannot overflow.
*/
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return sub(a, b, "SafeMath: subtraction overflow");
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting with custom message on
* overflow (when the result is negative).
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
* - Subtraction cannot overflow.
*/
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b <= a, errorMessage);
uint256 c = a - b;
return c;
}
/**
* @dev Returns the multiplication of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `*` operator.
*
* Requirements:
* - Multiplication cannot overflow.
*/
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
// Gas optimization: this is cheaper than requiring 'a' not being zero, but the
// benefit is lost if 'b' is also tested.
// See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
if (a == 0) {
return 0;
}
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
/**
* @dev Returns the integer division of two unsigned integers. Reverts on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
* - The divisor cannot be zero.
*/
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return div(a, b, "SafeMath: division by zero");
}
/**
* @dev Returns the integer division of two unsigned integers. Reverts with custom message on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
* - The divisor cannot be zero.
*/
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
// Solidity only automatically asserts when dividing by 0
require(b > 0, errorMessage);
uint256 c = a / b;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
return c;
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* Reverts when dividing by zero.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
* - The divisor cannot be zero.
*/
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return mod(a, b, "SafeMath: modulo by zero");
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* Reverts with custom message when dividing by zero.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
* - The divisor cannot be zero.
*/
function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b != 0, errorMessage);
return a % b;
}
}
// File: @openzeppelin/contracts/token/ERC20/IERC20.sol
pragma solidity ^0.6.0;
/**
* @dev Interface of the ERC20 standard as defined in the EIP.
*/
interface IERC20 {
/**
* @dev Returns the amount of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the amount of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves `amount` tokens from the caller's account to `recipient`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address recipient, uint256 amount) external returns (bool);
/**
* @dev Returns the remaining number of tokens that `spender` will be
* allowed to spend on behalf of `owner` through {transferFrom}. This is
* zero by default.
*
* This value changes when {approve} or {transferFrom} are called.
*/
function allowance(address owner, address spender) external view returns (uint256);
/**
* @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* IMPORTANT: Beware that changing an allowance with this method brings the risk
* that someone may use both the old and the new allowance by unfortunate
* transaction ordering. One possible solution to mitigate this race
* condition is to first reduce the spender's allowance to 0 and set the
* desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
*
* Emits an {Approval} event.
*/
function approve(address spender, uint256 amount) external returns (bool);
/**
* @dev Moves `amount` tokens from `sender` to `recipient` using the
* allowance mechanism. `amount` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to {approve}. `value` is the new allowance.
*/
event Approval(address indexed owner, address indexed spender, uint256 value);
}
// File: contracts/ChiToken.sol
pragma solidity ^0.6.0;
abstract contract ERC20WithoutTotalSupply is IERC20 {
using SafeMath for uint256;
mapping(address => uint256) private _balances;
mapping(address => mapping(address => uint256)) private _allowances;
function balanceOf(address account) public view override returns (uint256) {
return _balances[account];
}
function allowance(address owner, address spender) public view override returns (uint256) {
return _allowances[owner][spender];
}
function transfer(address recipient, uint256 amount) public override returns (bool) {
_transfer(msg.sender, recipient, amount);
return true;
}
function approve(address spender, uint256 amount) public override returns (bool) {
_approve(msg.sender, spender, amount);
return true;
}
function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
_transfer(sender, recipient, amount);
_approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount, "ERC20: transfer amount exceeds allowance"));
return true;
}
function _transfer(address sender, address recipient, uint256 amount) internal {
_balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
_balances[recipient] = _balances[recipient].add(amount);
emit Transfer(sender, recipient, amount);
}
function _approve(address owner, address spender, uint256 amount) internal {
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
function _mint(address account, uint256 amount) internal {
_balances[account] = _balances[account].add(amount);
emit Transfer(address(0), account, amount);
}
function _burn(address account, uint256 amount) internal {
_balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
emit Transfer(account, address(0), amount);
}
function _burnFrom(address account, uint256 amount) internal {
_burn(account, amount);
_approve(account, msg.sender, _allowances[account][msg.sender].sub(amount, "ERC20: burn amount exceeds allowance"));
}
}
contract ChiToken is IERC20, ERC20WithoutTotalSupply {
string constant public name = "Chi Gastoken by 1inch";
string constant public symbol = "CHI";
uint8 constant public decimals = 0;
uint256 public totalMinted;
uint256 public totalBurned;
function totalSupply() public view override returns(uint256) {
return totalMinted.sub(totalBurned);
}
function mint(uint256 value) public {
uint256 offset = totalMinted;
assembly {
mstore(0, 0x746d4946c0e9F43F4Dee607b0eF1fA1c3318585733ff6000526015600bf30000)
for {let i := div(value, 32)} i {i := sub(i, 1)} {
pop(create2(0, 0, 30, add(offset, 0))) pop(create2(0, 0, 30, add(offset, 1)))
pop(create2(0, 0, 30, add(offset, 2))) pop(create2(0, 0, 30, add(offset, 3)))
pop(create2(0, 0, 30, add(offset, 4))) pop(create2(0, 0, 30, add(offset, 5)))
pop(create2(0, 0, 30, add(offset, 6))) pop(create2(0, 0, 30, add(offset, 7)))
pop(create2(0, 0, 30, add(offset, 8))) pop(create2(0, 0, 30, add(offset, 9)))
pop(create2(0, 0, 30, add(offset, 10))) pop(create2(0, 0, 30, add(offset, 11)))
pop(create2(0, 0, 30, add(offset, 12))) pop(create2(0, 0, 30, add(offset, 13)))
pop(create2(0, 0, 30, add(offset, 14))) pop(create2(0, 0, 30, add(offset, 15)))
pop(create2(0, 0, 30, add(offset, 16))) pop(create2(0, 0, 30, add(offset, 17)))
pop(create2(0, 0, 30, add(offset, 18))) pop(create2(0, 0, 30, add(offset, 19)))
pop(create2(0, 0, 30, add(offset, 20))) pop(create2(0, 0, 30, add(offset, 21)))
pop(create2(0, 0, 30, add(offset, 22))) pop(create2(0, 0, 30, add(offset, 23)))
pop(create2(0, 0, 30, add(offset, 24))) pop(create2(0, 0, 30, add(offset, 25)))
pop(create2(0, 0, 30, add(offset, 26))) pop(create2(0, 0, 30, add(offset, 27)))
pop(create2(0, 0, 30, add(offset, 28))) pop(create2(0, 0, 30, add(offset, 29)))
pop(create2(0, 0, 30, add(offset, 30))) pop(create2(0, 0, 30, add(offset, 31)))
offset := add(offset, 32)
}
for {let i := and(value, 0x1F)} i {i := sub(i, 1)} {
pop(create2(0, 0, 30, offset))
offset := add(offset, 1)
}
}
_mint(msg.sender, value);
totalMinted = offset;
}
function computeAddress2(uint256 salt) public view returns (address) {
bytes32 _data = keccak256(
abi.encodePacked(bytes1(0xff), address(this), salt, bytes32(0x3c1644c68e5d6cb380c36d1bf847fdbc0c7ac28030025a2fc5e63cce23c16348))
);
return address(uint256(_data));
}
function _destroyChildren(uint256 value) internal {
uint256 _totalBurned = totalBurned;
for (uint256 i = 0; i < value; i++) {
computeAddress2(_totalBurned + i).call("");
}
totalBurned = _totalBurned + value;
}
function free(uint256 value) public returns (uint256) {
_burn(msg.sender, value);
_destroyChildren(value);
return value;
}
function freeUpTo(uint256 value) public returns (uint256) {
return free(Math.min(value, balanceOf(msg.sender)));
}
function freeFrom(address from, uint256 value) public returns (uint256) {
_burnFrom(from, value);
_destroyChildren(value);
return value;
}
function freeFromUpTo(address from, uint256 value) public returns (uint256) {
return freeFrom(from, Math.min(Math.min(value, balanceOf(from)), allowance(from, msg.sender)));
}
}