Overview
S Balance
0 S
S Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 9 from a total of 9 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Deploy_pool | 5226615 | 28 hrs ago | IN | 0 S | 0.21830442 | ||||
Deploy_pool | 3230633 | 15 days ago | IN | 0 S | 0.02400141 | ||||
Deploy_pool | 2930429 | 17 days ago | IN | 0 S | 0.02560917 | ||||
Deploy_pool | 2921620 | 17 days ago | IN | 0 S | 0.02566551 | ||||
Deploy_pool | 2867577 | 17 days ago | IN | 0 S | 0.0240728 | ||||
Set_owner | 1989024 | 25 days ago | IN | 0 S | 0.00002671 | ||||
Set_pool_impleme... | 1988959 | 25 days ago | IN | 0 S | 0.00004764 | ||||
Set_math_impleme... | 1988956 | 25 days ago | IN | 0 S | 0.00005059 | ||||
Set_views_implem... | 1988952 | 25 days ago | IN | 0 S | 0.00005057 |
Latest 5 internal transactions
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
5226615 | 28 hrs ago | Contract Creation | 0 S | |||
3230633 | 15 days ago | Contract Creation | 0 S | |||
2930429 | 17 days ago | Contract Creation | 0 S | |||
2921620 | 17 days ago | Contract Creation | 0 S | |||
2867577 | 17 days ago | Contract Creation | 0 S |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
CurveTwocryptoSwapFactory
Compiler Version
vyper:0.3.10
Contract Source Code (Vyper language format)
# pragma version 0.3.10 # pragma optimize gas # pragma evm-version paris """ @title CurveTwocryptoSwapFactory @custom:version 2.0.0 @author Curve.Fi @license Copyright (c) Curve.Fi, 2020-2024 - all rights reserved @notice Permissionless 2-coin cryptoswap pool deployer and registry """ # ------------------------------- Version ------------------------------------ version: public(constant(String[8])) = "2.0.0" # --------------------------------- Interfaces ------------------------------- interface TwocryptoPool: def balances(i: uint256) -> uint256: view interface ERC20: def decimals() -> uint256: view event TwocryptoPoolDeployed: pool: address name: String[64] symbol: String[32] coins: address[N_COINS] math: address salt: bytes32 precisions: uint256[N_COINS] packed_A_gamma: uint256 packed_fee_params: uint256 packed_rebalancing_params: uint256 packed_prices: uint256 deployer: address event LiquidityGaugeDeployed: pool: address gauge: address event UpdateFeeReceiver: _old_fee_receiver: address _new_fee_receiver: address event UpdatePoolImplementation: _implemention_id: uint256 _old_pool_implementation: address _new_pool_implementation: address event UpdateGaugeImplementation: _old_gauge_implementation: address _new_gauge_implementation: address event UpdateMathImplementation: _old_math_implementation: address _new_math_implementation: address event UpdateViewsImplementation: _old_views_implementation: address _new_views_implementation: address event TransferOwnership: _old_owner: address _new_owner: address struct PoolArray: liquidity_gauge: address coins: address[N_COINS] decimals: uint256[N_COINS] implementation: address N_COINS: constant(uint256) = 2 A_MULTIPLIER: constant(uint256) = 10000 # Limits MAX_FEE: constant(uint256) = 10 * 10 ** 9 admin: public(address) future_admin: public(address) # fee receiver for all pools: fee_receiver: public(address) pool_implementations: public(HashMap[uint256, address]) gauge_implementation: public(address) views_implementation: public(address) math_implementation: public(address) # mapping of coins -> pools for trading # a mapping key is generated for each pair of addresses via # `bitwise_xor(convert(a, uint256), convert(b, uint256))` markets: HashMap[uint256, DynArray[address, 4294967296]] pool_data: HashMap[address, PoolArray] pool_list: public(DynArray[address, 4294967296]) # master list of pools deployer: immutable(address) @external def __init__(_fee_receiver: address): deployer = msg.sender self.admin = msg.sender self.fee_receiver = _fee_receiver @external def set_owner(_owner: address): assert msg.sender == deployer assert self.admin == deployer assert _owner != deployer self.admin = _owner @internal @pure def _pack_3(x: uint256[3]) -> uint256: """ @notice Packs 3 integers with values <= 10**18 into a uint256 @param x The uint256[3] to pack @return The packed uint256 """ return (x[0] << 128) | (x[1] << 64) | x[2] @pure @internal def _pack_2(p1: uint256, p2: uint256) -> uint256: return p1 | (p2 << 128) # <--- Pool Deployers ---> @external def deploy_pool( _name: String[64], _symbol: String[32], _coins: address[N_COINS], implementation_id: uint256, A: uint256, gamma: uint256, mid_fee: uint256, out_fee: uint256, fee_gamma: uint256, allowed_extra_profit: uint256, adjustment_step: uint256, ma_exp_time: uint256, initial_price: uint256, ) -> address: """ @notice Deploy a new pool @param _name Name of the new plain pool @param _symbol Symbol for the new plain pool - will be concatenated with factory symbol @return Address of the deployed pool """ pool_implementation: address = self.pool_implementations[implementation_id] _math_implementation: address = self.math_implementation assert pool_implementation != empty(address), "Pool implementation not set" assert _math_implementation != empty(address), "Math implementation not set" assert mid_fee < MAX_FEE-1 # mid_fee can be zero assert out_fee >= mid_fee assert out_fee < MAX_FEE-1 assert fee_gamma < 10**18+1 assert fee_gamma > 0 assert allowed_extra_profit < 10**18+1 assert adjustment_step < 10**18+1 assert adjustment_step > 0 assert ma_exp_time < 872542 # 7 * 24 * 60 * 60 / ln(2) assert ma_exp_time > 86 # 60 / ln(2) assert initial_price > 10**6 and initial_price < 10**30 # dev: initial price out of bound assert _coins[0] != _coins[1], "Duplicate coins" decimals: uint256[N_COINS] = empty(uint256[N_COINS]) precisions: uint256[N_COINS] = empty(uint256[N_COINS]) for i in range(N_COINS): d: uint256 = ERC20(_coins[i]).decimals() assert d < 19, "Max 18 decimals for coins" decimals[i] = d precisions[i] = 10 ** (18 - d) # pack precision packed_precisions: uint256 = self._pack_2(precisions[0], precisions[1]) # pack fees packed_fee_params: uint256 = self._pack_3( [mid_fee, out_fee, fee_gamma] ) # pack liquidity rebalancing params packed_rebalancing_params: uint256 = self._pack_3( [allowed_extra_profit, adjustment_step, ma_exp_time] ) # pack gamma and A packed_gamma_A: uint256 = self._pack_2(gamma, A) # pool is an ERC20 implementation _salt: bytes32 = block.prevhash pool: address = create_from_blueprint( pool_implementation, # blueprint: address _name, # String[64] _symbol, # String[32] _coins, # address[N_COINS] _math_implementation, # address _salt, # bytes32 packed_precisions, # uint256 packed_gamma_A, # uint256 packed_fee_params, # uint256 packed_rebalancing_params, # uint256 initial_price, # uint256 code_offset=3, ) # populate pool data self.pool_list.append(pool) self.pool_data[pool].decimals = decimals self.pool_data[pool].coins = _coins self.pool_data[pool].implementation = pool_implementation # add coins to market: self._add_coins_to_market(_coins[0], _coins[1], pool) log TwocryptoPoolDeployed( pool, _name, _symbol, _coins, _math_implementation, _salt, precisions, packed_gamma_A, packed_fee_params, packed_rebalancing_params, initial_price, msg.sender, ) return pool @internal def _add_coins_to_market(coin_a: address, coin_b: address, pool: address): key: uint256 = ( convert(coin_a, uint256) ^ convert(coin_b, uint256) ) self.markets[key].append(pool) @external def deploy_gauge(_pool: address) -> address: """ @notice Deploy a liquidity gauge for a factory pool @param _pool Factory pool address to deploy a gauge for @return Address of the deployed gauge """ assert self.pool_data[_pool].coins[0] != empty(address), "Unknown pool" assert self.pool_data[_pool].liquidity_gauge == empty(address), "Gauge already deployed" assert self.gauge_implementation != empty(address), "Gauge implementation not set" gauge: address = create_from_blueprint(self.gauge_implementation, _pool, code_offset=3) self.pool_data[_pool].liquidity_gauge = gauge log LiquidityGaugeDeployed(_pool, gauge) return gauge # <--- Admin / Guarded Functionality ---> @external def set_fee_receiver(_fee_receiver: address): """ @notice Set fee receiver @param _fee_receiver Address that fees are sent to """ assert msg.sender == self.admin, "dev: admin only" log UpdateFeeReceiver(self.fee_receiver, _fee_receiver) self.fee_receiver = _fee_receiver @external def set_pool_implementation( _pool_implementation: address, _implementation_index: uint256 ): """ @notice Set pool implementation @dev Set to empty(address) to prevent deployment of new pools @param _pool_implementation Address of the new pool implementation @param _implementation_index Index of the pool implementation """ assert msg.sender == self.admin, "dev: admin only" log UpdatePoolImplementation( _implementation_index, self.pool_implementations[_implementation_index], _pool_implementation ) self.pool_implementations[_implementation_index] = _pool_implementation @external def set_gauge_implementation(_gauge_implementation: address): """ @notice Set gauge implementation @dev Set to empty(address) to prevent deployment of new gauges @param _gauge_implementation Address of the new token implementation """ assert msg.sender == self.admin, "dev: admin only" log UpdateGaugeImplementation(self.gauge_implementation, _gauge_implementation) self.gauge_implementation = _gauge_implementation @external def set_views_implementation(_views_implementation: address): """ @notice Set views contract implementation @param _views_implementation Address of the new views contract """ assert msg.sender == self.admin, "dev: admin only" log UpdateViewsImplementation(self.views_implementation, _views_implementation) self.views_implementation = _views_implementation @external def set_math_implementation(_math_implementation: address): """ @notice Set math implementation @param _math_implementation Address of the new math contract """ assert msg.sender == self.admin, "dev: admin only" log UpdateMathImplementation(self.math_implementation, _math_implementation) self.math_implementation = _math_implementation @external def commit_transfer_ownership(_addr: address): """ @notice Transfer ownership of this contract to `addr` @param _addr Address of the new owner """ assert msg.sender == self.admin, "dev: admin only" self.future_admin = _addr @external def accept_transfer_ownership(): """ @notice Accept a pending ownership transfer @dev Only callable by the new owner """ assert msg.sender == self.future_admin, "dev: future admin only" log TransferOwnership(self.admin, msg.sender) self.admin = msg.sender # <--- Factory Getters ---> @view @external def find_pool_for_coins(_from: address, _to: address, i: uint256 = 0) -> address: """ @notice Find an available pool for exchanging two coins @param _from Address of coin to be sent @param _to Address of coin to be received @param i Index value. When multiple pools are available this value is used to return the n'th address. @return Pool address """ key: uint256 = convert(_from, uint256) ^ convert(_to, uint256) return self.markets[key][i] # <--- Pool Getters ---> @view @external def pool_count() -> uint256: """ @notice Get number of pools deployed from the factory @return Number of pools deployed from factory """ return len(self.pool_list) @view @external def get_coins(_pool: address) -> address[N_COINS]: """ @notice Get the coins within a pool @param _pool Pool address @return List of coin addresses """ return self.pool_data[_pool].coins @view @external def get_decimals(_pool: address) -> uint256[N_COINS]: """ @notice Get decimal places for each coin within a pool @param _pool Pool address @return uint256 list of decimals """ return self.pool_data[_pool].decimals @view @external def get_balances(_pool: address) -> uint256[N_COINS]: """ @notice Get balances for each coin within a pool @dev For pools using lending, these are the wrapped coin balances @param _pool Pool address @return uint256 list of balances """ return [TwocryptoPool(_pool).balances(0), TwocryptoPool(_pool).balances(1)] @view @external def get_coin_indices( _pool: address, _from: address, _to: address ) -> (uint256, uint256): """ @notice Convert coin addresses to indices for use with pool methods @param _pool Pool address @param _from Coin address to be used as `i` within a pool @param _to Coin address to be used as `j` within a pool @return uint256 `i`, uint256 `j` """ coins: address[2] = self.pool_data[_pool].coins if _from == coins[0] and _to == coins[1]: return 0, 1 elif _from == coins[1] and _to == coins[0]: return 1, 0 else: raise "Coins not found" @view @external def get_gauge(_pool: address) -> address: """ @notice Get the address of the liquidity gauge contract for a factory pool @dev Returns `empty(address)` if a gauge has not been deployed @param _pool Pool address @return Implementation contract address """ return self.pool_data[_pool].liquidity_gauge @view @external def get_market_counts(coin_a: address, coin_b: address) -> uint256: """ @notice Gets the number of markets with the specified coins. @return Number of pools with the input coins """ key: uint256 = ( convert(coin_a, uint256) ^ convert(coin_b, uint256) ) return len(self.markets[key])
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"name":"TwocryptoPoolDeployed","inputs":[{"name":"pool","type":"address","indexed":false},{"name":"name","type":"string","indexed":false},{"name":"symbol","type":"string","indexed":false},{"name":"coins","type":"address[2]","indexed":false},{"name":"math","type":"address","indexed":false},{"name":"salt","type":"bytes32","indexed":false},{"name":"precisions","type":"uint256[2]","indexed":false},{"name":"packed_A_gamma","type":"uint256","indexed":false},{"name":"packed_fee_params","type":"uint256","indexed":false},{"name":"packed_rebalancing_params","type":"uint256","indexed":false},{"name":"packed_prices","type":"uint256","indexed":false},{"name":"deployer","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"name":"LiquidityGaugeDeployed","inputs":[{"name":"pool","type":"address","indexed":false},{"name":"gauge","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"name":"UpdateFeeReceiver","inputs":[{"name":"_old_fee_receiver","type":"address","indexed":false},{"name":"_new_fee_receiver","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"name":"UpdatePoolImplementation","inputs":[{"name":"_implemention_id","type":"uint256","indexed":false},{"name":"_old_pool_implementation","type":"address","indexed":false},{"name":"_new_pool_implementation","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"name":"UpdateGaugeImplementation","inputs":[{"name":"_old_gauge_implementation","type":"address","indexed":false},{"name":"_new_gauge_implementation","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"name":"UpdateMathImplementation","inputs":[{"name":"_old_math_implementation","type":"address","indexed":false},{"name":"_new_math_implementation","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"name":"UpdateViewsImplementation","inputs":[{"name":"_old_views_implementation","type":"address","indexed":false},{"name":"_new_views_implementation","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"name":"TransferOwnership","inputs":[{"name":"_old_owner","type":"address","indexed":false},{"name":"_new_owner","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"stateMutability":"nonpayable","type":"constructor","inputs":[{"name":"_fee_receiver","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_owner","inputs":[{"name":"_owner","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"deploy_pool","inputs":[{"name":"_name","type":"string"},{"name":"_symbol","type":"string"},{"name":"_coins","type":"address[2]"},{"name":"implementation_id","type":"uint256"},{"name":"A","type":"uint256"},{"name":"gamma","type":"uint256"},{"name":"mid_fee","type":"uint256"},{"name":"out_fee","type":"uint256"},{"name":"fee_gamma","type":"uint256"},{"name":"allowed_extra_profit","type":"uint256"},{"name":"adjustment_step","type":"uint256"},{"name":"ma_exp_time","type":"uint256"},{"name":"initial_price","type":"uint256"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"nonpayable","type":"function","name":"deploy_gauge","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"nonpayable","type":"function","name":"set_fee_receiver","inputs":[{"name":"_fee_receiver","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_pool_implementation","inputs":[{"name":"_pool_implementation","type":"address"},{"name":"_implementation_index","type":"uint256"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_gauge_implementation","inputs":[{"name":"_gauge_implementation","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_views_implementation","inputs":[{"name":"_views_implementation","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_math_implementation","inputs":[{"name":"_math_implementation","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"commit_transfer_ownership","inputs":[{"name":"_addr","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"accept_transfer_ownership","inputs":[],"outputs":[]},{"stateMutability":"view","type":"function","name":"find_pool_for_coins","inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"find_pool_for_coins","inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"i","type":"uint256"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"pool_count","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"get_coins","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"address[2]"}]},{"stateMutability":"view","type":"function","name":"get_decimals","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"uint256[2]"}]},{"stateMutability":"view","type":"function","name":"get_balances","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"uint256[2]"}]},{"stateMutability":"view","type":"function","name":"get_coin_indices","inputs":[{"name":"_pool","type":"address"},{"name":"_from","type":"address"},{"name":"_to","type":"address"}],"outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"get_gauge","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"get_market_counts","inputs":[{"name":"coin_a","type":"address"},{"name":"coin_b","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"version","inputs":[],"outputs":[{"name":"","type":"string"}]},{"stateMutability":"view","type":"function","name":"admin","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"future_admin","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"fee_receiver","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"pool_implementations","inputs":[{"name":"arg0","type":"uint256"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"gauge_implementation","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"views_implementation","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"math_implementation","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"pool_list","inputs":[{"name":"arg0","type":"uint256"}],"outputs":[{"name":"","type":"address"}]}]
Contract Creation Code
6114ff51503461004057602061155a6000396000518060a01c61004057604052336114ff52336000556040516002556114ff6100456100003961151f610000f35b600080fd60003560e01c6002601f821660011b6114bf01601e39600051565b6354fd4d50811861145457346114ba5760208060805260056040527f322e302e3000000000000000000000000000000000000000000000000000000060605260408160800181518152602082015160208201528051806020830101601f82600003163682375050601f19601f8251602001011690509050810190506080f3611454565b63f851a44081186100b957346114ba5760005460405260206040f35b636b441a408118611454576024361034176114ba576004358060a01c6114ba5760405260005433181561014357600f6060527f6465763a2061646d696e206f6e6c79000000000000000000000000000000000060805260605060605180608001601f826000031636823750506308c379a06020526020604052601f19601f6060510116604401603cfd5b60405160015500611454565b6317f7182a811861145457346114ba5760015460405260206040f3611454565b63cab4d3db811861145457346114ba5760025460405260206040f3611454565b633273ff4781186101be576024361034176114ba57600360043560205260005260406000205460405260206040f35b638df24207811861145457346114ba5760045460405260206040f3611454565b63e31593d881186101fa57346114ba5760055460405260206040f35b63e5ea47b8811861145457346114ba576001543318156102715760166040527f6465763a206675747572652061646d696e206f6e6c790000000000000000000060605260405060405180606001601f826000031636823750506308c379a06000526020602052601f19601f6040510116604401601cfd5b7f5c486528ec3e3f0ea91181cff8116f02bfa350e03b8b6f12e00765adbb5af85c6000546040523360605260406040a13360005500611454565b63a13c8f81811861145457346114ba5760065460405260206040f3611454565b633a1d5d8e8118611454576024361034176114ba576004356009548110156114ba57600a015460405260206040f3611454565b637cb97b2b8118610360576024361034176114ba576004358060a01c6114ba5760405260206114ff60003960005133186114ba5760206114ff600039600051600054186114ba5760206114ff600039600051604051146114ba57604051600055005b636982eb0b8118611454576064361034176114ba576044356080525b6004358060a01c6114ba576040526024358060a01c6114ba576060526060516040511860a052600760a051602052600052604060002060805181548110156114ba57600182010190505460c052602060c0f3611454565b63c955fa04811861145457610204361034176114ba5760043560040160408135116114ba576020813501808260c037505060243560040160208135116114ba57602081350180826101203750506044358060a01c6114ba57610160526064358060a01c6114ba576101805260036084356020526000526040600020546101a0526006546101c0526101a0516104c857601b6101e0527f506f6f6c20696d706c656d656e746174696f6e206e6f74207365740000000000610200526101e0506101e0518061020001601f826000031636823750506308c379a06101a05260206101c052601f19601f6101e05101166044016101bcfd5b6101c05161053657601b6101e0527f4d61746820696d706c656d656e746174696f6e206e6f74207365740000000000610200526101e0506101e0518061020001601f826000031636823750506308c379a06101a05260206101c052601f19601f6101e05101166044016101bcfd5b6402540be3fe60e435116114ba5760e43561010435106114ba576402540be3fe61010435116114ba57670de0b6b3a764000061012435116114ba5761012435156114ba57670de0b6b3a764000061014435116114ba57670de0b6b3a764000061016435116114ba5761016435156114ba57620d505d61018435116114ba57605761018435106114ba57620f42416101a43510156105d45760006105e9565b6c0c9f2c9cd04674edea3fffffff6101a43511155b156114ba5761018051610160511861066157600f6101e0527f4475706c696361746520636f696e730000000000000000000000000000000000610200526101e0506101e0518061020001601f826000031636823750506308c379a06101a05260206101c052601f19601f6101e05101166044016101bcfd5b6080366101e03760006002905b806102605261026051600181116114ba5760051b610160015163313ce5676102a05260206102a060046102bc845afa6106ac573d600060003e3d6000fd5b60203d106114ba576102a09050516102805260126102805111156107305760196102a0527f4d617820313820646563696d616c7320666f7220636f696e73000000000000006102c0526102a0506102a051806102c001601f826000031636823750506308c379a061026052602061028052601f19601f6102a051011660440161027cfd5b6102805161026051600181116114ba5760051b6101e001526102805180601203601281116114ba579050604d81116114ba5780600a0a905061026051600181116114ba5760051b610220015260010181811861066e57505061022051604052610240516060526107a1610280611470565b6102805161026052606060e46040376107bb6102a061145a565b6102a0516102805260606101446040376107d66102c061145a565b6102c0516102a05260c43560405260a4356060526107f56102e0611470565b6102e0516102c05260014303406102e0526101a05161016080610400528061040001602060c0510180828260c060045afa50508051806020830101601f82600003163682375050601f19601f82516020010116905081019050806104205280610400016101205181526101405160208201528051806020830101601f82600003163682375050601f19601f82516020010116905081019050610160516104405261018051610460526101c0516103205261032051610480526102e05161034052610340516104a0526102605161036052610360516104c0526102c05161038052610380516104e052610280516103a0526103a051610500526102a0516103c0526103c051610520526101a4356103e0526103e051610540526003823b0359600182126114ba5781600382863c81810183818561040060045afa5050828201816000f080156114ba5790509050905090506103005260095463ffffffff81116114ba576103005181600a0155600181016009555060086103005160205260005260406000206003810190506101e0518155610200516001820155506008610300516020526000526040600020600181019050610160518155610180516001820155506101a0516008610300516020526000526040600020600581019050556101605160405261018051606052610300516080526109ef61147f565b7f8152a3037e3dc54154ad0d2cadb1cf7e1d1b9e2b625faa3dfb4fe03d609102ca6101c0610300516103205280610340528061032001602060c0510180828260c060045afa50508051806020830101601f82600003163682375050601f19601f82516020010116905081019050806103605280610320016101205181526101405160208201528051806020830101601f82600003163682375050601f19601f825160200101169050810190506101605161038052610180516103a0526101c0516103c0526102e0516103e052610220516104005261024051610420526102c0516104405261028051610460526102a051610480526101a4356104a052336104c052610320a16020610300f3611454565b6396bebb348118610d03576024361034176114ba576004358060a01c6114ba576040526008604051602052600052604060002060018101905054610b9a57600c6060527f556e6b6e6f776e20706f6f6c000000000000000000000000000000000000000060805260605060605180608001601f826000031636823750506308c379a06020526020604052601f19601f6060510116604401603cfd5b600860405160205260005260406000205415610c0d5760166060527f476175676520616c7265616479206465706c6f7965640000000000000000000060805260605060605180608001601f826000031636823750506308c379a06020526020604052601f19601f6060510116604401603cfd5b600454610c7157601c6060527f476175676520696d706c656d656e746174696f6e206e6f74207365740000000060805260605060605180608001601f826000031636823750506308c379a06020526020604052601f19601f6060510116604401603cfd5b60045460405160805260805160a05260206003823b0359600182126114ba5781600382863c81810160a051815250828201816000f080156114ba57905090509050905060605260605160086040516020526000526040600020557f656bb34c20491970a8c163f3bd62ead82022b379c3924960ec60f6dbfc5aab3b60405160805260605160a05260406080a160206060f35b63b07426f48118611454576024361034176114ba576004358060a01c6114ba57604052600054331815610d8d57600f6060527f6465763a2061646d696e206f6e6c79000000000000000000000000000000000060805260605060605180608001601f826000031636823750506308c379a06020526020604052601f19601f6060510116604401603cfd5b7f68fe8fc3ac76ec17e21117df5e854c8c25b7b5f776aad2adc927fdd156bcd6de60065460605260405160805260406060a160405160065500611454565b63e41ab7718118611454576024361034176114ba576004358060a01c6114ba57604052600054331815610e5557600f6060527f6465763a2061646d696e206f6e6c79000000000000000000000000000000000060805260605060605180608001601f826000031636823750506308c379a06020526020604052601f19601f6060510116604401603cfd5b7f2861448678f0be67f11bfb5481b3e3b4cfeb3acc6126ad60a05f95bfc653066660025460605260405160805260406060a160405160025500611454565b636f385ff68118611454576044361034176114ba576004358060a01c6114ba57604052600054331815610f1d57600f6060527f6465763a2061646d696e206f6e6c79000000000000000000000000000000000060805260605060605180608001601f826000031636823750506308c379a06020526020604052601f19601f6060510116604401603cfd5b7f6a42ef9605e135afaf6ae4f3683b161a3b7369d07c9d52c701ab69553e04c3b6602435606052600360243560205260005260406000205460805260405160a05260606060a1604051600360243560205260005260406000205500611454565b638f03182c8118611041576024361034176114ba576004358060a01c6114ba5760405260005433181561100757600f6060527f6465763a2061646d696e206f6e6c79000000000000000000000000000000000060805260605060605180608001601f826000031636823750506308c379a06020526020604052601f19601f6060510116604401603cfd5b7f1fd705f9c77053962a503f2f2f57f0862b4c3af687c25615c13817a86946c35960045460605260405160805260406060a1604051600455005b63a87df06c8118611454576044361034176114ba57600060805261037c56611454565b63f6fa937f8118611454576024361034176114ba576004358060a01c6114ba576040526000543318156110ee57600f6060527f6465763a2061646d696e206f6e6c79000000000000000000000000000000000060805260605060605180608001601f826000031636823750506308c379a06020526020604052601f19601f6060510116604401603cfd5b7fd84eb1ea70cda40a6bfaa11f4f69efa10cbc5eb82760b3058f440512ec1d6d1f60055460605260405160805260406060a160405160055500611454565b63956aae3a811861145457346114ba5760095460405260206040f3611454565b639ac90d3d8118611454576024361034176114ba576004358060a01c6114ba5760405260086040516020526000526040600020600181019050805460605260018101546080525060406060f3611454565b6352b515558118611454576024361034176114ba576004358060a01c6114ba5760405260086040516020526000526040600020600381019050805460605260018101546080525060406060f3611454565b6392e3cc2d811861128c576024361034176114ba576004358060a01c6114ba57604052604051634903b0d16060526000608052602060606024607c845afa61123b573d600060003e3d6000fd5b60203d106114ba57606090505160e052604051634903b0d160a052600160c052602060a0602460bc845afa611275573d600060003e3d6000fd5b60203d106114ba5760a090505161010052604060e0f35b63eb85226d8118611454576064361034176114ba576004358060a01c6114ba576040526024358060a01c6114ba576060526044358060a01c6114ba5760805260086040516020526000526040600020600181019050805460a052600181015460c0525060a051606051186113075760c051608051181561130a565b60005b6113a85760c051606051186113265760a0516080511815611329565b60005b61139057600f60e0527f436f696e73206e6f7420666f756e6400000000000000000000000000000000006101005260e05060e0518061010001601f826000031636823750506308c379a060a052602060c052601f19601f60e051011660440160bcfd6113b8565b600160e052600061010052604060e06113b8566113b8565b600060e052600161010052604060e05bf3611454565b63daf297b98118611454576024361034176114ba576004358060a01c6114ba57604052600860405160205260005260406000205460605260206060f3611454565b63c1856b528118611454576044361034176114ba576004358060a01c6114ba576040526024358060a01c6114ba5760605260605160405118608052600760805160205260005260406000205460a052602060a0f35b60006000fd5b60805160605160401b60405160801b1717815250565b60605160801b60405117815250565b6060516040511860a052600760a0516020526000526040600020805463ffffffff81116114ba57608051816001840101556001810182555050565b600080fd009d02ab1454145403d314541454018f14541454014f02fe0f7d11ee02cb1454001a0dcb13ff14540aff119d0e93145401de13be112c016f1454114c14541064841914ff8118401820a16576797065728300030a00160000000000000000000000003c0a405e914337139992625d5100ea141a9c4d11
Deployed Bytecode
0x60003560e01c6002601f821660011b6114bf01601e39600051565b6354fd4d50811861145457346114ba5760208060805260056040527f322e302e3000000000000000000000000000000000000000000000000000000060605260408160800181518152602082015160208201528051806020830101601f82600003163682375050601f19601f8251602001011690509050810190506080f3611454565b63f851a44081186100b957346114ba5760005460405260206040f35b636b441a408118611454576024361034176114ba576004358060a01c6114ba5760405260005433181561014357600f6060527f6465763a2061646d696e206f6e6c79000000000000000000000000000000000060805260605060605180608001601f826000031636823750506308c379a06020526020604052601f19601f6060510116604401603cfd5b60405160015500611454565b6317f7182a811861145457346114ba5760015460405260206040f3611454565b63cab4d3db811861145457346114ba5760025460405260206040f3611454565b633273ff4781186101be576024361034176114ba57600360043560205260005260406000205460405260206040f35b638df24207811861145457346114ba5760045460405260206040f3611454565b63e31593d881186101fa57346114ba5760055460405260206040f35b63e5ea47b8811861145457346114ba576001543318156102715760166040527f6465763a206675747572652061646d696e206f6e6c790000000000000000000060605260405060405180606001601f826000031636823750506308c379a06000526020602052601f19601f6040510116604401601cfd5b7f5c486528ec3e3f0ea91181cff8116f02bfa350e03b8b6f12e00765adbb5af85c6000546040523360605260406040a13360005500611454565b63a13c8f81811861145457346114ba5760065460405260206040f3611454565b633a1d5d8e8118611454576024361034176114ba576004356009548110156114ba57600a015460405260206040f3611454565b637cb97b2b8118610360576024361034176114ba576004358060a01c6114ba5760405260206114ff60003960005133186114ba5760206114ff600039600051600054186114ba5760206114ff600039600051604051146114ba57604051600055005b636982eb0b8118611454576064361034176114ba576044356080525b6004358060a01c6114ba576040526024358060a01c6114ba576060526060516040511860a052600760a051602052600052604060002060805181548110156114ba57600182010190505460c052602060c0f3611454565b63c955fa04811861145457610204361034176114ba5760043560040160408135116114ba576020813501808260c037505060243560040160208135116114ba57602081350180826101203750506044358060a01c6114ba57610160526064358060a01c6114ba576101805260036084356020526000526040600020546101a0526006546101c0526101a0516104c857601b6101e0527f506f6f6c20696d706c656d656e746174696f6e206e6f74207365740000000000610200526101e0506101e0518061020001601f826000031636823750506308c379a06101a05260206101c052601f19601f6101e05101166044016101bcfd5b6101c05161053657601b6101e0527f4d61746820696d706c656d656e746174696f6e206e6f74207365740000000000610200526101e0506101e0518061020001601f826000031636823750506308c379a06101a05260206101c052601f19601f6101e05101166044016101bcfd5b6402540be3fe60e435116114ba5760e43561010435106114ba576402540be3fe61010435116114ba57670de0b6b3a764000061012435116114ba5761012435156114ba57670de0b6b3a764000061014435116114ba57670de0b6b3a764000061016435116114ba5761016435156114ba57620d505d61018435116114ba57605761018435106114ba57620f42416101a43510156105d45760006105e9565b6c0c9f2c9cd04674edea3fffffff6101a43511155b156114ba5761018051610160511861066157600f6101e0527f4475706c696361746520636f696e730000000000000000000000000000000000610200526101e0506101e0518061020001601f826000031636823750506308c379a06101a05260206101c052601f19601f6101e05101166044016101bcfd5b6080366101e03760006002905b806102605261026051600181116114ba5760051b610160015163313ce5676102a05260206102a060046102bc845afa6106ac573d600060003e3d6000fd5b60203d106114ba576102a09050516102805260126102805111156107305760196102a0527f4d617820313820646563696d616c7320666f7220636f696e73000000000000006102c0526102a0506102a051806102c001601f826000031636823750506308c379a061026052602061028052601f19601f6102a051011660440161027cfd5b6102805161026051600181116114ba5760051b6101e001526102805180601203601281116114ba579050604d81116114ba5780600a0a905061026051600181116114ba5760051b610220015260010181811861066e57505061022051604052610240516060526107a1610280611470565b6102805161026052606060e46040376107bb6102a061145a565b6102a0516102805260606101446040376107d66102c061145a565b6102c0516102a05260c43560405260a4356060526107f56102e0611470565b6102e0516102c05260014303406102e0526101a05161016080610400528061040001602060c0510180828260c060045afa50508051806020830101601f82600003163682375050601f19601f82516020010116905081019050806104205280610400016101205181526101405160208201528051806020830101601f82600003163682375050601f19601f82516020010116905081019050610160516104405261018051610460526101c0516103205261032051610480526102e05161034052610340516104a0526102605161036052610360516104c0526102c05161038052610380516104e052610280516103a0526103a051610500526102a0516103c0526103c051610520526101a4356103e0526103e051610540526003823b0359600182126114ba5781600382863c81810183818561040060045afa5050828201816000f080156114ba5790509050905090506103005260095463ffffffff81116114ba576103005181600a0155600181016009555060086103005160205260005260406000206003810190506101e0518155610200516001820155506008610300516020526000526040600020600181019050610160518155610180516001820155506101a0516008610300516020526000526040600020600581019050556101605160405261018051606052610300516080526109ef61147f565b7f8152a3037e3dc54154ad0d2cadb1cf7e1d1b9e2b625faa3dfb4fe03d609102ca6101c0610300516103205280610340528061032001602060c0510180828260c060045afa50508051806020830101601f82600003163682375050601f19601f82516020010116905081019050806103605280610320016101205181526101405160208201528051806020830101601f82600003163682375050601f19601f825160200101169050810190506101605161038052610180516103a0526101c0516103c0526102e0516103e052610220516104005261024051610420526102c0516104405261028051610460526102a051610480526101a4356104a052336104c052610320a16020610300f3611454565b6396bebb348118610d03576024361034176114ba576004358060a01c6114ba576040526008604051602052600052604060002060018101905054610b9a57600c6060527f556e6b6e6f776e20706f6f6c000000000000000000000000000000000000000060805260605060605180608001601f826000031636823750506308c379a06020526020604052601f19601f6060510116604401603cfd5b600860405160205260005260406000205415610c0d5760166060527f476175676520616c7265616479206465706c6f7965640000000000000000000060805260605060605180608001601f826000031636823750506308c379a06020526020604052601f19601f6060510116604401603cfd5b600454610c7157601c6060527f476175676520696d706c656d656e746174696f6e206e6f74207365740000000060805260605060605180608001601f826000031636823750506308c379a06020526020604052601f19601f6060510116604401603cfd5b60045460405160805260805160a05260206003823b0359600182126114ba5781600382863c81810160a051815250828201816000f080156114ba57905090509050905060605260605160086040516020526000526040600020557f656bb34c20491970a8c163f3bd62ead82022b379c3924960ec60f6dbfc5aab3b60405160805260605160a05260406080a160206060f35b63b07426f48118611454576024361034176114ba576004358060a01c6114ba57604052600054331815610d8d57600f6060527f6465763a2061646d696e206f6e6c79000000000000000000000000000000000060805260605060605180608001601f826000031636823750506308c379a06020526020604052601f19601f6060510116604401603cfd5b7f68fe8fc3ac76ec17e21117df5e854c8c25b7b5f776aad2adc927fdd156bcd6de60065460605260405160805260406060a160405160065500611454565b63e41ab7718118611454576024361034176114ba576004358060a01c6114ba57604052600054331815610e5557600f6060527f6465763a2061646d696e206f6e6c79000000000000000000000000000000000060805260605060605180608001601f826000031636823750506308c379a06020526020604052601f19601f6060510116604401603cfd5b7f2861448678f0be67f11bfb5481b3e3b4cfeb3acc6126ad60a05f95bfc653066660025460605260405160805260406060a160405160025500611454565b636f385ff68118611454576044361034176114ba576004358060a01c6114ba57604052600054331815610f1d57600f6060527f6465763a2061646d696e206f6e6c79000000000000000000000000000000000060805260605060605180608001601f826000031636823750506308c379a06020526020604052601f19601f6060510116604401603cfd5b7f6a42ef9605e135afaf6ae4f3683b161a3b7369d07c9d52c701ab69553e04c3b6602435606052600360243560205260005260406000205460805260405160a05260606060a1604051600360243560205260005260406000205500611454565b638f03182c8118611041576024361034176114ba576004358060a01c6114ba5760405260005433181561100757600f6060527f6465763a2061646d696e206f6e6c79000000000000000000000000000000000060805260605060605180608001601f826000031636823750506308c379a06020526020604052601f19601f6060510116604401603cfd5b7f1fd705f9c77053962a503f2f2f57f0862b4c3af687c25615c13817a86946c35960045460605260405160805260406060a1604051600455005b63a87df06c8118611454576044361034176114ba57600060805261037c56611454565b63f6fa937f8118611454576024361034176114ba576004358060a01c6114ba576040526000543318156110ee57600f6060527f6465763a2061646d696e206f6e6c79000000000000000000000000000000000060805260605060605180608001601f826000031636823750506308c379a06020526020604052601f19601f6060510116604401603cfd5b7fd84eb1ea70cda40a6bfaa11f4f69efa10cbc5eb82760b3058f440512ec1d6d1f60055460605260405160805260406060a160405160055500611454565b63956aae3a811861145457346114ba5760095460405260206040f3611454565b639ac90d3d8118611454576024361034176114ba576004358060a01c6114ba5760405260086040516020526000526040600020600181019050805460605260018101546080525060406060f3611454565b6352b515558118611454576024361034176114ba576004358060a01c6114ba5760405260086040516020526000526040600020600381019050805460605260018101546080525060406060f3611454565b6392e3cc2d811861128c576024361034176114ba576004358060a01c6114ba57604052604051634903b0d16060526000608052602060606024607c845afa61123b573d600060003e3d6000fd5b60203d106114ba57606090505160e052604051634903b0d160a052600160c052602060a0602460bc845afa611275573d600060003e3d6000fd5b60203d106114ba5760a090505161010052604060e0f35b63eb85226d8118611454576064361034176114ba576004358060a01c6114ba576040526024358060a01c6114ba576060526044358060a01c6114ba5760805260086040516020526000526040600020600181019050805460a052600181015460c0525060a051606051186113075760c051608051181561130a565b60005b6113a85760c051606051186113265760a0516080511815611329565b60005b61139057600f60e0527f436f696e73206e6f7420666f756e6400000000000000000000000000000000006101005260e05060e0518061010001601f826000031636823750506308c379a060a052602060c052601f19601f60e051011660440160bcfd6113b8565b600160e052600061010052604060e06113b8566113b8565b600060e052600161010052604060e05bf3611454565b63daf297b98118611454576024361034176114ba576004358060a01c6114ba57604052600860405160205260005260406000205460605260206060f3611454565b63c1856b528118611454576044361034176114ba576004358060a01c6114ba576040526024358060a01c6114ba5760605260605160405118608052600760805160205260005260406000205460a052602060a0f35b60006000fd5b60805160605160401b60405160801b1717815250565b60605160801b60405117815250565b6060516040511860a052600760a0516020526000526040600020805463ffffffff81116114ba57608051816001840101556001810182555050565b600080fd009d02ab1454145403d314541454018f14541454014f02fe0f7d11ee02cb1454001a0dcb13ff14540aff119d0e93145401de13be112c016f1454114c145410640000000000000000000000002d12d0907a388811e3aa855a550f959501d303ee
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000003c0a405e914337139992625d5100ea141a9c4d11
-----Decoded View---------------
Arg [0] : _fee_receiver (address): 0x3c0a405E914337139992625D5100Ea141a9C4d11
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000003c0a405e914337139992625d5100ea141a9c4d11
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ Download: CSV Export ]
[ 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.