Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
LlamaLendOdosLeverageZap
Compiler Version
vyper:0.3.10
Contract Source Code (Vyper language format)
# @version 0.3.10 """ @title LlamaLendOdosLeverageZap @author Curve.Fi @license Copyright (c) Curve.Fi, 2020-2024 - all rights reserved @notice Creates leverage on LlamaLend and crvUSD markets via Odos Router. Does calculations for leverage. """ interface ERC20: def transferFrom(_from: address, _to: address, _value: uint256) -> bool: nonpayable def balanceOf(_for: address) -> uint256: view def allowance(_owner: address, _spender: address) -> uint256: view def approve(_spender: address, _value: uint256) -> bool: nonpayable def decimals() -> uint256: view interface Factory: def controllers(i: uint256) -> address: view interface Controller: def collateral_token() -> ERC20: view def loan_discount() -> uint256: view def amm() -> address: view def create_loan_extended(collateral: uint256, debt: uint256, N: uint256, callbacker: address, callback_args: DynArray[uint256,5]): nonpayable interface LLAMMA: def A() -> uint256: view def coins(i: uint256) -> address: view def active_band() -> int256: view def get_base_price() -> uint256: view def price_oracle() -> uint256: view def p_oracle_up(n: int256) -> uint256: view def active_band_with_skip() -> int256: view event Deposit: user: indexed(address) user_collateral: uint256 user_borrowed: uint256 user_collateral_from_borrowed: uint256 debt: uint256 leverage_collateral: uint256 event Repay: user: indexed(address) state_collateral_used: uint256 borrowed_from_state_collateral: uint256 user_collateral: uint256 user_collateral_used: uint256 borrowed_from_user_collateral: uint256 user_borrowed: uint256 DEAD_SHARES: constant(uint256) = 1000 MAX_TICKS_UINT: constant(uint256) = 50 MAX_P_BASE_BANDS: constant(int256) = 5 MAX_SKIP_TICKS: constant(uint256) = 1024 ROUTER: public(immutable(address)) FACTORIES: public(DynArray[address, 2]) @external def __init__(_router: address, _factories: DynArray[address, 2]): ROUTER = _router self.FACTORIES = _factories @internal @pure def _log_2(x: uint256) -> uint256: """ @dev An `internal` helper function that returns the log in base 2 of `x`, following the selected rounding direction. @notice Note that it returns 0 if given 0. The implementation is inspired by OpenZeppelin's implementation here: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/math/Math.sol. This code is taken from snekmate. @param x The 32-byte variable. @return uint256 The 32-byte calculation result. """ value: uint256 = x result: uint256 = empty(uint256) # The following lines cannot overflow because we have the well-known # decay behaviour of `log_2(max_value(uint256)) < max_value(uint256)`. if (x >> 128 != empty(uint256)): value = x >> 128 result = 128 if (value >> 64 != empty(uint256)): value = value >> 64 result = unsafe_add(result, 64) if (value >> 32 != empty(uint256)): value = value >> 32 result = unsafe_add(result, 32) if (value >> 16 != empty(uint256)): value = value >> 16 result = unsafe_add(result, 16) if (value >> 8 != empty(uint256)): value = value >> 8 result = unsafe_add(result, 8) if (value >> 4 != empty(uint256)): value = value >> 4 result = unsafe_add(result, 4) if (value >> 2 != empty(uint256)): value = value >> 2 result = unsafe_add(result, 2) if (value >> 1 != empty(uint256)): result = unsafe_add(result, 1) return result @internal @pure def wad_ln(x: uint256) -> int256: """ @dev Calculates the natural logarithm of a signed integer with a precision of 1e18. @notice Note that it returns 0 if given 0. Furthermore, this function consumes about 1,400 to 1,650 gas units depending on the value of `x`. The implementation is inspired by Remco Bloemen's implementation under the MIT license here: https://xn--2-umb.com/22/exp-ln. This code is taken from snekmate. @param x The 32-byte variable. @return int256 The 32-byte calculation result. """ value: int256 = convert(x, int256) assert x > 0 # We want to convert `x` from "10 ** 18" fixed point to "2 ** 96" # fixed point. We do this by multiplying by "2 ** 96 / 10 ** 18". # But since "ln(x * C) = ln(x) + ln(C)" holds, we can just do nothing # here and add "ln(2 ** 96 / 10 ** 18)" at the end. # Reduce the range of `x` to "(1, 2) * 2 ** 96". # Also remember that "ln(2 ** k * x) = k * ln(2) + ln(x)" holds. k: int256 = unsafe_sub(convert(self._log_2(x), int256), 96) # Note that to circumvent Vyper's safecast feature for the potentially # negative expression `value <<= uint256(159 - k)`, we first convert the # expression `value <<= uint256(159 - k)` to `bytes32` and subsequently # to `uint256`. Remember that the EVM default behaviour is to use two's # complement representation to handle signed integers. value = convert(convert(convert(value << convert(unsafe_sub(159, k), uint256), bytes32), uint256) >> 159, int256) # Evaluate using a "(8, 8)"-term rational approximation. Since `p` is monic, # we will multiply by a scaling factor later. p: int256 = unsafe_add(unsafe_mul(unsafe_add(value, 3_273_285_459_638_523_848_632_254_066_296), value) >> 96, 24_828_157_081_833_163_892_658_089_445_524) p = unsafe_add(unsafe_mul(p, value) >> 96, 43_456_485_725_739_037_958_740_375_743_393) p = unsafe_sub(unsafe_mul(p, value) >> 96, 11_111_509_109_440_967_052_023_855_526_967) p = unsafe_sub(unsafe_mul(p, value) >> 96, 45_023_709_667_254_063_763_336_534_515_857) p = unsafe_sub(unsafe_mul(p, value) >> 96, 14_706_773_417_378_608_786_704_636_184_526) p = unsafe_sub(unsafe_mul(p, value), 795_164_235_651_350_426_258_249_787_498 << 96) # We leave `p` in the "2 ** 192" base so that we do not have to scale it up # again for the division. Note that `q` is monic by convention. q: int256 = unsafe_add(unsafe_mul(unsafe_add(value, 5_573_035_233_440_673_466_300_451_813_936), value) >> 96, 71_694_874_799_317_883_764_090_561_454_958) q = unsafe_add(unsafe_mul(q, value) >> 96, 283_447_036_172_924_575_727_196_451_306_956) q = unsafe_add(unsafe_mul(q, value) >> 96, 401_686_690_394_027_663_651_624_208_769_553) q = unsafe_add(unsafe_mul(q, value) >> 96, 204_048_457_590_392_012_362_485_061_816_622) q = unsafe_add(unsafe_mul(q, value) >> 96, 31_853_899_698_501_571_402_653_359_427_138) q = unsafe_add(unsafe_mul(q, value) >> 96, 909_429_971_244_387_300_277_376_558_375) # It is known that the polynomial `q` has no zeros in the domain. # No scaling is required, as `p` is already "2 ** 96" too large. Also, # `r` is in the range "(0, 0.125) * 2 ** 96" after the division. r: int256 = unsafe_div(p, q) # To finalise the calculation, we have to proceed with the following steps: # - multiply by the scaling factor "s = 5.549...", # - add "ln(2 ** 96 / 10 ** 18)", # - add "k * ln(2)", and # - multiply by "10 ** 18 / 2 ** 96 = 5 ** 18 >> 78". # In order to perform the most gas-efficient calculation, we carry out all # these steps in one expression. return unsafe_add(unsafe_add(unsafe_mul(r, 1_677_202_110_996_718_588_342_820_967_067_443_963_516_166),\ unsafe_mul(k, 16_597_577_552_685_614_221_487_285_958_193_947_469_193_820_559_219_878_177_908_093_499_208_371)),\ 600_920_179_829_731_861_736_702_779_321_621_459_595_472_258_049_074_101_567_377_883_020_018_308) >> 174 @internal @view def _get_k_effective(controller: address, collateral: uint256, N: uint256) -> uint256: """ @notice Intermediary method which calculates k_effective defined as x_effective / p_base / y, however discounted by loan_discount. x_effective is an amount which can be obtained from collateral when liquidating @param N Number of bands the deposit is made into @return k_effective """ # x_effective = sum_{i=0..N-1}(y / N * p(n_{n1+i})) = # = y / N * p_oracle_up(n1) * sqrt((A - 1) / A) * sum_{0..N-1}(((A-1) / A)**k) # === d_y_effective * p_oracle_up(n1) * sum(...) === y * k_effective * p_oracle_up(n1) # d_k_effective = 1 / N / sqrt(A / (A - 1)) # d_k_effective: uint256 = 10**18 * unsafe_sub(10**18, discount) / (SQRT_BAND_RATIO * N) # Make some extra discount to always deposit lower when we have DEAD_SHARES rounding CONTROLLER: Controller = Controller(controller) A: uint256 = LLAMMA(CONTROLLER.amm()).A() SQRT_BAND_RATIO: uint256 = isqrt(unsafe_div(10 ** 36 * A, unsafe_sub(A, 1))) discount: uint256 = CONTROLLER.loan_discount() d_k_effective: uint256 = 10**18 * unsafe_sub( 10**18, min(discount + (DEAD_SHARES * 10**18) / max(collateral / N, DEAD_SHARES), 10**18) ) / (SQRT_BAND_RATIO * N) k_effective: uint256 = d_k_effective for i in range(1, MAX_TICKS_UINT): if i == N: break d_k_effective = unsafe_div(d_k_effective * (A - 1), A) k_effective = unsafe_add(k_effective, d_k_effective) return k_effective @internal @view def _max_p_base(controller: address) -> uint256: """ @notice Calculate max base price including skipping bands """ AMM: LLAMMA = LLAMMA(Controller(controller).amm()) A: uint256 = AMM.A() LOGN_A_RATIO: int256 = self.wad_ln(A * 10**18 / (A - 1)) p_oracle: uint256 = AMM.price_oracle() # Should be correct unless price changes suddenly by MAX_P_BASE_BANDS+ bands n1: int256 = self.wad_ln(AMM.get_base_price() * 10**18 / p_oracle) if n1 < 0: n1 -= LOGN_A_RATIO - 1 # This is to deal with vyper's rounding of negative numbers n1 = unsafe_div(n1, LOGN_A_RATIO) + MAX_P_BASE_BANDS n_min: int256 = AMM.active_band_with_skip() n1 = max(n1, n_min + 1) p_base: uint256 = AMM.p_oracle_up(n1) for i in range(MAX_SKIP_TICKS + 1): n1 -= 1 if n1 <= n_min: break p_base_prev: uint256 = p_base p_base = unsafe_div(p_base * A, A - 1) if p_base > p_oracle: return p_base_prev return p_base @external @view def max_borrowable(controller: address, _user_collateral: uint256, _leverage_collateral: uint256, N: uint256, p_avg: uint256) -> uint256: """ @notice Calculation of maximum which can be borrowed with leverage """ # max_borrowable = collateral / (1 / (k_effective * max_p_base) - 1 / p_avg) AMM: LLAMMA = LLAMMA(Controller(controller).amm()) BORROWED_TOKEN: address = AMM.coins(0) COLLATERAL_TOKEN: address = AMM.coins(1) COLLATERAL_PRECISION: uint256 = pow_mod256(10, 18 - ERC20(COLLATERAL_TOKEN).decimals()) user_collateral: uint256 = _user_collateral * COLLATERAL_PRECISION leverage_collateral: uint256 = _leverage_collateral * COLLATERAL_PRECISION k_effective: uint256 = self._get_k_effective(controller, user_collateral + leverage_collateral, N) max_p_base: uint256 = self._max_p_base(controller) max_borrowable: uint256 = user_collateral * 10**18 / (10**36 / k_effective * 10**18 / max_p_base - 10**36 / p_avg) return min(max_borrowable * 999 / 1000, ERC20(BORROWED_TOKEN).balanceOf(controller)) # Cannot borrow beyond the amount of coins Controller has @internal def _transferFrom(token: address, _from: address, _to: address, amount: uint256): if amount > 0: assert ERC20(token).transferFrom(_from, _to, amount, default_return_value=True) @internal def _approve(coin: address, spender: address): if ERC20(coin).allowance(self, spender) == 0: assert ERC20(coin).approve(spender, max_value(uint256), default_return_value=True) @external @nonreentrant('lock') def callback_deposit(user: address, stablecoins: uint256, user_collateral: uint256, d_debt: uint256, callback_args: DynArray[uint256, 10], callback_bytes: Bytes[10**4] = b"") -> uint256[2]: """ @notice Callback method which should be called by controller to create leveraged position @param user Address of the user @param stablecoins Always 0 @param user_collateral The amount of collateral token provided by user @param d_debt The amount to be borrowed (in addition to what has already been borrowed) @param callback_args [factory_id, controller_id, user_borrowed] 0-1. factory_id, controller_id are needed to check that msg.sender is the one of our controllers 2. user_borrowed - the amount of borrowed token provided by user (needs to be exchanged for collateral) return [0, user_collateral_from_borrowed + leverage_collateral] """ controller: address = Factory(self.FACTORIES[callback_args[0]]).controllers(callback_args[1]) assert msg.sender == controller, "wrong controller" amm: LLAMMA = LLAMMA(Controller(controller).amm()) borrowed_token: address = amm.coins(0) collateral_token: address = amm.coins(1) self._approve(borrowed_token, ROUTER) self._approve(collateral_token, controller) user_borrowed: uint256 = callback_args[2] self._transferFrom(borrowed_token, user, self, user_borrowed) raw_call(ROUTER, callback_bytes) # buys leverage_collateral for user_borrowed + dDebt additional_collateral: uint256 = ERC20(collateral_token).balanceOf(self) leverage_collateral: uint256 = d_debt * 10**18 / (d_debt + user_borrowed) * additional_collateral / 10**18 user_collateral_from_borrowed: uint256 = additional_collateral - leverage_collateral log Deposit(user, user_collateral, user_borrowed, user_collateral_from_borrowed, d_debt, leverage_collateral) return [0, additional_collateral] @external @nonreentrant('lock') def callback_repay(user: address, stablecoins: uint256, collateral: uint256, debt: uint256, callback_args: DynArray[uint256,10], callback_bytes: Bytes[10 ** 4] = b"") -> uint256[2]: """ @notice Callback method which should be called by controller to create leveraged position @param user Address of the user @param stablecoins The value from user_state @param collateral The value from user_state @param debt The value from user_state @param callback_args [factory_id, controller_id, user_collateral, user_borrowed] 0-1. factory_id, controller_id are needed to check that msg.sender is the one of our controllers 2. user_collateral - the amount of collateral token provided by user (needs to be exchanged for borrowed) 3. user_borrowed - the amount of borrowed token to repay from user's wallet return [user_borrowed + borrowed_from_collateral, remaining_collateral] """ controller: address = Factory(self.FACTORIES[callback_args[0]]).controllers(callback_args[1]) assert msg.sender == controller, "wrong controller" amm: LLAMMA = LLAMMA(Controller(controller).amm()) borrowed_token: address = amm.coins(0) collateral_token: address = amm.coins(1) self._approve(collateral_token, ROUTER) self._approve(borrowed_token, controller) self._approve(collateral_token, controller) initial_collateral: uint256 = ERC20(collateral_token).balanceOf(self) user_collateral: uint256 = callback_args[2] if callback_bytes != b"": self._transferFrom(collateral_token, user, self, user_collateral) # Buys borrowed token for collateral from user's position + from user's wallet. # The amount to be spent is specified inside callback_bytes. raw_call(ROUTER, callback_bytes) else: assert user_collateral == 0 remaining_collateral: uint256 = ERC20(collateral_token).balanceOf(self) state_collateral_used: uint256 = 0 borrowed_from_state_collateral: uint256 = 0 user_collateral_used: uint256 = user_collateral borrowed_from_user_collateral: uint256 = ERC20(borrowed_token).balanceOf(self) # here it's total borrowed_from_collateral if remaining_collateral < initial_collateral: state_collateral_used = initial_collateral - remaining_collateral borrowed_from_state_collateral = state_collateral_used * 10**18 / (state_collateral_used + user_collateral_used) * borrowed_from_user_collateral / 10**18 borrowed_from_user_collateral = borrowed_from_user_collateral - borrowed_from_state_collateral else: user_collateral_used = user_collateral - (remaining_collateral - initial_collateral) user_borrowed: uint256 = callback_args[3] self._transferFrom(borrowed_token, user, self, user_borrowed) log Repay(user, state_collateral_used, borrowed_from_state_collateral, user_collateral, user_collateral_used, borrowed_from_user_collateral, user_borrowed) return [borrowed_from_state_collateral + borrowed_from_user_collateral + user_borrowed, remaining_collateral]
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"name":"Deposit","inputs":[{"name":"user","type":"address","indexed":true},{"name":"user_collateral","type":"uint256","indexed":false},{"name":"user_borrowed","type":"uint256","indexed":false},{"name":"user_collateral_from_borrowed","type":"uint256","indexed":false},{"name":"debt","type":"uint256","indexed":false},{"name":"leverage_collateral","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"Repay","inputs":[{"name":"user","type":"address","indexed":true},{"name":"state_collateral_used","type":"uint256","indexed":false},{"name":"borrowed_from_state_collateral","type":"uint256","indexed":false},{"name":"user_collateral","type":"uint256","indexed":false},{"name":"user_collateral_used","type":"uint256","indexed":false},{"name":"borrowed_from_user_collateral","type":"uint256","indexed":false},{"name":"user_borrowed","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"stateMutability":"nonpayable","type":"constructor","inputs":[{"name":"_router","type":"address"},{"name":"_factories","type":"address[]"}],"outputs":[]},{"stateMutability":"view","type":"function","name":"max_borrowable","inputs":[{"name":"controller","type":"address"},{"name":"_user_collateral","type":"uint256"},{"name":"_leverage_collateral","type":"uint256"},{"name":"N","type":"uint256"},{"name":"p_avg","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"nonpayable","type":"function","name":"callback_deposit","inputs":[{"name":"user","type":"address"},{"name":"stablecoins","type":"uint256"},{"name":"user_collateral","type":"uint256"},{"name":"d_debt","type":"uint256"},{"name":"callback_args","type":"uint256[]"}],"outputs":[{"name":"","type":"uint256[2]"}]},{"stateMutability":"nonpayable","type":"function","name":"callback_deposit","inputs":[{"name":"user","type":"address"},{"name":"stablecoins","type":"uint256"},{"name":"user_collateral","type":"uint256"},{"name":"d_debt","type":"uint256"},{"name":"callback_args","type":"uint256[]"},{"name":"callback_bytes","type":"bytes"}],"outputs":[{"name":"","type":"uint256[2]"}]},{"stateMutability":"nonpayable","type":"function","name":"callback_repay","inputs":[{"name":"user","type":"address"},{"name":"stablecoins","type":"uint256"},{"name":"collateral","type":"uint256"},{"name":"debt","type":"uint256"},{"name":"callback_args","type":"uint256[]"}],"outputs":[{"name":"","type":"uint256[2]"}]},{"stateMutability":"nonpayable","type":"function","name":"callback_repay","inputs":[{"name":"user","type":"address"},{"name":"stablecoins","type":"uint256"},{"name":"collateral","type":"uint256"},{"name":"debt","type":"uint256"},{"name":"callback_args","type":"uint256[]"},{"name":"callback_bytes","type":"bytes"}],"outputs":[{"name":"","type":"uint256[2]"}]},{"stateMutability":"view","type":"function","name":"ROUTER","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"FACTORIES","inputs":[{"name":"arg0","type":"uint256"}],"outputs":[{"name":"","type":"address"}]}]
Contract Creation Code
6118115150346100e257602061190c5f395f518060a01c6100e257604052602061192c5f395f51600260208261190c015f395f51116100e25760208161190c015f395f515f81600281116100e257801561008357905b60208160051b602086010161190c015f395f518060a01c6100e2578160051b60800152600101818118610055575b50508060605250506040516118115260605160208160051b015f81601f0160051c600381116100e25780156100cc57905b8060051b6060015181600101556001018181186100b4575b505050506118116100e661000039611831610000f35b5f80fd5f3560e01c60026006820660011b61180501601e395f51565b6332fe7b268118610036573461180157602061181160403960206040f35b63ef67dc748118610d3a5760c436103417611801575f6102e0526107df56610d3a565b63d783f4d881186100885760243610341761180157600435600154811015611801576002015460405260206040f35b634cb0662c8118610d3a57610104361034176118015760a43560040161271081351161180157602081350180826102e03750505b6004358060a01c6118015761016052608435600401600a81351161180157803560208160051b018083610180375050505f546002146118015760025f556101805115611801575f60051b6101a00151600154811015611801576002015463e94b0dd2612a60526002610180511061180157600160051b6101a00151612a80526020612a606024612a7c845afa610154573d5f5f3e3d5ffd5b60203d1061180157612a60518060a01c61180157612aa052612aa0905051612a4052612a40513318156101e6576010612a60527f77726f6e6720636f6e74726f6c6c657200000000000000000000000000000000612a8052612a6050612a605180612a8001601f825f031636823750506308c379a0612a20526020612a4052601f19601f612a60510116604401612a3cfd5b612a4051632a943945612a80526020612a806004612a9c845afa61020c573d5f5f3e3d5ffd5b60203d1061180157612a80518060a01c61180157612ac052612ac0905051612a6052612a605163c6610657612aa0525f612ac0526020612aa06024612abc845afa610259573d5f5f3e3d5ffd5b60203d1061180157612aa0518060a01c61180157612ae052612ae0905051612a8052612a605163c6610657612ac0526001612ae0526020612ac06024612adc845afa6102a7573d5f5f3e3d5ffd5b60203d1061180157612ac0518060a01c61180157612b0052612b00905051612aa052612a805160405260206118116060396102e0611738565b612aa051604052612a40516060526102f6611738565b6003610180511061180157600260051b6101a00151612ac052612a80516040526101605160605230608052612ac05160a0526103306116bc565b60206118115f395f515a6102e0505f5f6102e0516103005f8686f19050905061035b573d5f5f3e3d5ffd5b612aa0516370a08231612b005230612b20526020612b006024612b1c845afa610386573d5f5f3e3d5ffd5b60203d1061180157612b00905051612ae052606435670de0b6b3a7640000810281670de0b6b3a7640000820418611801579050606435612ac051808201828110611801579050905080156118015780820490509050612ae0518082028115838383041417156118015790509050670de0b6b3a764000081049050612b0052612ae051612b00518082038281116118015790509050612b2052610160517ff943cf10ef4d1e3239f4716ddecdf546e8ba8ab0e41deafd9a71a99936827e45604435612b4052612ac051612b6052612b2051612b8052606435612ba052612b0051612bc05260a0612b40a25f612b4052612ae051612b60526040612b4060035f55f3610d3a565b63aac24ab78118610d3a5760a436103417611801576004358060a01c611801576102a0526102a051632a9439456102e05260206102e060046102fc845afa6104d5573d5f5f3e3d5ffd5b60203d10611801576102e0518060a01c61180157610320526103209050516102c0526102c05163c6610657610300525f610320526020610300602461031c845afa610522573d5f5f3e3d5ffd5b60203d1061180157610300518060a01c61180157610340526103409050516102e0526102c05163c6610657610320526001610340526020610320602461033c845afa610570573d5f5f3e3d5ffd5b60203d1061180157610320518060a01c6118015761036052610360905051610300526103005163313ce567610340526020610340600461035c845afa6105b8573d5f5f3e3d5ffd5b60203d10611801576103409050518060120360128111611801579050600a0a6103205260243561032051808202811583838304141715611801579050905061034052604435610320518082028115838383041417156118015790509050610360526102a0516040526103405161036051808201828110611801579050905060605260643560805261064a6103a0611091565b6103a051610380526102a051610160526106656103c0611388565b6103c0516103a05261034051670de0b6b3a7640000810281670de0b6b3a764000082041861180157905061038051801561180157806ec097ce7bc90715b34b9f1000000000049050670de0b6b3a7640000810281670de0b6b3a76400008204186118015790506103a05180156118015780820490509050608435801561180157806ec097ce7bc90715b34b9f10000000000490508082038281116118015790509050801561180157808204905090506103c0526103c0516103e78102816103e78204186118015790506103e8810490506102e0516370a082316103e0526102a0516104005260206103e060246103fc845afa610763573d5f5f3e3d5ffd5b60203d10611801576103e090505180828118828410021890509050610420526020610420f3610d3a565b63e62214fe81186107ac5760c436103417611801575f6102e0526100bc565b628ae1888118610d3a57610104361034176118015760a43560040161271081351161180157602081350180826102e03750505b6004358060a01c6118015761016052608435600401600a81351161180157803560208160051b018083610180375050505f546002146118015760025f556101805115611801575f60051b6101a00151600154811015611801576002015463e94b0dd2612a60526002610180511061180157600160051b6101a00151612a80526020612a606024612a7c845afa610877573d5f5f3e3d5ffd5b60203d1061180157612a60518060a01c61180157612aa052612aa0905051612a4052612a4051331815610909576010612a60527f77726f6e6720636f6e74726f6c6c657200000000000000000000000000000000612a8052612a6050612a605180612a8001601f825f031636823750506308c379a0612a20526020612a4052601f19601f612a60510116604401612a3cfd5b612a4051632a943945612a80526020612a806004612a9c845afa61092f573d5f5f3e3d5ffd5b60203d1061180157612a80518060a01c61180157612ac052612ac0905051612a6052612a605163c6610657612aa0525f612ac0526020612aa06024612abc845afa61097c573d5f5f3e3d5ffd5b60203d1061180157612aa0518060a01c61180157612ae052612ae0905051612a8052612a605163c6610657612ac0526001612ae0526020612ac06024612adc845afa6109ca573d5f5f3e3d5ffd5b60203d1061180157612ac0518060a01c61180157612b0052612b00905051612aa052612aa0516040526020611811606039610a03611738565b612a8051604052612a4051606052610a19611738565b612aa051604052612a4051606052610a2f611738565b612aa0516370a08231612ae05230612b00526020612ae06024612afc845afa610a5a573d5f5f3e3d5ffd5b60203d1061180157612ae0905051612ac0526003610180511061180157600260051b6101a00151612ae0525f612b2052612b208051602082012090506102e0516103002014610af357612aa0516040526101605160605230608052612ae05160a052610ac46116bc565b60206118115f395f515a6102e0505f5f6102e0516103005f8686f190509050610afc573d5f5f3e3d5ffd610afc565b612ae051611801575b612aa0516370a08231612b205230612b40526020612b206024612b3c845afa610b27573d5f5f3e3d5ffd5b60203d1061180157612b20905051612b0052604036612b2037612ae051612b6052612a80516370a08231612ba05230612bc0526020612ba06024612bbc845afa610b73573d5f5f3e3d5ffd5b60203d1061180157612ba0905051612b8052612ac051612b005110610bc357612ae051612b0051612ac05180820382811161180157905090508082038281116118015790509050612b6052610c66565b612ac051612b00518082038281116118015790509050612b2052612b2051670de0b6b3a7640000810281670de0b6b3a7640000820418611801579050612b2051612b6051808201828110611801579050905080156118015780820490509050612b80518082028115838383041417156118015790509050670de0b6b3a764000081049050612b4052612b8051612b40518082038281116118015790509050612b80525b6004610180511061180157600360051b6101a00151612ba052612a80516040526101605160605230608052612ba05160a052610ca06116bc565b610160517f90f6cb1ff81d6ff5a2d87aac325f5f8325db37278c5ddf4afb9dd121372c4afd612b2051612bc052612b4051612be052612ae051612c0052612b6051612c2052612b8051612c4052612ba051612c605260c0612bc0a2612b4051612b80518082018281106118015790509050612ba0518082018281106118015790509050612bc052612b0051612be0526040612bc060035f55f35b5f5ffd5b6040516060525f60805260405160801c15610d625760405160801c60605260806080525b60605160401c15610d805760605160401c6060526040608051016080525b60605160201c15610d9e5760605160201c6060526020608051016080525b60605160101c15610dbc5760605160101c6060526010608051016080525b60605160081c15610dda5760605160081c6060526008608051016080525b60605160041c15610df85760605160041c6060526004608051016080525b60605160021c15610e165760605160021c6060526002608051016080525b60605160011c15610e2b576001608051016080525b608051815250565b60a0518060ff1c6118015760c05260a0511561180157606060a051604052610e5c610100610d3e565b610100518060ff1c611801570360e05260c05160e051609f035f8112611801571b609f1c8060ff1c6118015760c0526d0139601a2efabe717e604cbb489460c0516c29508e458543d8aa4df2abee7860c051010260601d01610100526d02247f7a7b6594320649aa03aba160c051610100510260601d01610100526c8c3f38e95a6b1ff2ab1c3b343760c051610100510260601d03610100526d02384773bdf1ac5676facced609160c051610100510260601d03610100526cb9a025d814b29c212b8b1a07ce60c051610100510260601d0361010052780a09507084cc699bb0e71ea86a00000000000000000000000060c051610100510203610100526d0388eaa27412d5aca026815d636e60c0516c465772b2bbbb5f824b15207a3060c051010260601d01610120526d0df99ac502031bf953eff472fdcc60c051610120510260601d01610120526d13cdffb29d51d99322bdff5f221160c051610120510260601d01610120526d0a0f742023def783a307a986912e60c051610120510260601d01610120526d01920d8043ca89b5239253284e4260c051610120510260601d01610120526c0b7a86d7375468fac667a0a52760c051610120510260601d0161012052610120516101005105610140527d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642847d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b360e05102711340daa0d5f769dba1915cef59f0815a55066101405102010160ae1d815250565b60405160a05260a051632a94394560e052602060e0600460fc845afa6110b9573d5f5f3e3d5ffd5b60203d106118015760e0518060a01c611801576101205261012090505163f446c1d0610140526020610140600461015c845afa6110f8573d5f5f3e3d5ffd5b60203d106118015761014090505160c052600160c0510360c0516ec097ce7bc90715b34b9f10000000008102816ec097ce7bc90715b34b9f1000000000820418611801579050048060b5710100000000000000000000000000000000008210611168578160801c91508060401b90505b69010000000000000000008210611186578160401c91508060201b90505b6501000000000082106111a0578160201c91508060101b90505b630100000082106111b8578160101c91508060081b90505b620100008201810260121c9050808184040160011c9050808184040160011c9050808184040160011c9050808184040160011c9050808184040160011c9050808184040160011c9050808184040160011c9050808304808281188284100218905090509050905060e05260a051635449b9cb610120526020610120600461013c845afa611247573d5f5f3e3d5ffd5b60203d10611801576101209050516101005261010051606051608051801561180157808204905090506103e88181186103e883110218905080156118015780683635c9adc5dea000000490508082018281106118015790509050670de0b6b3a7640000818118670de0b6b3a7640000831002189050670de0b6b3a764000003670de0b6b3a7640000810281670de0b6b3a764000082041861180157905060e051608051808202811583838304141715611801579050905080156118015780820490509050610120526101205161014052600160318101905b806101605260805161016051186113355761137d565b60c0516101205160c05160018103818111611801579050808202811583838304141715611801579050905004610120526101205161014051016101405260010181811861131f575b505061014051815250565b61016051632a9439456101a05260206101a060046101bc845afa6113ae573d5f5f3e3d5ffd5b60203d10611801576101a0518060a01c611801576101e0526101e0905051610180526101805163f446c1d06101c05260206101c060046101dc845afa6113f6573d5f5f3e3d5ffd5b60203d10611801576101c09050516101a0526101a051670de0b6b3a7640000810281670de0b6b3a76400008204186118015790506101a051600181038181116118015790508015611801578082049050905060a0526114566101e0610e33565b6101e0516101c052610180516386fc88d3610200526020610200600461021c845afa611484573d5f5f3e3d5ffd5b60203d10611801576102009050516101e0526101805163a7db79a5610220526020610220600461023c845afa6114bc573d5f5f3e3d5ffd5b60203d1061180157610220905051670de0b6b3a7640000810281670de0b6b3a76400008204186118015790506101e0518015611801578082049050905060a052611507610260610e33565b61026051610200527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610200511361156557610200516101c051600181038181136118015790508082038281135f8312186118015790509050610200525b6101c051610200510560058101818112611801579050610200526101805163c16ef264610240526020610240600461025c845afa6115a5573d5f5f3e3d5ffd5b60203d106118015761024090505161022052610200516102205160018101818112611801579050808281188284130218905090506102005261018051632eb858e76102605261020051610280526020610260602461027c845afa61160b573d5f5f3e3d5ffd5b60203d1061180157610260905051610240525f610401905b806102605261020051600181038181136118015790506102005261022051610200511361164f576116b0565b61024051610280526101a05160018103818111611801579050610240516101a051808202811583838304141715611801579050905004610240526101e0516102405111156116a5576102805183525050506116ba565b600101818118611623575b5050610240518152505b565b60a05115611736576040516323b872dd60c05260605160e0526080516101005260a05161012052602060c0606460dc5f855af16116fb573d5f5f3e3d5ffd5b3d61171257803b156118015760016101405261172a565b60203d106118015760c0518060011c61180157610140525b61014090505115611801575b565b60405163dd62ed3e6080523060a05260605160c052602060806044609c845afa611764573d5f5f3e3d5ffd5b60203d106118015760809050516117ff5760405163095ea7b360e052606051610100527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61012052602060e0604460fc5f855af16117c4573d5f5f3e3d5ffd5b3d6117db57803b15611801576001610140526117f3565b60203d106118015760e0518060011c61180157610140525b61014090505115611801575b565b5f80fd00180d3a0059048b078d0d3a84191811810c1820a16576797065728300030a0015000000000000000000000000cf5540fffcdc3d510b18bfca6d2b9987b077255900000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000002000000000000000000000000ea6876dde9e3467564acbee1ed5bac88783205e0000000000000000000000000c9332fdcb1c491dcc683bae86fe3cb70360738bc
Deployed Bytecode
0x5f3560e01c60026006820660011b61180501601e395f51565b6332fe7b268118610036573461180157602061181160403960206040f35b63ef67dc748118610d3a5760c436103417611801575f6102e0526107df56610d3a565b63d783f4d881186100885760243610341761180157600435600154811015611801576002015460405260206040f35b634cb0662c8118610d3a57610104361034176118015760a43560040161271081351161180157602081350180826102e03750505b6004358060a01c6118015761016052608435600401600a81351161180157803560208160051b018083610180375050505f546002146118015760025f556101805115611801575f60051b6101a00151600154811015611801576002015463e94b0dd2612a60526002610180511061180157600160051b6101a00151612a80526020612a606024612a7c845afa610154573d5f5f3e3d5ffd5b60203d1061180157612a60518060a01c61180157612aa052612aa0905051612a4052612a40513318156101e6576010612a60527f77726f6e6720636f6e74726f6c6c657200000000000000000000000000000000612a8052612a6050612a605180612a8001601f825f031636823750506308c379a0612a20526020612a4052601f19601f612a60510116604401612a3cfd5b612a4051632a943945612a80526020612a806004612a9c845afa61020c573d5f5f3e3d5ffd5b60203d1061180157612a80518060a01c61180157612ac052612ac0905051612a6052612a605163c6610657612aa0525f612ac0526020612aa06024612abc845afa610259573d5f5f3e3d5ffd5b60203d1061180157612aa0518060a01c61180157612ae052612ae0905051612a8052612a605163c6610657612ac0526001612ae0526020612ac06024612adc845afa6102a7573d5f5f3e3d5ffd5b60203d1061180157612ac0518060a01c61180157612b0052612b00905051612aa052612a805160405260206118116060396102e0611738565b612aa051604052612a40516060526102f6611738565b6003610180511061180157600260051b6101a00151612ac052612a80516040526101605160605230608052612ac05160a0526103306116bc565b60206118115f395f515a6102e0505f5f6102e0516103005f8686f19050905061035b573d5f5f3e3d5ffd5b612aa0516370a08231612b005230612b20526020612b006024612b1c845afa610386573d5f5f3e3d5ffd5b60203d1061180157612b00905051612ae052606435670de0b6b3a7640000810281670de0b6b3a7640000820418611801579050606435612ac051808201828110611801579050905080156118015780820490509050612ae0518082028115838383041417156118015790509050670de0b6b3a764000081049050612b0052612ae051612b00518082038281116118015790509050612b2052610160517ff943cf10ef4d1e3239f4716ddecdf546e8ba8ab0e41deafd9a71a99936827e45604435612b4052612ac051612b6052612b2051612b8052606435612ba052612b0051612bc05260a0612b40a25f612b4052612ae051612b60526040612b4060035f55f3610d3a565b63aac24ab78118610d3a5760a436103417611801576004358060a01c611801576102a0526102a051632a9439456102e05260206102e060046102fc845afa6104d5573d5f5f3e3d5ffd5b60203d10611801576102e0518060a01c61180157610320526103209050516102c0526102c05163c6610657610300525f610320526020610300602461031c845afa610522573d5f5f3e3d5ffd5b60203d1061180157610300518060a01c61180157610340526103409050516102e0526102c05163c6610657610320526001610340526020610320602461033c845afa610570573d5f5f3e3d5ffd5b60203d1061180157610320518060a01c6118015761036052610360905051610300526103005163313ce567610340526020610340600461035c845afa6105b8573d5f5f3e3d5ffd5b60203d10611801576103409050518060120360128111611801579050600a0a6103205260243561032051808202811583838304141715611801579050905061034052604435610320518082028115838383041417156118015790509050610360526102a0516040526103405161036051808201828110611801579050905060605260643560805261064a6103a0611091565b6103a051610380526102a051610160526106656103c0611388565b6103c0516103a05261034051670de0b6b3a7640000810281670de0b6b3a764000082041861180157905061038051801561180157806ec097ce7bc90715b34b9f1000000000049050670de0b6b3a7640000810281670de0b6b3a76400008204186118015790506103a05180156118015780820490509050608435801561180157806ec097ce7bc90715b34b9f10000000000490508082038281116118015790509050801561180157808204905090506103c0526103c0516103e78102816103e78204186118015790506103e8810490506102e0516370a082316103e0526102a0516104005260206103e060246103fc845afa610763573d5f5f3e3d5ffd5b60203d10611801576103e090505180828118828410021890509050610420526020610420f3610d3a565b63e62214fe81186107ac5760c436103417611801575f6102e0526100bc565b628ae1888118610d3a57610104361034176118015760a43560040161271081351161180157602081350180826102e03750505b6004358060a01c6118015761016052608435600401600a81351161180157803560208160051b018083610180375050505f546002146118015760025f556101805115611801575f60051b6101a00151600154811015611801576002015463e94b0dd2612a60526002610180511061180157600160051b6101a00151612a80526020612a606024612a7c845afa610877573d5f5f3e3d5ffd5b60203d1061180157612a60518060a01c61180157612aa052612aa0905051612a4052612a4051331815610909576010612a60527f77726f6e6720636f6e74726f6c6c657200000000000000000000000000000000612a8052612a6050612a605180612a8001601f825f031636823750506308c379a0612a20526020612a4052601f19601f612a60510116604401612a3cfd5b612a4051632a943945612a80526020612a806004612a9c845afa61092f573d5f5f3e3d5ffd5b60203d1061180157612a80518060a01c61180157612ac052612ac0905051612a6052612a605163c6610657612aa0525f612ac0526020612aa06024612abc845afa61097c573d5f5f3e3d5ffd5b60203d1061180157612aa0518060a01c61180157612ae052612ae0905051612a8052612a605163c6610657612ac0526001612ae0526020612ac06024612adc845afa6109ca573d5f5f3e3d5ffd5b60203d1061180157612ac0518060a01c61180157612b0052612b00905051612aa052612aa0516040526020611811606039610a03611738565b612a8051604052612a4051606052610a19611738565b612aa051604052612a4051606052610a2f611738565b612aa0516370a08231612ae05230612b00526020612ae06024612afc845afa610a5a573d5f5f3e3d5ffd5b60203d1061180157612ae0905051612ac0526003610180511061180157600260051b6101a00151612ae0525f612b2052612b208051602082012090506102e0516103002014610af357612aa0516040526101605160605230608052612ae05160a052610ac46116bc565b60206118115f395f515a6102e0505f5f6102e0516103005f8686f190509050610afc573d5f5f3e3d5ffd610afc565b612ae051611801575b612aa0516370a08231612b205230612b40526020612b206024612b3c845afa610b27573d5f5f3e3d5ffd5b60203d1061180157612b20905051612b0052604036612b2037612ae051612b6052612a80516370a08231612ba05230612bc0526020612ba06024612bbc845afa610b73573d5f5f3e3d5ffd5b60203d1061180157612ba0905051612b8052612ac051612b005110610bc357612ae051612b0051612ac05180820382811161180157905090508082038281116118015790509050612b6052610c66565b612ac051612b00518082038281116118015790509050612b2052612b2051670de0b6b3a7640000810281670de0b6b3a7640000820418611801579050612b2051612b6051808201828110611801579050905080156118015780820490509050612b80518082028115838383041417156118015790509050670de0b6b3a764000081049050612b4052612b8051612b40518082038281116118015790509050612b80525b6004610180511061180157600360051b6101a00151612ba052612a80516040526101605160605230608052612ba05160a052610ca06116bc565b610160517f90f6cb1ff81d6ff5a2d87aac325f5f8325db37278c5ddf4afb9dd121372c4afd612b2051612bc052612b4051612be052612ae051612c0052612b6051612c2052612b8051612c4052612ba051612c605260c0612bc0a2612b4051612b80518082018281106118015790509050612ba0518082018281106118015790509050612bc052612b0051612be0526040612bc060035f55f35b5f5ffd5b6040516060525f60805260405160801c15610d625760405160801c60605260806080525b60605160401c15610d805760605160401c6060526040608051016080525b60605160201c15610d9e5760605160201c6060526020608051016080525b60605160101c15610dbc5760605160101c6060526010608051016080525b60605160081c15610dda5760605160081c6060526008608051016080525b60605160041c15610df85760605160041c6060526004608051016080525b60605160021c15610e165760605160021c6060526002608051016080525b60605160011c15610e2b576001608051016080525b608051815250565b60a0518060ff1c6118015760c05260a0511561180157606060a051604052610e5c610100610d3e565b610100518060ff1c611801570360e05260c05160e051609f035f8112611801571b609f1c8060ff1c6118015760c0526d0139601a2efabe717e604cbb489460c0516c29508e458543d8aa4df2abee7860c051010260601d01610100526d02247f7a7b6594320649aa03aba160c051610100510260601d01610100526c8c3f38e95a6b1ff2ab1c3b343760c051610100510260601d03610100526d02384773bdf1ac5676facced609160c051610100510260601d03610100526cb9a025d814b29c212b8b1a07ce60c051610100510260601d0361010052780a09507084cc699bb0e71ea86a00000000000000000000000060c051610100510203610100526d0388eaa27412d5aca026815d636e60c0516c465772b2bbbb5f824b15207a3060c051010260601d01610120526d0df99ac502031bf953eff472fdcc60c051610120510260601d01610120526d13cdffb29d51d99322bdff5f221160c051610120510260601d01610120526d0a0f742023def783a307a986912e60c051610120510260601d01610120526d01920d8043ca89b5239253284e4260c051610120510260601d01610120526c0b7a86d7375468fac667a0a52760c051610120510260601d0161012052610120516101005105610140527d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642847d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b360e05102711340daa0d5f769dba1915cef59f0815a55066101405102010160ae1d815250565b60405160a05260a051632a94394560e052602060e0600460fc845afa6110b9573d5f5f3e3d5ffd5b60203d106118015760e0518060a01c611801576101205261012090505163f446c1d0610140526020610140600461015c845afa6110f8573d5f5f3e3d5ffd5b60203d106118015761014090505160c052600160c0510360c0516ec097ce7bc90715b34b9f10000000008102816ec097ce7bc90715b34b9f1000000000820418611801579050048060b5710100000000000000000000000000000000008210611168578160801c91508060401b90505b69010000000000000000008210611186578160401c91508060201b90505b6501000000000082106111a0578160201c91508060101b90505b630100000082106111b8578160101c91508060081b90505b620100008201810260121c9050808184040160011c9050808184040160011c9050808184040160011c9050808184040160011c9050808184040160011c9050808184040160011c9050808184040160011c9050808304808281188284100218905090509050905060e05260a051635449b9cb610120526020610120600461013c845afa611247573d5f5f3e3d5ffd5b60203d10611801576101209050516101005261010051606051608051801561180157808204905090506103e88181186103e883110218905080156118015780683635c9adc5dea000000490508082018281106118015790509050670de0b6b3a7640000818118670de0b6b3a7640000831002189050670de0b6b3a764000003670de0b6b3a7640000810281670de0b6b3a764000082041861180157905060e051608051808202811583838304141715611801579050905080156118015780820490509050610120526101205161014052600160318101905b806101605260805161016051186113355761137d565b60c0516101205160c05160018103818111611801579050808202811583838304141715611801579050905004610120526101205161014051016101405260010181811861131f575b505061014051815250565b61016051632a9439456101a05260206101a060046101bc845afa6113ae573d5f5f3e3d5ffd5b60203d10611801576101a0518060a01c611801576101e0526101e0905051610180526101805163f446c1d06101c05260206101c060046101dc845afa6113f6573d5f5f3e3d5ffd5b60203d10611801576101c09050516101a0526101a051670de0b6b3a7640000810281670de0b6b3a76400008204186118015790506101a051600181038181116118015790508015611801578082049050905060a0526114566101e0610e33565b6101e0516101c052610180516386fc88d3610200526020610200600461021c845afa611484573d5f5f3e3d5ffd5b60203d10611801576102009050516101e0526101805163a7db79a5610220526020610220600461023c845afa6114bc573d5f5f3e3d5ffd5b60203d1061180157610220905051670de0b6b3a7640000810281670de0b6b3a76400008204186118015790506101e0518015611801578082049050905060a052611507610260610e33565b61026051610200527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610200511361156557610200516101c051600181038181136118015790508082038281135f8312186118015790509050610200525b6101c051610200510560058101818112611801579050610200526101805163c16ef264610240526020610240600461025c845afa6115a5573d5f5f3e3d5ffd5b60203d106118015761024090505161022052610200516102205160018101818112611801579050808281188284130218905090506102005261018051632eb858e76102605261020051610280526020610260602461027c845afa61160b573d5f5f3e3d5ffd5b60203d1061180157610260905051610240525f610401905b806102605261020051600181038181136118015790506102005261022051610200511361164f576116b0565b61024051610280526101a05160018103818111611801579050610240516101a051808202811583838304141715611801579050905004610240526101e0516102405111156116a5576102805183525050506116ba565b600101818118611623575b5050610240518152505b565b60a05115611736576040516323b872dd60c05260605160e0526080516101005260a05161012052602060c0606460dc5f855af16116fb573d5f5f3e3d5ffd5b3d61171257803b156118015760016101405261172a565b60203d106118015760c0518060011c61180157610140525b61014090505115611801575b565b60405163dd62ed3e6080523060a05260605160c052602060806044609c845afa611764573d5f5f3e3d5ffd5b60203d106118015760809050516117ff5760405163095ea7b360e052606051610100527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61012052602060e0604460fc5f855af16117c4573d5f5f3e3d5ffd5b3d6117db57803b15611801576001610140526117f3565b60203d106118015760e0518060011c61180157610140525b61014090505115611801575b565b5f80fd00180d3a0059048b078d0d3a000000000000000000000000cf5540fffcdc3d510b18bfca6d2b9987b0772559
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000cf5540fffcdc3d510b18bfca6d2b9987b077255900000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000002000000000000000000000000ea6876dde9e3467564acbee1ed5bac88783205e0000000000000000000000000c9332fdcb1c491dcc683bae86fe3cb70360738bc
-----Decoded View---------------
Arg [0] : _router (address): 0xCf5540fFFCdC3d510B18bFcA6d2b9987b0772559
Arg [1] : _factories (address[]): 0xeA6876DDE9e3467564acBeE1Ed5bac88783205E0,0xC9332fdCB1C491Dcc683bAe86Fe3cb70360738BC
-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 000000000000000000000000cf5540fffcdc3d510b18bfca6d2b9987b0772559
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [3] : 000000000000000000000000ea6876dde9e3467564acbee1ed5bac88783205e0
Arg [4] : 000000000000000000000000c9332fdcb1c491dcc683bae86fe3cb70360738bc
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
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.