Overview
S Balance
S Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 10 internal transactions
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
10415808 | 9 hrs ago | Contract Creation | 0 S | |||
10415808 | 9 hrs ago | Contract Creation | 0 S | |||
10415764 | 9 hrs ago | Contract Creation | 0 S | |||
10415764 | 9 hrs ago | Contract Creation | 0 S | |||
10415717 | 9 hrs ago | Contract Creation | 0 S | |||
10415717 | 9 hrs ago | Contract Creation | 0 S | |||
10415669 | 9 hrs ago | Contract Creation | 0 S | |||
10415669 | 9 hrs ago | Contract Creation | 0 S | |||
10415622 | 9 hrs ago | Contract Creation | 0 S | |||
10415622 | 9 hrs ago | Contract Creation | 0 S |
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Source Code Verified (Exact Match)
Contract Name:
OneWayLendingFactory
Compiler Version
vyper:0.3.10
Contract Source Code (Vyper language format)
# @version 0.3.10 # pragma optimize codesize # pragma evm-version shanghai """ @title OneWayLendingFactory @notice Factory of non-rehypothecated lending vaults: collateral is not being lent out. Although Vault.vy allows both, we should have this simpler version and rehypothecating version. @author Curve.fi @license Copyright (c) Curve.Fi, 2020-2024 - all rights reserved """ interface Vault: def initialize( amm_impl: address, controller_impl: address, borrowed_token: address, collateral_token: address, A: uint256, fee: uint256, price_oracle: address, monetary_policy: address, loan_discount: uint256, liquidation_discount: uint256 ) -> (address, address): nonpayable def amm() -> address: view def controller() -> address: view def borrowed_token() -> address: view def collateral_token() -> address: view def price_oracle() -> address: view def set_max_supply(_value: uint256): nonpayable interface Controller: def monetary_policy() -> address: view interface AMM: def get_dy(i: uint256, j: uint256, in_amount: uint256) -> uint256: view def get_dx(i: uint256, j: uint256, out_amount: uint256) -> uint256: view def get_dydx(i: uint256, j: uint256, out_amount: uint256) -> (uint256, uint256): view def exchange(i: uint256, j: uint256, in_amount: uint256, min_amount: uint256, _for: address) -> uint256[2]: nonpayable def exchange_dy(i: uint256, j: uint256, out_amount: uint256, max_amount: uint256, _for: address) -> uint256[2]: nonpayable interface Pool: def price_oracle(i: uint256 = 0) -> uint256: view # Universal method! def coins(i: uint256) -> address: view event SetImplementations: amm: address controller: address vault: address price_oracle: address monetary_policy: address gauge: address event SetDefaultRates: min_rate: uint256 max_rate: uint256 event SetAdmin: admin: address event NewVault: id: indexed(uint256) collateral_token: indexed(address) borrowed_token: indexed(address) vault: address controller: address amm: address price_oracle: address monetary_policy: address event LiquidityGaugeDeployed: vault: address gauge: address STABLECOIN: public(immutable(address)) # These are limits for default borrow rates, NOT actual min and max rates. # Even governance cannot go beyond these rates before a new code is shipped MIN_RATE: public(constant(uint256)) = 10**15 / (365 * 86400) # 0.1% MAX_RATE: public(constant(uint256)) = 10**19 / (365 * 86400) # 1000% # Implementations which can be changed by governance amm_impl: public(address) controller_impl: public(address) vault_impl: public(address) pool_price_oracle_impl: public(address) monetary_policy_impl: public(address) gauge_impl: public(address) # Actual min/max borrow rates when creating new markets # for example, 0.5% -> 50% is a good choice min_default_borrow_rate: public(uint256) max_default_borrow_rate: public(uint256) # Admin is supposed to be the DAO admin: public(address) # Vaults can only be created but not removed vaults: public(Vault[10**18]) amms: public(AMM[10**18]) _vaults_index: HashMap[Vault, uint256] market_count: public(uint256) # Index to find vaults by a non-crvUSD token token_to_vaults: public(HashMap[address, Vault[10**18]]) token_market_count: public(HashMap[address, uint256]) gauges: public(address[10**18]) names: public(HashMap[uint256, String[64]]) @external def __init__( stablecoin: address, amm: address, controller: address, vault: address, pool_price_oracle: address, monetary_policy: address, gauge: address, admin: address): """ @notice Factory which creates one-way lending vaults (e.g. collateral is non-borrowable) @param stablecoin Address of crvUSD. Only crvUSD-containing markets are allowed @param amm Address of AMM implementation @param controller Address of Controller implementation @param pool_price_oracle Address of implementation for price oracle factory (prices from pools) @param monetary_policy Address for implementation of monetary policy @param gauge Address for gauge implementation @param admin Admin address (DAO) """ STABLECOIN = stablecoin self.amm_impl = amm self.controller_impl = controller self.vault_impl = vault self.pool_price_oracle_impl = pool_price_oracle self.monetary_policy_impl = monetary_policy self.gauge_impl = gauge self.min_default_borrow_rate = 5 * 10**15 / (365 * 86400) self.max_default_borrow_rate = 50 * 10**16 / (365 * 86400) self.admin = admin @internal def _create( borrowed_token: address, collateral_token: address, A: uint256, fee: uint256, loan_discount: uint256, liquidation_discount: uint256, price_oracle: address, name: String[64], min_borrow_rate: uint256, max_borrow_rate: uint256 ) -> Vault: """ @notice Internal method for creation of the vault """ assert borrowed_token != collateral_token, "Same token" assert borrowed_token == STABLECOIN or collateral_token == STABLECOIN vault: Vault = Vault(create_minimal_proxy_to(self.vault_impl)) min_rate: uint256 = self.min_default_borrow_rate max_rate: uint256 = self.max_default_borrow_rate if min_borrow_rate > 0: min_rate = min_borrow_rate if max_borrow_rate > 0: max_rate = max_borrow_rate assert min_rate >= MIN_RATE and max_rate <= MAX_RATE and min_rate <= max_rate, "Wrong rates" monetary_policy: address = create_from_blueprint( self.monetary_policy_impl, borrowed_token, min_rate, max_rate, code_offset=3) controller: address = empty(address) amm: address = empty(address) controller, amm = vault.initialize( self.amm_impl, self.controller_impl, borrowed_token, collateral_token, A, fee, price_oracle, monetary_policy, loan_discount, liquidation_discount ) market_count: uint256 = self.market_count log NewVault(market_count, collateral_token, borrowed_token, vault.address, controller, amm, price_oracle, monetary_policy) self.vaults[market_count] = vault self.amms[market_count] = AMM(amm) self._vaults_index[vault] = market_count + 2**128 self.names[market_count] = name self.market_count = market_count + 1 token: address = borrowed_token if borrowed_token == STABLECOIN: token = collateral_token market_count = self.token_market_count[token] self.token_to_vaults[token][market_count] = vault self.token_market_count[token] = market_count + 1 return vault @external @nonreentrant('lock') def create( borrowed_token: address, collateral_token: address, A: uint256, fee: uint256, loan_discount: uint256, liquidation_discount: uint256, price_oracle: address, name: String[64], min_borrow_rate: uint256 = 0, max_borrow_rate: uint256 = 0, supply_limit: uint256 = max_value(uint256) ) -> Vault: """ @notice Creation of the vault using user-supplied price oracle contract @param borrowed_token Token which is being borrowed @param collateral_token Token used for collateral @param A Amplification coefficient: band size is ~1/A @param fee Fee for swaps in AMM (for ETH markets found to be 0.6%) @param loan_discount Maximum discount. LTV = sqrt(((A - 1) / A) ** 4) - loan_discount @param liquidation_discount Liquidation discount. LT = sqrt(((A - 1) / A) ** 4) - liquidation_discount @param price_oracle Custom price oracle contract @param name Human-readable market name @param min_borrow_rate Custom minimum borrow rate (otherwise min_default_borrow_rate) @param max_borrow_rate Custom maximum borrow rate (otherwise max_default_borrow_rate) @param supply_limit Supply cap """ vault: Vault = self._create(borrowed_token, collateral_token, A, fee, loan_discount, liquidation_discount, price_oracle, name, min_borrow_rate, max_borrow_rate) if supply_limit < max_value(uint256): vault.set_max_supply(supply_limit) return vault @external @nonreentrant('lock') def create_from_pool( borrowed_token: address, collateral_token: address, A: uint256, fee: uint256, loan_discount: uint256, liquidation_discount: uint256, pool: address, name: String[64], min_borrow_rate: uint256 = 0, max_borrow_rate: uint256 = 0, supply_limit: uint256 = max_value(uint256) ) -> Vault: """ @notice Creation of the vault using existing oraclized Curve pool as a price oracle @param borrowed_token Token which is being borrowed @param collateral_token Token used for collateral @param A Amplification coefficient: band size is ~1/A @param fee Fee for swaps in AMM (for ETH markets found to be 0.6%) @param loan_discount Maximum discount. LTV = sqrt(((A - 1) / A) ** 4) - loan_discount @param liquidation_discount Liquidation discount. LT = sqrt(((A - 1) / A) ** 4) - liquidation_discount @param pool Curve tricrypto-ng, twocrypto-ng or stableswap-ng pool which has non-manipulatable price_oracle(). Must contain both collateral_token and borrowed_token. @param name Human-readable market name @param min_borrow_rate Custom minimum borrow rate (otherwise min_default_borrow_rate) @param max_borrow_rate Custom maximum borrow rate (otherwise max_default_borrow_rate) @param supply_limit Supply cap """ # Find coins in the pool borrowed_ix: uint256 = 100 collateral_ix: uint256 = 100 N: uint256 = 0 for i in range(10): success: bool = False res: Bytes[32] = empty(Bytes[32]) success, res = raw_call( pool, _abi_encode(i, method_id=method_id("coins(uint256)")), max_outsize=32, is_static_call=True, revert_on_failure=False) coin: address = convert(res, address) if not success or coin == empty(address): break N += 1 if coin == borrowed_token: borrowed_ix = i elif coin == collateral_token: collateral_ix = i if collateral_ix == 100 or borrowed_ix == 100: raise "Tokens not in pool" price_oracle: address = create_from_blueprint( self.pool_price_oracle_impl, pool, N, borrowed_ix, collateral_ix, code_offset=3) vault: Vault = self._create(borrowed_token, collateral_token, A, fee, loan_discount, liquidation_discount, price_oracle, name, min_borrow_rate, max_borrow_rate) if supply_limit < max_value(uint256): vault.set_max_supply(supply_limit) return vault @view @external def controllers(n: uint256) -> address: return self.vaults[n].controller() @view @external def borrowed_tokens(n: uint256) -> address: return self.vaults[n].borrowed_token() @view @external def collateral_tokens(n: uint256) -> address: return self.vaults[n].collateral_token() @view @external def price_oracles(n: uint256) -> address: return self.vaults[n].price_oracle() @view @external def monetary_policies(n: uint256) -> address: return Controller(self.vaults[n].controller()).monetary_policy() @view @external def vaults_index(vault: Vault) -> uint256: return self._vaults_index[vault] - 2**128 @external def deploy_gauge(_vault: Vault) -> address: """ @notice Deploy a liquidity gauge for a vault @param _vault Vault address to deploy a gauge for @return Address of the deployed gauge """ ix: uint256 = self._vaults_index[_vault] assert ix != 0, "Unknown vault" ix -= 2**128 assert self.gauges[ix] == empty(address), "Gauge already deployed" implementation: address = self.gauge_impl assert implementation != empty(address), "Gauge implementation not set" gauge: address = create_from_blueprint(implementation, _vault, code_offset=3) self.gauges[ix] = gauge log LiquidityGaugeDeployed(_vault.address, gauge) return gauge @view @external def gauge_for_vault(_vault: Vault) -> address: return self.gauges[self._vaults_index[_vault] - 2**128] @external @nonreentrant('lock') def set_implementations(controller: address, amm: address, vault: address, pool_price_oracle: address, monetary_policy: address, gauge: address): """ @notice Set new implementations (blueprints) for controller, amm, vault, pool price oracle and monetary polcy. Doesn't change existing ones @param controller Address of the controller blueprint @param amm Address of the AMM blueprint @param vault Address of the Vault template @param pool_price_oracle Address of the pool price oracle blueprint @param monetary_policy Address of the monetary policy blueprint @param gauge Address for gauge implementation blueprint """ assert msg.sender == self.admin if controller != empty(address): self.controller_impl = controller if amm != empty(address): self.amm_impl = amm if vault != empty(address): self.vault_impl = vault if pool_price_oracle != empty(address): self.pool_price_oracle_impl = pool_price_oracle if monetary_policy != empty(address): self.monetary_policy_impl = monetary_policy if gauge != empty(address): self.gauge_impl = gauge log SetImplementations(amm, controller, vault, pool_price_oracle, monetary_policy, gauge) @external @nonreentrant('lock') def set_default_rates(min_rate: uint256, max_rate: uint256): """ @notice Change min and max default borrow rates for creating new markets @param min_rate Minimal borrow rate (0 utilization) @param max_rate Maxumum borrow rate (100% utilization) """ assert msg.sender == self.admin assert min_rate >= MIN_RATE assert max_rate <= MAX_RATE assert max_rate >= min_rate self.min_default_borrow_rate = min_rate self.max_default_borrow_rate = max_rate log SetDefaultRates(min_rate, max_rate) @external @nonreentrant('lock') def set_admin(admin: address): """ @notice Set admin of the factory (should end up with DAO) @param admin Address of the admin """ assert msg.sender == self.admin self.admin = admin log SetAdmin(admin) @external @view def coins(vault_id: uint256) -> address[2]: vault: Vault = self.vaults[vault_id] return [vault.borrowed_token(), vault.collateral_token()]
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"name":"SetImplementations","inputs":[{"name":"amm","type":"address","indexed":false},{"name":"controller","type":"address","indexed":false},{"name":"vault","type":"address","indexed":false},{"name":"price_oracle","type":"address","indexed":false},{"name":"monetary_policy","type":"address","indexed":false},{"name":"gauge","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"name":"SetDefaultRates","inputs":[{"name":"min_rate","type":"uint256","indexed":false},{"name":"max_rate","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"SetAdmin","inputs":[{"name":"admin","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"name":"NewVault","inputs":[{"name":"id","type":"uint256","indexed":true},{"name":"collateral_token","type":"address","indexed":true},{"name":"borrowed_token","type":"address","indexed":true},{"name":"vault","type":"address","indexed":false},{"name":"controller","type":"address","indexed":false},{"name":"amm","type":"address","indexed":false},{"name":"price_oracle","type":"address","indexed":false},{"name":"monetary_policy","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"name":"LiquidityGaugeDeployed","inputs":[{"name":"vault","type":"address","indexed":false},{"name":"gauge","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"stateMutability":"nonpayable","type":"constructor","inputs":[{"name":"stablecoin","type":"address"},{"name":"amm","type":"address"},{"name":"controller","type":"address"},{"name":"vault","type":"address"},{"name":"pool_price_oracle","type":"address"},{"name":"monetary_policy","type":"address"},{"name":"gauge","type":"address"},{"name":"admin","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"create","inputs":[{"name":"borrowed_token","type":"address"},{"name":"collateral_token","type":"address"},{"name":"A","type":"uint256"},{"name":"fee","type":"uint256"},{"name":"loan_discount","type":"uint256"},{"name":"liquidation_discount","type":"uint256"},{"name":"price_oracle","type":"address"},{"name":"name","type":"string"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"nonpayable","type":"function","name":"create","inputs":[{"name":"borrowed_token","type":"address"},{"name":"collateral_token","type":"address"},{"name":"A","type":"uint256"},{"name":"fee","type":"uint256"},{"name":"loan_discount","type":"uint256"},{"name":"liquidation_discount","type":"uint256"},{"name":"price_oracle","type":"address"},{"name":"name","type":"string"},{"name":"min_borrow_rate","type":"uint256"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"nonpayable","type":"function","name":"create","inputs":[{"name":"borrowed_token","type":"address"},{"name":"collateral_token","type":"address"},{"name":"A","type":"uint256"},{"name":"fee","type":"uint256"},{"name":"loan_discount","type":"uint256"},{"name":"liquidation_discount","type":"uint256"},{"name":"price_oracle","type":"address"},{"name":"name","type":"string"},{"name":"min_borrow_rate","type":"uint256"},{"name":"max_borrow_rate","type":"uint256"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"nonpayable","type":"function","name":"create","inputs":[{"name":"borrowed_token","type":"address"},{"name":"collateral_token","type":"address"},{"name":"A","type":"uint256"},{"name":"fee","type":"uint256"},{"name":"loan_discount","type":"uint256"},{"name":"liquidation_discount","type":"uint256"},{"name":"price_oracle","type":"address"},{"name":"name","type":"string"},{"name":"min_borrow_rate","type":"uint256"},{"name":"max_borrow_rate","type":"uint256"},{"name":"supply_limit","type":"uint256"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"nonpayable","type":"function","name":"create_from_pool","inputs":[{"name":"borrowed_token","type":"address"},{"name":"collateral_token","type":"address"},{"name":"A","type":"uint256"},{"name":"fee","type":"uint256"},{"name":"loan_discount","type":"uint256"},{"name":"liquidation_discount","type":"uint256"},{"name":"pool","type":"address"},{"name":"name","type":"string"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"nonpayable","type":"function","name":"create_from_pool","inputs":[{"name":"borrowed_token","type":"address"},{"name":"collateral_token","type":"address"},{"name":"A","type":"uint256"},{"name":"fee","type":"uint256"},{"name":"loan_discount","type":"uint256"},{"name":"liquidation_discount","type":"uint256"},{"name":"pool","type":"address"},{"name":"name","type":"string"},{"name":"min_borrow_rate","type":"uint256"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"nonpayable","type":"function","name":"create_from_pool","inputs":[{"name":"borrowed_token","type":"address"},{"name":"collateral_token","type":"address"},{"name":"A","type":"uint256"},{"name":"fee","type":"uint256"},{"name":"loan_discount","type":"uint256"},{"name":"liquidation_discount","type":"uint256"},{"name":"pool","type":"address"},{"name":"name","type":"string"},{"name":"min_borrow_rate","type":"uint256"},{"name":"max_borrow_rate","type":"uint256"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"nonpayable","type":"function","name":"create_from_pool","inputs":[{"name":"borrowed_token","type":"address"},{"name":"collateral_token","type":"address"},{"name":"A","type":"uint256"},{"name":"fee","type":"uint256"},{"name":"loan_discount","type":"uint256"},{"name":"liquidation_discount","type":"uint256"},{"name":"pool","type":"address"},{"name":"name","type":"string"},{"name":"min_borrow_rate","type":"uint256"},{"name":"max_borrow_rate","type":"uint256"},{"name":"supply_limit","type":"uint256"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"controllers","inputs":[{"name":"n","type":"uint256"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"borrowed_tokens","inputs":[{"name":"n","type":"uint256"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"collateral_tokens","inputs":[{"name":"n","type":"uint256"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"price_oracles","inputs":[{"name":"n","type":"uint256"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"monetary_policies","inputs":[{"name":"n","type":"uint256"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"vaults_index","inputs":[{"name":"vault","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"nonpayable","type":"function","name":"deploy_gauge","inputs":[{"name":"_vault","type":"address"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"gauge_for_vault","inputs":[{"name":"_vault","type":"address"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"nonpayable","type":"function","name":"set_implementations","inputs":[{"name":"controller","type":"address"},{"name":"amm","type":"address"},{"name":"vault","type":"address"},{"name":"pool_price_oracle","type":"address"},{"name":"monetary_policy","type":"address"},{"name":"gauge","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_default_rates","inputs":[{"name":"min_rate","type":"uint256"},{"name":"max_rate","type":"uint256"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_admin","inputs":[{"name":"admin","type":"address"}],"outputs":[]},{"stateMutability":"view","type":"function","name":"coins","inputs":[{"name":"vault_id","type":"uint256"}],"outputs":[{"name":"","type":"address[2]"}]},{"stateMutability":"view","type":"function","name":"STABLECOIN","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"MIN_RATE","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"MAX_RATE","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"amm_impl","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"controller_impl","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"vault_impl","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"pool_price_oracle_impl","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"monetary_policy_impl","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"gauge_impl","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"min_default_borrow_rate","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"max_default_borrow_rate","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"admin","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"vaults","inputs":[{"name":"arg0","type":"uint256"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"amms","inputs":[{"name":"arg0","type":"uint256"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"market_count","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"token_to_vaults","inputs":[{"name":"arg0","type":"address"},{"name":"arg1","type":"uint256"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"token_market_count","inputs":[{"name":"arg0","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"gauges","inputs":[{"name":"arg0","type":"uint256"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"names","inputs":[{"name":"arg0","type":"uint256"}],"outputs":[{"name":"","type":"string"}]}]
Contract Creation Code
6115715150346101015760206116935f395f518060a01c6101015760405260206116b35f395f518060a01c6101015760605260206116d35f395f518060a01c6101015760805260206116f35f395f518060a01c6101015760a05260206117135f395f518060a01c6101015760c05260206117335f395f518060a01c6101015760e05260206117535f395f518060a01c610101576101005260206117735f395f518060a01c61010157610120526040516115715260605160015560805160025560a05160035560c05160045560e0516005556101005160065563097343df6007556403b10683776008556101205160095561157161010561000039611591610000f35b5f80fd5f3560e01c60056005600383160261142501601b395f5160088160ff16838360181c0260181c0660031b8260081c61ffff1601601839505f51818160201c14600336111661004c57610f42565b8061fffe16361034826001160217611421578060101c61ffff16565b602061157160403960206040f35b6301e3da5f60405260206040f35b6449d482455d60405260206040f35b60015460405260206040f35b60025460405260206040f35b60035460405260206040f35b60045460405260206040f35b60055460405260206040f35b60065460405260206040f35b60075460405260206040f35b60085460405260206040f35b60095460405260206040f35b600435670de0b6b3a763ffff811161142157600a015460405260206040f35b600435670de0b6b3a763ffff811161142157670de0b6b3a764000a015460405260206040f35b671bc16d674ec8000b5460405260206040f35b6004358060a01c61142157604052671bc16d674ec8000c6040516020525f5260405f20602435670de0b6b3a763ffff811161142157810190505460605260206060f35b6004358060a01c61142157604052671bc16d674ec8000d6040516020525f5260405f205460605260206060f35b600435670de0b6b3a763ffff811161142157671bc16d674ec8000e015460405260206040f35b6020806040526729a2241af62c000e6004356020525f5260405f208160400160208254015f81601f0160051c6003811161142157801561023f57905b808501548160051b850152600101818118610229575b5050508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506040f35b6040366104e0377fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61052052610312565b610104356104e0525f610500527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61052052610312565b60406101046104e0377fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61052052610312565b60606101046104e0375b6004358060a01c61142157610420526024358060a01c611421576104405260c4358060a01c611421576104605260e435600401604081351161142157602081350180826104803750505f546002146114215760025f55610420516040526104405160605260806044608037610460516101005260206104805101806101208261048060045afa50506104e05161018052610500516101a0526103b5610560610f46565b61056051610540527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610520511461041e5761054051638a938f2f610560526105205161058052803b15611421575f610560602461057c5f855af161041c573d5f5f3e3d5ffd5b505b602061054060035f55f35b6040366104e0377fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610520526104ce565b610104356104e0525f610500527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610520526104ce565b60406101046104e0377fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610520526104ce565b60606101046104e0375b6004358060a01c61142157610420526024358060a01c611421576104405260c4358060a01c611421576104605260e435600401604081351161142157602081350180826104803750505f546002146114215760025f556064610540526064610560525f610580525f600a905b806105a0526040366105c037610460515a63c66106576106245260046105a05161064452602001610620526106205060206106a0610620516106408585fa905090506105c0523d602081183d60201002186106805261068080516105e05260208101516106005250610600516105e05160200360031b1c8060a01c61142157610620526105c0516105cc5760016105d2565b61062051155b156105dc5761062c565b61058051600181018181106114215790506105805261042051610620511861060b576105a05161054052610621565b610440516106205118610621576105a051610560525b60010181811861053a575b505060646105605118610640576001610649565b60646105405118155b156106b35760126105a0527f546f6b656e73206e6f7420696e20706f6f6c00000000000000000000000000006105c0526105a0506105a051806105c001601f825f031636823750506308c379a061056052602061058052601f19601f6105a051011660440161057cfd5b600454610460516105c0526105c05161064052610580516105e0526105e05161066052610540516106005261060051610680526105605161062052610620516106a05260806003823b0359600182126114215781600382863c81810183818561064060045afa5050828201815ff080156114215790509050905090506105a0526104205160405261044051606052608060446080376105a0516101005260206104805101806101208261048060045afa50506104e05161018052610500516101a0526107806105e0610f46565b6105e0516105c0527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61052051146107e9576105c051638a938f2f6105e0526105205161060052803b15611421575f6105e060246105fc5f855af16107e7573d5f5f3e3d5ffd5b505b60206105c060035f55f35b6020600435670de0b6b3a763ffff811161142157600a015463f77c4791604052602060406004605c845afa61082b573d5f5f3e3d5ffd5b60203d10611421576040518060a01c6114215760805260809050f35b6020600435670de0b6b3a763ffff811161142157600a015463765337b6604052602060406004605c845afa61087e573d5f5f3e3d5ffd5b60203d10611421576040518060a01c6114215760805260809050f35b6020600435670de0b6b3a763ffff811161142157600a0154632621db2f604052602060406004605c845afa6108d1573d5f5f3e3d5ffd5b60203d10611421576040518060a01c6114215760805260809050f35b6020600435670de0b6b3a763ffff811161142157600a01546386fc88d3604052602060406004605c845afa610924573d5f5f3e3d5ffd5b60203d10611421576040518060a01c6114215760805260809050f35b6020600435670de0b6b3a763ffff811161142157600a015463f77c4791604052602060406004605c845afa610977573d5f5f3e3d5ffd5b60203d10611421576040518060a01c61142157608052608090505163adfae4ce60a052602060a0600460bc845afa6109b1573d5f5f3e3d5ffd5b60203d106114215760a0518060a01c6114215760e05260e09050f35b6004358060a01c61142157604052671bc16d674ec8000a6040516020525f5260405f2054700100000000000000000000000000000000810381811161142157905060605260206060f35b6004358060a01c61142157604052671bc16d674ec8000a6040516020525f5260405f2054606052606051610aa157600d6080527f556e6b6e6f776e207661756c740000000000000000000000000000000000000060a0526080506080518060a001601f825f031636823750506308c379a06040526020606052601f19601f6080510116604401605cfd5b6060517001000000000000000000000000000000008103818111611421579050606052606051670de0b6b3a763ffff811161142157671bc16d674ec8000e015415610b425760166080527f476175676520616c7265616479206465706c6f7965640000000000000000000060a0526080506080518060a001601f825f031636823750506308c379a06040526020606052601f19601f6080510116604401605cfd5b600654608052608051610bab57601c60a0527f476175676520696d706c656d656e746174696f6e206e6f74207365740000000060c05260a05060a0518060c001601f825f031636823750506308c379a06060526020608052601f19601f60a0510116604401607cfd5b60805160405160c05260c05160e05260206003823b0359600182126114215781600382863c81810160e051815250828201815ff0801561142157905090509050905060a05260a051606051670de0b6b3a763ffff811161142157671bc16d674ec8000e01557f656bb34c20491970a8c163f3bd62ead82022b379c3924960ec60f6dbfc5aab3b60405160c05260a05160e052604060c0a1602060a0f35b6004358060a01c61142157604052671bc16d674ec8000a6040516020525f5260405f20547001000000000000000000000000000000008103818111611421579050670de0b6b3a763ffff811161142157671bc16d674ec8000e015460605260206060f35b6004358060a01c611421576040526024358060a01c611421576060526044358060a01c611421576080526064358060a01c6114215760a0526084358060a01c6114215760c05260a4358060a01c6114215760e0525f546002146114215760025f5560095433186114215760405115610d25576040516002555b60605115610d34576060516001555b60805115610d43576080516003555b60a05115610d525760a0516004555b60c05115610d615760c0516005555b60e05115610d705760e0516006555b7f91d63b24386eae580bbbe65f3f50fd736c41031f36d85641bc13e74ac0cb95bb60605161010052604051610120526080516101405260a0516101605260c0516101805260e0516101a05260c0610100a160035f55005b5f546002146114215760025f556009543318611421576301e3da5f60043510611421576449d482455d602435116114215760043560243510611421576004356007556024356008557f279f1fe0f91b15d983792d0305a146961875690054db0d81bec8d1582461fc656040600460403760406040a160035f55005b6004358060a01c611421576040525f546002146114215760025f556009543318611421576040516009557f5a272403b402d892977df56625f4164ccaf70ca3863991c43ecfe76a6905b0a160405160605260206060a160035f55005b600435670de0b6b3a763ffff811161142157600a015460405260405163765337b6606052602060606004607c845afa610ed9573d5f5f3e3d5ffd5b60203d10611421576060518060a01c6114215760a05260a090505161012052604051632621db2f60c052602060c0600460dc845afa610f1a573d5f5f3e3d5ffd5b60203d106114215760c0518060a01c6114215761010052610100905051610140526040610120f35b5f5ffd5b60605160405118610fb657600a6101c0527f53616d6520746f6b656e000000000000000000000000000000000000000000006101e0526101c0506101c051806101e001601f825f031636823750506308c379a06101805260206101a052601f19601f6101c051011660440161019cfd5b60206115715f395f5160405118610fce576001610fdd565b60206115715f395f5160605118155b15611421577f602d3d8160093d39f3363d3d373d3d3d363d73000000000000000000000000006101e05260035460601b6101f3527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006102075260366101e05ff08015611421576101c0526007546101e05260085461020052610180511561106757610180516101e0525b6101a05115611079576101a051610200525b6301e3da5f6101e051101561108e575f6110af565b6449d482455d6102005111156110a4575f6110af565b610200516101e05111155b61111857600b610220527f57726f6e672072617465730000000000000000000000000000000000000000006102405261022050610220518061024001601f825f031636823750506308c379a06101e052602061020052601f19601f6102205101166044016101fcfd5b60055460405161024052610240516102a0526101e05161026052610260516102c0526102005161028052610280516102e05260606003823b0359600182126114215781600382863c8181018381856102a060045afa5050828201815ff0801561142157905090509050905061022052604036610240376101c0516343687bba610280526001546102a0526002546102c0526040516102e052606051610300526080516103205260a051610340526101005161036052610220516103805260c0516103a05260e0516103c052604061028061014461029c5f855af16111fe573d5f5f3e3d5ffd5b60403d1061142157610280518060a01c611421576103e0526102a0518060a01c61142157610400526103e0905080516102405260208101516102605250671bc16d674ec8000b5461028052604051606051610280517f2a854a597908740dff5f0846840f167547ea0d7614c43bde3ea49be2e68c07ec6101c0516102a052610240516102c052610260516102e0526101005161030052610220516103205260a06102a0a46101c05161028051670de0b6b3a763ffff811161142157600a01556102605161028051670de0b6b3a763ffff811161142157670de0b6b3a764000a0155610280517001000000000000000000000000000000008101818110611421579050671bc16d674ec8000a6101c0516020525f5260405f2055602061012051016729a2241af62c000e610280516020525f5260405f205f82601f0160051c6003811161142157801561136457905b8060051b61012001518184015560010181811861134c575b505050506102805160018101818110611421579050671bc16d674ec8000b556040516102a05260206115715f395f51604051186113a3576060516102a0525b671bc16d674ec8000d6102a0516020525f5260405f2054610280526101c051671bc16d674ec8000c6102a0516020525f5260405f2061028051670de0b6b3a763ffff81116114215781019050556102805160018101818110611421579050671bc16d674ec8000d6102a0516020525f5260405f20556101c051815250565b5f80fdd86715110c000914e90500be143908a83314790e99d0b1ba00e70005e5f260ba019a00258c64ea4a00ff002593a39776006800059c3b70a6026d0125e94b0dd207f40025762e7b920940002550c1163a0c4800250b91bd2700b70005a8acf8df01570045b053918701c70025d819bfef00760005485227a700cf00056fe4501f08470025e9333fab0e4200254622ab0301ed0025bcf75a8f09cd00256677b28700ab00056c15eadf0cac00c55673683f02d501654351e30b04c40185c66106570e9e0025c6f2a81d08ed0025041622b500930005d984d2a104290125c24dbebd008400056c3a55e50308018596bebb340a170025fd775c7801440005168819c0009f000586a8cdbc011e0025247ec87800c300055904e8dc029e014549b89984089a002573edeb30045a0145a74fcf900dc700453cfd3d8c00db0005bccc056c04910165f851a44000f3000584191571851418401870182818601820a16576797065728300030a001d0000000000000000000000007fff4c4a827c84e32c5e175052834111b2ccd2700000000000000000000000002631f1942feb5c6407f98ca0a50053031d7510c3000000000000000000000000d603a7ff6e6213ac86750a2b84d3b15ed210e3920000000000000000000000002287b7b2bf3d82c3ecc11ca176f4b4f35f9207750000000000000000000000005404ef006ea4d340a954fa392333509654e3c9500000000000000000000000008fa5b216031797e163a40c17c709777c1669abed000000000000000000000000f3a431008396df8a8b2df492c913706bdb0874ef0000000000000000000000006c9578402a3ace046a12839f45f84aa5448e9c30
Deployed Bytecode
0x5f3560e01c60056005600383160261142501601b395f5160088160ff16838360181c0260181c0660031b8260081c61ffff1601601839505f51818160201c14600336111661004c57610f42565b8061fffe16361034826001160217611421578060101c61ffff16565b602061157160403960206040f35b6301e3da5f60405260206040f35b6449d482455d60405260206040f35b60015460405260206040f35b60025460405260206040f35b60035460405260206040f35b60045460405260206040f35b60055460405260206040f35b60065460405260206040f35b60075460405260206040f35b60085460405260206040f35b60095460405260206040f35b600435670de0b6b3a763ffff811161142157600a015460405260206040f35b600435670de0b6b3a763ffff811161142157670de0b6b3a764000a015460405260206040f35b671bc16d674ec8000b5460405260206040f35b6004358060a01c61142157604052671bc16d674ec8000c6040516020525f5260405f20602435670de0b6b3a763ffff811161142157810190505460605260206060f35b6004358060a01c61142157604052671bc16d674ec8000d6040516020525f5260405f205460605260206060f35b600435670de0b6b3a763ffff811161142157671bc16d674ec8000e015460405260206040f35b6020806040526729a2241af62c000e6004356020525f5260405f208160400160208254015f81601f0160051c6003811161142157801561023f57905b808501548160051b850152600101818118610229575b5050508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506040f35b6040366104e0377fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61052052610312565b610104356104e0525f610500527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61052052610312565b60406101046104e0377fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61052052610312565b60606101046104e0375b6004358060a01c61142157610420526024358060a01c611421576104405260c4358060a01c611421576104605260e435600401604081351161142157602081350180826104803750505f546002146114215760025f55610420516040526104405160605260806044608037610460516101005260206104805101806101208261048060045afa50506104e05161018052610500516101a0526103b5610560610f46565b61056051610540527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610520511461041e5761054051638a938f2f610560526105205161058052803b15611421575f610560602461057c5f855af161041c573d5f5f3e3d5ffd5b505b602061054060035f55f35b6040366104e0377fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610520526104ce565b610104356104e0525f610500527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610520526104ce565b60406101046104e0377fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610520526104ce565b60606101046104e0375b6004358060a01c61142157610420526024358060a01c611421576104405260c4358060a01c611421576104605260e435600401604081351161142157602081350180826104803750505f546002146114215760025f556064610540526064610560525f610580525f600a905b806105a0526040366105c037610460515a63c66106576106245260046105a05161064452602001610620526106205060206106a0610620516106408585fa905090506105c0523d602081183d60201002186106805261068080516105e05260208101516106005250610600516105e05160200360031b1c8060a01c61142157610620526105c0516105cc5760016105d2565b61062051155b156105dc5761062c565b61058051600181018181106114215790506105805261042051610620511861060b576105a05161054052610621565b610440516106205118610621576105a051610560525b60010181811861053a575b505060646105605118610640576001610649565b60646105405118155b156106b35760126105a0527f546f6b656e73206e6f7420696e20706f6f6c00000000000000000000000000006105c0526105a0506105a051806105c001601f825f031636823750506308c379a061056052602061058052601f19601f6105a051011660440161057cfd5b600454610460516105c0526105c05161064052610580516105e0526105e05161066052610540516106005261060051610680526105605161062052610620516106a05260806003823b0359600182126114215781600382863c81810183818561064060045afa5050828201815ff080156114215790509050905090506105a0526104205160405261044051606052608060446080376105a0516101005260206104805101806101208261048060045afa50506104e05161018052610500516101a0526107806105e0610f46565b6105e0516105c0527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61052051146107e9576105c051638a938f2f6105e0526105205161060052803b15611421575f6105e060246105fc5f855af16107e7573d5f5f3e3d5ffd5b505b60206105c060035f55f35b6020600435670de0b6b3a763ffff811161142157600a015463f77c4791604052602060406004605c845afa61082b573d5f5f3e3d5ffd5b60203d10611421576040518060a01c6114215760805260809050f35b6020600435670de0b6b3a763ffff811161142157600a015463765337b6604052602060406004605c845afa61087e573d5f5f3e3d5ffd5b60203d10611421576040518060a01c6114215760805260809050f35b6020600435670de0b6b3a763ffff811161142157600a0154632621db2f604052602060406004605c845afa6108d1573d5f5f3e3d5ffd5b60203d10611421576040518060a01c6114215760805260809050f35b6020600435670de0b6b3a763ffff811161142157600a01546386fc88d3604052602060406004605c845afa610924573d5f5f3e3d5ffd5b60203d10611421576040518060a01c6114215760805260809050f35b6020600435670de0b6b3a763ffff811161142157600a015463f77c4791604052602060406004605c845afa610977573d5f5f3e3d5ffd5b60203d10611421576040518060a01c61142157608052608090505163adfae4ce60a052602060a0600460bc845afa6109b1573d5f5f3e3d5ffd5b60203d106114215760a0518060a01c6114215760e05260e09050f35b6004358060a01c61142157604052671bc16d674ec8000a6040516020525f5260405f2054700100000000000000000000000000000000810381811161142157905060605260206060f35b6004358060a01c61142157604052671bc16d674ec8000a6040516020525f5260405f2054606052606051610aa157600d6080527f556e6b6e6f776e207661756c740000000000000000000000000000000000000060a0526080506080518060a001601f825f031636823750506308c379a06040526020606052601f19601f6080510116604401605cfd5b6060517001000000000000000000000000000000008103818111611421579050606052606051670de0b6b3a763ffff811161142157671bc16d674ec8000e015415610b425760166080527f476175676520616c7265616479206465706c6f7965640000000000000000000060a0526080506080518060a001601f825f031636823750506308c379a06040526020606052601f19601f6080510116604401605cfd5b600654608052608051610bab57601c60a0527f476175676520696d706c656d656e746174696f6e206e6f74207365740000000060c05260a05060a0518060c001601f825f031636823750506308c379a06060526020608052601f19601f60a0510116604401607cfd5b60805160405160c05260c05160e05260206003823b0359600182126114215781600382863c81810160e051815250828201815ff0801561142157905090509050905060a05260a051606051670de0b6b3a763ffff811161142157671bc16d674ec8000e01557f656bb34c20491970a8c163f3bd62ead82022b379c3924960ec60f6dbfc5aab3b60405160c05260a05160e052604060c0a1602060a0f35b6004358060a01c61142157604052671bc16d674ec8000a6040516020525f5260405f20547001000000000000000000000000000000008103818111611421579050670de0b6b3a763ffff811161142157671bc16d674ec8000e015460605260206060f35b6004358060a01c611421576040526024358060a01c611421576060526044358060a01c611421576080526064358060a01c6114215760a0526084358060a01c6114215760c05260a4358060a01c6114215760e0525f546002146114215760025f5560095433186114215760405115610d25576040516002555b60605115610d34576060516001555b60805115610d43576080516003555b60a05115610d525760a0516004555b60c05115610d615760c0516005555b60e05115610d705760e0516006555b7f91d63b24386eae580bbbe65f3f50fd736c41031f36d85641bc13e74ac0cb95bb60605161010052604051610120526080516101405260a0516101605260c0516101805260e0516101a05260c0610100a160035f55005b5f546002146114215760025f556009543318611421576301e3da5f60043510611421576449d482455d602435116114215760043560243510611421576004356007556024356008557f279f1fe0f91b15d983792d0305a146961875690054db0d81bec8d1582461fc656040600460403760406040a160035f55005b6004358060a01c611421576040525f546002146114215760025f556009543318611421576040516009557f5a272403b402d892977df56625f4164ccaf70ca3863991c43ecfe76a6905b0a160405160605260206060a160035f55005b600435670de0b6b3a763ffff811161142157600a015460405260405163765337b6606052602060606004607c845afa610ed9573d5f5f3e3d5ffd5b60203d10611421576060518060a01c6114215760a05260a090505161012052604051632621db2f60c052602060c0600460dc845afa610f1a573d5f5f3e3d5ffd5b60203d106114215760c0518060a01c6114215761010052610100905051610140526040610120f35b5f5ffd5b60605160405118610fb657600a6101c0527f53616d6520746f6b656e000000000000000000000000000000000000000000006101e0526101c0506101c051806101e001601f825f031636823750506308c379a06101805260206101a052601f19601f6101c051011660440161019cfd5b60206115715f395f5160405118610fce576001610fdd565b60206115715f395f5160605118155b15611421577f602d3d8160093d39f3363d3d373d3d3d363d73000000000000000000000000006101e05260035460601b6101f3527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006102075260366101e05ff08015611421576101c0526007546101e05260085461020052610180511561106757610180516101e0525b6101a05115611079576101a051610200525b6301e3da5f6101e051101561108e575f6110af565b6449d482455d6102005111156110a4575f6110af565b610200516101e05111155b61111857600b610220527f57726f6e672072617465730000000000000000000000000000000000000000006102405261022050610220518061024001601f825f031636823750506308c379a06101e052602061020052601f19601f6102205101166044016101fcfd5b60055460405161024052610240516102a0526101e05161026052610260516102c0526102005161028052610280516102e05260606003823b0359600182126114215781600382863c8181018381856102a060045afa5050828201815ff0801561142157905090509050905061022052604036610240376101c0516343687bba610280526001546102a0526002546102c0526040516102e052606051610300526080516103205260a051610340526101005161036052610220516103805260c0516103a05260e0516103c052604061028061014461029c5f855af16111fe573d5f5f3e3d5ffd5b60403d1061142157610280518060a01c611421576103e0526102a0518060a01c61142157610400526103e0905080516102405260208101516102605250671bc16d674ec8000b5461028052604051606051610280517f2a854a597908740dff5f0846840f167547ea0d7614c43bde3ea49be2e68c07ec6101c0516102a052610240516102c052610260516102e0526101005161030052610220516103205260a06102a0a46101c05161028051670de0b6b3a763ffff811161142157600a01556102605161028051670de0b6b3a763ffff811161142157670de0b6b3a764000a0155610280517001000000000000000000000000000000008101818110611421579050671bc16d674ec8000a6101c0516020525f5260405f2055602061012051016729a2241af62c000e610280516020525f5260405f205f82601f0160051c6003811161142157801561136457905b8060051b61012001518184015560010181811861134c575b505050506102805160018101818110611421579050671bc16d674ec8000b556040516102a05260206115715f395f51604051186113a3576060516102a0525b671bc16d674ec8000d6102a0516020525f5260405f2054610280526101c051671bc16d674ec8000c6102a0516020525f5260405f2061028051670de0b6b3a763ffff81116114215781019050556102805160018101818110611421579050671bc16d674ec8000d6102a0516020525f5260405f20556101c051815250565b5f80fdd86715110c000914e90500be143908a83314790e99d0b1ba00e70005e5f260ba019a00258c64ea4a00ff002593a39776006800059c3b70a6026d0125e94b0dd207f40025762e7b920940002550c1163a0c4800250b91bd2700b70005a8acf8df01570045b053918701c70025d819bfef00760005485227a700cf00056fe4501f08470025e9333fab0e4200254622ab0301ed0025bcf75a8f09cd00256677b28700ab00056c15eadf0cac00c55673683f02d501654351e30b04c40185c66106570e9e0025c6f2a81d08ed0025041622b500930005d984d2a104290125c24dbebd008400056c3a55e50308018596bebb340a170025fd775c7801440005168819c0009f000586a8cdbc011e0025247ec87800c300055904e8dc029e014549b89984089a002573edeb30045a0145a74fcf900dc700453cfd3d8c00db0005bccc056c04910165f851a44000f300050000000000000000000000007fff4c4a827c84e32c5e175052834111b2ccd270
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000007fff4c4a827c84e32c5e175052834111b2ccd2700000000000000000000000002631f1942feb5c6407f98ca0a50053031d7510c3000000000000000000000000d603a7ff6e6213ac86750a2b84d3b15ed210e3920000000000000000000000002287b7b2bf3d82c3ecc11ca176f4b4f35f9207750000000000000000000000005404ef006ea4d340a954fa392333509654e3c9500000000000000000000000008fa5b216031797e163a40c17c709777c1669abed000000000000000000000000f3a431008396df8a8b2df492c913706bdb0874ef0000000000000000000000006c9578402a3ace046a12839f45f84aa5448e9c30
-----Decoded View---------------
Arg [0] : stablecoin (address): 0x7FFf4C4a827C84E32c5E175052834111B2ccd270
Arg [1] : amm (address): 0x2631F1942FEB5C6407f98Ca0a50053031d7510c3
Arg [2] : controller (address): 0xD603a7ff6e6213aC86750A2B84D3b15Ed210e392
Arg [3] : vault (address): 0x2287b7b2bF3d82c3ecC11ca176F4B4F35f920775
Arg [4] : pool_price_oracle (address): 0x5404ef006ea4d340A954fA392333509654E3C950
Arg [5] : monetary_policy (address): 0x8fA5B216031797E163a40c17c709777C1669AbEd
Arg [6] : gauge (address): 0xf3A431008396df8A8b2DF492C913706BDB0874ef
Arg [7] : admin (address): 0x6c9578402A3ace046A12839f45F84Aa5448E9c30
-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 0000000000000000000000007fff4c4a827c84e32c5e175052834111b2ccd270
Arg [1] : 0000000000000000000000002631f1942feb5c6407f98ca0a50053031d7510c3
Arg [2] : 000000000000000000000000d603a7ff6e6213ac86750a2b84d3b15ed210e392
Arg [3] : 0000000000000000000000002287b7b2bf3d82c3ecc11ca176f4b4f35f920775
Arg [4] : 0000000000000000000000005404ef006ea4d340a954fa392333509654e3c950
Arg [5] : 0000000000000000000000008fa5b216031797e163a40c17c709777c1669abed
Arg [6] : 000000000000000000000000f3a431008396df8a8b2df492c913706bdb0874ef
Arg [7] : 0000000000000000000000006c9578402a3ace046a12839f45f84aa5448e9c30
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 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.