ETH Price: $3,449.09 (-0.01%)
Gas: 7 Gwei

Token

Wrapped TON Coin (TONCOIN)
 

Overview

Max Total Supply

11,869,115.956562772 TONCOIN

Holders

27,066 ( 0.151%)

Market

Price

$6.90 @ 0.002001 ETH (-0.63%)

Onchain Market Cap

$81,896,900.10

Circulating Supply Market Cap

$17,396,305,710.00

Other Info

Token Contract (WITH 9 Decimals)

Balance
27.780472483 TONCOIN

Value
$191.69 ( ~0.0555769370366403 Eth) [0.0002%]
0x3d46a6104f87d19e33683c9ce7628587d0d50406
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

The Open Network is a blockchain-based decentralized computer network. TON is designed to enable processing millions of transactions per second via infinite sharding paradigm. It allows building Web 3.0 empowered by decentralized storage and DNS, instant payments and decentralized services.

Market

Volume (24H):$290,788,294.00
Market Capitalization:$17,396,305,710.00
Circulating Supply:2,514,928,557.00 TONCOIN
Market Data Source: Coinmarketcap

# Exchange Pair Price  24H Volume % Volume
1
OKX
TON-USDT$6.84
0.0019870 Eth
$43,549,289.00
6,332,185.504 TON
1.4524%
2
BigONE
TON-USDT$6.84
0.0019868 Eth
$34,899,706.00
5,104,101.120 TON
1.1707%
3
Bybit
TON-USDT$6.83
0.0019857 Eth
$32,618,410.00
4,743,125.500 TON
1.0879%
4
HTX
TON-USDT$6.87
0.0019835 Eth
$22,877,240.00
3,295,536.812 TON
0.7559%
5
Bitget
TONCOIN-USDT$6.84
0.0019887 Eth
$19,396,097.00
2,810,420.650 TONCOIN
0.6446%
6
MEXC
TON-USDT$6.84
0.0019870 Eth
$14,668,807.00
2,145,102.950 TON
0.4920%
7
Azbit
TON-USDT$6.90
0.0019920 Eth
$7,556,980.00
1,087,735.007 TON
0.2495%
8
STON.fi
EQCXE6MUTQJKFNGFAROTKOT1LZBDIIX1KCIXRV7NW2ID_SDS-EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9C$6.91
0.0019927 Eth
$6,598,402.00
6,615,125.497 EQCXE6MUTQJKFNGFAROTKOT1LZBDIIX1KCIXRV7NW2ID_SDS
1.5173%
9
WhiteBIT
TON-USDT$6.89
0.0019871 Eth
$5,440,831.00
789,973.540 TON
0.1812%
10
KuCoin
TON-USDT$6.87
0.0019829 Eth
$4,459,907.00
649,064.938 TON
0.1489%
11
OKX
TON-USDC$6.88
0.0020005 Eth
$3,183,441.00
461,429.873 TON
0.1058%
12
Bitunix
TON-USDT$6.91
0.0019870 Eth
$3,035,932.00
439,371.100 TON
0.1008%
13
Gate.io
TON-USDT$6.87
0.0019836 Eth
$2,616,003.00
377,853.350 TON
0.0867%
14
Bit2Me
TON-USDT$6.90
0.0019936 Eth
$2,599,731.00
375,477.030 TON
0.0861%
15
STON.fi
EQBZ_CAFPYDR5KUTS0ANXH0ZTDHKPEZONMLJA2SNGLLM4CKO-EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9C$6.91
0.0019927 Eth
$2,532,748.00
4,807,262.561 EQBZ_CAFPYDR5KUTS0ANXH0ZTDHKPEZONMLJA2SNGLLM4CKO
1.1027%
16
OrangeX
TON-USDT$6.90
0.0019930 Eth
$2,465,236.00
355,989.260 TON
0.0817%
17
Coinsbit
TONCOIN-USDT$6.91
0.0019897 Eth
$1,910,947.00
276,510.484 TONCOIN
0.0634%
18
XT.COM
TON-USDT$6.90
0.0019919 Eth
$1,847,711.00
266,815.780 TON
0.0612%
19
CoinEx
TON-USDT$6.90
0.0019920 Eth
$1,676,817.00
241,744.682 TON
0.0554%
20
Pionex
TON-USDT$6.90
0.0019916 Eth
$1,071,257.00
154,680.042 TON
0.0355%
21
Trubit
TON-USDT$6.85
0.0019904 Eth
$1,023,083.00
148,538.786 TON
0.0341%
22
BingX
TONCOIN-USDT$6.84
0.0019867 Eth
$906,242.00
131,590.438 TONCOIN
0.0302%
23
Uniswap V3 (Ethereum)
0X582D872A1B094FC48F5DE31D3B73F2D9BE47DEF1-0XC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2$6.94
0.0019961 Eth
$831,536.00
119,449.527 0X582D872A1B094FC48F5DE31D3B73F2D9BE47DEF1
0.0274%
24
Phemex
TON-USDT$6.90
0.0019903 Eth
$544,589.00
78,944.689 TON
0.0181%
25
Dex-Trade
TON-USDT$6.84
0.0019882 Eth
$479,425.00
70,068.360 TON
0.0161%
26
BTSE
TON-USDT$6.89
0.0019883 Eth
$391,901.00
56,880.544 TON
0.0130%
27
Hotcoin
TON-USDT$6.90
0.0019927 Eth
$335,018.00
48,541.848 TON
0.0111%
28
STON.fi
EQC47093OX5XHB0XUK2LCR2RHS8RJ-VUL61U4W2UH5ORMG_O-EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9C$6.91
0.0019927 Eth
$315,476.00
57,376,932.924 EQC47093OX5XHB0XUK2LCR2RHS8RJ-VUL61U4W2UH5ORMG_O
13.1607%
29
BitMart
TON-USDT$6.87
0.0019837 Eth
$270,571.00
39,361.800 TON
0.0090%
30
CoinW
TON-USDT$6.92
0.0019968 Eth
$267,182.00
38,633.780 TON
0.0089%
31
Bitget
TONCOIN-USDC$6.85
0.0019907 Eth
$260,095.00
37,672.060 TONCOIN
0.0086%
32
DeDust
EQBDR5B7CSZBXHDNQ5U364BPLYLHFK8AWCUG8TWHZCMVCVPA-EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9C$6.91
0.0019949 Eth
$246,183.00
285,217.218 EQBDR5B7CSZBXHDNQ5U364BPLYLHFK8AWCUG8TWHZCMVCVPA
0.0654%
33
DeDust
EQCZX9Q7CKKZXKYTZSCNTXXQKBR-L06-QZ9WRXWWENZLWO09-EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9C$6.93
0.0019807 Eth
$234,266.00
54,184,054.442 EQCZX9Q7CKKZXKYTZSCNTXXQKBR-L06-QZ9WRXWWENZLWO09
12.4283%
34
DeDust
EQAVLWFDXGF2LXM67Y4YZC17WYKD9A0GUWPKMS1GOSM__NOT-EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9C$6.93
0.0019807 Eth
$201,171.00
13,772,131.279 EQAVLWFDXGF2LXM67Y4YZC17WYKD9A0GUWPKMS1GOSM__NOT
3.1589%
35
DeDust
EQBTDMYGCKK3ECQ1X-J0CLZRNPYYAV7CB33AD036QN-HE2C7-EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9C$6.93
0.0019807 Eth
$185,521.00
15,582,452.821 EQBTDMYGCKK3ECQ1X-J0CLZRNPYYAV7CB33AD036QN-HE2C7
3.5742%
36
STON.fi
EQDV-YR41_CZ2URG2GFEGVFA44PDPJIK9F-MILEDKDUIHLWZ-EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9C$6.91
0.0019927 Eth
$165,968.00
23,817,313.484 EQDV-YR41_CZ2URG2GFEGVFA44PDPJIK9F-MILEDKDUIHLWZ
5.4630%
37
DeDust
EQDV-YR41_CZ2URG2GFEGVFA44PDPJIK9F-MILEDKDUIHLWZ-EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9C$6.91
0.0019878 Eth
$162,190.00
23,124,353.606 EQDV-YR41_CZ2URG2GFEGVFA44PDPJIK9F-MILEDKDUIHLWZ
5.3041%
38
STON.fi
EQAQXLWJVGBBFFE8F3OS8S87LIGDOVS455ISWFARDMJETTON-EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9C$6.91
0.0019927 Eth
$152,690.00
75,384.032 EQAQXLWJVGBBFFE8F3OS8S87LIGDOVS455ISWFARDMJETTON
0.0173%
39
Uniswap V3 (Ethereum)
0X582D872A1B094FC48F5DE31D3B73F2D9BE47DEF1-0XC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2$6.92
0.0019934 Eth
$147,434.00
21,503.344 0X582D872A1B094FC48F5DE31D3B73F2D9BE47DEF1
0.0049%
40
DeDust
EQD4P32U10SNNOIAVOQ6CYPTQR82EWAJO20EPIGRWRAUP54_-EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9C$6.91
0.0019949 Eth
$140,657.00
11,298.825 EQD4P32U10SNNOIAVOQ6CYPTQR82EWAJO20EPIGRWRAUP54_
0.0026%
41
STON.fi
EQAX9J60VA-0WIDMDQGLRMF7IMJVG0YTYI3YXNQ9Y-NBNCQ2-EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9C$6.91
0.0019927 Eth
$109,209.00
4,990,284.678 EQAX9J60VA-0WIDMDQGLRMF7IMJVG0YTYI3YXNQ9Y-NBNCQ2
1.1446%
42
STON.fi
EQA2KCVNWVSIL2EM2MB0SKXYTXCQQJS4MTTJDPNXMWG9T6BO-EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9C$6.91
0.0019927 Eth
$101,999.00
7,511.476 EQA2KCVNWVSIL2EM2MB0SKXYTXCQQJS4MTTJDPNXMWG9T6BO
0.0017%
43
Tapbit
TON-USDT$6.87
0.0019838 Eth
$100,043.00
14,416.510 TON
0.0033%
44
STON.fi
EQD36LXP6P4FMZHQTHWZVFNAQHBT8QIP4RMF1NYJCSGY6KSE-EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9C$6.91
0.0019927 Eth
$73,306.00
21,711.475 EQD36LXP6P4FMZHQTHWZVFNAQHBT8QIP4RMF1NYJCSGY6KSE
0.0050%
45
STON.fi
EQDJXGXVDKTCG0N6-E6B1-FL1U1LNPHMYPQIO3UEA9KAZ07J-EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9C$6.91
0.0019927 Eth
$69,475.00
653,438.577 EQDJXGXVDKTCG0N6-E6B1-FL1U1LNPHMYPQIO3UEA9KAZ07J
0.1499%
46
STON.fi
EQCPIIJCAVHUUAPLTUCTID0MWUEZG73BEHJ5VDV_L9_VZV5_-EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9C$6.91
0.0019927 Eth
$68,325.00
1,660,716.277 EQCPIIJCAVHUUAPLTUCTID0MWUEZG73BEHJ5VDV_L9_VZV5_
0.3809%
47
DeDust
EQB02DJ0CDUD4IQDRBBV4AYG3HTEPHBRK1TGERTCNATESCK0-EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9C$6.91
0.0019878 Eth
$67,165.00
1,259,839.418 EQB02DJ0CDUD4IQDRBBV4AYG3HTEPHBRK1TGERTCNATESCK0
0.2890%
48
STON.fi
EQB02DJ0CDUD4IQDRBBV4AYG3HTEPHBRK1TGERTCNATESCK0-EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9C$6.91
0.0019927 Eth
$63,127.00
1,184,273.130 EQB02DJ0CDUD4IQDRBBV4AYG3HTEPHBRK1TGERTCNATESCK0
0.2716%
49
DeDust
EQC-TDRJJOYMZ3MXKW4PJ95BNZGVRYWWZ23JIX3PH7GUVHXJ-EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9C$6.91
0.0019949 Eth
$62,173.00
476,373.260 EQC-TDRJJOYMZ3MXKW4PJ95BNZGVRYWWZ23JIX3PH7GUVHXJ
0.1093%
50
DeDust
EQCJBP0KBPPWPOBG-U5C-CWFP_JNKSVOTGFARPF50Q9QIV9H-EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9C$6.91
0.0019949 Eth
$61,224.00
155,451.271 EQCJBP0KBPPWPOBG-U5C-CWFP_JNKSVOTGFARPF50Q9QIV9H
0.0357%
51
DeDust
EQAQXLWJVGBBFFE8F3OS8S87LIGDOVS455ISWFARDMJETTON-EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9C$6.91
0.0019949 Eth
$60,393.00
29,617.937 EQAQXLWJVGBBFFE8F3OS8S87LIGDOVS455ISWFARDMJETTON
0.0068%
52
STON.fi
EQBWHOVF3URPPJB7JEDHAOT-2VP0QQLDOEDBSGFV5XF75J3J-EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9C$6.91
0.0019927 Eth
$55,780.00
197,743.949 EQBWHOVF3URPPJB7JEDHAOT-2VP0QQLDOEDBSGFV5XF75J3J
0.0454%
53
STON.fi
EQDDCHA_K-Z97LKL599O0GDAT0PY2ZUUONS4WUF85TQ6NXIO-EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9C$6.91
0.0019927 Eth
$55,114.00
165,038.363 EQDDCHA_K-Z97LKL599O0GDAT0PY2ZUUONS4WUF85TQ6NXIO
0.0379%
54
DeDust
EQBLQSM144DQ6SJBPI4JJZVA1HQTIP3CVHOVBIFW_T-SCALE-EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9C$6.91
0.0019949 Eth
$51,880.00
9,134.720 EQBLQSM144DQ6SJBPI4JJZVA1HQTIP3CVHOVBIFW_T-SCALE
0.0021%
55
Uniswap V3 (Ethereum)
0X582D872A1B094FC48F5DE31D3B73F2D9BE47DEF1-0XDAC17F958D2EE523A2206206994597C13D831EC7$6.89
0.0019850 Eth
$45,910.00
6,755.695 0X582D872A1B094FC48F5DE31D3B73F2D9BE47DEF1
0.0015%
56
STON.fi
EQAWPZ2_G0NKXLG2VVGFBGZGPT8Y1QE0CGJ-4YW5BFMYR5IF-EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9C$6.91
0.0019927 Eth
$43,329.00
74,449,187.130 EQAWPZ2_G0NKXLG2VVGFBGZGPT8Y1QE0CGJ-4YW5BFMYR5IF
17.0766%
57
DeDust
EQBWY-WJ-WCQH0MFJHOWJMULJ0OIRKEJJT75ULYRJNPCNN5Z-EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9C$6.93
0.0019856 Eth
$40,124.00
19,953,447.317 EQBWY-WJ-WCQH0MFJHOWJMULJ0OIRKEJJT75ULYRJNPCNN5Z
4.5768%
58
Kanga
TON-USDT$6.91
0.0019929 Eth
$32,405.00
0.000 TON
0.0000%
59
HashKey Exchange
TON-USD$6.88
0.0019983 Eth
$31,495.00
4,502.050 TON
0.0010%
60
STON.fi
EQDNHY-NXYFGUQZFUZIMBEP67JQSYMICYK2S5_RWNNEYKU0K-EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9C$6.91
0.0019927 Eth
$30,905.00
4,313.487 EQDNHY-NXYFGUQZFUZIMBEP67JQSYMICYK2S5_RWNNEYKU0K
0.0010%
61
DeDust
EQDDCHA_K-Z97LKL599O0GDAT0PY2ZUUONS4WUF85TQ6NXIO-EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9C$6.91
0.0019821 Eth
$27,725.00
83,412.101 EQDDCHA_K-Z97LKL599O0GDAT0PY2ZUUONS4WUF85TQ6NXIO
0.0191%
62
DeDust
EQAWPZ2_G0NKXLG2VVGFBGZGPT8Y1QE0CGJ-4YW5BFMYR5IF-EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9C$6.84
0.0019884 Eth
$26,610.00
46,390,816.210 EQAWPZ2_G0NKXLG2VVGFBGZGPT8Y1QE0CGJ-4YW5BFMYR5IF
10.6408%
63
STON.fi
EQBIJD6Z0WIUICQDYWPOQALYT2TBTFV79PZU9K1R3L_QLUZ5-EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9C$6.91
0.0019927 Eth
$26,525.00
22,540,535.478 EQBIJD6Z0WIUICQDYWPOQALYT2TBTFV79PZU9K1R3L_QLUZ5
5.1702%
64
STON.fi
EQCJBP0KBPPWPOBG-U5C-CWFP_JNKSVOTGFARPF50Q9QIV9H-EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9C$6.91
0.0019927 Eth
$25,409.00
66,086.809 EQCJBP0KBPPWPOBG-U5C-CWFP_JNKSVOTGFARPF50Q9QIV9H
0.0152%
65
STON.fi
EQCLWVCJ44QYTELUJNCYKH7DOAUK_O7QI-LNAT3X5BOFNFMY-EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9C$6.91
0.0019927 Eth
$24,245.00
4,925,701.748 EQCLWVCJ44QYTELUJNCYKH7DOAUK_O7QI-LNAT3X5BOFNFMY
1.1298%
66
STON.fi
EQCCYUWKHJGXWQTK_JE9LW2V4ROFMBHOUR9E404Y6FQTEXHH-EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9C$6.91
0.0019927 Eth
$21,316.00
1,023,323.865 EQCCYUWKHJGXWQTK_JE9LW2V4ROFMBHOUR9E404Y6FQTEXHH
0.2347%
67
WEEX
TON-USDT$6.90
0.0019927 Eth
$21,233.00
3,060.610 TON
0.0007%
68
STON.fi
EQB4GPFG0YTOIJHCMTUUZXP9FKXY9NX6TFH-DCALTRNNPLNO-EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9C$6.91
0.0019927 Eth
$20,909.00
1,406,213.888 EQB4GPFG0YTOIJHCMTUUZXP9FKXY9NX6TFH-DCALTRNNPLNO
0.3225%
69
STON.fi
EQD26ZCD6CQPZ7WYLKVH8X_CD6D7TBROM6HKCYCV8L8HV0GP-EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9C$6.91
0.0019927 Eth
$20,566.00
25,836.879 EQD26ZCD6CQPZ7WYLKVH8X_CD6D7TBROM6HKCYCV8L8HV0GP
0.0059%
70
DeDust
EQAOLOJ9JHS1RMZEQWAYCCD_8GLZHI3M7LNOFONTUHP4TA8N-EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9C$6.91
0.0019821 Eth
$17,720.44
2,520,373.393 EQAOLOJ9JHS1RMZEQWAYCCD_8GLZHI3M7LNOFONTUHP4TA8N
0.5781%
71
Bitlo
TON-USDT$6.82
0.0019830 Eth
$17,428.87
2,528.120 TON
0.0006%
72
DeDust
EQD26ZCD6CQPZ7WYLKVH8X_CD6D7TBROM6HKCYCV8L8HV0GP-EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9C$6.91
0.0019949 Eth
$16,028.25
20,093.086 EQD26ZCD6CQPZ7WYLKVH8X_CD6D7TBROM6HKCYCV8L8HV0GP
0.0046%
73
DeDust
EQBYNBO23YWHY_CGARY9NK9FTZ0YDSG82PTCBSTQGGOXWIUA-EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9C$6.91
0.0019878 Eth
$14,715.20
14,844.145 EQBYNBO23YWHY_CGARY9NK9FTZ0YDSG82PTCBSTQGGOXWIUA
0.0034%
74
DeDust
EQCF9OYXO37XCGX1DSHZEWEAVGJE6KUCP0ZTKO6VCSRANDOM-EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9C$6.93
0.0019807 Eth
$14,195.80
6,079.467 EQCF9OYXO37XCGX1DSHZEWEAVGJE6KUCP0ZTKO6VCSRANDOM
0.0014%
75
Bitlo
TON-TRY$6.94
0.0020027 Eth
$13,794.79
1,973.609 TON
0.0005%
76
OKCoin Japan
TON-JPY$6.94
0.0020165 Eth
$12,611.18
1,818.353 TON
0.0004%
77
STON.fi
EQCRYX0KMADQ2UCZU7GP6HH9TYTQWC4R5HTK6UKLOAINUQOB-EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9C$6.91
0.0019927 Eth
$11,577.31
127,798.661 EQCRYX0KMADQ2UCZU7GP6HH9TYTQWC4R5HTK6UKLOAINUQOB
0.0293%
78
STON.fi
EQCDPZ6QHJTDTM2S9-KRV2YGL45PWL-KJJCV1-XRP-XUUXOQ-EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9C$6.91
0.0019927 Eth
$11,422.83
9,302.091 EQCDPZ6QHJTDTM2S9-KRV2YGL45PWL-KJJCV1-XRP-XUUXOQ
0.0021%
79
DeDust
EQB4GPFG0YTOIJHCMTUUZXP9FKXY9NX6TFH-DCALTRNNPLNO-EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9C$6.93
0.0019807 Eth
$11,076.59
740,689.692 EQB4GPFG0YTOIJHCMTUUZXP9FKXY9NX6TFH-DCALTRNNPLNO
0.1699%
80
STON.fi
EQDV68B3JAWBO_DRP6U13OQ7KSNKHR926KMXCOJWACDY_UQC-EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9C$6.91
0.0019927 Eth
$10,968.49
1,037,452.424 EQDV68B3JAWBO_DRP6U13OQ7KSNKHR926KMXCOJWACDY_UQC
0.2380%
81
STON.fi
EQBTCL4JA-PDPIUKB8UTHCQDAFTMUSTQDL8Z1EEXEPLTI_NK-EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9C$6.91
0.0019927 Eth
$8,808.99
12,389.131 EQBTCL4JA-PDPIUKB8UTHCQDAFTMUSTQDL8Z1EEXEPLTI_NK
0.0028%
82
DeDust
EQDJXGXVDKTCG0N6-E6B1-FL1U1LNPHMYPQIO3UEA9KAZ07J-EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9C$6.93
0.0019815 Eth
$8,490.68
80,039.437 EQDJXGXVDKTCG0N6-E6B1-FL1U1LNPHMYPQIO3UEA9KAZ07J
0.0184%
83
STON.fi
EQCBKMTMEADSNZSK85LOPADKDH3HJUJEBTEPMSEIRVEANQ-U-EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9C$6.91
0.0019927 Eth
$8,047.58
4,448.599 EQCBKMTMEADSNZSK85LOPADKDH3HJUJEBTEPMSEIRVEANQ-U
0.0010%
84
Bitfinex
TON-USD$6.89
0.0020014 Eth
$7,845.48
1,139.040 TON
0.0003%
85
Bittime
TON-IDR$6.89
0.0019875 Eth
$7,780.81
1,122.570 TON
0.0003%
86
HashKey Global
TON-USDT$6.90
0.0019903 Eth
$6,725.94
969.610 TON
0.0002%
87
DeDust
EQCVAF0JMRV6BOVPPAGEE08UQM_URPUD__FHA7NM8TWZVBE_-EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9C$6.91
0.0019949 Eth
$6,354.62
19,127.475 EQCVAF0JMRV6BOVPPAGEE08UQM_URPUD__FHA7NM8TWZVBE_
0.0044%
88
STON.fi
EQCH44N73BXEHT8063KAK_27OCOMVJNMAAEBSO-DZOYAY6G_-EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9C$6.91
0.0019927 Eth
$6,185.04
215,329.018 EQCH44N73BXEHT8063KAK_27OCOMVJNMAAEBSO-DZOYAY6G_
0.0494%
89
STON.fi
EQDQZ7LTWGJ016KITISOOM_FT8KVEL2P4PJ4FKJMSUV_AN_X-EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9C$6.91
0.0019927 Eth
$5,784.82
353,905.328 EQDQZ7LTWGJ016KITISOOM_FT8KVEL2P4PJ4FKJMSUV_AN_X
0.0812%
90
DeDust
EQCBDXPECFEPH2WUXI1A6QIOKSF-5QDJUWQLCUUKTD-GLINT-EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9C$6.91
0.0019949 Eth
$5,011.40
36,886.792 EQCBDXPECFEPH2WUXI1A6QIOKSF-5QDJUWQLCUUKTD-GLINT
0.0085%
91
STON.fi
EQDU_UFS6L8XLQITHKBEGC96RVPFGDRXFZIRBTSAMBPFZ-X6-EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9C$6.91
0.0019927 Eth
$4,981.51
1,621,850.085 EQDU_UFS6L8XLQITHKBEGC96RVPFGDRXFZIRBTSAMBPFZ-X6
0.3720%
92
STON.fi
EQBX6K9AXVL3NXINCYPPL86C4ONVMQ8VK360U6DYKFKXPHCA-EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9C$6.91
0.0019927 Eth
$4,890.34
21,102.935 EQBX6K9AXVL3NXINCYPPL86C4ONVMQ8VK360U6DYKFKXPHCA
0.0048%
93
DeDust
EQBTCL4JA-PDPIUKB8UTHCQDAFTMUSTQDL8Z1EEXEPLTI_NK-EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9C$6.91
0.0019949 Eth
$4,885.14
6,770.201 EQBTCL4JA-PDPIUKB8UTHCQDAFTMUSTQDL8Z1EEXEPLTI_NK
0.0016%
94
Bittime
TON-USDT$6.90
0.0019910 Eth
$4,796.82
693.654 TON
0.0002%
95
DeDust
EQDNDV54V_TEU5T26RFYKYLSDPQSV5NSSZAH_V7JSJPTMITV-EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9C$6.91
0.0019949 Eth
$3,821.71
2,479.969 EQDNDV54V_TEU5T26RFYKYLSDPQSV5NSSZAH_V7JSJPTMITV
0.0006%
96
STON.fi
EQB0APV-NYCYJDVWSBODL86XJP0OIWCYD8JJ0J5BVWNNDJU7-EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9C$6.91
0.0019927 Eth
$3,666.99
8,732,201.362 EQB0APV-NYCYJDVWSBODL86XJP0OIWCYD8JJ0J5BVWNNDJU7
2.0029%
97
STON.fi
EQDCJL0IQHOFCBBVFBHDVG233RI2V4KCNFGFRT-GQAD3OC86-EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9C$6.91
0.0019927 Eth
$3,148.72
1,004,494.322 EQDCJL0IQHOFCBBVFBHDVG233RI2V4KCNFGFRT-GQAD3OC86
0.2304%
98
DeDust
EQAVW-6SK7NJEPSJGH1GW60LYEKHYZSMK9PHBXSTCCLDY4BV-EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9C$6.91
0.0019878 Eth
$2,684.64
5,140,851.232 EQAVW-6SK7NJEPSJGH1GW60LYEKHYZSMK9PHBXSTCCLDY4BV
1.1792%
99
STON.fi
EQC35PGY9ERPONN75WZPFPOYU5GWUNMLVUEE61OOBPKOILGQ-EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9C$6.91
0.0019927 Eth
$2,181.36
353,016.982 EQC35PGY9ERPONN75WZPFPOYU5GWUNMLVUEE61OOBPKOILGQ
0.0810%
100
STON.fi
EQAUCO5ZEPGB19FSTO7EMTLTJYSRKXBU6M_XOFDWWQINJCSQ-EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9C$6.91
0.0019927 Eth
$2,027.31
1,822,562.897 EQAUCO5ZEPGB19FSTO7EMTLTJYSRKXBU6M_XOFDWWQINJCSQ
0.4180%

Contract Source Code Verified (Exact Match)

Contract Name:
Bridge

Compiler Version
v0.7.4+commit.3f05b770

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Audited
File 1 of 7 : Bridge.sol
pragma solidity ^0.7.0;
pragma experimental ABIEncoderV2;

import "./BridgeInterface.sol";
import "./SignatureChecker.sol";
import "./WrappedTON.sol";


contract Bridge is SignatureChecker, BridgeInterface, WrappedTON {
    address[] public oraclesSet;
    mapping(address => bool) public isOracle;
    mapping(bytes32 => bool) public finishedVotings;

    constructor (string memory name_, string memory symbol_, address[] memory initialSet) ERC20(name_, symbol_) {
        updateOracleSet(0, initialSet);
    }
    
    function generalVote(bytes32 digest, Signature[] memory signatures) internal {
      require(signatures.length >= 2 * oraclesSet.length / 3, "Not enough signatures");
      require(!finishedVotings[digest], "Vote is already finished");
      uint signum = signatures.length;
      uint last_signer = 0;
      for(uint i=0; i<signum; i++) {
        address signer = signatures[i].signer;
        require(isOracle[signer], "Unauthorized signer");
        uint next_signer = uint(signer);
        require(next_signer > last_signer, "Signatures are not sorted");
        last_signer = next_signer;
        checkSignature(digest, signatures[i]);
      }
      finishedVotings[digest] = true;
    }

    function voteForMinting(SwapData memory data, Signature[] memory signatures) override public {
      bytes32 _id = getSwapDataId(data);
      generalVote(_id, signatures);
      executeMinting(data);
    }

    function voteForNewOracleSet(int oracleSetHash, address[] memory newOracles, Signature[] memory signatures) override  public {
      bytes32 _id = getNewSetId(oracleSetHash, newOracles);
      require(newOracles.length > 2, "New set is too short");
      generalVote(_id, signatures);
      updateOracleSet(oracleSetHash, newOracles);
    }

    function voteForSwitchBurn(bool newBurnStatus, int nonce, Signature[] memory signatures) override public {
      bytes32 _id = getNewBurnStatusId(newBurnStatus, nonce);
      generalVote(_id, signatures);
      allowBurn = newBurnStatus;
    }

    function executeMinting(SwapData memory data) internal {
      mint(data);
    }

    function updateOracleSet(int oracleSetHash, address[] memory newSet) internal {
      uint oldSetLen = oraclesSet.length;
      for(uint i = 0; i < oldSetLen; i++) {
        isOracle[oraclesSet[i]] = false;
      }
      oraclesSet = newSet;
      uint newSetLen = oraclesSet.length;
      for(uint i = 0; i < newSetLen; i++) {
        require(!isOracle[newSet[i]], "Duplicate oracle in Set");
        isOracle[newSet[i]] = true;
      }
      emit NewOracleSet(oracleSetHash, newSet);
    }
    function getFullOracleSet() public view returns (address[] memory) {
        return oraclesSet;
    }
}

File 2 of 7 : BridgeInterface.sol
pragma solidity ^0.7.0;
pragma experimental ABIEncoderV2;

import "./TonUtils.sol";


interface BridgeInterface is TonUtils {
  function voteForMinting(SwapData memory data, Signature[] memory signatures) external;
  function voteForNewOracleSet(int oracleSetHash, address[] memory newOracles, Signature[] memory signatures) external;
  function voteForSwitchBurn(bool newBurnStatus, int nonce, Signature[] memory signatures) external;
  event NewOracleSet(int oracleSetHash, address[] newOracles);
}

File 3 of 7 : ERC20.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.7.4;

import "./IERC20.sol";

/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * We have followed general OpenZeppelin guidelines: functions revert instead
 * of returning `false` on failure. This behavior is nonetheless conventional
 * and does not conflict with the expectations of ERC20 applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
contract ERC20 is IERC20 {
    mapping (address => uint256) private _balances;

    mapping (address => mapping (address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The defaut value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor (string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5,05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual returns (uint8) {
        return 18;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][msg.sender];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, msg.sender, currentAllowance - amount);

        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(msg.sender, spender, _allowances[msg.sender][spender] + addedValue);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[msg.sender][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(msg.sender, spender, currentAllowance - subtractedValue);

        return true;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(address sender, address recipient, uint256 amount) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        _balances[sender] = senderBalance - amount;
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        _balances[account] = accountBalance - amount;
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(address owner, address spender, uint256 amount) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be to transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { }
}

File 4 of 7 : IERC20.sol
pragma solidity ^0.7.0;

/* Source: @openzeppelin/contracts */
// SPDX-License-Identifier: MIT

/**
 * @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 5 of 7 : SignatureChecker.sol
pragma solidity ^0.7.0;
pragma experimental ABIEncoderV2;

import "./TonUtils.sol";

contract SignatureChecker is TonUtils {

    function checkSignature(bytes32 digest, Signature memory sig) public pure {
          if (sig.signature.length != 65) {
              revert("ECDSA: invalid signature length");
          }

          // Divide the signature in r, s and v variables
          bytes32 r;
          bytes32 s;
          uint8 v;

          bytes memory signature = sig.signature;

          // ecrecover takes the signature parameters, and the only way to get them
          // currently is to use assembly.
          // solhint-disable-next-line no-inline-assembly
          assembly {
              r := mload(add(signature, 0x20))
              s := mload(add(signature, 0x40))
              v := byte(0, mload(add(signature, 0x60)))
          }

          if (
              uint256(s) >
              0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0
          ) {
              revert("ECDSA: invalid signature 's' value");
          }

          if (v != 27 && v != 28) {
              revert("ECDSA: invalid signature 'v' value");
          }
          bytes memory prefix = "\x19Ethereum Signed Message:\n32";
          bytes32 prefixedHash = keccak256(abi.encodePacked(prefix, digest));
          require(ecrecover(prefixedHash, v, r, s) == sig.signer, "Wrong signature");
    }

    function getSwapDataId(SwapData memory data)
        public
        pure
        returns (bytes32 result)
    {
        result = 
            keccak256(
                abi.encode(
                    0xDA7A,
                    data.receiver,
                    data.amount,
                    data.tx.address_.workchain,
                    data.tx.address_.address_hash,
                    data.tx.tx_hash,
                    data.tx.lt                   
                )
            );
    }

    function getNewSetId(int oracleSetHash, address[] memory set)
        public
        pure
        returns (bytes32 result)
    {
        result = 
            keccak256(
                abi.encode(
                    0x5e7,
                    oracleSetHash,
                    set                    
                )
            );
    }

    function getNewBurnStatusId(bool newBurnStatus, int nonce)
        public
        pure
        returns (bytes32 result)
    {
        result =
            keccak256(
                abi.encode(
                    0xB012,
                    newBurnStatus,
                    nonce
                )
            );
    }


}

File 6 of 7 : TonUtils.sol
pragma solidity ^0.7.0;

interface TonUtils {
    struct TonAddress {
        int8 workchain;
        bytes32 address_hash;
    }
    struct TonTxID {
        TonAddress address_;
        bytes32 tx_hash;
        uint64 lt;
    }

  struct SwapData {
        address receiver;
        uint64 amount;
        TonTxID tx;
  }
  struct Signature {
        address signer;
        bytes signature;
  }

}

File 7 of 7 : WrappedTON.sol
pragma solidity ^0.7.0;
pragma experimental ABIEncoderV2;

import "./ERC20.sol";
import "./TonUtils.sol";


abstract contract WrappedTON is ERC20, TonUtils {
    bool public allowBurn;

    function mint(SwapData memory sd) internal {
      _mint(sd.receiver, sd.amount);
      emit SwapTonToEth(sd.tx.address_.workchain, sd.tx.address_.address_hash, sd.tx.tx_hash, sd.tx.lt, sd.receiver, sd.amount);
    }

    /**
     * @dev Destroys `amount` tokens from the caller and request transfer to `addr` on TON network
     *
     * See {ERC20-_burn}.
     */
    function burn(uint256 amount, TonAddress memory addr) external {
      require(allowBurn, "Burn is currently disabled");
      _burn(msg.sender, amount);
      emit SwapEthToTon(msg.sender, addr.workchain, addr.address_hash, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, deducting from the caller's
     * allowance and request transder to `addr`
     *
     * See {ERC20-_burn} and {ERC20-allowance}.
     *
     * Requirements:
     *
     * - the caller must have allowance for ``accounts``'s tokens of at least
     * `amount`.
     */
    function burnFrom(address account, uint256 amount, TonAddress memory addr) external {
        require(allowBurn, "Burn is currently disabled");
        uint256 currentAllowance = allowance(account,msg.sender);
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(account, msg.sender, currentAllowance - amount);
        _burn(account, amount);
        emit SwapEthToTon(account, addr.workchain, addr.address_hash, amount);
    }

    function decimals() public pure override returns (uint8) {
        return 9;
    }

    event SwapEthToTon(address indexed from, int8 to_wc, bytes32 indexed to_addr_hash, uint256 value);
    event SwapTonToEth(int8 workchain, bytes32 indexed ton_address_hash, bytes32 indexed ton_tx_hash, uint64 lt, address indexed to, uint256 value);
}

Settings
{
  "remappings": [],
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "evmVersion": "istanbul",
  "libraries": {},
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"address[]","name":"initialSet","type":"address[]"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"int256","name":"oracleSetHash","type":"int256"},{"indexed":false,"internalType":"address[]","name":"newOracles","type":"address[]"}],"name":"NewOracleSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"int8","name":"to_wc","type":"int8"},{"indexed":true,"internalType":"bytes32","name":"to_addr_hash","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"SwapEthToTon","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"int8","name":"workchain","type":"int8"},{"indexed":true,"internalType":"bytes32","name":"ton_address_hash","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"ton_tx_hash","type":"bytes32"},{"indexed":false,"internalType":"uint64","name":"lt","type":"uint64"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"SwapTonToEth","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"allowBurn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"components":[{"internalType":"int8","name":"workchain","type":"int8"},{"internalType":"bytes32","name":"address_hash","type":"bytes32"}],"internalType":"struct TonUtils.TonAddress","name":"addr","type":"tuple"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"components":[{"internalType":"int8","name":"workchain","type":"int8"},{"internalType":"bytes32","name":"address_hash","type":"bytes32"}],"internalType":"struct TonUtils.TonAddress","name":"addr","type":"tuple"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"digest","type":"bytes32"},{"components":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct TonUtils.Signature","name":"sig","type":"tuple"}],"name":"checkSignature","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"finishedVotings","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFullOracleSet","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"newBurnStatus","type":"bool"},{"internalType":"int256","name":"nonce","type":"int256"}],"name":"getNewBurnStatusId","outputs":[{"internalType":"bytes32","name":"result","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"int256","name":"oracleSetHash","type":"int256"},{"internalType":"address[]","name":"set","type":"address[]"}],"name":"getNewSetId","outputs":[{"internalType":"bytes32","name":"result","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint64","name":"amount","type":"uint64"},{"components":[{"components":[{"internalType":"int8","name":"workchain","type":"int8"},{"internalType":"bytes32","name":"address_hash","type":"bytes32"}],"internalType":"struct TonUtils.TonAddress","name":"address_","type":"tuple"},{"internalType":"bytes32","name":"tx_hash","type":"bytes32"},{"internalType":"uint64","name":"lt","type":"uint64"}],"internalType":"struct TonUtils.TonTxID","name":"tx","type":"tuple"}],"internalType":"struct TonUtils.SwapData","name":"data","type":"tuple"}],"name":"getSwapDataId","outputs":[{"internalType":"bytes32","name":"result","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isOracle","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"oraclesSet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint64","name":"amount","type":"uint64"},{"components":[{"components":[{"internalType":"int8","name":"workchain","type":"int8"},{"internalType":"bytes32","name":"address_hash","type":"bytes32"}],"internalType":"struct TonUtils.TonAddress","name":"address_","type":"tuple"},{"internalType":"bytes32","name":"tx_hash","type":"bytes32"},{"internalType":"uint64","name":"lt","type":"uint64"}],"internalType":"struct TonUtils.TonTxID","name":"tx","type":"tuple"}],"internalType":"struct TonUtils.SwapData","name":"data","type":"tuple"},{"components":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct TonUtils.Signature[]","name":"signatures","type":"tuple[]"}],"name":"voteForMinting","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"int256","name":"oracleSetHash","type":"int256"},{"internalType":"address[]","name":"newOracles","type":"address[]"},{"components":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct TonUtils.Signature[]","name":"signatures","type":"tuple[]"}],"name":"voteForNewOracleSet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newBurnStatus","type":"bool"},{"internalType":"int256","name":"nonce","type":"int256"},{"components":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct TonUtils.Signature[]","name":"signatures","type":"tuple[]"}],"name":"voteForSwitchBurn","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b50604051620023fb380380620023fb8339810160408190526200003491620003a7565b8251839083906200004d906003906020850190620001f9565b50805162000063906004906020840190620001f9565b505050620000796000826200008260201b60201c565b50505062000557565b60065460005b81811015620000e25760006007600060068481548110620000a557fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff191691151591909117905560010162000088565b508151620000f89060069060208501906200028e565b5060065460005b81811015620001b757600760008583815181106200011957fe5b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff1615620001695760405162461bcd60e51b81526004016200016090620004fc565b60405180910390fd5b6001600760008684815181106200017c57fe5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055600101620000ff565b507fbf8eff3db76b38ea899a5a32c8b2bede5ec5a339a2c5080495d1b154f2b5f21e8484604051620001eb929190620004a4565b60405180910390a150505050565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826200023157600085556200027c565b82601f106200024c57805160ff19168380011785556200027c565b828001600101855582156200027c579182015b828111156200027c5782518255916020019190600101906200025f565b506200028a929150620002e6565b5090565b8280548282559060005260206000209081019282156200027c579160200282015b828111156200027c57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190620002af565b5b808211156200028a5760008155600101620002e7565b80516001600160a01b03811681146200031557600080fd5b919050565b600082601f8301126200032b578081fd5b81516001600160401b038111156200033f57fe5b602062000355601f8301601f1916820162000533565b925081835284818386010111156200036c57600080fd5b60005b828110156200038c5784810182015184820183015281016200036f565b828111156200039e5760008284860101525b50505092915050565b600080600060608486031215620003bc578283fd5b83516001600160401b0380821115620003d3578485fd5b620003e1878388016200031a565b9450602091508186015181811115620003f8578485fd5b62000406888289016200031a565b9450506040860151818111156200041b578384fd5b8601601f810188136200042c578384fd5b8051828111156200043957fe5b83810292506200044b84840162000533565b8181528481019083860185850187018c101562000466578788fd5b8795505b8386101562000493576200047e81620002fd565b8352600195909501949186019186016200046a565b508096505050505050509250925092565b60006040820184835260206040818501528185518084526060860191508287019350845b81811015620004ef5784516001600160a01b031683529383019391830191600101620004c8565b5090979650505050505050565b60208082526017908201527f4475706c6963617465206f7261636c6520696e20536574000000000000000000604082015260600190565b6040518181016001600160401b03811182821017156200054f57fe5b604052919050565b611e9480620005676000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c806370a08231116100de578063a9059cbb11610097578063cf1a0ce111610071578063cf1a0ce11461031e578063dd62ed3e14610331578063e057fbff14610344578063ffb6b2fa1461035757610173565b8063a9059cbb146102e5578063a97e5c93146102f8578063aefe7da41461030b57610173565b806370a082311461027c57806375f2d82b1461028f5780637ddc1027146102a457806395d89b41146102b7578063a2d7cab8146102bf578063a457c2d7146102d257610173565b806335e061fc1161013057806335e061fc1461020857806339509351146102105780634054b92b1461022357806343672af0146102365780634fd7795414610249578063633a0d181461026957610173565b806306fdde0314610178578063095ea7b3146101965780630a55ec25146101b657806318160ddd146101cb57806323b872dd146101e0578063313ce567146101f3575b600080fd5b61018061036a565b60405161018d91906119db565b60405180910390f35b6101a96101a43660046115e9565b610400565b60405161018d91906118be565b6101c96101c4366004611753565b610416565b005b6101d3610468565b60405161018d91906118c9565b6101a96101ee3660046115ae565b61046e565b6101fb6104f6565b60405161018d9190611ca0565b6101a96104fb565b6101a961021e3660046115e9565b610504565b6101c96102313660046117cd565b610537565b6101c9610244366004611612565b61055c565b61025c6102573660046116bd565b610615565b60405161018d9190611897565b6101d36102773660046117b2565b61063f565b6101d361028a36600461155b565b610692565b6102976106b1565b60405161018d91906118ab565b6101d36102b236600461164e565b610712565b610180610749565b6101c96102cd3660046116d5565b6107aa565b6101a96102e03660046115e9565b610954565b6101a96102f33660046115e9565b6109ce565b6101a961030636600461155b565b6109db565b6101d3610319366004611719565b6109f0565b6101a961032c3660046116bd565b610a09565b6101d361033f36600461157c565b610a1e565b6101c961035236600461180f565b610a49565b6101c9610365366004611669565b610abb565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103f65780601f106103cb576101008083540402835291602001916103f6565b820191906000526020600020905b8154815290600101906020018083116103d957829003601f168201915b5050505050905090565b600061040d338484610aea565b50600192915050565b600061042284846109f0565b9050600283511161044e5760405162461bcd60e51b815260040161044590611ad4565b60405180910390fd5b6104588183610bd6565b6104628484610d06565b50505050565b60025490565b600061047b848484610e66565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156104de5760405162461bcd60e51b8152600401808060200182810382526028815260200180611da86028913960400191505060405180910390fd5b6104eb8533858403610aea565b506001949350505050565b600990565b60055460ff1681565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161040d9185908501610aea565b60006105428361063f565b905061054e8183610bd6565b61055783610fbc565b505050565b60055460ff1661057e5760405162461bcd60e51b815260040161044590611a9d565b600061058a8433610a1e565b9050828110156105ac5760405162461bcd60e51b815260040161044590611bbd565b6105b98433858403610aea565b6105c38484610fc8565b8160200151846001600160a01b03167f6b74e6f7dd6e60dc426635d2014db6f0d51f3ce50162504b561ccd9ca158f68c846000015186604051610607929190611911565b60405180910390a350505050565b6006818154811061062557600080fd5b6000918252602090912001546001600160a01b0316905081565b80516020808301516040808501518051805190850151828601519284015193516000976106759761da7a97919691959201611990565b604051602081830303815290604052805190602001209050919050565b6001600160a01b0381166000908152602081905260409020545b919050565b606060068054806020026020016040519081016040528092919081815260200182805480156103f657602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116106eb575050505050905090565b600061b012838360405160200161072b93929190611974565b60405160208183030381529060405280519060200120905092915050565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103f65780601f106103cb576101008083540402835291602001916103f6565b8060200151516041146107cf5760405162461bcd60e51b815260040161044590611a0e565b60208082015190810151604082015160608301519192909160001a907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561082b5760405162461bcd60e51b815260040161044590611b02565b8160ff16601b1415801561084357508160ff16601c14155b156108605760405162461bcd60e51b815260040161044590611b7b565b60606040518060400160405280601c81526020017f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152509050600081886040516020016108af929190611875565b60405160208183030381529060405280519060200120905086600001516001600160a01b0316600182868989604051600081526020016040526040516108f894939291906118d2565b6020604051602081039080840390855afa15801561091a573d6000803e3d6000fd5b505050602060405103516001600160a01b03161461094a5760405162461bcd60e51b815260040161044590611a74565b5050505050505050565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156109b75760405162461bcd60e51b8152600401808060200182810382526025815260200180611e3a6025913960400191505060405180910390fd5b6109c43385858403610aea565b5060019392505050565b600061040d338484610e66565b60076020526000908152604090205460ff1681565b60006105e7838360405160200161072b93929190611948565b60086020526000908152604090205460ff1681565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60055460ff16610a6b5760405162461bcd60e51b815260040161044590611a9d565b610a753383610fc8565b6020810151815160405133917f6b74e6f7dd6e60dc426635d2014db6f0d51f3ce50162504b561ccd9ca158f68c91610aaf91908790611911565b60405180910390a35050565b6000610ac78484610712565b9050610ad38183610bd6565b50506005805460ff19169215159290921790915550565b6001600160a01b038316610b2f5760405162461bcd60e51b8152600401808060200182810382526024815260200180611e166024913960400191505060405180910390fd5b6001600160a01b038216610b745760405162461bcd60e51b8152600401808060200182810382526022815260200180611d606022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6006546003906002020481511015610c005760405162461bcd60e51b815260040161044590611a45565b60008281526008602052604090205460ff1615610c2f5760405162461bcd60e51b815260040161044590611b44565b80516000805b82811015610ce7576000848281518110610c4b57fe5b602090810291909101810151516001600160a01b0381166000908152600790925260409091205490915060ff16610c945760405162461bcd60e51b815260040161044590611c3c565b6001600160a01b038116838111610cbd5760405162461bcd60e51b815260040161044590611c69565b809350610cdd87878581518110610cd057fe5b60200260200101516107aa565b5050600101610c35565b505050600091825250600860205260409020805460ff19166001179055565b60065460005b81811015610d635760006007600060068481548110610d2757fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff1916911515919091179055600101610d0c565b508151610d7790600690602085019061121b565b5060065460005b81811015610e265760076000858381518110610d9657fe5b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff1615610dda5760405162461bcd60e51b815260040161044590611c05565b600160076000868481518110610dec57fe5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055600101610d7e565b507fbf8eff3db76b38ea899a5a32c8b2bede5ec5a339a2c5080495d1b154f2b5f21e8484604051610e589291906118f0565b60405180910390a150505050565b6001600160a01b038316610eab5760405162461bcd60e51b8152600401808060200182810382526025815260200180611df16025913960400191505060405180910390fd5b6001600160a01b038216610ef05760405162461bcd60e51b8152600401808060200182810382526023815260200180611d1b6023913960400191505060405180910390fd5b610efb838383610557565b6001600160a01b03831660009081526020819052604090205481811015610f535760405162461bcd60e51b8152600401808060200182810382526026815260200180611d826026913960400191505060405180910390fd5b6001600160a01b038085166000818152602081815260408083208787039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a350505050565b610fc5816110d2565b50565b6001600160a01b03821661100d5760405162461bcd60e51b8152600401808060200182810382526021815260200180611dd06021913960400191505060405180910390fd5b61101982600083610557565b6001600160a01b038216600090815260208190526040902054818110156110715760405162461bcd60e51b8152600401808060200182810382526022815260200180611d3e6022913960400191505060405180910390fd5b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055805186815290519293927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a3505050565b6110ed816000015182602001516001600160401b0316611157565b80516040808301516020808201518251808301519051938501519287015194516001600160a01b0390961695919490937fb4970d7abac0f0a296c031e82e94fba581d5f7c71401083ff999b9d86e9b99029361114c9391929091611924565b60405180910390a450565b6001600160a01b0382166111b2576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6111be60008383610557565b60028054820190556001600160a01b038216600081815260208181526040808320805486019055805185815290517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a35050565b828054828255906000526020600020908101928215611270579160200282015b8281111561127057825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019061123b565b5061127c929150611280565b5090565b5b8082111561127c5760008155600101611281565b80356001600160a01b03811681146106ac57600080fd5b600082601f8301126112bc578081fd5b81356112cf6112ca82611cd1565b611cae565b8181529150602080830190848101818402860182018710156112f057600080fd5b60005b848110156113165761130482611295565b845292820192908201906001016112f3565b505050505092915050565b600082601f830112611331578081fd5b813561133f6112ca82611cd1565b818152915060208083019084810160005b8481101561131657611367888484358a0101611389565b84529282019290820190600101611350565b803580151581146106ac57600080fd5b60006040828403121561139a578081fd5b604051604081016001600160401b0382821081831117156113b757fe5b816040528293506113c785611295565b83526020915081850135818111156113de57600080fd5b8501601f810187136113ef57600080fd5b8035828111156113fb57fe5b61140d601f8201601f19168501611cae565b9250808352878482840101111561142357600080fd5b808483018585013760009083018401525091015292915050565b600081830360c081121561144f578182fd5b60408051606081016001600160401b03828210818311171561146d57fe5b81845282955061147c87611295565b835261148a60208801611544565b60208401526080603f19860112156114a157600080fd5b8351945060608501915084821081831117156114b957fe5b5082526114c8868684016114ec565b8352608085013560208401526114e060a08601611544565b83830152015292915050565b6000604082840312156114fd578081fd5b604051604081018181106001600160401b038211171561151957fe5b6040529050808235600081900b811461153157600080fd5b8152602092830135920191909152919050565b80356001600160401b03811681146106ac57600080fd5b60006020828403121561156c578081fd5b61157582611295565b9392505050565b6000806040838503121561158e578081fd5b61159783611295565b91506115a560208401611295565b90509250929050565b6000806000606084860312156115c2578081fd5b6115cb84611295565b92506115d960208501611295565b9150604084013590509250925092565b600080604083850312156115fb578182fd5b61160483611295565b946020939093013593505050565b600080600060808486031215611626578283fd5b61162f84611295565b92506020840135915061164585604086016114ec565b90509250925092565b60008060408385031215611660578182fd5b61160483611379565b60008060006060848603121561167d578283fd5b61168684611379565b92506020840135915060408401356001600160401b038111156116a7578182fd5b6116b386828701611321565b9150509250925092565b6000602082840312156116ce578081fd5b5035919050565b600080604083850312156116e7578182fd5b8235915060208301356001600160401b03811115611703578182fd5b61170f85828601611389565b9150509250929050565b6000806040838503121561172b578182fd5b8235915060208301356001600160401b03811115611747578182fd5b61170f858286016112ac565b600080600060608486031215611767578081fd5b8335925060208401356001600160401b0380821115611784578283fd5b611790878388016112ac565b935060408601359150808211156117a5578283fd5b506116b386828701611321565b600060c082840312156117c3578081fd5b611575838361143d565b60008060e083850312156117df578182fd5b6117e9848461143d565b915060c08301356001600160401b03811115611803578182fd5b61170f85828601611321565b60008060608385031215611821578182fd5b823591506115a584602085016114ec565b6000815180845260208085019450808401835b8381101561186a5781516001600160a01b031687529582019590820190600101611845565b509495945050505050565b60008351611887818460208801611cee565b9190910191825250602001919050565b6001600160a01b0391909116815260200190565b6000602082526115756020830184611832565b901515815260200190565b90815260200190565b93845260ff9290921660208401526040830152606082015260800190565b6000838252604060208301526119096040830184611832565b949350505050565b60009290920b8252602082015260400190565b60009390930b83526001600160401b03918216602084015216604082015260600190565b600061ffff851682528360208301526060604083015261196b6060830184611832565b95945050505050565b61ffff9390931683529015156020830152604082015260600190565b61ffff9790971687526001600160a01b039590951660208701526001600160401b03938416604087015260009290920b6060860152608085015260a08401521660c082015260e00190565b60006020825282518060208401526119fa816040850160208701611cee565b601f01601f19169190910160400192915050565b6020808252601f908201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604082015260600190565b6020808252601590820152744e6f7420656e6f756768207369676e61747572657360581b604082015260600190565b6020808252600f908201526e57726f6e67207369676e617475726560881b604082015260600190565b6020808252601a908201527f4275726e2069732063757272656e746c792064697361626c6564000000000000604082015260600190565b60208082526014908201527313995dc81cd95d081a5cc81d1bdbc81cda1bdc9d60621b604082015260600190565b60208082526022908201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604082015261756560f01b606082015260800190565b60208082526018908201527f566f746520697320616c72656164792066696e69736865640000000000000000604082015260600190565b60208082526022908201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604082015261756560f01b606082015260800190565b60208082526028908201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616040820152676c6c6f77616e636560c01b606082015260800190565b60208082526017908201527f4475706c6963617465206f7261636c6520696e20536574000000000000000000604082015260600190565b6020808252601390820152722ab730baba3437b934bd32b21039b4b3b732b960691b604082015260600190565b60208082526019908201527f5369676e61747572657320617265206e6f7420736f7274656400000000000000604082015260600190565b60ff91909116815260200190565b6040518181016001600160401b0381118282101715611cc957fe5b604052919050565b60006001600160401b03821115611ce457fe5b5060209081020190565b60005b83811015611d09578181015183820152602001611cf1565b83811115610462575050600091015256fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122059e486842dfe8c7ab44224799a35633a87ec346b1f567828e3450c99e78e54a864736f6c63430007040033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000105772617070656420544f4e20436f696e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007544f4e434f494e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009000000000000000000000000c4c9bd836ab8b446519736166919e3d62491e041000000000000000000000000cf4a7c26186aa41390e246fa04115a0495085ab900000000000000000000000017dcab1b1481610f6c7a7a98cf0370dc0ec704a600000000000000000000000032162caaed276e77ef63194820586c942009a962000000000000000000000000039f4e886432bd4f3cb5062f9861efef3f6ada28000000000000000000000000ff441f9889aa475d9d3b1c638c59b84c5179846d0000000000000000000000000933738699dc733c46a0d4cbebda2f842e1ac7d90000000000000000000000007f2bbaac14f0f1834e6d0219f8855a5f619fe2c4000000000000000000000000fc5c6a2d01a984ba9eab7cf87a6d169aa9720c0c

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101735760003560e01c806370a08231116100de578063a9059cbb11610097578063cf1a0ce111610071578063cf1a0ce11461031e578063dd62ed3e14610331578063e057fbff14610344578063ffb6b2fa1461035757610173565b8063a9059cbb146102e5578063a97e5c93146102f8578063aefe7da41461030b57610173565b806370a082311461027c57806375f2d82b1461028f5780637ddc1027146102a457806395d89b41146102b7578063a2d7cab8146102bf578063a457c2d7146102d257610173565b806335e061fc1161013057806335e061fc1461020857806339509351146102105780634054b92b1461022357806343672af0146102365780634fd7795414610249578063633a0d181461026957610173565b806306fdde0314610178578063095ea7b3146101965780630a55ec25146101b657806318160ddd146101cb57806323b872dd146101e0578063313ce567146101f3575b600080fd5b61018061036a565b60405161018d91906119db565b60405180910390f35b6101a96101a43660046115e9565b610400565b60405161018d91906118be565b6101c96101c4366004611753565b610416565b005b6101d3610468565b60405161018d91906118c9565b6101a96101ee3660046115ae565b61046e565b6101fb6104f6565b60405161018d9190611ca0565b6101a96104fb565b6101a961021e3660046115e9565b610504565b6101c96102313660046117cd565b610537565b6101c9610244366004611612565b61055c565b61025c6102573660046116bd565b610615565b60405161018d9190611897565b6101d36102773660046117b2565b61063f565b6101d361028a36600461155b565b610692565b6102976106b1565b60405161018d91906118ab565b6101d36102b236600461164e565b610712565b610180610749565b6101c96102cd3660046116d5565b6107aa565b6101a96102e03660046115e9565b610954565b6101a96102f33660046115e9565b6109ce565b6101a961030636600461155b565b6109db565b6101d3610319366004611719565b6109f0565b6101a961032c3660046116bd565b610a09565b6101d361033f36600461157c565b610a1e565b6101c961035236600461180f565b610a49565b6101c9610365366004611669565b610abb565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103f65780601f106103cb576101008083540402835291602001916103f6565b820191906000526020600020905b8154815290600101906020018083116103d957829003601f168201915b5050505050905090565b600061040d338484610aea565b50600192915050565b600061042284846109f0565b9050600283511161044e5760405162461bcd60e51b815260040161044590611ad4565b60405180910390fd5b6104588183610bd6565b6104628484610d06565b50505050565b60025490565b600061047b848484610e66565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156104de5760405162461bcd60e51b8152600401808060200182810382526028815260200180611da86028913960400191505060405180910390fd5b6104eb8533858403610aea565b506001949350505050565b600990565b60055460ff1681565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161040d9185908501610aea565b60006105428361063f565b905061054e8183610bd6565b61055783610fbc565b505050565b60055460ff1661057e5760405162461bcd60e51b815260040161044590611a9d565b600061058a8433610a1e565b9050828110156105ac5760405162461bcd60e51b815260040161044590611bbd565b6105b98433858403610aea565b6105c38484610fc8565b8160200151846001600160a01b03167f6b74e6f7dd6e60dc426635d2014db6f0d51f3ce50162504b561ccd9ca158f68c846000015186604051610607929190611911565b60405180910390a350505050565b6006818154811061062557600080fd5b6000918252602090912001546001600160a01b0316905081565b80516020808301516040808501518051805190850151828601519284015193516000976106759761da7a97919691959201611990565b604051602081830303815290604052805190602001209050919050565b6001600160a01b0381166000908152602081905260409020545b919050565b606060068054806020026020016040519081016040528092919081815260200182805480156103f657602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116106eb575050505050905090565b600061b012838360405160200161072b93929190611974565b60405160208183030381529060405280519060200120905092915050565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103f65780601f106103cb576101008083540402835291602001916103f6565b8060200151516041146107cf5760405162461bcd60e51b815260040161044590611a0e565b60208082015190810151604082015160608301519192909160001a907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561082b5760405162461bcd60e51b815260040161044590611b02565b8160ff16601b1415801561084357508160ff16601c14155b156108605760405162461bcd60e51b815260040161044590611b7b565b60606040518060400160405280601c81526020017f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152509050600081886040516020016108af929190611875565b60405160208183030381529060405280519060200120905086600001516001600160a01b0316600182868989604051600081526020016040526040516108f894939291906118d2565b6020604051602081039080840390855afa15801561091a573d6000803e3d6000fd5b505050602060405103516001600160a01b03161461094a5760405162461bcd60e51b815260040161044590611a74565b5050505050505050565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156109b75760405162461bcd60e51b8152600401808060200182810382526025815260200180611e3a6025913960400191505060405180910390fd5b6109c43385858403610aea565b5060019392505050565b600061040d338484610e66565b60076020526000908152604090205460ff1681565b60006105e7838360405160200161072b93929190611948565b60086020526000908152604090205460ff1681565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60055460ff16610a6b5760405162461bcd60e51b815260040161044590611a9d565b610a753383610fc8565b6020810151815160405133917f6b74e6f7dd6e60dc426635d2014db6f0d51f3ce50162504b561ccd9ca158f68c91610aaf91908790611911565b60405180910390a35050565b6000610ac78484610712565b9050610ad38183610bd6565b50506005805460ff19169215159290921790915550565b6001600160a01b038316610b2f5760405162461bcd60e51b8152600401808060200182810382526024815260200180611e166024913960400191505060405180910390fd5b6001600160a01b038216610b745760405162461bcd60e51b8152600401808060200182810382526022815260200180611d606022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6006546003906002020481511015610c005760405162461bcd60e51b815260040161044590611a45565b60008281526008602052604090205460ff1615610c2f5760405162461bcd60e51b815260040161044590611b44565b80516000805b82811015610ce7576000848281518110610c4b57fe5b602090810291909101810151516001600160a01b0381166000908152600790925260409091205490915060ff16610c945760405162461bcd60e51b815260040161044590611c3c565b6001600160a01b038116838111610cbd5760405162461bcd60e51b815260040161044590611c69565b809350610cdd87878581518110610cd057fe5b60200260200101516107aa565b5050600101610c35565b505050600091825250600860205260409020805460ff19166001179055565b60065460005b81811015610d635760006007600060068481548110610d2757fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff1916911515919091179055600101610d0c565b508151610d7790600690602085019061121b565b5060065460005b81811015610e265760076000858381518110610d9657fe5b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff1615610dda5760405162461bcd60e51b815260040161044590611c05565b600160076000868481518110610dec57fe5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055600101610d7e565b507fbf8eff3db76b38ea899a5a32c8b2bede5ec5a339a2c5080495d1b154f2b5f21e8484604051610e589291906118f0565b60405180910390a150505050565b6001600160a01b038316610eab5760405162461bcd60e51b8152600401808060200182810382526025815260200180611df16025913960400191505060405180910390fd5b6001600160a01b038216610ef05760405162461bcd60e51b8152600401808060200182810382526023815260200180611d1b6023913960400191505060405180910390fd5b610efb838383610557565b6001600160a01b03831660009081526020819052604090205481811015610f535760405162461bcd60e51b8152600401808060200182810382526026815260200180611d826026913960400191505060405180910390fd5b6001600160a01b038085166000818152602081815260408083208787039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a350505050565b610fc5816110d2565b50565b6001600160a01b03821661100d5760405162461bcd60e51b8152600401808060200182810382526021815260200180611dd06021913960400191505060405180910390fd5b61101982600083610557565b6001600160a01b038216600090815260208190526040902054818110156110715760405162461bcd60e51b8152600401808060200182810382526022815260200180611d3e6022913960400191505060405180910390fd5b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055805186815290519293927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a3505050565b6110ed816000015182602001516001600160401b0316611157565b80516040808301516020808201518251808301519051938501519287015194516001600160a01b0390961695919490937fb4970d7abac0f0a296c031e82e94fba581d5f7c71401083ff999b9d86e9b99029361114c9391929091611924565b60405180910390a450565b6001600160a01b0382166111b2576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6111be60008383610557565b60028054820190556001600160a01b038216600081815260208181526040808320805486019055805185815290517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a35050565b828054828255906000526020600020908101928215611270579160200282015b8281111561127057825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019061123b565b5061127c929150611280565b5090565b5b8082111561127c5760008155600101611281565b80356001600160a01b03811681146106ac57600080fd5b600082601f8301126112bc578081fd5b81356112cf6112ca82611cd1565b611cae565b8181529150602080830190848101818402860182018710156112f057600080fd5b60005b848110156113165761130482611295565b845292820192908201906001016112f3565b505050505092915050565b600082601f830112611331578081fd5b813561133f6112ca82611cd1565b818152915060208083019084810160005b8481101561131657611367888484358a0101611389565b84529282019290820190600101611350565b803580151581146106ac57600080fd5b60006040828403121561139a578081fd5b604051604081016001600160401b0382821081831117156113b757fe5b816040528293506113c785611295565b83526020915081850135818111156113de57600080fd5b8501601f810187136113ef57600080fd5b8035828111156113fb57fe5b61140d601f8201601f19168501611cae565b9250808352878482840101111561142357600080fd5b808483018585013760009083018401525091015292915050565b600081830360c081121561144f578182fd5b60408051606081016001600160401b03828210818311171561146d57fe5b81845282955061147c87611295565b835261148a60208801611544565b60208401526080603f19860112156114a157600080fd5b8351945060608501915084821081831117156114b957fe5b5082526114c8868684016114ec565b8352608085013560208401526114e060a08601611544565b83830152015292915050565b6000604082840312156114fd578081fd5b604051604081018181106001600160401b038211171561151957fe5b6040529050808235600081900b811461153157600080fd5b8152602092830135920191909152919050565b80356001600160401b03811681146106ac57600080fd5b60006020828403121561156c578081fd5b61157582611295565b9392505050565b6000806040838503121561158e578081fd5b61159783611295565b91506115a560208401611295565b90509250929050565b6000806000606084860312156115c2578081fd5b6115cb84611295565b92506115d960208501611295565b9150604084013590509250925092565b600080604083850312156115fb578182fd5b61160483611295565b946020939093013593505050565b600080600060808486031215611626578283fd5b61162f84611295565b92506020840135915061164585604086016114ec565b90509250925092565b60008060408385031215611660578182fd5b61160483611379565b60008060006060848603121561167d578283fd5b61168684611379565b92506020840135915060408401356001600160401b038111156116a7578182fd5b6116b386828701611321565b9150509250925092565b6000602082840312156116ce578081fd5b5035919050565b600080604083850312156116e7578182fd5b8235915060208301356001600160401b03811115611703578182fd5b61170f85828601611389565b9150509250929050565b6000806040838503121561172b578182fd5b8235915060208301356001600160401b03811115611747578182fd5b61170f858286016112ac565b600080600060608486031215611767578081fd5b8335925060208401356001600160401b0380821115611784578283fd5b611790878388016112ac565b935060408601359150808211156117a5578283fd5b506116b386828701611321565b600060c082840312156117c3578081fd5b611575838361143d565b60008060e083850312156117df578182fd5b6117e9848461143d565b915060c08301356001600160401b03811115611803578182fd5b61170f85828601611321565b60008060608385031215611821578182fd5b823591506115a584602085016114ec565b6000815180845260208085019450808401835b8381101561186a5781516001600160a01b031687529582019590820190600101611845565b509495945050505050565b60008351611887818460208801611cee565b9190910191825250602001919050565b6001600160a01b0391909116815260200190565b6000602082526115756020830184611832565b901515815260200190565b90815260200190565b93845260ff9290921660208401526040830152606082015260800190565b6000838252604060208301526119096040830184611832565b949350505050565b60009290920b8252602082015260400190565b60009390930b83526001600160401b03918216602084015216604082015260600190565b600061ffff851682528360208301526060604083015261196b6060830184611832565b95945050505050565b61ffff9390931683529015156020830152604082015260600190565b61ffff9790971687526001600160a01b039590951660208701526001600160401b03938416604087015260009290920b6060860152608085015260a08401521660c082015260e00190565b60006020825282518060208401526119fa816040850160208701611cee565b601f01601f19169190910160400192915050565b6020808252601f908201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604082015260600190565b6020808252601590820152744e6f7420656e6f756768207369676e61747572657360581b604082015260600190565b6020808252600f908201526e57726f6e67207369676e617475726560881b604082015260600190565b6020808252601a908201527f4275726e2069732063757272656e746c792064697361626c6564000000000000604082015260600190565b60208082526014908201527313995dc81cd95d081a5cc81d1bdbc81cda1bdc9d60621b604082015260600190565b60208082526022908201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604082015261756560f01b606082015260800190565b60208082526018908201527f566f746520697320616c72656164792066696e69736865640000000000000000604082015260600190565b60208082526022908201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604082015261756560f01b606082015260800190565b60208082526028908201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616040820152676c6c6f77616e636560c01b606082015260800190565b60208082526017908201527f4475706c6963617465206f7261636c6520696e20536574000000000000000000604082015260600190565b6020808252601390820152722ab730baba3437b934bd32b21039b4b3b732b960691b604082015260600190565b60208082526019908201527f5369676e61747572657320617265206e6f7420736f7274656400000000000000604082015260600190565b60ff91909116815260200190565b6040518181016001600160401b0381118282101715611cc957fe5b604052919050565b60006001600160401b03821115611ce457fe5b5060209081020190565b60005b83811015611d09578181015183820152602001611cf1565b83811115610462575050600091015256fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122059e486842dfe8c7ab44224799a35633a87ec346b1f567828e3450c99e78e54a864736f6c63430007040033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000105772617070656420544f4e20436f696e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007544f4e434f494e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009000000000000000000000000c4c9bd836ab8b446519736166919e3d62491e041000000000000000000000000cf4a7c26186aa41390e246fa04115a0495085ab900000000000000000000000017dcab1b1481610f6c7a7a98cf0370dc0ec704a600000000000000000000000032162caaed276e77ef63194820586c942009a962000000000000000000000000039f4e886432bd4f3cb5062f9861efef3f6ada28000000000000000000000000ff441f9889aa475d9d3b1c638c59b84c5179846d0000000000000000000000000933738699dc733c46a0d4cbebda2f842e1ac7d90000000000000000000000007f2bbaac14f0f1834e6d0219f8855a5f619fe2c4000000000000000000000000fc5c6a2d01a984ba9eab7cf87a6d169aa9720c0c

-----Decoded View---------------
Arg [0] : name_ (string): Wrapped TON Coin
Arg [1] : symbol_ (string): TONCOIN
Arg [2] : initialSet (address[]): 0xC4c9bd836ab8b446519736166919e3d62491E041,0xCF4A7c26186aA41390E246FA04115A0495085Ab9,0x17DcaB1B1481610F6C7a7A98cf0370dC0EC704a6,0x32162CAaEd276E77EF63194820586C942009a962,0x039f4e886432bd4f3cb5062f9861EFef3F6aDA28,0xFf441F9889Aa475d9D3b1C638C59B84c5179846D,0x0933738699dc733C46A0D4CBEbDA2f842e1Ac7d9,0x7F2bbaaC14F0f1834E6D0219F8855A5F619Fe2C4,0xfc5c6A2d01A984ba9eab7CF87A6D169aA9720c0C

-----Encoded View---------------
17 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [2] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000010
Arg [4] : 5772617070656420544f4e20436f696e00000000000000000000000000000000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000007
Arg [6] : 544f4e434f494e00000000000000000000000000000000000000000000000000
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000009
Arg [8] : 000000000000000000000000c4c9bd836ab8b446519736166919e3d62491e041
Arg [9] : 000000000000000000000000cf4a7c26186aa41390e246fa04115a0495085ab9
Arg [10] : 00000000000000000000000017dcab1b1481610f6c7a7a98cf0370dc0ec704a6
Arg [11] : 00000000000000000000000032162caaed276e77ef63194820586c942009a962
Arg [12] : 000000000000000000000000039f4e886432bd4f3cb5062f9861efef3f6ada28
Arg [13] : 000000000000000000000000ff441f9889aa475d9d3b1c638c59b84c5179846d
Arg [14] : 0000000000000000000000000933738699dc733c46a0d4cbebda2f842e1ac7d9
Arg [15] : 0000000000000000000000007f2bbaac14f0f1834e6d0219f8855a5f619fe2c4
Arg [16] : 000000000000000000000000fc5c6a2d01a984ba9eab7cf87a6d169aa9720c0c


Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.