More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 15,231 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Remove_liquidity... | 21279620 | 8 mins ago | IN | 0 ETH | 0.00490995 | ||||
Add_liquidity | 21279380 | 56 mins ago | IN | 0 ETH | 0.00277532 | ||||
Remove_liquidity... | 21240101 | 5 days ago | IN | 0 ETH | 0.00222134 | ||||
Remove_liquidity... | 21222403 | 7 days ago | IN | 0 ETH | 0.00494359 | ||||
Remove_liquidity... | 21204317 | 10 days ago | IN | 0 ETH | 0.00279937 | ||||
Remove_liquidity... | 21203001 | 10 days ago | IN | 0 ETH | 0.00307419 | ||||
Remove_liquidity... | 21202995 | 10 days ago | IN | 0 ETH | 0.00319996 | ||||
Remove_liquidity... | 20855519 | 59 days ago | IN | 0 ETH | 0.00211512 | ||||
Add_liquidity | 20855317 | 59 days ago | IN | 0 ETH | 0.00260736 | ||||
Remove_liquidity... | 20731181 | 76 days ago | IN | 0 ETH | 0.00048429 | ||||
Remove_liquidity | 20679162 | 83 days ago | IN | 0 ETH | 0.00247792 | ||||
Remove_liquidity... | 20517639 | 106 days ago | IN | 0 ETH | 0.00024664 | ||||
Remove_liquidity... | 20516779 | 106 days ago | IN | 0 ETH | 0.00033001 | ||||
Remove_liquidity... | 20513999 | 106 days ago | IN | 0 ETH | 0.00116107 | ||||
Remove_liquidity... | 20454512 | 115 days ago | IN | 0 ETH | 0.00031213 | ||||
Remove_liquidity... | 20114871 | 162 days ago | IN | 0 ETH | 0.00144539 | ||||
Remove_liquidity... | 20026539 | 174 days ago | IN | 0 ETH | 0.00643486 | ||||
Remove_liquidity... | 20026426 | 174 days ago | IN | 0 ETH | 0.00473308 | ||||
Remove_liquidity... | 19824988 | 203 days ago | IN | 0 ETH | 0.00151605 | ||||
Remove_liquidity... | 19805076 | 205 days ago | IN | 0 ETH | 0.00205541 | ||||
Remove_liquidity... | 19724553 | 217 days ago | IN | 0 ETH | 0.00367423 | ||||
Remove_liquidity... | 19537847 | 243 days ago | IN | 0 ETH | 0.00622128 | ||||
Remove_liquidity... | 19537325 | 243 days ago | IN | 0 ETH | 0.00675656 | ||||
Remove_liquidity... | 19502052 | 248 days ago | IN | 0 ETH | 0.00648805 | ||||
Remove_liquidity... | 19497068 | 249 days ago | IN | 0 ETH | 0.00521238 |
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 0x64448B78...c1bB7136e 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.2.7
Contract Source Code (Vyper language format)
# @version 0.2.7 """ @title "Zap" Depositer for Curve pool @author Curve.Fi @license Copyright (c) Curve.Fi, 2020 - all rights reserved """ from vyper.interfaces import ERC20 interface CurveMeta: def add_liquidity(amounts: uint256[N_COINS], min_mint_amount: uint256) -> uint256: nonpayable def remove_liquidity(_amount: uint256, min_amounts: uint256[N_COINS]) -> uint256[N_COINS]: nonpayable def remove_liquidity_one_coin(_token_amount: uint256, i: int128, min_amount: uint256) -> uint256: nonpayable def remove_liquidity_imbalance(amounts: uint256[N_COINS], max_burn_amount: uint256) -> uint256: nonpayable def calc_withdraw_one_coin(_token_amount: uint256, i: int128) -> uint256: view def calc_token_amount(amounts: uint256[N_COINS], deposit: bool) -> uint256: view def base_pool() -> address: view def coins(i: uint256) -> address: view interface CurveBase: def add_liquidity(amounts: uint256[BASE_N_COINS], min_mint_amount: uint256): nonpayable def remove_liquidity(_amount: uint256, min_amounts: uint256[BASE_N_COINS]): nonpayable def remove_liquidity_one_coin(_token_amount: uint256, i: int128, min_amount: uint256): nonpayable def remove_liquidity_imbalance(amounts: uint256[BASE_N_COINS], max_burn_amount: uint256): nonpayable def calc_withdraw_one_coin(_token_amount: uint256, i: int128) -> uint256: view def calc_token_amount(amounts: uint256[BASE_N_COINS], deposit: bool) -> uint256: view def coins(i: uint256) -> address: view def fee() -> uint256: view N_COINS: constant(int128) = 2 MAX_COIN: constant(int128) = N_COINS-1 BASE_N_COINS: constant(int128) = 3 N_ALL_COINS: constant(int128) = N_COINS + BASE_N_COINS - 1 # An asset which may have a transfer fee (USDT) FEE_ASSET: constant(address) = 0xdAC17F958D2ee523a2206206994597C13D831ec7 FEE_DENOMINATOR: constant(uint256) = 10 ** 10 FEE_IMPRECISION: constant(uint256) = 100 * 10 ** 8 # % of the fee pool: public(address) token: public(address) base_pool: public(address) coins: public(address[N_COINS]) base_coins: public(address[BASE_N_COINS]) @external def __init__(_pool: address, _token: address): """ @notice Contract constructor @param _pool Metapool address @param _token Pool LP token address """ self.pool = _pool self.token = _token _base_pool: address = CurveMeta(_pool).base_pool() self.base_pool = _base_pool for i in range(N_COINS): coin: address = CurveMeta(_pool).coins(convert(i, uint256)) self.coins[i] = coin # approve coins for infinite transfers _response: Bytes[32] = raw_call( coin, concat( method_id("approve(address,uint256)"), convert(_pool, bytes32), convert(MAX_UINT256, bytes32), ), max_outsize=32, ) if len(_response) > 0: assert convert(_response, bool) for i in range(BASE_N_COINS): coin: address = CurveBase(_base_pool).coins(convert(i, uint256)) self.base_coins[i] = coin # approve underlying coins for infinite transfers _response: Bytes[32] = raw_call( coin, concat( method_id("approve(address,uint256)"), convert(_base_pool, bytes32), convert(MAX_UINT256, bytes32), ), max_outsize=32, ) if len(_response) > 0: assert convert(_response, bool) @external def add_liquidity(amounts: uint256[N_ALL_COINS], min_mint_amount: uint256) -> uint256: """ @notice Wrap underlying coins and deposit them in the pool @param amounts List of amounts of underlying coins to deposit @param min_mint_amount Minimum amount of LP tokens to mint from the deposit @return Amount of LP tokens received by depositing """ meta_amounts: uint256[N_COINS] = empty(uint256[N_COINS]) base_amounts: uint256[BASE_N_COINS] = empty(uint256[BASE_N_COINS]) deposit_base: bool = False # Transfer all coins in for i in range(N_ALL_COINS): amount: uint256 = amounts[i] if amount == 0: continue coin: address = ZERO_ADDRESS if i < MAX_COIN: coin = self.coins[i] meta_amounts[i] = amount else: x: int128 = i - MAX_COIN coin = self.base_coins[x] base_amounts[x] = amount deposit_base = True # "safeTransferFrom" which works for ERC20s which return bool or not _response: Bytes[32] = raw_call( coin, concat( method_id("transferFrom(address,address,uint256)"), convert(msg.sender, bytes32), convert(self, bytes32), convert(amount, bytes32), ), max_outsize=32, ) # dev: failed transfer if len(_response) > 0: assert convert(_response, bool) # dev: failed transfer # end "safeTransferFrom" # Handle potential Tether fees if coin == FEE_ASSET: amount = ERC20(FEE_ASSET).balanceOf(self) if i < MAX_COIN: meta_amounts[i] = amount else: base_amounts[i - MAX_COIN] = amount # Deposit to the base pool if deposit_base: CurveBase(self.base_pool).add_liquidity(base_amounts, 0) meta_amounts[MAX_COIN] = ERC20(self.coins[MAX_COIN]).balanceOf(self) # Deposit to the meta pool CurveMeta(self.pool).add_liquidity(meta_amounts, min_mint_amount) # Transfer meta token back _lp_token: address = self.token _lp_amount: uint256 = ERC20(_lp_token).balanceOf(self) assert ERC20(_lp_token).transfer(msg.sender, _lp_amount) return _lp_amount @external def remove_liquidity(_amount: uint256, min_amounts: uint256[N_ALL_COINS]) -> uint256[N_ALL_COINS]: """ @notice Withdraw and unwrap coins from the pool @dev Withdrawal amounts are based on current deposit ratios @param _amount Quantity of LP tokens to burn in the withdrawal @param min_amounts Minimum amounts of underlying coins to receive @return List of amounts of underlying coins that were withdrawn """ _token: address = self.token assert ERC20(_token).transferFrom(msg.sender, self, _amount) min_amounts_meta: uint256[N_COINS] = empty(uint256[N_COINS]) min_amounts_base: uint256[BASE_N_COINS] = empty(uint256[BASE_N_COINS]) amounts: uint256[N_ALL_COINS] = empty(uint256[N_ALL_COINS]) # Withdraw from meta for i in range(MAX_COIN): min_amounts_meta[i] = min_amounts[i] CurveMeta(self.pool).remove_liquidity(_amount, min_amounts_meta) # Withdraw from base _base_amount: uint256 = ERC20(self.coins[MAX_COIN]).balanceOf(self) for i in range(BASE_N_COINS): min_amounts_base[i] = min_amounts[MAX_COIN+i] CurveBase(self.base_pool).remove_liquidity(_base_amount, min_amounts_base) # Transfer all coins out for i in range(N_ALL_COINS): coin: address = ZERO_ADDRESS if i < MAX_COIN: coin = self.coins[i] else: coin = self.base_coins[i - MAX_COIN] amounts[i] = ERC20(coin).balanceOf(self) # "safeTransfer" which works for ERC20s which return bool or not _response: Bytes[32] = raw_call( coin, concat( method_id("transfer(address,uint256)"), convert(msg.sender, bytes32), convert(amounts[i], bytes32), ), max_outsize=32, ) # dev: failed transfer if len(_response) > 0: assert convert(_response, bool) # dev: failed transfer # end "safeTransfer" return amounts @external def remove_liquidity_one_coin(_token_amount: uint256, i: int128, _min_amount: uint256) -> uint256: """ @notice Withdraw and unwrap a single coin from the pool @param _token_amount Amount of LP tokens to burn in the withdrawal @param i Index value of the coin to withdraw @param _min_amount Minimum amount of underlying coin to receive @return Amount of underlying coin received """ assert ERC20(self.token).transferFrom(msg.sender, self, _token_amount) coin: address = ZERO_ADDRESS if i < MAX_COIN: coin = self.coins[i] # Withdraw a metapool coin CurveMeta(self.pool).remove_liquidity_one_coin(_token_amount, i, _min_amount) else: coin = self.base_coins[i - MAX_COIN] # Withdraw a base pool coin CurveMeta(self.pool).remove_liquidity_one_coin(_token_amount, MAX_COIN, 0) CurveBase(self.base_pool).remove_liquidity_one_coin( ERC20(self.coins[MAX_COIN]).balanceOf(self), i-MAX_COIN, _min_amount ) # Tranfer the coin out coin_amount: uint256 = ERC20(coin).balanceOf(self) # "safeTransfer" which works for ERC20s which return bool or not _response: Bytes[32] = raw_call( coin, concat( method_id("transfer(address,uint256)"), convert(msg.sender, bytes32), convert(coin_amount, bytes32), ), max_outsize=32, ) # dev: failed transfer if len(_response) > 0: assert convert(_response, bool) # dev: failed transfer # end "safeTransfer" return coin_amount @external def remove_liquidity_imbalance(amounts: uint256[N_ALL_COINS], max_burn_amount: uint256) -> uint256: """ @notice Withdraw coins from the pool in an imbalanced amount @param amounts List of amounts of underlying coins to withdraw @param max_burn_amount Maximum amount of LP token to burn in the withdrawal. This value cannot exceed the caller's LP token balance. @return Actual amount of the LP token burned in the withdrawal """ _base_pool: address = self.base_pool _meta_pool: address = self.pool _base_coins: address[BASE_N_COINS] = self.base_coins _meta_coins: address[N_COINS] = self.coins _lp_token: address = self.token fee: uint256 = CurveBase(_base_pool).fee() * BASE_N_COINS / (4 * (BASE_N_COINS - 1)) fee += fee * FEE_IMPRECISION / FEE_DENOMINATOR # Overcharge to account for imprecision # Transfer the LP token in assert ERC20(_lp_token).transferFrom(msg.sender, self, max_burn_amount) withdraw_base: bool = False amounts_base: uint256[BASE_N_COINS] = empty(uint256[BASE_N_COINS]) amounts_meta: uint256[N_COINS] = empty(uint256[N_COINS]) leftover_amounts: uint256[N_COINS] = empty(uint256[N_COINS]) # Prepare quantities for i in range(MAX_COIN): amounts_meta[i] = amounts[i] for i in range(BASE_N_COINS): amount: uint256 = amounts[MAX_COIN + i] if amount != 0: amounts_base[i] = amount withdraw_base = True if withdraw_base: amounts_meta[MAX_COIN] = CurveBase(self.base_pool).calc_token_amount(amounts_base, False) amounts_meta[MAX_COIN] += amounts_meta[MAX_COIN] * fee / FEE_DENOMINATOR + 1 # Remove liquidity and deposit leftovers back CurveMeta(_meta_pool).remove_liquidity_imbalance(amounts_meta, max_burn_amount) if withdraw_base: CurveBase(_base_pool).remove_liquidity_imbalance(amounts_base, amounts_meta[MAX_COIN]) leftover_amounts[MAX_COIN] = ERC20(_meta_coins[MAX_COIN]).balanceOf(self) if leftover_amounts[MAX_COIN] > 0: CurveMeta(_meta_pool).add_liquidity(leftover_amounts, 0) # Transfer all coins out for i in range(N_ALL_COINS): coin: address = ZERO_ADDRESS amount: uint256 = 0 if i < MAX_COIN: coin = _meta_coins[i] amount = amounts_meta[i] else: coin = _base_coins[i - MAX_COIN] amount = amounts_base[i - MAX_COIN] # "safeTransfer" which works for ERC20s which return bool or not if amount > 0: _response: Bytes[32] = raw_call( coin, concat( method_id("transfer(address,uint256)"), convert(msg.sender, bytes32), convert(amount, bytes32), ), max_outsize=32, ) # dev: failed transfer if len(_response) > 0: assert convert(_response, bool) # dev: failed transfer # end "safeTransfer" # Transfer the leftover LP token out leftover: uint256 = ERC20(_lp_token).balanceOf(self) if leftover > 0: assert ERC20(_lp_token).transfer(msg.sender, leftover) return max_burn_amount - leftover @view @external def calc_withdraw_one_coin(_token_amount: uint256, i: int128) -> uint256: """ @notice Calculate the amount received when withdrawing and unwrapping a single coin @param _token_amount Amount of LP tokens to burn in the withdrawal @param i Index value of the underlying coin to withdraw @return Amount of coin received """ if i < MAX_COIN: return CurveMeta(self.pool).calc_withdraw_one_coin(_token_amount, i) else: _base_tokens: uint256 = CurveMeta(self.pool).calc_withdraw_one_coin(_token_amount, MAX_COIN) return CurveBase(self.base_pool).calc_withdraw_one_coin(_base_tokens, i-MAX_COIN) @view @external def calc_token_amount(amounts: uint256[N_ALL_COINS], is_deposit: bool) -> uint256: """ @notice Calculate addition or reduction in token supply from a deposit or withdrawal @dev This calculation accounts for slippage, but not fees. Needed to prevent front-running, not for precise calculations! @param amounts Amount of each underlying coin being deposited @param is_deposit set True for deposits, False for withdrawals @return Expected amount of LP tokens received """ meta_amounts: uint256[N_COINS] = empty(uint256[N_COINS]) base_amounts: uint256[BASE_N_COINS] = empty(uint256[BASE_N_COINS]) for i in range(MAX_COIN): meta_amounts[i] = amounts[i] for i in range(BASE_N_COINS): base_amounts[i] = amounts[i + MAX_COIN] _base_tokens: uint256 = CurveBase(self.base_pool).calc_token_amount(base_amounts, is_deposit) meta_amounts[MAX_COIN] = _base_tokens return CurveMeta(self.pool).calc_token_amount(meta_amounts, is_deposit)
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"outputs":[],"inputs":[{"type":"address","name":"_pool"},{"type":"address","name":"_token"}],"stateMutability":"nonpayable","type":"constructor"},{"name":"add_liquidity","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"uint256[4]","name":"amounts"},{"type":"uint256","name":"min_mint_amount"}],"stateMutability":"nonpayable","type":"function","gas":34073},{"name":"remove_liquidity","outputs":[{"type":"uint256[4]","name":""}],"inputs":[{"type":"uint256","name":"_amount"},{"type":"uint256[4]","name":"min_amounts"}],"stateMutability":"nonpayable","type":"function","gas":32919},{"name":"remove_liquidity_one_coin","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"uint256","name":"_token_amount"},{"type":"int128","name":"i"},{"type":"uint256","name":"_min_amount"}],"stateMutability":"nonpayable","type":"function","gas":14467},{"name":"remove_liquidity_imbalance","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"uint256[4]","name":"amounts"},{"type":"uint256","name":"max_burn_amount"}],"stateMutability":"nonpayable","type":"function","gas":38200},{"name":"calc_withdraw_one_coin","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"uint256","name":"_token_amount"},{"type":"int128","name":"i"}],"stateMutability":"view","type":"function","gas":3147},{"name":"calc_token_amount","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"uint256[4]","name":"amounts"},{"type":"bool","name":"is_deposit"}],"stateMutability":"view","type":"function","gas":4414},{"name":"pool","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1241},{"name":"token","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1271},{"name":"base_pool","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1301},{"name":"coins","outputs":[{"type":"address","name":""}],"inputs":[{"type":"uint256","name":"arg0"}],"stateMutability":"view","type":"function","gas":1440},{"name":"base_coins","outputs":[{"type":"address","name":""}],"inputs":[{"type":"uint256","name":"arg0"}],"stateMutability":"view","type":"function","gas":1470}]
Deployed Bytecode
0x341561000a57600080fd5b60043610156100185761184e565b600035601c5263029b2f3460005114156105065760c0366101403761020060006004818352015b6004610200516004811061005257600080fd5b60200201356102205261022051151561006a57610363565b60006102405260016102005112156100bf57610200516002811061008d57600080fd5b600360c052602060c0200154610240526102205161014061020051600281106100b557600080fd5b6020020152610131565b610200516001808203808060008112156100d557195b607f1c156100e257600080fd5b9050905090506102605261026051600381106100fd57600080fd5b600460c052602060c02001546102405261022051610180610260516003811061012557600080fd5b602002015260016101e0525b600060046102c0527f23b872dd000000000000000000000000000000000000000000000000000000006102e0526102c060048060208461032001018260208501600060045af1505080518201915050336020826103200101526020810190503060208261032001015260208101905061022051602082610320010152602081019050806103205261032090508051602001806103e08284600060045af16101d757600080fd5b505060206104c06103e0516104006000610240515af16101f657600080fd5b60203d808211156102075780610209565b815b905090506104a0526104a08051602001806102608284600060045af161022e57600080fd5b505060006102605111156102815761026080602001516000825180602090131561025757600080fd5b809190121561026557600080fd5b806020036101000a8204905090509050151561028057600080fd5b5b73dac17f958d2ee523a2206206994597c13d831ec761024051141561036257602061034060246370a082316102c052306102e0526102dc73dac17f958d2ee523a2206206994597c13d831ec75afa6102d857600080fd5b601f3d116102e557600080fd5b6000506103405161022052600161020051121561031e5761022051610140610200516002811061031457600080fd5b6020020152610361565b610220516101806102005160018082038080600081121561033b57195b607f1c1561034857600080fd5b9050905090506003811061035b57600080fd5b60200201525b5b5b815160010180835281141561003f575b50506101e05115610415576002543b61038b57600080fd5b600060006084634515cef36102005261018051610220526101a051610240526101c0516102605260006102805261021c60006002545af16103cb57600080fd5b602061028060246370a0823161020052306102205261021c6001600360c052602060c02001545afa6103fc57600080fd5b601f3d1161040957600080fd5b60005061028051610160525b60206102c06064630b4c7e4d61020052610140516102205261016051610240526084356102605261021c60006000545af161044f57600080fd5b601f3d1161045c57600080fd5b6000506102c0506001546102005260206102c060246370a0823161024052306102605261025c610200515afa61049157600080fd5b601f3d1161049e57600080fd5b6000506102c0516102205260206102e0604463a9059cbb610240523361026052610220516102805261025c6000610200515af16104da57600080fd5b601f3d116104e757600080fd5b6000506102e0516104f757600080fd5b6102205160005260206000f350005b637d49d875600051141561096f5760015461014052602061022060646323b872dd610160523361018052306101a0526004356101c05261017c6000610140515af161055057600080fd5b601f3d1161055d57600080fd5b6000506102205161056d57600080fd5b610120366101603761028060006001818352015b6024610280516004811061059457600080fd5b602002013561016061028051600281106105ad57600080fd5b60200201525b8151600101808352811415610581575b505060406103406064635b36389c610280526004356102a052610160516102c052610180516102e05261029c60006000545af16105ff57600080fd5b603f3d1161060c57600080fd5b60005061034050602061032060246370a082316102a052306102c0526102bc6001600360c052602060c02001545afa61064457600080fd5b601f3d1161065157600080fd5b60005061032051610280526102a060006003818352015b602460016102a0518082018080600081121561068057195b607f1c1561068d57600080fd5b905090509050600481106106a057600080fd5b60200201356101a06102a051600381106106b957600080fd5b60200201525b8151600101808352811415610668575b50506002543b6106de57600080fd5b60006000608463ecb586a56102a052610280516102c0526101a0516102e0526101c051610300526101e051610320526102bc60006002545af161072057600080fd5b6102a060006004818352015b60006102c05260016102a0511215610764576102a0516002811061074f57600080fd5b600360c052602060c02001546102c0526107ab565b6102a05160018082038080600081121561077a57195b607f1c1561078757600080fd5b9050905090506003811061079a57600080fd5b600460c052602060c02001546102c0525b602061036060246370a082316102e05230610300526102fc6102c0515afa6107d257600080fd5b601f3d116107df57600080fd5b600050610360516102006102a051600481106107fa57600080fd5b602002015260006004610340527fa9059cbb00000000000000000000000000000000000000000000000000000000610360526103406004806020846103a001018260208501600060045af1505080518201915050336020826103a00101526020810190506102006102a0516004811061087257600080fd5b60200201516020826103a0010152602081019050806103a0526103a090508051602001806104408284600060045af16108aa57600080fd5b505060206105006104405161046060006102c0515af16108c957600080fd5b60203d808211156108da57806108dc565b815b905090506104e0526104e08051602001806102e08284600060045af161090157600080fd5b505060006102e0511115610954576102e080602001516000825180602090131561092a57600080fd5b809190121561093857600080fd5b806020036101000a8204905090509050151561095357600080fd5b5b5b815160010180835281141561072c575b50506080610200f3005b631a4d01d26000511415610d39576024358080600081121561098d57195b607f1c1561099a57600080fd5b905050602061020060646323b872dd61014052336101605230610180526004356101a05261015c60006001545af16109d157600080fd5b601f3d116109de57600080fd5b600050610200516109ee57600080fd5b60006101405260016024351215610a705760243560028110610a0f57600080fd5b600360c052602060c02001546101405260206102206064631a4d01d261016052600435610180526024356101a0526044356101c05261017c60006000545af1610a5757600080fd5b601f3d11610a6457600080fd5b60005061022050610bab565b602435600180820380806000811215610a8557195b607f1c15610a9257600080fd5b90509050905060038110610aa557600080fd5b600460c052602060c02001546101405260206102206064631a4d01d2610160526004356101805260016101a05260006101c05261017c60006000545af1610aeb57600080fd5b601f3d11610af857600080fd5b600050610220506002543b610b0c57600080fd5b600060006064631a4d01d26102005260206101e060246370a0823161016052306101805261017c6001600360c052602060c02001545afa610b4c57600080fd5b601f3d11610b5957600080fd5b6000506101e05161022052602435600180820380806000811215610b7957195b607f1c15610b8657600080fd5b905090509050610240526044356102605261021c60006002545af1610baa57600080fd5b5b602061020060246370a0823161018052306101a05261019c610140515afa610bd257600080fd5b601f3d11610bdf57600080fd5b6000506102005161016052600060046101e0527fa9059cbb00000000000000000000000000000000000000000000000000000000610200526101e060048060208461024001018260208501600060045af15050805182019150503360208261024001015260208101905061016051602082610240010152602081019050806102405261024090508051602001806102e08284600060045af1610c8057600080fd5b505060206103a06102e0516103006000610140515af1610c9f57600080fd5b60203d80821115610cb05780610cb2565b815b90509050610380526103808051602001806101808284600060045af1610cd757600080fd5b50506000610180511115610d2a57610180806020015160008251806020901315610d0057600080fd5b8091901215610d0e57600080fd5b806020036101000a82049050905090501515610d2957600080fd5b5b6101605160005260206000f350005b6318a7bd7660005114156114a957600254610140526000546101605260048060c052602060c020546101805260018160c052602060c02001546101a05260028160c052602060c02001546101c0525060038060c052602060c020546101e05260018160c052602060c020015461020052506001546102205260206102c0600463ddca3f436102605261027c610140515afa610dd357600080fd5b601f3d11610de057600080fd5b6000506102c05160038082028215828483041417610dfd57600080fd5b80905090509050600880820490509050610240526102408051610240516402540be4008082028215828483041417610e3457600080fd5b809050905090506402540be40080820490509050818183011015610e5757600080fd5b80820190509050815250602061032060646323b872dd610260523361028052306102a0526084356102c05261027c6000610220515af1610e9657600080fd5b601f3d11610ea357600080fd5b60005061032051610eb357600080fd5b610100366102603761036060006001818352015b60046103605160048110610eda57600080fd5b60200201356102e06103605160028110610ef357600080fd5b60200201525b8151600101808352811415610ec7575b505061036060006003818352015b600460016103605180820180806000811215610f2f57195b607f1c15610f3c57600080fd5b90509050905060048110610f4f57600080fd5b6020020135610380526000610380511815610f8857610380516102806103605160038110610f7c57600080fd5b60200201526001610260525b5b8151600101808352811415610f17575b505061026051156110625760206104406084633883e1196103605261028051610380526102a0516103a0526102c0516103c05260006103e05261037c6002545afa610fe357600080fd5b601f3d11610ff057600080fd5b600050610440516103005261030080516103005161024051808202821582848304141761101c57600080fd5b809050905090506402540be40080820490509050600181818301101561104157600080fd5b8082019050905081818301101561105757600080fd5b808201905090508152505b6020610420606463e3103273610360526102e05161038052610300516103a0526084356103c05261037c6000610160515af161109d57600080fd5b601f3d116110aa57600080fd5b6000506104205061026051156111a657610140513b6110c857600080fd5b600060006084639fdaea0c6103605261028051610380526102a0516103a0526102c0516103c052610300516103e05261037c6000610140515af161110b57600080fd5b60206103e060246370a0823161036052306103805261037c610200515afa61113257600080fd5b601f3d1161113f57600080fd5b6000506103e0516103405260006103405111156111a55760206104206064630b4c7e4d610360526103205161038052610340516103a05260006103c05261037c6000610160515af161119057600080fd5b601f3d1161119d57600080fd5b600050610420505b5b61036060006004818352015b604036610380376001610360511215611204576101e061036051600281106111d957600080fd5b6020020151610380526102e061036051600281106111f657600080fd5b60200201516103a052611289565b6101806103605160018082038080600081121561121d57195b607f1c1561122a57600080fd5b9050905090506003811061123d57600080fd5b6020020151610380526102806103605160018082038080600081121561125f57195b607f1c1561126c57600080fd5b9050905090506003811061127f57600080fd5b60200201516103a0525b60006103a05111156113d65760006004610420527fa9059cbb000000000000000000000000000000000000000000000000000000006104405261042060048060208461048001018260208501600060045af1505080518201915050336020826104800101526020810190506103a051602082610480010152602081019050806104805261048090508051602001806105208284600060045af161132b57600080fd5b505060206105e0610520516105406000610380515af161134a57600080fd5b60203d8082111561135b578061135d565b815b905090506105c0526105c08051602001806103c08284600060045af161138257600080fd5b505060006103c05111156113d5576103c08060200151600082518060209013156113ab57600080fd5b80919012156113b957600080fd5b806020036101000a820490509050905015156113d457600080fd5b5b5b5b81516001018083528114156111b2575b5050602061040060246370a0823161038052306103a05261039c610220515afa61141057600080fd5b601f3d1161141d57600080fd5b60005061040051610360526000610360511115611483576020610420604463a9059cbb61038052336103a052610360516103c05261039c6000610220515af161146557600080fd5b601f3d1161147257600080fd5b6000506104205161148257600080fd5b5b608435610360518082101561149757600080fd5b8082039050905060005260206000f350005b63cc2b27d760005114156115ee57602435808060008112156114c757195b607f1c156114d457600080fd5b905050600160243512156115335760206101e0604463cc2b27d761014052600435610160526024356101805261015c6000545afa61151157600080fd5b601f3d1161151e57600080fd5b6000506101e05160005260206000f3506115ec565b6020610200604463cc2b27d7610160526004356101805260016101a05261017c6000545afa61156157600080fd5b601f3d1161156e57600080fd5b60005061020051610140526020610200604463cc2b27d76101605261014051610180526024356001808203808060008112156115a657195b607f1c156115b357600080fd5b9050905090506101a05261017c6002545afa6115ce57600080fd5b601f3d116115db57600080fd5b6000506102005160005260206000f3505b005b63cf701ff7600051141561178f5760843560011c1561160c57600080fd5b60a036610140376101e060006001818352015b60046101e0516004811061163257600080fd5b60200201356101406101e0516002811061164b57600080fd5b60200201525b815160010180835281141561161f575b50506101e060006003818352015b60046101e05160018082018080600081121561168757195b607f1c1561169457600080fd5b905090509050600481106116a757600080fd5b60200201356101806101e051600381106116c057600080fd5b60200201525b815160010180835281141561166f575b505060206102e06084633883e1196102005261018051610220526101a051610240526101c051610260526084356102805261021c6002545afa61171857600080fd5b601f3d1161172557600080fd5b6000506102e0516101e0526101e0516101605260206102c0606463ed8e84f361020052610140516102205261016051610240526084356102605261021c6000545afa61177057600080fd5b601f3d1161177d57600080fd5b6000506102c05160005260206000f350005b6316f0115b60005114156117ab5760005460005260206000f350005b63fc0c546a60005114156117c75760015460005260206000f350005b635d6362bb60005114156117e35760025460005260206000f350005b63c66106576000511415611818576004356002811061180157600080fd5b600360c052602060c020015460005260206000f350005b6387cb4f57600051141561184d576004356003811061183657600080fd5b600460c052602060c020015460005260206000f350005b5b60006000fd
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.