Token Dai Stablecoin
Overview ERC20
Price
$1.00 @ 0.000280 ETH (-0.13%)
Fully Diluted Market Cap
Total Supply:
72,671,929.996602 DAI
Holders:
121,821 addresses
Contract:
Decimals:
18
Official Site:
Balance
50 DAIValue
$49.87 ( ~0.0139785788049226 ETH) [0.0001%]
[ Download CSV Export ]
[ Download CSV Export ]
OVERVIEW
Multi-Collateral Dai, brings a lot of new and exciting features, such as support for new CDP collateral types and Dai Savings Rate.Market
Volume (24H) | : | $1,022,130,591.00 |
Market Capitalization | : | $4,823,021,087.00 |
Circulating Supply | : | 4,835,848,167.00 DAI |
Market Data Source: Coinmarketcap |
Update? Click here to update the token ICO / general information
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|---|---|---|---|---|
1 | Uniswap V3 (Ethereum) | 0X6B175474E89094C44DA98B954EEDEAC495271D0F-0XDAC17F958D2EE523A2206206994597C13D831EC7 | $0.998 0.0000141 Btc | $23,261,680.00 23,295,981.036 0X6B175474E89094C44DA98B954EEDEAC495271D0F | 20.5446% |
2 | Uniswap V3 (Ethereum) | 0X6B175474E89094C44DA98B954EEDEAC495271D0F-0XC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2 | $0.999 0.0000141 Btc | $15,170,172.00 15,030,877.208 0X6B175474E89094C44DA98B954EEDEAC495271D0F | 13.2556% |
3 | Uniswap V3 (Ethereum) | 0X6B175474E89094C44DA98B954EEDEAC495271D0F-0XA0B86991C6218B36C1D19D4A2E9EB0CE3606EB48 | $0.9981 0.0000141 Btc | $10,174,956.00 10,193,129.663 0X6B175474E89094C44DA98B954EEDEAC495271D0F | 8.9892% |
4 | DODO (Ethereum) | 0X6B175474E89094C44DA98B954EEDEAC495271D0F-0XDAC17F958D2EE523A2206206994597C13D831EC7 | $0.9978 0.0000141 Btc | $8,091,419.00 8,112,747.683 0X6B175474E89094C44DA98B954EEDEAC495271D0F | 7.1546% |
5 | Uniswap V3 (Ethereum) | 0X6B175474E89094C44DA98B954EEDEAC495271D0F-0XC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2 | $1.00 0.0000141 Btc | $7,492,933.00 7,410,633.616 0X6B175474E89094C44DA98B954EEDEAC495271D0F | 6.5354% |
6 | HTX | DAI-USDT | $0.9981 0.0000141 Btc | $6,411,937.00 6,424,424.555 DAI | 5.6657% |
7 | Binance | USDT-DAI | $0.9999 0.0000141 Btc | $5,789,115.00 5,792,858.300 USDT | 5.1087% |
8 | WhiteBIT | DAI-USDT | $0.9987 0.0000141 Btc | $4,746,455.00 4,752,731.160 DAI | 4.1914% |
9 | Cryptology | BTC-DAI | $1.00 0.0000141 Btc | $2,778,054.00 39.278 BTC | 0.0000% |
10 | BitMart | DAI-USDT | $1.001 0.0000141 Btc | $2,220,897.00 2,218,338.080 DAI | 1.9563% |
11 | Bitrue | DAI-USDT | $1.001 0.0000141 Btc | $2,035,391.00 2,033,090.600 DAI | 1.7930% |
12 | Uniswap V3 (Polygon) | 0X2791BCA1F2DE4661ED88A30C99A7A9449AA84174-0X8F3CF7AD23CD3CADBD9735AFF958023239C6A063 | $0.9999 0.0000141 Btc | $1,745,353.00 1,745,355.279 0X2791BCA1F2DE4661ED88A30C99A7A9449AA84174 | 1.5392% |
13 | DigiFinex | DAI-USDT | $1.00 0.0000141 Btc | $1,655,386.00 1,655,345.480 DAI | 1.4598% |
14 | LBank | DAI-USDT | $1.00 0.0000141 Btc | $1,544,435.00 1,544,067.330 DAI | 1.3617% |
15 | BitMart | BTC-DAI | $1.00 0.0000141 Btc | $1,402,503.00 19.823 BTC | 0.0000% |
16 | Coinbase Exchange | DAI-USD | $0.9999 0.0000141 Btc | $1,291,333.00 1,291,462.418 DAI | 1.1389% |
17 | Balancer V2 (Arbitrum) | 0XDA10009CBD5D07DD0CECC66161FC93D7C9000DA1-0XFD086BC7CD5C481DCC9C85EBE478A1C0B69FCBB9 | $0.9998 0.0000141 Btc | $1,273,992.00 1,274,265.762 0XDA10009CBD5D07DD0CECC66161FC93D7C9000DA1 | 1.1238% |
18 | Binance | BTC-DAI | $1.00 0.0000141 Btc | $1,254,867.00 17.909 BTC | 0.0000% |
19 | XT.COM | BTC-DAI | $0.9999 0.0000141 Btc | $1,246,190.00 17.802 BTC | 0.0000% |
20 | Quickswap (v3) | 0X2791BCA1F2DE4661ED88A30C99A7A9449AA84174-0X8F3CF7AD23CD3CADBD9735AFF958023239C6A063 | $0.9998 0.0000141 Btc | $1,136,633.00 1,136,827.392 0X2791BCA1F2DE4661ED88A30C99A7A9449AA84174 | 1.0026% |
21 | OKX | DAI-USDT | $1.001 0.0000141 Btc | $989,703.00 988,618.594 DAI | 0.8719% |
22 | Uniswap V3 (Optimism) | 0X0B2C639C533813F4AA9D7837CAF62653D097FF85-0XDA10009CBD5D07DD0CECC66161FC93D7C9000DA1 | $0.9999 0.0000141 Btc | $886,359.00 886,187.549 0X0B2C639C533813F4AA9D7837CAF62653D097FF85 | 0.7815% |
23 | Uniswap V3 (Polygon) | 0X8F3CF7AD23CD3CADBD9735AFF958023239C6A063-0XC2132D05D31C914A87C6611C10748AEB04B58E8F | $1.00 0.0000141 Btc | $855,318.00 855,143.861 0X8F3CF7AD23CD3CADBD9735AFF958023239C6A063 | 0.7541% |
24 | Camelot V3 | 0XAF88D065E77C8CC2239327C5EDB3A432268E5831-0XDA10009CBD5D07DD0CECC66161FC93D7C9000DA1 | $0.9998 0.0000141 Btc | $842,366.00 842,350.653 0XAF88D065E77C8CC2239327C5EDB3A432268E5831 | 0.7429% |
25 | Uniswap V3 (Optimism) | 0X94B008AA00579C1307B0EF2C499AD98A8CE58E58-0XDA10009CBD5D07DD0CECC66161FC93D7C9000DA1 | $0.9999 0.0000141 Btc | $828,586.00 828,899.690 0X94B008AA00579C1307B0EF2C499AD98A8CE58E58 | 0.7310% |
26 | Bitget | DAI-USDT | $1.001 0.0000141 Btc | $793,532.00 792,939.000 DAI | 0.6993% |
27 | Trader Joe V2.1 (Arbitrum) | 0XDA10009CBD5D07DD0CECC66161FC93D7C9000DA1-0XFF970A61A04B1CA14834A43F5DE4533EBDDB5CC8 | $0.9997 0.0000141 Btc | $791,265.00 791,504.764 0XDA10009CBD5D07DD0CECC66161FC93D7C9000DA1 | 0.6980% |
28 | Kraken | DAI-EUR | $1.00 0.0000141 Btc | $773,828.00 773,657.749 DAI | 0.6823% |
29 | Binance | ETH-DAI | $1.00 0.0000141 Btc | $724,640.00 205.466 ETH | 0.0002% |
30 | Kraken | DAI-USD | $0.9999 0.0000141 Btc | $657,465.00 657,517.272 DAI | 0.5799% |
31 | XT.COM | DAI-USDT | $1.00 0.0000141 Btc | $648,245.00 647,932.380 DAI | 0.5714% |
32 | Kraken | DAI-USDT | $1.00 0.0000141 Btc | $636,766.00 636,648.798 DAI | 0.5615% |
33 | Uniswap V3 (Arbitrum One) | 0XDA10009CBD5D07DD0CECC66161FC93D7C9000DA1-0XFD086BC7CD5C481DCC9C85EBE478A1C0B69FCBB9 | $1.001 0.0000141 Btc | $614,872.00 614,153.830 0XDA10009CBD5D07DD0CECC66161FC93D7C9000DA1 | 0.5416% |
34 | Uniswap V3 (Optimism) | 0X4200000000000000000000000000000000000006-0XDA10009CBD5D07DD0CECC66161FC93D7C9000DA1 | $0.9999 0.0000141 Btc | $614,777.00 174.454 0X4200000000000000000000000000000000000006 | 0.0002% |
35 | BitMart | ETH-DAI | $1.00 0.0000141 Btc | $566,667.00 158.691 ETH | 0.0001% |
36 | Pancakeswap V3 (BSC) | 0X1AF3F329E8BE154074D8769D1FFA4EE058B1DBC3-0X55D398326F99059FF775485246999027B3197955 | $1.00 0.0000141 Btc | $560,689.00 559,609.306 0X1AF3F329E8BE154074D8769D1FFA4EE058B1DBC3 | 0.4935% |
37 | Uniswap V3 (Polygon) | 0X3C499C542CEF5E3811E1192CE70D8CC03D5C3359-0X8F3CF7AD23CD3CADBD9735AFF958023239C6A063 | $0.9999 0.0000141 Btc | $533,485.00 533,455.557 0X3C499C542CEF5E3811E1192CE70D8CC03D5C3359 | 0.4705% |
38 | BitMart | DAI-USDC | $0.9996 0.0000141 Btc | $529,399.00 529,594.200 DAI | 0.4670% |
39 | Bybit | DAI-USDT | $1.001 0.0000141 Btc | $492,994.00 492,682.240 DAI | 0.4345% |
40 | Uniswap V3 (Optimism) | 0X7F5C764CBC14F9669B88837CA1490CCA17C31607-0XDA10009CBD5D07DD0CECC66161FC93D7C9000DA1 | $0.9999 0.0000141 Btc | $482,911.00 482,764.646 0X7F5C764CBC14F9669B88837CA1490CCA17C31607 | 0.4257% |
41 | Tapbit | DAI-USDT | $1.00 0.0000141 Btc | $462,357.00 462,055.500 DAI | 0.4075% |
42 | Uniswap V3 (Optimism) | 0XDA10009CBD5D07DD0CECC66161FC93D7C9000DA1-0X4200000000000000000000000000000000000006 | $0.9993 0.0000141 Btc | $459,032.00 455,560.446 0XDA10009CBD5D07DD0CECC66161FC93D7C9000DA1 | 0.4018% |
43 | Uniswap V3 (Arbitrum One) | 0X7FB7EDE54259CB3D4E1EAF230C7E2B1FFC951E9A-0XDA10009CBD5D07DD0CECC66161FC93D7C9000DA1 | $1.002 0.0000142 Btc | $408,871.00 791,885.702 0X7FB7EDE54259CB3D4E1EAF230C7E2B1FFC951E9A | 0.6984% |
44 | KuCoin | USDT-DAI | $1.00 0.0000141 Btc | $395,421.00 396,173.370 USDT | 0.3494% |
45 | Uniswap V3 (Ethereum) | 0X03AB458634910AAD20EF5F1C8EE96F1D6AC54919-0X6B175474E89094C44DA98B954EEDEAC495271D0F | $0.9999 0.0000141 Btc | $375,873.00 133,822.989 0X03AB458634910AAD20EF5F1C8EE96F1D6AC54919 | 0.1180% |
46 | XT.COM | ETH-DAI | $0.9999 0.0000141 Btc | $345,273.00 97.835 ETH | 0.0001% |
47 | Uniswap V2 (Ethereum) | 0X40803CEA2B2A32BDA1BE61D3604AF6A814E70976-0X6B175474E89094C44DA98B954EEDEAC495271D0F | $1.00 0.0000141 Btc | $324,634.00 850,497.927 0X40803CEA2B2A32BDA1BE61D3604AF6A814E70976 | 0.7500% |
48 | Bitunix | DAI-USDT | $0.9996 0.0000140 Btc | $304,467.00 304,577.000 DAI | 0.2686% |
49 | KuCoin | BTC-DAI | $1.00 0.0000141 Btc | $292,494.00 4.129 BTC | 0.0000% |
50 | Sushiswap | 0X6B175474E89094C44DA98B954EEDEAC495271D0F-0XC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2 | $0.9991 0.0000141 Btc | $276,444.00 273,546.222 0X6B175474E89094C44DA98B954EEDEAC495271D0F | 0.2412% |
51 | Quickswap (v3) | 0X3C499C542CEF5E3811E1192CE70D8CC03D5C3359-0X8F3CF7AD23CD3CADBD9735AFF958023239C6A063 | $0.9998 0.0000141 Btc | $260,323.00 260,312.589 0X3C499C542CEF5E3811E1192CE70D8CC03D5C3359 | 0.2296% |
52 | Curve (Optimism) | 0XDA10009CBD5D07DD0CECC66161FC93D7C9000DA1-0X7F5C764CBC14F9669B88837CA1490CCA17C31607 | $0.9997 0.0000141 Btc | $216,646.00 216,769.984 0XDA10009CBD5D07DD0CECC66161FC93D7C9000DA1 | 0.1912% |
53 | Hotcoin Global | DAI-USDT | $0.9996 0.0000141 Btc | $215,221.00 215,311.190 DAI | 0.1899% |
54 | Curve (Optimism) | 0XDA10009CBD5D07DD0CECC66161FC93D7C9000DA1-0X94B008AA00579C1307B0EF2C499AD98A8CE58E58 | $0.9995 0.0000141 Btc | $205,750.00 205,799.413 0XDA10009CBD5D07DD0CECC66161FC93D7C9000DA1 | 0.1815% |
55 | Gemini | DAI-USD | $0.9977 0.0000141 Btc | $159,690.00 160,064.984 DAI | 0.1412% |
56 | Emirex | USDT-DAI | $0.9999 0.0000141 Btc | $147,313.00 147,416.450 USDT | 0.1300% |
57 | Binance | BNB-DAI | $1.001 0.0000141 Btc | $139,467.00 238.978 BNB | 0.0002% |
58 | BingX | DAI-USDT | $1.001 0.0000141 Btc | $132,314.00 132,168.911 DAI | 0.1166% |
59 | MEXC | DAI-USDT | $0.9999 0.0000141 Btc | $132,299.00 132,309.200 DAI | 0.1167% |
60 | Trader Joe V2.1 (Avalanche) | 0XD586E7F844CEA2F87F50152665BCBC2C279D8D70-0XB97EF9EF8734C71904D8002F8B6BC66DD9C48A6E | $0.9987 0.0000141 Btc | $100,933.00 101,018.070 0XD586E7F844CEA2F87F50152665BCBC2C279D8D70 | 0.0891% |
61 | Uniswap V3 (Arbitrum One) | 0XDA10009CBD5D07DD0CECC66161FC93D7C9000DA1-0XFF970A61A04B1CA14834A43F5DE4533EBDDB5CC8 | $0.9996 0.0000141 Btc | $96,399.00 96,402.830 0XDA10009CBD5D07DD0CECC66161FC93D7C9000DA1 | 0.0850% |
62 | Uniswap V3 (Optimism) | 0X8C6F28F2F1A3C87F0F938B96D27520D9751EC8D9-0XDA10009CBD5D07DD0CECC66161FC93D7C9000DA1 | $0.9999 0.0000141 Btc | $91,789.00 92,044.965 0X8C6F28F2F1A3C87F0F938B96D27520D9751EC8D9 | 0.0812% |
63 | Gate.io | DAI-USDT | $1.001 0.0000141 Btc | $85,112.00 85,023.380 DAI | 0.0750% |
64 | Bitcointry Exchange | USDT-DAI | $0.9999 0.0000141 Btc | $79,933.00 80,013.782 USDT | 0.0706% |
65 | Aerodrome (Base) | 0X50C5725949A6F0C72E6C4A641F24049A917DB0CB-0X833589FCD6EDB6E08F4C7C32D4F71B54BDA02913 | $0.9975 0.0000141 Btc | $71,389.00 71,680.425 0X50C5725949A6F0C72E6C4A641F24049A917DB0CB | 0.0632% |
66 | KuCoin | ETH-DAI | $1.00 0.0000141 Btc | $66,068.00 18.531 ETH | 0.0000% |
67 | Quickswap | 0X8F3CF7AD23CD3CADBD9735AFF958023239C6A063-0XC2132D05D31C914A87C6611C10748AEB04B58E8F | $0.9992 0.0000141 Btc | $53,454.00 52,410.892 0X8F3CF7AD23CD3CADBD9735AFF958023239C6A063 | 0.0462% |
68 | Bitget | DAI-USDC | $0.9988 0.0000141 Btc | $47,741.00 47,770.000 DAI | 0.0421% |
69 | Velodrome Finance v2 | 0X7F5C764CBC14F9669B88837CA1490CCA17C31607-0XDA10009CBD5D07DD0CECC66161FC93D7C9000DA1 | $0.9998 0.0000141 Btc | $42,917.00 42,899.930 0X7F5C764CBC14F9669B88837CA1490CCA17C31607 | 0.0378% |
70 | Bitvavo | DAI-EUR | $0.9991 0.0000141 Btc | $40,460.00 40,495.179 DAI | 0.0357% |
71 | FameEX | DAI-USDT | $1.001 0.0000141 Btc | $39,359.00 39,323.594 DAI | 0.0347% |
72 | Kraken | BTC-DAI | $0.9999 0.0000141 Btc | $31,942.00 0.450 BTC | 0.0000% |
73 | Uniswap V3 (Ethereum) | 0X102C776DDB30C754DED4FDCC77A19230A60D4E4F-0X6B175474E89094C44DA98B954EEDEAC495271D0F | $0.9999 0.0000141 Btc | $29,078.00 1,399,605.818 0X102C776DDB30C754DED4FDCC77A19230A60D4E4F | 1.2343% |
74 | Kraken | ETH-DAI | $0.9999 0.0000141 Btc | $27,676.00 7.758 ETH | 0.0000% |
75 | EXMO | DAI-USDT | $1.002 0.0000142 Btc | $25,887.00 25,824.197 DAI | 0.0228% |
76 | CoinEx | DAI-USDT | $1.001 0.0000141 Btc | $19,003.73 18,998.699 DAI | 0.0168% |
77 | Sushiswap (Polygon POS) | 0X7CEB23FD6BC0ADD59E62AC25578270CFF1B9F619-0X8F3CF7AD23CD3CADBD9735AFF958023239C6A063 | $1.002 0.0000141 Btc | $18,855.94 5.324 0X7CEB23FD6BC0ADD59E62AC25578270CFF1B9F619 | 0.0000% |
78 | Phemex | DAI-USDT | $1.001 0.0000141 Btc | $18,455.86 18,443.450 DAI | 0.0163% |
79 | Bitso | BTC-DAI | $0.9971 0.0000141 Btc | $17,140.72 0.242 BTC | 0.0000% |
80 | PancakeSwap (v2) | 0X1AF3F329E8BE154074D8769D1FFA4EE058B1DBC3-BUSD | $0.9982 0.0000141 Btc | $16,974.62 17,091.965 0X1AF3F329E8BE154074D8769D1FFA4EE058B1DBC3 | 0.0151% |
81 | Bitbank | DAI-JPY | $0.9962 0.0000140 Btc | $16,028.21 16,088.729 DAI | 0.0142% |
82 | ProBit Global | DAI-USDT | $1.00 0.0000141 Btc | $12,990.89 12,985.963 DAI | 0.0115% |
83 | OKX | BTC-DAI | $1.00 0.0000141 Btc | $12,341.54 0.177 BTC | 0.0000% |
84 | PointPay | DAI-USDT | $1.001 0.0000141 Btc | $10,475.21 10,463.727 DAI | 0.0092% |
85 | SpookySwap | 0X21BE370D5312F44CB42CE377BC9B8A0CEF1A4C83-0X8D11EC38A3EB5E956B052F67DA8BDC9BEF8ABF3E | $0.0475 0.0000007 Btc | $8,870.65 8,354.061 0X21BE370D5312F44CB42CE377BC9B8A0CEF1A4C83 | 0.0074% |
86 | Bitso | DAI-MXN | $1.002 0.0000141 Btc | $8,418.01 8,397.510 DAI | 0.0074% |
87 | Gate.io | DAI-TRY | $1.005 0.0000142 Btc | $7,378.40 7,341.405 DAI | 0.0065% |
88 | Crypto.com Exchange | DAI-USD | $0.9982 0.0000141 Btc | $7,135.22 7,148.300 DAI | 0.0063% |
89 | Quickswap | 0XE5417AF564E4BFDA1C483642DB72007871397896-0X8F3CF7AD23CD3CADBD9735AFF958023239C6A063 | $1.004 0.0000142 Btc | $6,516.40 1,289.601 0XE5417AF564E4BFDA1C483642DB72007871397896 | 0.0011% |
90 | Uniswap V3 (Ethereum) | 0X2260FAC5E5542A773AA44FBCFEDF7C193BC2C599-0X6B175474E89094C44DA98B954EEDEAC495271D0F | $1.003 0.0000142 Btc | $5,426.40 0.078 0X2260FAC5E5542A773AA44FBCFEDF7C193BC2C599 | 0.0000% |
91 | Balancer V1 | 0XC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2-DAI | $0.9999 0.0000141 Btc | $5,186.38 1.452 0XC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2 | 0.0000% |
92 | Balancer V1 | 0X6B175474E89094C44DA98B954EEDEAC495271D0F-ETH | $0.9994 0.0000141 Btc | $5,154.22 5,157.492 0X6B175474E89094C44DA98B954EEDEAC495271D0F | 0.0045% |
93 | Uniswap V3 (Polygon) | 0XE5417AF564E4BFDA1C483642DB72007871397896-0X8F3CF7AD23CD3CADBD9735AFF958023239C6A063 | $0.9999 0.0000141 Btc | $4,187.60 821.179 0XE5417AF564E4BFDA1C483642DB72007871397896 | 0.0007% |
94 | Crypto.com Exchange | DAI-USDT | $0.9974 0.0000141 Btc | $2,992.13 2,999.800 DAI | 0.0026% |
95 | Osmosis | IBC/0CD3A0285E1341859B5E86B6AB7682F023D03E97607CCC1DC95706411D866DF7-UOSMO | $0.9982 0.0000141 Btc | $2,938.44 2,943.835 IBC/0CD3A0285E1341859B5E86B6AB7682F023D03E97607CCC1DC95706411D866DF7 | 0.0026% |
96 | Osmosis | IBC/0CD3A0285E1341859B5E86B6AB7682F023D03E97607CCC1DC95706411D866DF7-UOSMO | $0.9958 0.0000141 Btc | $2,916.29 2,928.575 IBC/0CD3A0285E1341859B5E86B6AB7682F023D03E97607CCC1DC95706411D866DF7 | 0.0026% |
97 | Balancer V1 | 0XA0B86991C6218B36C1D19D4A2E9EB0CE3606EB48-DAI | $0.9999 0.0000141 Btc | $2,875.82 2,911.892 0XA0B86991C6218B36C1D19D4A2E9EB0CE3606EB48 | 0.0026% |
98 | Uniswap V3 (Ethereum) | 0X5D3A536E4D6DBD6114CC1EAD35777BAB948E3643-0X6B175474E89094C44DA98B954EEDEAC495271D0F | $1.00 0.0000141 Btc | $2,458.51 107,249.248 0X5D3A536E4D6DBD6114CC1EAD35777BAB948E3643 | 0.0946% |
99 | JediSwap | 0XDA114221CB83FA859DBDB4C44BEEAA0BB37C7537AD5AE66FE5E0EFD20E6EB3-0X49D36570D4E46F48E99674BD3FCC84644DDD6B96F7C741B1562B82F9E004DC7 | $0.9998 0.0000141 Btc | $1,078.17 1,065.443 0XDA114221CB83FA859DBDB4C44BEEAA0BB37C7537AD5AE66FE5E0EFD20E6EB3 | 0.0009% |
100 | Uniswap V3 (Arbitrum One) | 0X18C11FD286C5EC11C3B683CAA813B77F5163A122-0XDA10009CBD5D07DD0CECC66161FC93D7C9000DA1 | $0.9938 0.0000140 Btc | $903.73 179.032 0X18C11FD286C5EC11C3B683CAA813B77F5163A122 | 0.0002% |
Contract Name:
Dai
Compiler Version
v0.6.11+commit.5ef660b1
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: AGPL-3.0-or-later // Copyright (C) 2017, 2018, 2019 dbrock, rain, mrchico // Copyright (C) 2021 Dai Foundation // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Affero General Public License for more details. // // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see <https://www.gnu.org/licenses/>. pragma solidity ^0.6.11; // Improved Dai token contract Dai { // --- Auth --- mapping (address => uint256) public wards; function rely(address usr) external auth { wards[usr] = 1; emit Rely(usr); } function deny(address usr) external auth { wards[usr] = 0; emit Deny(usr); } modifier auth { require(wards[msg.sender] == 1, "Dai/not-authorized"); _; } // --- ERC20 Data --- string public constant name = "Dai Stablecoin"; string public constant symbol = "DAI"; string public constant version = "2"; uint8 public constant decimals = 18; uint256 public totalSupply; mapping (address => uint256) public balanceOf; mapping (address => mapping (address => uint256)) public allowance; mapping (address => uint256) public nonces; event Approval(address indexed owner, address indexed spender, uint256 value); event Transfer(address indexed from, address indexed to, uint256 value); event Rely(address indexed usr); event Deny(address indexed usr); // --- Math --- function _add(uint256 x, uint256 y) internal pure returns (uint256 z) { require((z = x + y) >= x); } function _sub(uint256 x, uint256 y) internal pure returns (uint256 z) { require((z = x - y) <= x); } // --- EIP712 niceties --- uint256 public immutable deploymentChainId; bytes32 private immutable _DOMAIN_SEPARATOR; bytes32 public constant PERMIT_TYPEHASH = keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"); constructor() public { wards[msg.sender] = 1; emit Rely(msg.sender); uint256 chainId; assembly {chainId := chainid()} deploymentChainId = chainId; _DOMAIN_SEPARATOR = _calculateDomainSeparator(chainId); } function _calculateDomainSeparator(uint256 chainId) private view returns (bytes32) { return keccak256( abi.encode( keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"), keccak256(bytes(name)), keccak256(bytes(version)), chainId, address(this) ) ); } function DOMAIN_SEPARATOR() external view returns (bytes32) { uint256 chainId; assembly {chainId := chainid()} return chainId == deploymentChainId ? _DOMAIN_SEPARATOR : _calculateDomainSeparator(chainId); } // --- ERC20 Mutations --- function transfer(address to, uint256 value) external returns (bool) { require(to != address(0) && to != address(this), "Dai/invalid-address"); uint256 balance = balanceOf[msg.sender]; require(balance >= value, "Dai/insufficient-balance"); balanceOf[msg.sender] = balance - value; balanceOf[to] += value; emit Transfer(msg.sender, to, value); return true; } function transferFrom(address from, address to, uint256 value) external returns (bool) { require(to != address(0) && to != address(this), "Dai/invalid-address"); uint256 balance = balanceOf[from]; require(balance >= value, "Dai/insufficient-balance"); if (from != msg.sender) { uint256 allowed = allowance[from][msg.sender]; if (allowed != type(uint256).max) { require(allowed >= value, "Dai/insufficient-allowance"); allowance[from][msg.sender] = allowed - value; } } balanceOf[from] = balance - value; balanceOf[to] += value; emit Transfer(from, to, value); return true; } function approve(address spender, uint256 value) external returns (bool) { allowance[msg.sender][spender] = value; emit Approval(msg.sender, spender, value); return true; } function increaseAllowance(address spender, uint256 addedValue) external returns (bool) { uint256 newValue = _add(allowance[msg.sender][spender], addedValue); allowance[msg.sender][spender] = newValue; emit Approval(msg.sender, spender, newValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool) { uint256 allowed = allowance[msg.sender][spender]; require(allowed >= subtractedValue, "Dai/insufficient-allowance"); allowed = allowed - subtractedValue; allowance[msg.sender][spender] = allowed; emit Approval(msg.sender, spender, allowed); return true; } // --- Mint/Burn --- function mint(address to, uint256 value) external auth { require(to != address(0) && to != address(this), "Dai/invalid-address"); balanceOf[to] = balanceOf[to] + value; // note: we don't need an overflow check here b/c balanceOf[to] <= totalSupply and there is an overflow check below totalSupply = _add(totalSupply, value); emit Transfer(address(0), to, value); } function burn(address from, uint256 value) external { uint256 balance = balanceOf[from]; require(balance >= value, "Dai/insufficient-balance"); if (from != msg.sender && wards[msg.sender] != 1) { uint256 allowed = allowance[from][msg.sender]; if (allowed != type(uint256).max) { require(allowed >= value, "Dai/insufficient-allowance"); allowance[from][msg.sender] = allowed - value; } } balanceOf[from] = balance - value; // note: we don't need overflow checks b/c require(balance >= value) and balance <= totalSupply totalSupply = totalSupply - value; emit Transfer(from, address(0), value); } // --- Approve by signature --- function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external { require(block.timestamp <= deadline, "Dai/permit-expired"); uint256 chainId; assembly {chainId := chainid()} bytes32 digest = keccak256(abi.encodePacked( "\x19\x01", chainId == deploymentChainId ? _DOMAIN_SEPARATOR : _calculateDomainSeparator(chainId), keccak256(abi.encode( PERMIT_TYPEHASH, owner, spender, value, nonces[owner]++, deadline )) )); require(owner != address(0) && owner == ecrecover(digest, v, r, s), "Dai/invalid-permit"); allowance[owner][spender] = value; emit Approval(owner, spender, value); } }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"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":true,"internalType":"address","name":"usr","type":"address"}],"name":"Deny","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"usr","type":"address"}],"name":"Rely","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":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","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":"address","name":"usr","type":"address"}],"name":"deny","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deploymentChainId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"usr","type":"address"}],"name":"rely","outputs":[],"stateMutability":"nonpayable","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":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"wards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60c060405234801561001057600080fd5b503360008181526020819052604080822060019055517fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a609190a2466080819052610062816001600160e01b0361006b16565b60a0525061013f565b600060405180806114af60529139604080519182900360520182208282018252600e83526d2230b49029ba30b13632b1b7b4b760911b6020938401528151808301835260018152601960f91b908401528151808401919091527f0b1461ddc0c1d5ded79a1db0f74dae949050a7c0b28728c724b24958c27a328b818301527fad7c5bef027816a800da1736444fb58a807ef4c9603b7848673f7e3a68eb14a56060820152608081018690523060a0808301919091528251808303909101815260c09091019091528051910120915050919050565b60805160a05161133e6101716000398061077f5280610f2b52508061074a5280610e855280610ef6525061133e6000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c806370a08231116100b8578063a457c2d71161007c578063a457c2d7146103b0578063a9059cbb146103dc578063bf353dbb14610408578063cd0d00961461042e578063d505accf14610436578063dd62ed3e1461048757610142565b806370a082311461030a5780637ecebe001461033057806395d89b41146103565780639c52a7f11461035e5780639dc29fac1461038457610142565b8063313ce5671161010a578063313ce5671461025c5780633644e5151461027a578063395093511461028257806340c10f19146102ae57806354fd4d50146102dc57806365fae35e146102e457610142565b806306fdde0314610147578063095ea7b3146101c457806318160ddd1461020457806323b872dd1461021e57806330adf81f14610254575b600080fd5b61014f6104b5565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610189578181015183820152602001610171565b50505050905090810190601f1680156101b65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101f0600480360360408110156101da57600080fd5b506001600160a01b0381351690602001356104df565b604080519115158252519081900360200190f35b61020c610534565b60408051918252519081900360200190f35b6101f06004803603606081101561023457600080fd5b506001600160a01b0381358116916020810135909116906040013561053a565b61020c610725565b610264610740565b6040805160ff9092168252519081900360200190f35b61020c610745565b6101f06004803603604081101561029857600080fd5b506001600160a01b0381351690602001356107a5565b6102da600480360360408110156102c457600080fd5b506001600160a01b03813516906020013561082c565b005b61014f61094e565b6102da600480360360208110156102fa57600080fd5b50356001600160a01b031661096b565b61020c6004803603602081101561032057600080fd5b50356001600160a01b0316610a09565b61020c6004803603602081101561034657600080fd5b50356001600160a01b0316610a1b565b61014f610a2d565b6102da6004803603602081101561037457600080fd5b50356001600160a01b0316610a4c565b6102da6004803603604081101561039a57600080fd5b506001600160a01b038135169060200135610ae9565b6101f0600480360360408110156103c657600080fd5b506001600160a01b038135169060200135610c7b565b6101f0600480360360408110156103f257600080fd5b506001600160a01b038135169060200135610d4c565b61020c6004803603602081101561041e57600080fd5b50356001600160a01b0316610e71565b61020c610e83565b6102da600480360360e081101561044c57600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610ea7565b61020c6004803603604081101561049d57600080fd5b506001600160a01b0381358116916020013516611123565b6040518060400160405280600e81526020016d2230b49029ba30b13632b1b7b4b760911b81525081565b3360008181526003602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390926000805160206112e9833981519152928290030190a35060015b92915050565b60015481565b60006001600160a01b0383161580159061055d57506001600160a01b0383163014155b6105a4576040805162461bcd60e51b81526020600482015260136024820152724461692f696e76616c69642d6164647265737360681b604482015290519081900360640190fd5b6001600160a01b0384166000908152600260205260409020548281101561060d576040805162461bcd60e51b81526020600482015260186024820152774461692f696e73756666696369656e742d62616c616e636560401b604482015290519081900360640190fd5b6001600160a01b03851633146106c7576001600160a01b038516600090815260036020908152604080832033845290915290205460001981146106c5578381101561069c576040805162461bcd60e51b815260206004820152601a6024820152794461692f696e73756666696369656e742d616c6c6f77616e636560301b604482015290519081900360640190fd5b6001600160a01b0386166000908152600360209081526040808320338452909152902084820390555b505b6001600160a01b0380861660008181526002602090815260408083208887039055938816808352918490208054880190558351878152935191936000805160206112c9833981519152929081900390910190a3506001949350505050565b60405180605261122582396052019050604051809103902081565b601281565b6000467f0000000000000000000000000000000000000000000000000000000000000000811461077d5761077881611140565b61079f565b7f00000000000000000000000000000000000000000000000000000000000000005b91505090565b3360009081526003602090815260408083206001600160a01b038616845290915281205481906107d59084611214565b3360008181526003602090815260408083206001600160a01b038a16808552908352928190208590558051858152905194955091936000805160206112e98339815191529281900390910190a35060019392505050565b33600090815260208190526040902054600114610885576040805162461bcd60e51b815260206004820152601260248201527111185a4bdb9bdd0b585d5d1a1bdc9a5e995960721b604482015290519081900360640190fd5b6001600160a01b038216158015906108a657506001600160a01b0382163014155b6108ed576040805162461bcd60e51b81526020600482015260136024820152724461692f696e76616c69642d6164647265737360681b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090208054820190556001546109189082611214565b6001556040805182815290516001600160a01b038416916000916000805160206112c98339815191529181900360200190a35050565b604051806040016040528060018152602001601960f91b81525081565b336000908152602081905260409020546001146109c4576040805162461bcd60e51b815260206004820152601260248201527111185a4bdb9bdd0b585d5d1a1bdc9a5e995960721b604482015290519081900360640190fd5b6001600160a01b03811660008181526020819052604080822060019055517fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a609190a250565b60026020526000908152604090205481565b60046020526000908152604090205481565b6040518060400160405280600381526020016244414960e81b81525081565b33600090815260208190526040902054600114610aa5576040805162461bcd60e51b815260206004820152601260248201527111185a4bdb9bdd0b585d5d1a1bdc9a5e995960721b604482015290519081900360640190fd5b6001600160a01b038116600081815260208190526040808220829055517f184450df2e323acec0ed3b5c7531b81f9b4cdef7914dfd4c0a4317416bb5251b9190a250565b6001600160a01b03821660009081526002602052604090205481811015610b52576040805162461bcd60e51b81526020600482015260186024820152774461692f696e73756666696369656e742d62616c616e636560401b604482015290519081900360640190fd5b6001600160a01b0383163314801590610b7b575033600090815260208190526040902054600114155b15610c2a576001600160a01b03831660009081526003602090815260408083203384529091529020546000198114610c285782811015610bff576040805162461bcd60e51b815260206004820152601a6024820152794461692f696e73756666696369656e742d616c6c6f77616e636560301b604482015290519081900360640190fd5b6001600160a01b0384166000908152600360209081526040808320338452909152902083820390555b505b6001600160a01b03831660008181526002602090815260408083208686039055600180548790039055805186815290519293926000805160206112c9833981519152929181900390910190a3505050565b3360009081526003602090815260408083206001600160a01b038616845290915281205482811015610cf1576040805162461bcd60e51b815260206004820152601a6024820152794461692f696e73756666696369656e742d616c6c6f77616e636560301b604482015290519081900360640190fd5b3360008181526003602090815260408083206001600160a01b038916808552908352928190209487900394859055805185815290519293926000805160206112e9833981519152929181900390910190a35060019392505050565b60006001600160a01b03831615801590610d6f57506001600160a01b0383163014155b610db6576040805162461bcd60e51b81526020600482015260136024820152724461692f696e76616c69642d6164647265737360681b604482015290519081900360640190fd5b3360009081526002602052604090205482811015610e16576040805162461bcd60e51b81526020600482015260186024820152774461692f696e73756666696369656e742d62616c616e636560401b604482015290519081900360640190fd5b33600081815260026020908152604080832087860390556001600160a01b03881680845292819020805488019055805187815290519293926000805160206112c9833981519152929181900390910190a35060019392505050565b60006020819052908152604090205481565b7f000000000000000000000000000000000000000000000000000000000000000081565b83421115610ef1576040805162461bcd60e51b815260206004820152601260248201527111185a4bdc195c9b5a5d0b595e1c1a5c995960721b604482015290519081900360640190fd5b4660007f00000000000000000000000000000000000000000000000000000000000000008214610f2957610f2482611140565b610f4b565b7f00000000000000000000000000000000000000000000000000000000000000005b6040518060526112258239604080519182900360520182206001600160a01b03808f166000818152600460209081529085902080546001810190915581870194909452858501829052918f166060860152608085018e905260a085019290925260c08085018d90528351808603909101815260e08501845280519082012061190160f01b6101008601526101028501969096526101228085019690965282518085039096018652610142909301909152835193909101929092209250501580159061108757506040805160008152602080820180845284905260ff8816828401526060820187905260808201869052915160019260a0808401939192601f1981019281900390910190855afa158015611068573d6000803e3d6000fd5b505050602060405103516001600160a01b0316896001600160a01b0316145b6110cd576040805162461bcd60e51b815260206004820152601260248201527111185a4bda5b9d985b1a590b5c195c9b5a5d60721b604482015290519081900360640190fd5b6001600160a01b03808a166000818152600360209081526040808320948d16808452948252918290208b905581518b815291516000805160206112e98339815191529281900390910190a3505050505050505050565b600360209081526000928352604080842090915290825290205481565b6000604051808061127760529139604080519182900360520182208282018252600e83526d2230b49029ba30b13632b1b7b4b760911b6020938401528151808301835260018152601960f91b908401528151808401919091527f0b1461ddc0c1d5ded79a1db0f74dae949050a7c0b28728c724b24958c27a328b818301527fad7c5bef027816a800da1736444fb58a807ef4c9603b7848673f7e3a68eb14a56060820152608081018690523060a0808301919091528251808303909101815260c09091019091528051910120915050919050565b8082018281101561052e57600080fdfe5065726d69742861646472657373206f776e65722c61646472657373207370656e6465722c75696e743235362076616c75652c75696e74323536206e6f6e63652c75696e7432353620646561646c696e6529454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925a2646970667358221220c10a8f863458f6eaf33751a084e6c9f731275ed9c3b4b35baeb97c5150f7db5264736f6c634300060b0033454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101425760003560e01c806370a08231116100b8578063a457c2d71161007c578063a457c2d7146103b0578063a9059cbb146103dc578063bf353dbb14610408578063cd0d00961461042e578063d505accf14610436578063dd62ed3e1461048757610142565b806370a082311461030a5780637ecebe001461033057806395d89b41146103565780639c52a7f11461035e5780639dc29fac1461038457610142565b8063313ce5671161010a578063313ce5671461025c5780633644e5151461027a578063395093511461028257806340c10f19146102ae57806354fd4d50146102dc57806365fae35e146102e457610142565b806306fdde0314610147578063095ea7b3146101c457806318160ddd1461020457806323b872dd1461021e57806330adf81f14610254575b600080fd5b61014f6104b5565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610189578181015183820152602001610171565b50505050905090810190601f1680156101b65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101f0600480360360408110156101da57600080fd5b506001600160a01b0381351690602001356104df565b604080519115158252519081900360200190f35b61020c610534565b60408051918252519081900360200190f35b6101f06004803603606081101561023457600080fd5b506001600160a01b0381358116916020810135909116906040013561053a565b61020c610725565b610264610740565b6040805160ff9092168252519081900360200190f35b61020c610745565b6101f06004803603604081101561029857600080fd5b506001600160a01b0381351690602001356107a5565b6102da600480360360408110156102c457600080fd5b506001600160a01b03813516906020013561082c565b005b61014f61094e565b6102da600480360360208110156102fa57600080fd5b50356001600160a01b031661096b565b61020c6004803603602081101561032057600080fd5b50356001600160a01b0316610a09565b61020c6004803603602081101561034657600080fd5b50356001600160a01b0316610a1b565b61014f610a2d565b6102da6004803603602081101561037457600080fd5b50356001600160a01b0316610a4c565b6102da6004803603604081101561039a57600080fd5b506001600160a01b038135169060200135610ae9565b6101f0600480360360408110156103c657600080fd5b506001600160a01b038135169060200135610c7b565b6101f0600480360360408110156103f257600080fd5b506001600160a01b038135169060200135610d4c565b61020c6004803603602081101561041e57600080fd5b50356001600160a01b0316610e71565b61020c610e83565b6102da600480360360e081101561044c57600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610ea7565b61020c6004803603604081101561049d57600080fd5b506001600160a01b0381358116916020013516611123565b6040518060400160405280600e81526020016d2230b49029ba30b13632b1b7b4b760911b81525081565b3360008181526003602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390926000805160206112e9833981519152928290030190a35060015b92915050565b60015481565b60006001600160a01b0383161580159061055d57506001600160a01b0383163014155b6105a4576040805162461bcd60e51b81526020600482015260136024820152724461692f696e76616c69642d6164647265737360681b604482015290519081900360640190fd5b6001600160a01b0384166000908152600260205260409020548281101561060d576040805162461bcd60e51b81526020600482015260186024820152774461692f696e73756666696369656e742d62616c616e636560401b604482015290519081900360640190fd5b6001600160a01b03851633146106c7576001600160a01b038516600090815260036020908152604080832033845290915290205460001981146106c5578381101561069c576040805162461bcd60e51b815260206004820152601a6024820152794461692f696e73756666696369656e742d616c6c6f77616e636560301b604482015290519081900360640190fd5b6001600160a01b0386166000908152600360209081526040808320338452909152902084820390555b505b6001600160a01b0380861660008181526002602090815260408083208887039055938816808352918490208054880190558351878152935191936000805160206112c9833981519152929081900390910190a3506001949350505050565b60405180605261122582396052019050604051809103902081565b601281565b6000467f000000000000000000000000000000000000000000000000000000000000a4b1811461077d5761077881611140565b61079f565b7f8990f9dbb6294602194fe5f05549dd56bac20e2291d6034e1ba5746495dc4d375b91505090565b3360009081526003602090815260408083206001600160a01b038616845290915281205481906107d59084611214565b3360008181526003602090815260408083206001600160a01b038a16808552908352928190208590558051858152905194955091936000805160206112e98339815191529281900390910190a35060019392505050565b33600090815260208190526040902054600114610885576040805162461bcd60e51b815260206004820152601260248201527111185a4bdb9bdd0b585d5d1a1bdc9a5e995960721b604482015290519081900360640190fd5b6001600160a01b038216158015906108a657506001600160a01b0382163014155b6108ed576040805162461bcd60e51b81526020600482015260136024820152724461692f696e76616c69642d6164647265737360681b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090208054820190556001546109189082611214565b6001556040805182815290516001600160a01b038416916000916000805160206112c98339815191529181900360200190a35050565b604051806040016040528060018152602001601960f91b81525081565b336000908152602081905260409020546001146109c4576040805162461bcd60e51b815260206004820152601260248201527111185a4bdb9bdd0b585d5d1a1bdc9a5e995960721b604482015290519081900360640190fd5b6001600160a01b03811660008181526020819052604080822060019055517fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a609190a250565b60026020526000908152604090205481565b60046020526000908152604090205481565b6040518060400160405280600381526020016244414960e81b81525081565b33600090815260208190526040902054600114610aa5576040805162461bcd60e51b815260206004820152601260248201527111185a4bdb9bdd0b585d5d1a1bdc9a5e995960721b604482015290519081900360640190fd5b6001600160a01b038116600081815260208190526040808220829055517f184450df2e323acec0ed3b5c7531b81f9b4cdef7914dfd4c0a4317416bb5251b9190a250565b6001600160a01b03821660009081526002602052604090205481811015610b52576040805162461bcd60e51b81526020600482015260186024820152774461692f696e73756666696369656e742d62616c616e636560401b604482015290519081900360640190fd5b6001600160a01b0383163314801590610b7b575033600090815260208190526040902054600114155b15610c2a576001600160a01b03831660009081526003602090815260408083203384529091529020546000198114610c285782811015610bff576040805162461bcd60e51b815260206004820152601a6024820152794461692f696e73756666696369656e742d616c6c6f77616e636560301b604482015290519081900360640190fd5b6001600160a01b0384166000908152600360209081526040808320338452909152902083820390555b505b6001600160a01b03831660008181526002602090815260408083208686039055600180548790039055805186815290519293926000805160206112c9833981519152929181900390910190a3505050565b3360009081526003602090815260408083206001600160a01b038616845290915281205482811015610cf1576040805162461bcd60e51b815260206004820152601a6024820152794461692f696e73756666696369656e742d616c6c6f77616e636560301b604482015290519081900360640190fd5b3360008181526003602090815260408083206001600160a01b038916808552908352928190209487900394859055805185815290519293926000805160206112e9833981519152929181900390910190a35060019392505050565b60006001600160a01b03831615801590610d6f57506001600160a01b0383163014155b610db6576040805162461bcd60e51b81526020600482015260136024820152724461692f696e76616c69642d6164647265737360681b604482015290519081900360640190fd5b3360009081526002602052604090205482811015610e16576040805162461bcd60e51b81526020600482015260186024820152774461692f696e73756666696369656e742d62616c616e636560401b604482015290519081900360640190fd5b33600081815260026020908152604080832087860390556001600160a01b03881680845292819020805488019055805187815290519293926000805160206112c9833981519152929181900390910190a35060019392505050565b60006020819052908152604090205481565b7f000000000000000000000000000000000000000000000000000000000000a4b181565b83421115610ef1576040805162461bcd60e51b815260206004820152601260248201527111185a4bdc195c9b5a5d0b595e1c1a5c995960721b604482015290519081900360640190fd5b4660007f000000000000000000000000000000000000000000000000000000000000a4b18214610f2957610f2482611140565b610f4b565b7f8990f9dbb6294602194fe5f05549dd56bac20e2291d6034e1ba5746495dc4d375b6040518060526112258239604080519182900360520182206001600160a01b03808f166000818152600460209081529085902080546001810190915581870194909452858501829052918f166060860152608085018e905260a085019290925260c08085018d90528351808603909101815260e08501845280519082012061190160f01b6101008601526101028501969096526101228085019690965282518085039096018652610142909301909152835193909101929092209250501580159061108757506040805160008152602080820180845284905260ff8816828401526060820187905260808201869052915160019260a0808401939192601f1981019281900390910190855afa158015611068573d6000803e3d6000fd5b505050602060405103516001600160a01b0316896001600160a01b0316145b6110cd576040805162461bcd60e51b815260206004820152601260248201527111185a4bda5b9d985b1a590b5c195c9b5a5d60721b604482015290519081900360640190fd5b6001600160a01b03808a166000818152600360209081526040808320948d16808452948252918290208b905581518b815291516000805160206112e98339815191529281900390910190a3505050505050505050565b600360209081526000928352604080842090915290825290205481565b6000604051808061127760529139604080519182900360520182208282018252600e83526d2230b49029ba30b13632b1b7b4b760911b6020938401528151808301835260018152601960f91b908401528151808401919091527f0b1461ddc0c1d5ded79a1db0f74dae949050a7c0b28728c724b24958c27a328b818301527fad7c5bef027816a800da1736444fb58a807ef4c9603b7848673f7e3a68eb14a56060820152608081018690523060a0808301919091528251808303909101815260c09091019091528051910120915050919050565b8082018281101561052e57600080fdfe5065726d69742861646472657373206f776e65722c61646472657373207370656e6465722c75696e743235362076616c75652c75696e74323536206e6f6e63652c75696e7432353620646561646c696e6529454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925a2646970667358221220c10a8f863458f6eaf33751a084e6c9f731275ed9c3b4b35baeb97c5150f7db5264736f6c634300060b0033