Transaction Hash:
Block:
12714656 at Jun-27-2021 07:00:34 AM +UTC
Transaction Fee:
0.008350126983585993 ETH
$21.32
Gas Used:
2,100,939 Gas / 3.974473787 Gwei
Emitted Events:
94 |
ChiToken.Transfer( from=0x0000000000000000000000000000000000000000, to=[Sender] 0x00000072dc658f0a0f80b7664fff54d3e2f3350a, value=57 )
|
Account State Difference:
Address | Before | After | State Difference | ||
---|---|---|---|---|---|
0x00000000...b0eF1fA1c | |||||
0x00000072...3E2f3350a |
0.910789270026556056 Eth
Nonce: 326
|
0.902439143042970063 Eth
Nonce: 327
| 0.008350126983585993 | ||
0x04f1f19D...b7a3F2928 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
0x04Fd1086...Dc1AAE1fa |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
0x06e369c8...0758090DE |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
0x0716FF6b...9A54f2b48 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
0x0A392930...91A1Ea65d |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
0x0e3dc0D0...7b9e11a0B |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
0x0F307A6b...7b70Ab4dF |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
0x10f8e77b...DB8b452db |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
0x126A68FA...F9d9aD4d8 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
0x128F3cF7...6057E9577 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
0x1958981D...646f31F10 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
0x23569036...A7A6a66dD |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
0x24F35208...A4cF136F0 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
0x2702b5a4...8A6e34BfE |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
0x275390A1...c7712a430 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
0x33f4c9Db...A59756efa |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
0x346995d8...53b127321 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
0x3eE43C6f...72139D50d |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
0x456ef84E...D8e7dc8dD |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
0x4c795815...AA974968E |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
0x54013Df4...22d1c6f12 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
0x5951Cc7b...DB64EA641 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
0x60B34F2d...8e73E1ce7 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
0x6a89fEAf...bB44654BE |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
0x6D722b17...AA772d0F2 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
0x6fB7775E...2DC44258c |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
0x72fb23A6...4c4d4CcB8 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
0x790Dd705...f5536A375 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
0x82c76D72...3d0F59262 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
0x82F1e823...160fBb51D |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
0x83917752...267EDDd4D |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
0x894bd036...6da6A77c9 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
0x8C15cF08...C2e347F08 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
0x8C3dFee2...Ff9A86306 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
0x915943ed...eC2243FF6 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
0x935D4c6D...5D00cBBc5 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
0x981522DD...5b9AE29d1 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
0x99DB9353...5E0074E5C |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
0x9F9EFdd4...1C797c3d7 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
0xA7FA9Fe1...731975741 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
0xa9022859...FC8Af9388 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
0xAB1b708e...65059417F |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
0xBa9f08E6...38E1A7460 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
0xc44fb532...E1Ad719cd |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
0xC9870F80...1C987fd03 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
0xCa5919b8...498D6B137 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
0xd4186102...97452615b |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
0xd830C11c...41e867412 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
0xdf7BcccA...4E0C76147 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
0xe1af12aE...8169f495E |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
0xE6b4C2f4...bB2b5A29C |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
0xeA1dE453...19c7778c4 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
0xEA674fdD...16B898ec8
Miner
| (Ethermine) | 2,011.934433829073682092 Eth | 2,011.942783956057268085 Eth | 0.008350126983585993 | |
0xED5f755a...89d9977E1 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
0xEf34b786...bBaA77DD7 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
0xf0D7776c...5DD67c7fC |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
0xf1188BDB...dCaE69972 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
| |||
0xF76719E9...a9f600404 |
0 Eth
Nonce: 0
|
0 Eth
Nonce: 1
|
Execution Trace
ChiToken.mint( value=57 )

-
0x915943edc27717121e70d67dc4dbfa1ec2243ff6.746d4946( )
-
0x6d722b170f3b9930b6265d3ab1316afaa772d0f2.746d4946( )
-
0x10f8e77bb3f114ee16492c91b92e898db8b452db.746d4946( )
-
0xf0d7776ce1c1e72960b6978f426034e5dd67c7fc.746d4946( )
-
0x54013df4c452cd95256fd1e6ffbe33b22d1c6f12.746d4946( )
-
0x275390a1b3acb597616f3c48b27e66dc7712a430.746d4946( )
-
0x128f3cf79f710d60133297e7b68132d6057e9577.746d4946( )
-
0x894bd03600438349cc05d10c254a4196da6a77c9.746d4946( )
-
0x2702b5a48492816dcf6f41f03b98f7e8a6e34bfe.746d4946( )
-
0xc9870f8075f425aef0437e03e721f681c987fd03.746d4946( )
-
0x60b34f2d2180727a27563f590a94dfb8e73e1ce7.746d4946( )
-
0xd4186102a4749187aa6ef2962f4c7bf97452615b.746d4946( )
-
0x4c7958150bc1a6f3983232184abca05aa974968e.746d4946( )
-
0x72fb23a6098169adbc07181e1c1c9864c4d4ccb8.746d4946( )
-
0x790dd705262cb545292de9a6a99b384f5536a375.746d4946( )
-
0xba9f08e674d88901248f2c222ad4fbc38e1a7460.746d4946( )
-
0x8391775266e6f6ecbc6121e4a9aa513267eddd4d.746d4946( )
-
0xab1b708ef1559fc2b5008f7b072189a65059417f.746d4946( )
-
0xe6b4c2f44c03218bbe4df4bfbdc6cd5bb2b5a29c.746d4946( )
-
0x6a89feafa9a00cbcc6698bd7a21efb4bb44654be.746d4946( )
-
0x82f1e823d4c0abc40642c6ca9670926160fbb51d.746d4946( )
-
0xdf7bcccaa05062830e3a0b917dd01084e0c76147.746d4946( )
-
0x126a68fa866043cd9cbf1b9a582100cf9d9ad4d8.746d4946( )
-
0x8c3dfee2a5f1bde60b2b5e2b27e6fbcff9a86306.746d4946( )
-
0xa7fa9fe1c79078daaac082d5b036795731975741.746d4946( )
-
0x99db9353140f562c28a672056522de75e0074e5c.746d4946( )
-
0xed5f755a733e61a97f77ab6babc1f5589d9977e1.746d4946( )
-
0x346995d85470650f524090276e4c44653b127321.746d4946( )
-
0x0f307a6bf2e9dc10988262d548368647b70ab4df.746d4946( )
-
0xa90228594ca88ccd32ed5e292ded66ffc8af9388.746d4946( )
-
0xe1af12aead946e2a712d311c3764c398169f495e.746d4946( )
-
0xd830c11c44d12e3bf39112111557bd441e867412.746d4946( )
-
0x235690366e765fc749d03eda568b6e1a7a6a66dd.746d4946( )
-
0x82c76d72ffc9abd03da48594c648b053d0f59262.746d4946( )
-
0x981522ddb427677f7a5717e513d066d5b9ae29d1.746d4946( )
-
0xca5919b88620205e77815d192d21d79498d6b137.746d4946( )
-
0x6fb7775e1b2ae53789ac85eac583ed42dc44258c.746d4946( )
-
0x456ef84e1a7ffbb3602b51e19df3a84d8e7dc8dd.746d4946( )
-
0x24f35208a45128df5a3d391548cb8f6a4cf136f0.746d4946( )
-
0x33f4c9dbf5b12aa26f9f31fdda9746fa59756efa.746d4946( )
-
0x935d4c6d2625f6e6cd5ca1f304788535d00cbbc5.746d4946( )
-
0x3ee43c6f0cff0b9a9f423806129debb72139d50d.746d4946( )
-
0x0716ff6ba525f0201755562c9b2170d9a54f2b48.746d4946( )
-
0x5951cc7b01283e02de7210f512296e2db64ea641.746d4946( )
-
0xf76719e92702c9e0e59d84a0fb9d16ca9f600404.746d4946( )
-
0xf1188bdb609cadbc12f8b314a6b71d2dcae69972.746d4946( )
-
0x06e369c82f5645a0093ad1218d484190758090de.746d4946( )
-
0x0e3dc0d03c53cf1952db2f70abffcd87b9e11a0b.746d4946( )
-
0xea1de4534f74060f7977adcbfdb2d4219c7778c4.746d4946( )
-
0x0a392930fefe36361db28d2464b39c791a1ea65d.746d4946( )
-
0xc44fb5327b3944dd0a18c5dc0c02985e1ad719cd.746d4946( )
-
0xef34b786cc965f06a116db43e4791debbaa77dd7.746d4946( )
-
0x8c15cf085156229c03ba1b4aff28d97c2e347f08.746d4946( )
-
0x04fd1086b7b2edb92af0411d6ac2eaddc1aae1fa.746d4946( )
-
0x1958981db65eaae0386350b02ed2580646f31f10.746d4946( )
-
0x9f9efdd45ca5b767c18915b16347e761c797c3d7.746d4946( )
-
0x04f1f19df593a6a71d8347c60275c65b7a3f2928.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))); } }