More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 304 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Remove_liquidity... | 11196438 | 1514 days ago | IN | 0 ETH | 0.08509005 | ||||
Remove_liquidity | 11190777 | 1515 days ago | IN | 0 ETH | 0.06886379 | ||||
Add_liquidity | 11051202 | 1537 days ago | IN | 0 ETH | 0.0711336 | ||||
Add_liquidity | 11050914 | 1537 days ago | IN | 0 ETH | 0.15535699 | ||||
Add_liquidity | 11050716 | 1537 days ago | IN | 0 ETH | 0.07111499 | ||||
Add_liquidity | 11049089 | 1537 days ago | IN | 0 ETH | 0.09457602 | ||||
Add_liquidity | 11044171 | 1538 days ago | IN | 0 ETH | 0.09247445 | ||||
Add_liquidity | 11044163 | 1538 days ago | IN | 0 ETH | 0.05134181 | ||||
Add_liquidity | 11041897 | 1538 days ago | IN | 0 ETH | 0.2145059 | ||||
Add_liquidity | 11041663 | 1538 days ago | IN | 0 ETH | 0.2136475 | ||||
Add_liquidity | 11038429 | 1539 days ago | IN | 0 ETH | 0.05599746 | ||||
Add_liquidity | 11037390 | 1539 days ago | IN | 0 ETH | 0.03311669 | ||||
Add_liquidity | 11036316 | 1539 days ago | IN | 0 ETH | 0.04256793 | ||||
Add_liquidity | 11036200 | 1539 days ago | IN | 0 ETH | 0.04439889 | ||||
Add_liquidity | 11036192 | 1539 days ago | IN | 0 ETH | 0.05114937 | ||||
Add_liquidity | 11036154 | 1539 days ago | IN | 0 ETH | 0.0443256 | ||||
Add_liquidity | 11036099 | 1539 days ago | IN | 0 ETH | 0.03632325 | ||||
Add_liquidity | 11034814 | 1539 days ago | IN | 0 ETH | 0.0909632 | ||||
Add_liquidity | 11034808 | 1539 days ago | IN | 0 ETH | 0.09986943 | ||||
Add_liquidity | 11032347 | 1540 days ago | IN | 0 ETH | 0.05442188 | ||||
Add_liquidity | 11031395 | 1540 days ago | IN | 0 ETH | 0.05825624 | ||||
Add_liquidity | 11030104 | 1540 days ago | IN | 0 ETH | 0.05353317 | ||||
Add_liquidity | 11030065 | 1540 days ago | IN | 0 ETH | 0.0543839 | ||||
Add_liquidity | 11029470 | 1540 days ago | IN | 0 ETH | 0.06958399 | ||||
Add_liquidity | 11029262 | 1540 days ago | IN | 0 ETH | 0.07483655 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0xbBC81d23...48873a5d3 The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
Vyper_contract
Compiler Version
vyper:0.1.0b17
Contract Source Code (Vyper language format)
# A "zap" to deposit/withdraw Curve contract without too many transactions # (c) Curve.Fi, 2020 from vyper.interfaces import ERC20 # External Contracts contract yERC20: def totalSupply() -> uint256: constant def allowance(_owner: address, _spender: address) -> uint256: constant def transfer(_to: address, _value: uint256) -> bool: modifying def transferFrom(_from: address, _to: address, _value: uint256) -> bool: modifying def approve(_spender: address, _value: uint256) -> bool: modifying def name() -> string[64]: constant def symbol() -> string[32]: constant def decimals() -> uint256: constant def balanceOf(arg0: address) -> uint256: constant def deposit(depositAmount: uint256): modifying def withdraw(withdrawTokens: uint256): modifying def getPricePerFullShare() -> uint256: constant # Tether transfer-only ABI contract USDT: def transfer(_to: address, _value: uint256): modifying def transferFrom(_from: address, _to: address, _value: uint256): modifying contract Curve: def add_liquidity(amounts: uint256[N_COINS], min_mint_amount: uint256): modifying def remove_liquidity(_amount: uint256, min_amounts: uint256[N_COINS]): modifying def remove_liquidity_imbalance(amounts: uint256[N_COINS], max_burn_amount: uint256): modifying def balances(i: int128) -> uint256: constant def A() -> uint256: constant def fee() -> uint256: constant def owner() -> address: constant N_COINS: constant(int128) = 4 TETHERED: constant(bool[N_COINS]) = [False, False, True, False] ZERO256: constant(uint256) = 0 # This hack is really bad XXX ZEROS: constant(uint256[N_COINS]) = [ZERO256, ZERO256, ZERO256, ZERO256] # <- change LENDING_PRECISION: constant(uint256) = 10 ** 18 PRECISION: constant(uint256) = 10 ** 18 PRECISION_MUL: constant(uint256[N_COINS]) = [convert(1, uint256), convert(1000000000000, uint256), convert(1000000000000, uint256), convert(1, uint256)] FEE_DENOMINATOR: constant(uint256) = 10 ** 10 FEE_IMPRECISION: constant(uint256) = 25 * 10 ** 8 # % of the fee coins: public(address[N_COINS]) underlying_coins: public(address[N_COINS]) curve: public(address) token: public(address) @public def __init__(_coins: address[N_COINS], _underlying_coins: address[N_COINS], _curve: address, _token: address): self.coins = _coins self.underlying_coins = _underlying_coins self.curve = _curve self.token = _token @public @nonreentrant('lock') def add_liquidity(uamounts: uint256[N_COINS], min_mint_amount: uint256): tethered: bool[N_COINS] = TETHERED amounts: uint256[N_COINS] = ZEROS for i in range(N_COINS): uamount: uint256 = uamounts[i] if uamount > 0: # Transfer the underlying coin from owner if tethered[i]: USDT(self.underlying_coins[i]).transferFrom( msg.sender, self, uamount) else: assert_modifiable(ERC20(self.underlying_coins[i])\ .transferFrom(msg.sender, self, uamount)) # Mint if needed ERC20(self.underlying_coins[i]).approve(self.coins[i], uamount) yERC20(self.coins[i]).deposit(uamount) amounts[i] = yERC20(self.coins[i]).balanceOf(self) ERC20(self.coins[i]).approve(self.curve, amounts[i]) Curve(self.curve).add_liquidity(amounts, min_mint_amount) tokens: uint256 = ERC20(self.token).balanceOf(self) assert_modifiable(ERC20(self.token).transfer(msg.sender, tokens)) @private def _send_all(_addr: address, min_uamounts: uint256[N_COINS], one: int128): tethered: bool[N_COINS] = TETHERED for i in range(N_COINS): if (one < 0) or (i == one): _coin: address = self.coins[i] _balance: uint256 = yERC20(_coin).balanceOf(self) if _balance == 0: # Do nothing for 0 coins continue yERC20(_coin).withdraw(_balance) _ucoin: address = self.underlying_coins[i] _uamount: uint256 = ERC20(_ucoin).balanceOf(self) assert _uamount >= min_uamounts[i], "Not enough coins withdrawn" if tethered[i]: USDT(_ucoin).transfer(_addr, _uamount) else: assert_modifiable(ERC20(_ucoin).transfer(_addr, _uamount)) @public @nonreentrant('lock') def remove_liquidity(_amount: uint256, min_uamounts: uint256[N_COINS]): zeros: uint256[N_COINS] = ZEROS assert_modifiable(ERC20(self.token).transferFrom(msg.sender, self, _amount)) Curve(self.curve).remove_liquidity(_amount, zeros) self._send_all(msg.sender, min_uamounts, -1) @public @nonreentrant('lock') def remove_liquidity_imbalance(uamounts: uint256[N_COINS], max_burn_amount: uint256): """ Get max_burn_amount in, remove requested liquidity and transfer back what is left """ tethered: bool[N_COINS] = TETHERED _token: address = self.token amounts: uint256[N_COINS] = uamounts for i in range(N_COINS): if amounts[i] > 0: rate: uint256 = yERC20(self.coins[i]).getPricePerFullShare() amounts[i] = amounts[i] * LENDING_PRECISION / rate # Transfrer max tokens in _tokens: uint256 = ERC20(_token).balanceOf(msg.sender) if _tokens > max_burn_amount: _tokens = max_burn_amount assert_modifiable(ERC20(_token).transferFrom(msg.sender, self, _tokens)) Curve(self.curve).remove_liquidity_imbalance(amounts, max_burn_amount) # Transfer unused tokens back _tokens = ERC20(_token).balanceOf(self) assert_modifiable(ERC20(_token).transfer(msg.sender, _tokens)) # Unwrap and transfer all the coins we've got self._send_all(msg.sender, ZEROS, -1) @private @constant def _xp_mem(rates: uint256[N_COINS], _balances: uint256[N_COINS]) -> uint256[N_COINS]: result: uint256[N_COINS] = rates for i in range(N_COINS): result[i] = result[i] * _balances[i] / PRECISION return result @private @constant def get_D(A: uint256, xp: uint256[N_COINS]) -> uint256: S: uint256 = 0 for _x in xp: S += _x if S == 0: return 0 Dprev: uint256 = 0 D: uint256 = S Ann: uint256 = A * N_COINS for _i in range(255): D_P: uint256 = D for _x in xp: D_P = D_P * D / (_x * N_COINS + 1) # +1 is to prevent /0 Dprev = D D = (Ann * S + D_P * N_COINS) * D / ((Ann - 1) * D + (N_COINS + 1) * D_P) # Equality with the precision of 1 if D > Dprev: if D - Dprev <= 1: break else: if Dprev - D <= 1: break return D @private @constant def get_y(A: uint256, i: int128, _xp: uint256[N_COINS], D: uint256) -> uint256: """ Calculate x[i] if one reduces D from being calculated for _xp to D Done by solving quadratic equation iteratively. x_1**2 + x1 * (sum' - (A*n**n - 1) * D / (A * n**n)) = D ** (n + 1) / (n ** (2 * n) * prod' * A) x_1**2 + b*x_1 = c x_1 = (x_1**2 + c) / (2*x_1 + b) """ # x in the input is converted to the same price/precision assert (i >= 0) and (i < N_COINS) c: uint256 = D S_: uint256 = 0 Ann: uint256 = A * N_COINS _x: uint256 = 0 for _i in range(N_COINS): if _i != i: _x = _xp[_i] else: continue S_ += _x c = c * D / (_x * N_COINS) c = c * D / (Ann * N_COINS) b: uint256 = S_ + D / Ann y_prev: uint256 = 0 y: uint256 = D for _i in range(255): y_prev = y y = (y*y + c) / (2 * y + b - D) # Equality with the precision of 1 if y > y_prev: if y - y_prev <= 1: break else: if y_prev - y <= 1: break return y @private @constant def _calc_withdraw_one_coin(_token_amount: uint256, i: int128, rates: uint256[N_COINS]) -> uint256: # First, need to calculate # * Get current D # * Solve Eqn against y_i for D - _token_amount crv: address = self.curve A: uint256 = Curve(crv).A() fee: uint256 = Curve(crv).fee() * N_COINS / (4 * (N_COINS - 1)) fee += fee * FEE_IMPRECISION / FEE_DENOMINATOR # Overcharge to account for imprecision precisions: uint256[N_COINS] = PRECISION_MUL total_supply: uint256 = ERC20(self.token).totalSupply() xp: uint256[N_COINS] = PRECISION_MUL S: uint256 = 0 for j in range(N_COINS): xp[j] *= Curve(crv).balances(j) xp[j] = xp[j] * rates[j] / LENDING_PRECISION S += xp[j] D0: uint256 = self.get_D(A, xp) D1: uint256 = D0 - _token_amount * D0 / total_supply xp_reduced: uint256[N_COINS] = xp # xp = xp - fee * | xp * D1 / D0 - (xp - S * dD / D0 * (0, ... 1, ..0))| for j in range(N_COINS): dx_expected: uint256 = 0 b_ideal: uint256 = xp[j] * D1 / D0 b_expected: uint256 = xp[j] if j == i: b_expected -= S * (D0 - D1) / D0 if b_ideal >= b_expected: dx_expected += (b_ideal - b_expected) else: dx_expected += (b_expected - b_ideal) xp_reduced[j] -= fee * dx_expected / FEE_DENOMINATOR dy: uint256 = xp_reduced[i] - self.get_y(A, i, xp_reduced, D1) dy = dy / precisions[i] return dy @public @constant def calc_withdraw_one_coin(_token_amount: uint256, i: int128) -> uint256: rates: uint256[N_COINS] = ZEROS for j in range(N_COINS): rates[j] = yERC20(self.coins[j]).getPricePerFullShare() return self._calc_withdraw_one_coin(_token_amount, i, rates) @public @nonreentrant('lock') def remove_liquidity_one_coin(_token_amount: uint256, i: int128, min_uamount: uint256, donate_dust: bool = False): """ Remove _amount of liquidity all in a form of coin i """ rates: uint256[N_COINS] = ZEROS _token: address = self.token for j in range(N_COINS): rates[j] = yERC20(self.coins[j]).getPricePerFullShare() dy: uint256 = self._calc_withdraw_one_coin(_token_amount, i, rates) assert dy >= min_uamount, "Not enough coins removed" assert_modifiable( ERC20(self.token).transferFrom(msg.sender, self, _token_amount)) amounts: uint256[N_COINS] = ZEROS amounts[i] = dy * LENDING_PRECISION / rates[i] token_amount_before: uint256 = ERC20(_token).balanceOf(self) Curve(self.curve).remove_liquidity_imbalance(amounts, _token_amount) # Unwrap and transfer all the coins we've got self._send_all(msg.sender, ZEROS, i) if not donate_dust: # Transfer unused tokens back token_amount_after: uint256 = ERC20(_token).balanceOf(self) if token_amount_after > token_amount_before: assert_modifiable(ERC20(_token).transfer( msg.sender, token_amount_after - token_amount_before) ) @public @nonreentrant('lock') def withdraw_donated_dust(): owner: address = Curve(self.curve).owner() assert msg.sender == owner _token: address = self.token assert_modifiable( ERC20(_token).transfer(owner, ERC20(_token).balanceOf(self)))
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"outputs":[],"inputs":[{"type":"address[4]","name":"_coins"},{"type":"address[4]","name":"_underlying_coins"},{"type":"address","name":"_curve"},{"type":"address","name":"_token"}],"constant":false,"payable":false,"type":"constructor"},{"name":"add_liquidity","outputs":[],"inputs":[{"type":"uint256[4]","name":"uamounts"},{"type":"uint256","name":"min_mint_amount"}],"constant":false,"payable":false,"type":"function","gas":164560},{"name":"remove_liquidity","outputs":[],"inputs":[{"type":"uint256","name":"_amount"},{"type":"uint256[4]","name":"min_uamounts"}],"constant":false,"payable":false,"type":"function","gas":99521},{"name":"remove_liquidity_imbalance","outputs":[],"inputs":[{"type":"uint256[4]","name":"uamounts"},{"type":"uint256","name":"max_burn_amount"}],"constant":false,"payable":false,"type":"function","gas":120148},{"name":"calc_withdraw_one_coin","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"uint256","name":"_token_amount"},{"type":"int128","name":"i"}],"constant":true,"payable":false,"type":"function","gas":3881601},{"name":"remove_liquidity_one_coin","outputs":[],"inputs":[{"type":"uint256","name":"_token_amount"},{"type":"int128","name":"i"},{"type":"uint256","name":"min_uamount"}],"constant":false,"payable":false,"type":"function"},{"name":"remove_liquidity_one_coin","outputs":[],"inputs":[{"type":"uint256","name":"_token_amount"},{"type":"int128","name":"i"},{"type":"uint256","name":"min_uamount"},{"type":"bool","name":"donate_dust"}],"constant":false,"payable":false,"type":"function"},{"name":"withdraw_donated_dust","outputs":[],"inputs":[],"constant":false,"payable":false,"type":"function","gas":63973},{"name":"coins","outputs":[{"type":"address","name":""}],"inputs":[{"type":"int128","name":"arg0"}],"constant":true,"payable":false,"type":"function","gas":1680},{"name":"underlying_coins","outputs":[{"type":"address","name":""}],"inputs":[{"type":"int128","name":"arg0"}],"constant":true,"payable":false,"type":"function","gas":1710},{"name":"curve","outputs":[{"type":"address","name":""}],"inputs":[],"constant":true,"payable":false,"type":"function","gas":1541},{"name":"token","outputs":[{"type":"address","name":""}],"inputs":[],"constant":true,"payable":false,"type":"function","gas":1571}]
Deployed Bytecode
0x600436101561000d576128e6565b600035601c52740100000000000000000000000000000000000000006020526f7fffffffffffffffffffffffffffffff6040527fffffffffffffffffffffffffffffffff8000000000000000000000000000000060605274012a05f1fffffffffffffffffffffffffdabf41c006080527ffffffffffffffffffffffffed5fa0e000000000000000000000000000000000060a05263029b2f3460005114156106945762ffffff54156100be57600080fd5b600162ffffff5534156100d057600080fd5b61014060008152600081602001526001816040015260008160600152506101c0600081526000816020015260008160400152600081606001525061024060006004818352015b6004610240516004811061012957600080fd5b602002013561026052600061026051111561056357610140610240516004811061015257600080fd5b6020020151156101fe57610240516004811061016d57600080fd5b600160c052602060c02001543b61018357600080fd5b610240516004811061019457600080fd5b600160c052602060c020015430186101ab57600080fd5b6000600060646323b872dd610360523361038052306103a052610260516103c05261037c600061024051600481106101e257600080fd5b600160c052602060c02001545af16101f957600080fd5b6102ad565b610240516004811061020f57600080fd5b600160c052602060c02001543b61022557600080fd5b610240516004811061023657600080fd5b600160c052602060c0200154301861024d57600080fd5b602061034060646323b872dd61028052336102a052306102c052610260516102e05261029c6000610240516004811061028557600080fd5b600160c052602060c02001545af161029c57600080fd5b600050610340516102ac57600080fd5b5b61024051600481106102be57600080fd5b600160c052602060c02001543b6102d457600080fd5b61024051600481106102e557600080fd5b600160c052602060c020015430186102fc57600080fd5b60206104c0604463095ea7b361042052610240516004811061031d57600080fd5b600060c052602060c020015461044052610260516104605261043c6000610240516004811061034b57600080fd5b600160c052602060c02001545af161036257600080fd5b6000506104c050610240516004811061037a57600080fd5b600060c052602060c02001543b61039057600080fd5b61024051600481106103a157600080fd5b600060c052602060c020015430186103b857600080fd5b60006000602463b6b55f256104e05261026051610500526104fc600061024051600481106103e557600080fd5b600060c052602060c02001545af16103fc57600080fd5b610240516004811061040d57600080fd5b600060c052602060c02001543b61042357600080fd5b610240516004811061043457600080fd5b600060c052602060c0200154301861044b57600080fd5b60206105e060246370a0823161056052306105805261057c610240516004811061047457600080fd5b600060c052602060c02001545afa61048b57600080fd5b6000506105e0516101c061024051600481106104a657600080fd5b602002015261024051600481106104bc57600080fd5b600060c052602060c02001543b6104d257600080fd5b61024051600481106104e357600080fd5b600060c052602060c020015430186104fa57600080fd5b60206106a0604463095ea7b361060052600254610620526101c0610240516004811061052557600080fd5b60200201516106405261061c6000610240516004811061054457600080fd5b600060c052602060c02001545af161055b57600080fd5b6000506106a0505b5b8151600101808352811415610116575b50506002543b61058357600080fd5b600254301861059157600080fd5b6000600060a463029b2f346106c0526106e06101c0805182528060200151826020015280604001518260400152806060015182606001525050608435610760526106dc60006002545af16105e457600080fd5b6003543b6105f157600080fd5b60035430186105ff57600080fd5b602061086060246370a082316107e05230610800526107fc6003545afa61062557600080fd5b600050610860516107c0526003543b61063d57600080fd5b600354301861064b57600080fd5b6020610920604463a9059cbb61088052336108a0526107c0516108c05261089c60006003545af161067b57600080fd5b6000506109205161068b57600080fd5b600062ffffff55005b600015610985575b610200526101405261016052610180526101a0526101c0526101e05261022060008152600081602001526001816040015260008160600152506102a060006004818352015b6101e0516102a0511460006101e05112171561096c576102a0516004811061070857600080fd5b600060c052602060c02001546102c0526102c0513b61072657600080fd5b6102c051301861073557600080fd5b602061038060246370a0823161030052306103205261031c6102c0515afa61075c57600080fd5b600050610380516102e0526102e05115156107765761096d565b6102c0513b61078457600080fd5b6102c051301861079357600080fd5b600060006024632e1a7d4d6103a0526102e0516103c0526103bc60006102c0515af16107be57600080fd5b6102a051600481106107cf57600080fd5b600160c052602060c020015461042052610420513b6107ed57600080fd5b6104205130186107fc57600080fd5b60206104e060246370a0823161046052306104805261047c610420515afa61082357600080fd5b6000506104e051610440526308c379a061050052602061052052601a610540527f4e6f7420656e6f75676820636f696e732077697468647261776e00000000000061056052610540506101606102a0516004811061088057600080fd5b602002015161044051101561089657608461051cfd5b6102206102a051600481106108aa57600080fd5b60200201511561090957610420513b6108c257600080fd5b6104205130186108d157600080fd5b60006000604463a9059cbb610660526101405161068052610440516106a05261067c6000610420515af161090457600080fd5b61096b565b610420513b61091757600080fd5b61042051301861092657600080fd5b6020610640604463a9059cbb6105a052610140516105c052610440516105e0526105bc6000610420515af161095a57600080fd5b6000506106405161096a57600080fd5b5b5b5b81516001018083528114156106e1575b505061020051565b637d49d8756000511415610b7c5762ffffff54156109a257600080fd5b600162ffffff5534156109b457600080fd5b61014060008152600081602001526000816040015260008160600152506003543b6109de57600080fd5b60035430186109ec57600080fd5b602061028060646323b872dd6101c052336101e0523061020052600435610220526101dc60006003545af1610a2057600080fd5b60005061028051610a3057600080fd5b6002543b610a3d57600080fd5b6002543018610a4b57600080fd5b6000600060a4637d49d8756102a0526004356102c0526102e06101408051825280602001518260200152806040015182604001528060600151826060015250506102bc60006002545af1610a9e57600080fd5b6101406103a0525b6103a0515160206103a051016103a0526103a06103a0511015610ac857610aa6565b63eb9ec6916103c052336103e05261040060248035825280602001358260200152806040013582604001528060600135826060015250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6104805261048051610460516104405161042051610400516103e0516006580161069c565b6103806103a0525b6103a0515260206103a051036103a0526101406103a051101515610b7057610b4d565b600050600062ffffff55005b6318a7bd766000511415610fed5762ffffff5415610b9957600080fd5b600162ffffff553415610bab57600080fd5b61014060008152600081602001526001816040015260008160600152506003546101c0526101e0600480358252806020013582602001528060400135826040015280606001358260600152505061026060006004818352015b60006101e06102605160048110610c1a57600080fd5b60200201511115610d26576102605160048110610c3657600080fd5b600060c052602060c02001543b610c4c57600080fd5b6102605160048110610c5d57600080fd5b600060c052602060c02001543018610c7457600080fd5b602061030060046377c7b8fc6102a0526102bc6102605160048110610c9857600080fd5b600060c052602060c02001545afa610caf57600080fd5b60005061030051610280526101e06102605160048110610cce57600080fd5b6020020151670de0b6b3a76400008082028215828483041417610cf057600080fd5b80905090509050610280518080610d0657600080fd5b8204905090506101e06102605160048110610d2057600080fd5b60200201525b5b8151600101808352811415610c04575b50506101c0513b610d4757600080fd5b6101c0513018610d5657600080fd5b60206103c060246370a0823161034052336103605261035c6101c0515afa610d7d57600080fd5b6000506103c05161032052608435610320511115610d9d57608435610320525b6101c0513b610dab57600080fd5b6101c0513018610dba57600080fd5b60206104a060646323b872dd6103e0523361040052306104205261032051610440526103fc60006101c0515af1610df057600080fd5b6000506104a051610e0057600080fd5b6002543b610e0d57600080fd5b6002543018610e1b57600080fd5b6000600060a46318a7bd766104c0526104e06101e0805182528060200151826020015280604001518260400152806060015182606001525050608435610560526104dc60006002545af1610e6e57600080fd5b6101c0513b610e7c57600080fd5b6101c0513018610e8b57600080fd5b602061064060246370a082316105c052306105e0526105dc6101c0515afa610eb257600080fd5b60005061064051610320526101c0513b610ecb57600080fd5b6101c0513018610eda57600080fd5b6020610700604463a9059cbb610660523361068052610320516106a05261067c60006101c0515af1610f0b57600080fd5b60005061070051610f1b57600080fd5b610140610720525b61072051516020610720510161072052610720610720511015610f4557610f23565b63eb9ec69161074052336107605261078060008152600081602001526000816040015260008160600152507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61080052610800516107e0516107c0516107a05161078051610760516006580161069c565b610700610720525b6107205152602061072051036107205261014061072051101515610fe157610fbe565b600050600062ffffff55005b60001561111e575b610240526101405261016052610180526101a0526101c0526101e05261020052610220526102606101408051825280602001518260200152806040015182604001528060600151826060015250506102e060006004818352015b6102606102e0516004811061106357600080fd5b60200201516101c06102e0516004811061107c57600080fd5b6020020151808202821582848304141761109557600080fd5b80905090509050670de0b6b3a764000080806110b057600080fd5b8204905090506102606102e051600481106110ca57600080fd5b60200201525b815160010180835281141561104f575b50506080610300525b6000610300511115156110fb57611117565b60206103005103610260015160206103005103610300526110e9565b6102405156005b600015611428575b6101e0526101405261016052610180526101a0526101c05260006102005261024060006004818352015b6020610240510261016001516102205261020080516102205181818301101561117857600080fd5b808201905090508152505b8151600101808352811415611150575b50506102005115156111ae5760006000526000516101e05156505b600061028052610200516102a05261014051600480820282158284830414176111d657600080fd5b809050905090506102c0526102e0600060ff818352015b6102a0516103005261034060006004818352015b60206103405102610160015161032052610300516102a051808202821582848304141761122d57600080fd5b80905090509050610320516004808202821582848304141761124e57600080fd5b80905090509050600181818301101561126657600080fd5b80820190509050808061127857600080fd5b820490509050610300525b8151600101808352811415611201575b50506102a051610280526102c0516102005180820282158284830414176112b957600080fd5b8090509050905061030051600480820282158284830414176112da57600080fd5b809050905090508181830110156112f057600080fd5b808201905090506102a051808202821582848304141761130f57600080fd5b809050905090506102c05160018082101561132957600080fd5b808203905090506102a051808202821582848304141761134857600080fd5b80905090509050600561030051808202821582848304141761136957600080fd5b8090509050905081818301101561137f57600080fd5b80820190509050808061139157600080fd5b8204905090506102a052610280516102a05111156113d85760016102a05161028051808210156113c057600080fd5b808203905090501115156113d357611414565b611403565b6001610280516102a051808210156113ef57600080fd5b8082039050905011151561140257611414565b5b5b81516001018083528114156111ed575b50506102a0516000526000516101e0515650005b600015611755575b610220526101405261016052610180526101a0526101c0526101e052610200526004610160511260006101605112151661146957600080fd5b6102005161024052600061026052610140516004808202821582848304141761149157600080fd5b809050905090506102805260006102a0526102c060006004818352015b610160516102c05118156114de576101806102c051600481106114d057600080fd5b60200201516102a0526114e3565b61155f565b61026080516102a0518181830110156114fb57600080fd5b808201905090508152506102405161020051808202821582848304141761152157600080fd5b809050905090506102a0516004808202821582848304141761154257600080fd5b80905090509050808061155457600080fd5b820490509050610240525b81516001018083528114156114ae575b50506102405161020051808202821582848304141761158d57600080fd5b8090509050905061028051600480820282158284830414176115ae57600080fd5b8090509050905080806115c057600080fd5b8204905090506102405261026051610200516102805180806115e157600080fd5b8204905090508181830110156115f657600080fd5b808201905090506102e0526000610300526102005161032052610340600060ff818352015b61032051610300526103205161032051808202821582848304141761163f57600080fd5b809050905090506102405181818301101561165957600080fd5b80820190509050600261032051808202821582848304141761167a57600080fd5b809050905090506102e05181818301101561169457600080fd5b8082019050905061020051808210156116ac57600080fd5b8082039050905080806116be57600080fd5b82049050905061032052610300516103205111156117055760016103205161030051808210156116ed57600080fd5b8082039050905011151561170057611741565b611730565b600161030051610320518082101561171c57600080fd5b8082039050905011151561172f57611741565b5b5b815160010180835281141561161b575b505061032051600052600051610220515650005b600015611f0b575b610200526101405261016052610180526101a0526101c0526101e05260025461022052610220513b61178e57600080fd5b61022051301861179d57600080fd5b60206102c0600463f446c1d06102605261027c610220515afa6117bf57600080fd5b6000506102c05161024052610220513b6117d857600080fd5b6102205130186117e757600080fd5b6020610360600463ddca3f436103005261031c610220515afa61180957600080fd5b600050610360516004808202821582848304141761182657600080fd5b80905090509050600c808061183a57600080fd5b8204905090506102e0526102e080516102e051639502f900808202821582848304141761186657600080fd5b809050905090506402540be400808061187e57600080fd5b82049050905081818301101561189357600080fd5b808201905090508152506103806001815264e8d4a51000816020015264e8d4a51000816040015260018160600152506003543b6118cf57600080fd5b60035430186118dd57600080fd5b602061048060046318160ddd6104205261043c6003545afa6118fe57600080fd5b60005061048051610400526104a06001815264e8d4a51000816020015264e8d4a510008160400152600181606001525060006105205261054060006004818352015b6104a0610540516004811061195457600080fd5b602002018051610220513b61196857600080fd5b61022051301861197757600080fd5b60206105e0602463065a80d861056052610540516105805261057c610220515afa6119a157600080fd5b6000506105e05180820282158284830414176119bc57600080fd5b809050905090508152506104a061054051600481106119da57600080fd5b602002015161018061054051600481106119f357600080fd5b60200201518082028215828483041417611a0c57600080fd5b80905090509050670de0b6b3a76400008080611a2757600080fd5b8204905090506104a06105405160048110611a4157600080fd5b602002015261052080516104a06105405160048110611a5f57600080fd5b6020020151818183011015611a7357600080fd5b808201905090508152505b8151600101808352811415611940575b5050610140610620525b61062051516020610620510161062052610620610620511015611aba57611a98565b637b7241516106405261024051610660526106806104a08051825280602001518260200152806040015182604001528060600151826060015250506106e0516106c0516106a051610680516106605160065801611126565b61074052610600610620525b6106205152602061062051036106205261014061062051101515611b4157611b1e565b61074051610600526106005161014051610600518082028215828483041417611b6957600080fd5b80905090509050610400518080611b7f57600080fd5b82049050905080821015611b9257600080fd5b80820390509050610760526107806104a080518252806020015182602001528060400151826040015280606001518260600152505061080060006004818352015b6000610820526104a06108005160048110611bed57600080fd5b6020020151610760518082028215828483041417611c0a57600080fd5b80905090509050610600518080611c2057600080fd5b820490509050610840526104a06108005160048110611c3e57600080fd5b60200201516108605261016051610800511415611cc257610860805161052051610600516107605180821015611c7357600080fd5b808203905090508082028215828483041417611c8e57600080fd5b80905090509050610600518080611ca457600080fd5b82049050905080821015611cb757600080fd5b808203905090508152505b6108605161084051101515611d10576108208051610840516108605180821015611ceb57600080fd5b80820390509050818183011015611d0157600080fd5b80820190509050815250611d4b565b6108208051610860516108405180821015611d2a57600080fd5b80820390509050818183011015611d4057600080fd5b808201905090508152505b6107806108005160048110611d5f57600080fd5b6020020180516102e051610820518082028215828483041417611d8157600080fd5b809050905090506402540be4008080611d9957600080fd5b82049050905080821015611dac57600080fd5b808203905090508152505b8151600101808352811415611bd3575b50506107806101605160048110611ddd57600080fd5b60200201516101406108a0525b6108a0515160206108a051016108a0526108a06108a0511015611e0c57611dea565b638643731f6108c052610240516108e0526101605161090052610920610780805182528060200151826020015280604001518260400152806060015182606001525050610760516109a0526109a05161098051610960516109405161092051610900516108e05160065801611430565b610a00526108806108a0525b6108a0515260206108a051036108a0526101406108a051101515611eab57611e88565b610a005180821015611ebc57600080fd5b8082039050905061088052610880516103806101605160048110611edf57600080fd5b60200201518080611eef57600080fd5b8204905090506108805261088051600052600051610200515650005b63cc2b27d760005114156120c4573415611f2457600080fd5b60605160243580604051901315611f3a57600080fd5b8091901215611f4857600080fd5b5061014060008152600081602001526000816040015260008160600152506101c060006004818352015b6101c05160048110611f8357600080fd5b600060c052602060c02001543b611f9957600080fd5b6101c05160048110611faa57600080fd5b600060c052602060c02001543018611fc157600080fd5b602061024060046377c7b8fc6101e0526101fc6101c05160048110611fe557600080fd5b600060c052602060c02001545afa611ffc57600080fd5b600050610240516101406101c0516004811061201757600080fd5b60200201525b8151600101808352811415611f72575b50506101405161016051610180516101a05163800c1cbc610280526004356102a0526024356102c0526102e06101408051825280602001518260200152806040015182604001528060600151826060015250506103405161032051610300516102e0516102c0516102a0516006580161175d565b6103a0526101a0526101805261016052610140526103a05160005260206000f350005b631a4d01d260005114156120dd57600061014052612113565b63517a55a3600051141561210b57606435600281106120fb57600080fd5b6020606461014037600050612113565b600015612690575b62ffffff541561212257600080fd5b600162ffffff55341561213457600080fd5b6060516024358060405190131561214a57600080fd5b809190121561215857600080fd5b5061016060008152600081602001526000816040015260008160600152506003546101e05261020060006004818352015b610200516004811061219a57600080fd5b600060c052602060c02001543b6121b057600080fd5b61020051600481106121c157600080fd5b600060c052602060c020015430186121d857600080fd5b602061028060046377c7b8fc6102205261023c61020051600481106121fc57600080fd5b600060c052602060c02001545afa61221357600080fd5b60005061028051610160610200516004811061222e57600080fd5b60200201525b8151600101808352811415612189575b50506101406102c0525b6102c0515160206102c051016102c0526102c06102c05110156122705761224e565b63800c1cbc6102e05260043561030052602435610320526103406101608051825280602001518260200152806040015182604001528060600151826060015250506103a05161038051610360516103405161032051610300516006580161175d565b610400526102a06102c0525b6102c0515260206102c051036102c0526101406102c051101515612301576122de565b610400516102a0526308c379a0610420526020610440526018610460527f4e6f7420656e6f75676820636f696e732072656d6f766564000000000000000061048052610460506044356102a051101561235b57608461043cfd5b6003543b61236857600080fd5b600354301861237657600080fd5b602061058060646323b872dd6104c052336104e0523061050052600435610520526104dc60006003545af16123aa57600080fd5b600050610580516123ba57600080fd5b6105a060008152600081602001526000816040015260008160600152506102a051670de0b6b3a764000080820282158284830414176123f857600080fd5b809050905090506101606024356004811061241257600080fd5b6020020151808061242257600080fd5b8204905090506105a06024356004811061243b57600080fd5b60200201526101e0513b61244e57600080fd5b6101e051301861245d57600080fd5b60206106c060246370a0823161064052306106605261065c6101e0515afa61248457600080fd5b6000506106c051610620526002543b61249c57600080fd5b60025430186124aa57600080fd5b6000600060a46318a7bd766106e0526107006105a0805182528060200151826020015280604001518260400152806060015182606001525050600435610780526106fc60006002545af16124fd57600080fd5b6101406107e0525b6107e0515160206107e051016107e0526107e06107e051101561252757612505565b63eb9ec69161080052336108205261084060008152600081602001526000816040015260008160600152506024356108c0526108c0516108a051610880516108605161084051610820516006580161069c565b6107c06107e0525b6107e0515260206107e051036107e0526101406107e0511015156125a557612582565b600050610140511515612687576101e0513b6125c057600080fd5b6101e05130186125cf57600080fd5b60206109c060246370a0823161094052306109605261095c6101e0515afa6125f657600080fd5b6000506109c0516109205261062051610920511115612686576101e0513b61261d57600080fd5b6101e051301861262c57600080fd5b6020610a80604463a9059cbb6109e05233610a005261092051610620518082101561265657600080fd5b80820390509050610a20526109fc60006101e0515af161267557600080fd5b600050610a805161268557600080fd5b5b5b600062ffffff55005b636c956a5460005114156127cd5762ffffff54156126ad57600080fd5b600162ffffff5534156126bf57600080fd5b6002543b6126cc57600080fd5b60025430186126da57600080fd5b60206101c06004638da5cb5b6101605261017c6002545afa6126fb57600080fd5b6000506101c0516101405261014051331461271557600080fd5b6003546101e0526101e0513b61272a57600080fd5b6101e051301861273957600080fd5b6020610340604463a9059cbb6102a052610140516102c0526101e0513b61275f57600080fd5b6101e051301861276e57600080fd5b602061028060246370a0823161020052306102205261021c6101e0515afa61279557600080fd5b600050610280516102e0526102bc60006101e0515af16127b457600080fd5b600050610340516127c457600080fd5b600062ffffff55005b6323746eb860005114156128325734156127e657600080fd5b606051600435806040519013156127fc57600080fd5b809190121561280a57600080fd5b506004356004811061281b57600080fd5b600060c052602060c020015460005260206000f350005b63b739953e600051141561289757341561284b57600080fd5b6060516004358060405190131561286157600080fd5b809190121561286f57600080fd5b506004356004811061288057600080fd5b600160c052602060c020015460005260206000f350005b637165485d60005114156128be5734156128b057600080fd5b60025460005260206000f350005b63fc0c546a60005114156128e55734156128d757600080fd5b60035460005260206000f350005b5b60006000fd
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.