Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 22 from a total of 22 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Rug_debt_ceiling | 21144155 | 18 days ago | IN | 0 ETH | 0.00106047 | ||||
Rug_debt_ceiling | 20899027 | 52 days ago | IN | 0 ETH | 0.0002527 | ||||
Rug_debt_ceiling | 20832706 | 62 days ago | IN | 0 ETH | 0.00051944 | ||||
Rug_debt_ceiling | 20504923 | 107 days ago | IN | 0 ETH | 0.0000421 | ||||
Rug_debt_ceiling | 20179253 | 153 days ago | IN | 0 ETH | 0.00010436 | ||||
Rug_debt_ceiling | 19347503 | 269 days ago | IN | 0 ETH | 0.00178843 | ||||
Rug_debt_ceiling | 19337355 | 271 days ago | IN | 0 ETH | 0.00215718 | ||||
Rug_debt_ceiling | 19337342 | 271 days ago | IN | 0 ETH | 0.00215258 | ||||
Rug_debt_ceiling | 18750919 | 353 days ago | IN | 0 ETH | 0.00154599 | ||||
Rug_debt_ceiling | 18691176 | 361 days ago | IN | 0 ETH | 0.00130695 | ||||
Rug_debt_ceiling | 18633480 | 369 days ago | IN | 0 ETH | 0.00114567 | ||||
Rug_debt_ceiling | 18323659 | 413 days ago | IN | 0 ETH | 0.00025718 | ||||
Rug_debt_ceiling | 18320184 | 413 days ago | IN | 0 ETH | 0.00043151 | ||||
Rug_debt_ceiling | 18198417 | 430 days ago | IN | 0 ETH | 0.00036733 | ||||
Set_admin | 17258067 | 562 days ago | IN | 0 ETH | 0.00116399 | ||||
Add_market | 17258064 | 562 days ago | IN | 0 ETH | 0.40248047 | ||||
Set_debt_ceiling | 17258052 | 562 days ago | IN | 0 ETH | 0.00435659 | ||||
Set_debt_ceiling | 17258046 | 562 days ago | IN | 0 ETH | 0.00421353 | ||||
Set_debt_ceiling | 17258040 | 562 days ago | IN | 0 ETH | 0.00427891 | ||||
Set_debt_ceiling | 17258034 | 562 days ago | IN | 0 ETH | 0.00490273 | ||||
Set_implementati... | 17257965 | 562 days ago | IN | 0 ETH | 0.00388897 | ||||
0x60206118 | 17257955 | 562 days ago | IN | 0 ETH | 0.05049017 |
Latest 12 internal transactions
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
18001227 | 458 days ago | Contract Creation | 0 ETH | |||
18001227 | 458 days ago | Contract Creation | 0 ETH | |||
18001224 | 458 days ago | Contract Creation | 0 ETH | |||
18001224 | 458 days ago | Contract Creation | 0 ETH | |||
17562530 | 519 days ago | Contract Creation | 0 ETH | |||
17562530 | 519 days ago | Contract Creation | 0 ETH | |||
17557475 | 520 days ago | Contract Creation | 0 ETH | |||
17557475 | 520 days ago | Contract Creation | 0 ETH | |||
17432225 | 538 days ago | Contract Creation | 0 ETH | |||
17432225 | 538 days ago | Contract Creation | 0 ETH | |||
17258064 | 562 days ago | Contract Creation | 0 ETH | |||
17258064 | 562 days ago | Contract Creation | 0 ETH |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
crvUSD ControllerFactory
Compiler Version
vyper:0.3.7
Contract Source Code (Vyper language format)
# @version 0.3.7 """ @title crvUSD ControllerFactory @author Curve.Fi @license Copyright (c) Curve.Fi, 2020-2023 - all rights reserved """ interface ERC20: def mint(_to: address, _value: uint256) -> bool: nonpayable def burnFrom(_to: address, _value: uint256) -> bool: nonpayable def balanceOf(_user: address) -> uint256: view def decimals() -> uint256: view interface PriceOracle: def price() -> uint256: view def price_w() -> uint256: nonpayable interface AMM: def set_admin(_admin: address): nonpayable interface Controller: def total_debt() -> uint256: view def minted() -> uint256: view def redeemed() -> uint256: view def collect_fees() -> uint256: nonpayable interface MonetaryPolicy: def rate_write() -> uint256: nonpayable event AddMarket: collateral: indexed(address) controller: address amm: address monetary_policy: address ix: uint256 event SetDebtCeiling: addr: indexed(address) debt_ceiling: uint256 event MintForMarket: addr: indexed(address) amount: uint256 event RemoveFromMarket: addr: indexed(address) amount: uint256 event SetImplementations: amm: address controller: address event SetAdmin: admin: address event SetFeeReceiver: fee_receiver: address MAX_CONTROLLERS: constant(uint256) = 50000 STABLECOIN: immutable(ERC20) controllers: public(address[MAX_CONTROLLERS]) amms: public(address[MAX_CONTROLLERS]) admin: public(address) fee_receiver: public(address) controller_implementation: public(address) amm_implementation: public(address) n_collaterals: public(uint256) collaterals: public(address[MAX_CONTROLLERS]) collaterals_index: public(HashMap[address, uint256[1000]]) debt_ceiling: public(HashMap[address, uint256]) debt_ceiling_residual: public(HashMap[address, uint256]) # Limits MIN_A: constant(uint256) = 2 MAX_A: constant(uint256) = 10000 MIN_FEE: constant(uint256) = 10**6 # 1e-12, still needs to be above 0 MAX_FEE: constant(uint256) = 10**17 # 10% MAX_ADMIN_FEE: constant(uint256) = 10**18 # 100% MAX_LOAN_DISCOUNT: constant(uint256) = 5 * 10**17 MIN_LIQUIDATION_DISCOUNT: constant(uint256) = 10**16 WETH: public(immutable(address)) @external def __init__(stablecoin: ERC20, admin: address, fee_receiver: address, weth: address): """ @notice Factory which creates both controllers and AMMs from blueprints @param stablecoin Stablecoin address @param admin Admin of the factory (ideally DAO) @param fee_receiver Receiver of interest and admin fees @param weth Address of WETH contract address """ STABLECOIN = stablecoin self.admin = admin self.fee_receiver = fee_receiver WETH = weth @internal @pure def ln_int(_x: uint256) -> int256: """ @notice Logarithm ln() function based on log2. Not very gas-efficient but brief """ # adapted from: https://medium.com/coinmonks/9aef8515136e # and vyper log implementation # This can be much more optimal but that's not important here x: uint256 = _x res: uint256 = 0 for i in range(8): t: uint256 = 2**(7 - i) p: uint256 = 2**t if x >= p * 10**18: x /= p res += t * 10**18 d: uint256 = 10**18 for i in range(59): # 18 decimals: math.log2(10**10) == 59.7 if (x >= 2 * 10**18): res += d x /= 2 x = x * x / 10**18 d /= 2 # Now res = log2(x) # ln(x) = log2(x) / log2(e) return convert(res * 10**18 / 1442695040888963328, int256) ## End of low-level math @external @view def stablecoin() -> ERC20: return STABLECOIN @internal def _set_debt_ceiling(addr: address, debt_ceiling: uint256, update: bool): """ @notice Set debt ceiling for a market @param addr Controller address @param debt_ceiling Value for stablecoin debt ceiling @param update Whether to actually update the debt ceiling (False is used for burning the residuals) """ old_debt_residual: uint256 = self.debt_ceiling_residual[addr] if debt_ceiling > old_debt_residual: to_mint: uint256 = debt_ceiling - old_debt_residual STABLECOIN.mint(addr, to_mint) self.debt_ceiling_residual[addr] = debt_ceiling log MintForMarket(addr, to_mint) if debt_ceiling < old_debt_residual: diff: uint256 = min(old_debt_residual - debt_ceiling, STABLECOIN.balanceOf(addr)) STABLECOIN.burnFrom(addr, diff) self.debt_ceiling_residual[addr] = old_debt_residual - diff log RemoveFromMarket(addr, diff) if update: self.debt_ceiling[addr] = debt_ceiling log SetDebtCeiling(addr, debt_ceiling) @external @nonreentrant('lock') def add_market(token: address, A: uint256, fee: uint256, admin_fee: uint256, _price_oracle_contract: address, monetary_policy: address, loan_discount: uint256, liquidation_discount: uint256, debt_ceiling: uint256) -> address[2]: """ @notice Add a new market, creating an AMM and a Controller from a blueprint @param token Collateral token address @param A Amplification coefficient; one band size is 1/A @param fee AMM fee in the market's AMM @param admin_fee AMM admin fee @param _price_oracle_contract Address of price oracle contract for this market @param monetary_policy Monetary policy for this market @param loan_discount Loan discount: allowed to borrow only up to x_down * (1 - loan_discount) @param liquidation_discount Discount which defines a bad liquidation threshold @param debt_ceiling Debt ceiling for this market @return (Controller, AMM) """ assert msg.sender == self.admin, "Only admin" assert A >= MIN_A and A <= MAX_A, "Wrong A" assert fee <= MAX_FEE, "Fee too high" assert fee >= MIN_FEE, "Fee too low" assert admin_fee < MAX_ADMIN_FEE, "Admin fee too high" assert liquidation_discount >= MIN_LIQUIDATION_DISCOUNT, "Liquidation discount too low" assert loan_discount <= MAX_LOAN_DISCOUNT, "Loan discount too high" assert loan_discount > liquidation_discount, "need loan_discount>liquidation_discount" MonetaryPolicy(monetary_policy).rate_write() # Test that MonetaryPolicy has correct ABI p: uint256 = PriceOracle(_price_oracle_contract).price() # This also validates price oracle ABI assert p > 0 assert PriceOracle(_price_oracle_contract).price_w() == p A_ratio: uint256 = 10**18 * A / (A - 1) amm: address = create_from_blueprint( self.amm_implementation, STABLECOIN.address, 10**(18 - STABLECOIN.decimals()), token, 10**(18 - ERC20(token).decimals()), # <- This validates ERC20 ABI A, isqrt(A_ratio * 10**18), self.ln_int(A_ratio), p, fee, admin_fee, _price_oracle_contract, code_offset=3) controller: address = create_from_blueprint( self.controller_implementation, token, monetary_policy, loan_discount, liquidation_discount, amm, code_offset=3) AMM(amm).set_admin(controller) self._set_debt_ceiling(controller, debt_ceiling, True) N: uint256 = self.n_collaterals self.collaterals[N] = token for i in range(1000): if self.collaterals_index[token][i] == 0: self.collaterals_index[token][i] = 2**128 + N break assert i != 999, "Too many controllers for same collateral" self.controllers[N] = controller self.amms[N] = amm self.n_collaterals = N + 1 log AddMarket(token, controller, amm, monetary_policy, N) return [controller, amm] @external @view def total_debt() -> uint256: """ @notice Sum of all debts across controllers """ total: uint256 = 0 n_collaterals: uint256 = self.n_collaterals for i in range(MAX_CONTROLLERS): if i == n_collaterals: break total += Controller(self.controllers[i]).total_debt() return total @external @view def get_controller(collateral: address, i: uint256 = 0) -> address: """ @notice Get controller address for collateral @param collateral Address of collateral token @param i Iterate over several controllers for collateral if needed """ return self.controllers[self.collaterals_index[collateral][i] - 2**128] @external @view def get_amm(collateral: address, i: uint256 = 0) -> address: """ @notice Get AMM address for collateral @param collateral Address of collateral token @param i Iterate over several amms for collateral if needed """ return self.amms[self.collaterals_index[collateral][i] - 2**128] @external @nonreentrant('lock') def set_implementations(controller: address, amm: address): """ @notice Set new implementations (blueprints) for controller and amm. Doesn't change existing ones @param controller Address of the controller blueprint @param amm Address of the AMM blueprint """ assert msg.sender == self.admin assert controller != empty(address) assert amm != empty(address) self.controller_implementation = controller self.amm_implementation = amm log SetImplementations(amm, controller) @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 @nonreentrant('lock') def set_fee_receiver(fee_receiver: address): """ @notice Set fee receiver who earns interest (DAO) @param fee_receiver Address of the receiver """ assert msg.sender == self.admin assert fee_receiver != empty(address) self.fee_receiver = fee_receiver log SetFeeReceiver(fee_receiver) @external @nonreentrant('lock') def set_debt_ceiling(_to: address, debt_ceiling: uint256): """ @notice Set debt ceiling of the address - mint the token amount given for it @param _to Address to allow borrowing for @param debt_ceiling Maximum allowed to be allowed to mint for it """ assert msg.sender == self.admin self._set_debt_ceiling(_to, debt_ceiling, True) @external @nonreentrant('lock') def rug_debt_ceiling(_to: address): """ @notice Remove stablecoins above the debt ceiling from the address and burn them @param _to Address to remove stablecoins from """ self._set_debt_ceiling(_to, self.debt_ceiling[_to], False) @external @nonreentrant('lock') def collect_fees_above_ceiling(_to: address): """ @notice If the receiver is the controller - increase the debt ceiling if it's not enough to claim admin fees and claim them @param _to Address of the controller """ assert msg.sender == self.admin old_debt_residual: uint256 = self.debt_ceiling_residual[_to] assert self.debt_ceiling[_to] > 0 or old_debt_residual > 0 admin_fees: uint256 = Controller(_to).total_debt() + Controller(_to).redeemed() - Controller(_to).minted() b: uint256 = STABLECOIN.balanceOf(_to) if admin_fees > b: to_mint: uint256 = admin_fees - b STABLECOIN.mint(_to, to_mint) self.debt_ceiling_residual[_to] = old_debt_residual + to_mint Controller(_to).collect_fees()
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"name":"AddMarket","inputs":[{"name":"collateral","type":"address","indexed":true},{"name":"controller","type":"address","indexed":false},{"name":"amm","type":"address","indexed":false},{"name":"monetary_policy","type":"address","indexed":false},{"name":"ix","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"SetDebtCeiling","inputs":[{"name":"addr","type":"address","indexed":true},{"name":"debt_ceiling","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"MintForMarket","inputs":[{"name":"addr","type":"address","indexed":true},{"name":"amount","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"RemoveFromMarket","inputs":[{"name":"addr","type":"address","indexed":true},{"name":"amount","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"SetImplementations","inputs":[{"name":"amm","type":"address","indexed":false},{"name":"controller","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"name":"SetAdmin","inputs":[{"name":"admin","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"name":"SetFeeReceiver","inputs":[{"name":"fee_receiver","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"stateMutability":"nonpayable","type":"constructor","inputs":[{"name":"stablecoin","type":"address"},{"name":"admin","type":"address"},{"name":"fee_receiver","type":"address"},{"name":"weth","type":"address"}],"outputs":[]},{"stateMutability":"view","type":"function","name":"stablecoin","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"nonpayable","type":"function","name":"add_market","inputs":[{"name":"token","type":"address"},{"name":"A","type":"uint256"},{"name":"fee","type":"uint256"},{"name":"admin_fee","type":"uint256"},{"name":"_price_oracle_contract","type":"address"},{"name":"monetary_policy","type":"address"},{"name":"loan_discount","type":"uint256"},{"name":"liquidation_discount","type":"uint256"},{"name":"debt_ceiling","type":"uint256"}],"outputs":[{"name":"","type":"address[2]"}]},{"stateMutability":"view","type":"function","name":"total_debt","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"get_controller","inputs":[{"name":"collateral","type":"address"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"get_controller","inputs":[{"name":"collateral","type":"address"},{"name":"i","type":"uint256"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"get_amm","inputs":[{"name":"collateral","type":"address"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"get_amm","inputs":[{"name":"collateral","type":"address"},{"name":"i","type":"uint256"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"nonpayable","type":"function","name":"set_implementations","inputs":[{"name":"controller","type":"address"},{"name":"amm","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_admin","inputs":[{"name":"admin","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_fee_receiver","inputs":[{"name":"fee_receiver","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_debt_ceiling","inputs":[{"name":"_to","type":"address"},{"name":"debt_ceiling","type":"uint256"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"rug_debt_ceiling","inputs":[{"name":"_to","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"collect_fees_above_ceiling","inputs":[{"name":"_to","type":"address"}],"outputs":[]},{"stateMutability":"view","type":"function","name":"controllers","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":"admin","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"fee_receiver","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"controller_implementation","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"amm_implementation","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"n_collaterals","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"collaterals","inputs":[{"name":"arg0","type":"uint256"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"collaterals_index","inputs":[{"name":"arg0","type":"address"},{"name":"arg1","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"debt_ceiling","inputs":[{"name":"arg0","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"debt_ceiling_residual","inputs":[{"name":"arg0","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"WETH","inputs":[],"outputs":[{"name":"","type":"address"}]}]
Contract Creation Code
60206118246000396000518060a01c61181f5760405260206118446000396000518060a01c61181f5760605260206118646000396000518060a01c61181f5760805260206118846000396000518060a01c61181f5760a0523461181f5760405161179252606051620186a155608051620186a25560a0516117b25261179261008c610000396117d2610000f36003361161000c5761139d565b60003560e01c346117805763e9cbd822811861003e576004361061178057602061179260003960005160405260206040f35b638a82f1fe8118610afe576101243610611780576004358060a01c61178057610160526084358060a01c611780576101805260a4358060a01c611780576101a052600054600214611780576002600055620186a15433181561010057600a6101c0527f4f6e6c792061646d696e000000000000000000000000000000000000000000006101e0526101c0506101c051806101e001601f826000031636823750506308c379a06101805260206101a052601f19601f6101c051011660440161019cfd5b6002602435101561011257600061011b565b61271060243511155b6101855760076101c0527f57726f6e672041000000000000000000000000000000000000000000000000006101e0526101c0506101c051806101e001601f826000031636823750506308c379a06101805260206101a052601f19601f6101c051011660440161019cfd5b67016345785d8a000060443511156101fd57600c6101c0527f46656520746f6f206869676800000000000000000000000000000000000000006101e0526101c0506101c051806101e001601f826000031636823750506308c379a06101805260206101a052601f19601f6101c051011660440161019cfd5b620f4240604435101561027057600b6101c0527f46656520746f6f206c6f770000000000000000000000000000000000000000006101e0526101c0506101c051806101e001601f826000031636823750506308c379a06101805260206101a052601f19601f6101c051011660440161019cfd5b670de0b6b3a763ffff60643511156102e85760126101c0527f41646d696e2066656520746f6f206869676800000000000000000000000000006101e0526101c0506101c051806101e001601f826000031636823750506308c379a06101805260206101a052601f19601f6101c051011660440161019cfd5b662386f26fc1000060e435101561035f57601c6101c0527f4c69717569646174696f6e20646973636f756e7420746f6f206c6f77000000006101e0526101c0506101c051806101e001601f826000031636823750506308c379a06101805260206101a052601f19601f6101c051011660440161019cfd5b6706f05b59d3b2000060c43511156103d75760166101c0527f4c6f616e20646973636f756e7420746f6f2068696768000000000000000000006101e0526101c0506101c051806101e001601f826000031636823750506308c379a06101805260206101a052601f19601f6101c051011660440161019cfd5b60e43560c4351161046d5760276101c0527f6e656564206c6f616e5f646973636f756e743e6c69717569646174696f6e5f646101e0527f6973636f756e7400000000000000000000000000000000000000000000000000610200526101c0506101c051806101e001601f826000031636823750506308c379a06101805260206101a052601f19601f6101c051011660440161019cfd5b6101a05163e91f2f4c6101c05260206101c060046101dc6000855af1610498573d600060003e3d6000fd5b60203d10611780576101c050506101805163a035b1fe6101e05260206101e060046101fc845afa6104ce573d600060003e3d6000fd5b60203d10611780576101e09050516101c0526101c05115611780576101c0516101805163ceb7f7596101e05260206101e060046101fc6000855af1610518573d600060003e3d6000fd5b60203d10611780576101e09050511861178057602435670de0b6b3a7640000810281670de0b6b3a764000082041861178057905060243560018103818111611780579050801561178057808204905090506101e052620186a45460206117926000396000516102c0526102c05161042052602061179260003960005163313ce567610220526020610220600461023c845afa6105b9573d600060003e3d6000fd5b60203d10611780576102209050518060120360128111611780579050604d81116117805780600a0a90506102e0526102e05161044052610160516103005261030051610460526101605163313ce567610260526020610260600461027c845afa610628573d600060003e3d6000fd5b60203d10611780576102609050518060120360128111611780579050604d81116117805780600a0a905061032052610320516104805260243561034052610340516104a0526101e051670de0b6b3a7640000810281670de0b6b3a76400008204186117805790508060b57101000000000000000000000000000000000082106106b8578160801c91508060401b90505b690100000000000000000082106106d6578160401c91508060201b90505b6501000000000082106106f0578160201c91508060101b90505b63010000008210610708578160101c91508060081b90505b620100008201810260121c9050808184040160011c9050808184040160011c9050808184040160011c9050808184040160011c9050808184040160011c9050808184040160011c9050808184040160011c9050808304808281188284100218905090509050905061036052610360516104c0526101e05160405261078d6102a06113a3565b6102a05161038052610380516104e0526101c0516103a0526103a051610500526044356103c0526103c051610520526064356103e0526103e05161054052610180516104005261040051610560526101606003823b0359600182126117805781600382863c81810183818561042060045afa5050828201816000f0801561178057905090509050905061020052620186a3546101605161024052610240516102e0526101a05161026052610260516103005260c43561028052610280516103205260e4356102a0526102a05161034052610200516102c0526102c0516103605260a06003823b0359600182126117805781600382863c8181018381856102e060045afa5050828201816000f08015611780579050905090509050610220526102005163e9333fab610240526102205161026052803b15611780576000610240602461025c6000855af16108e5573d600060003e3d6000fd5b5061022051604052610104356060526001608052610901611537565b620186a55461024052610160516102405161c34f811161178057620186a6015560006103e8905b8061026052620249f6610160516020526000526040600020610260516103e781116117805781019050546109b2576102405180700100000000000000000000000000000000017001000000000000000000000000000000008110611780579050620249f6610160516020526000526040600020610260516103e78111611780578101905055610a54565b6103e76102605118610a49576028610280527f546f6f206d616e7920636f6e74726f6c6c65727320666f722073616d6520636f6102a0527f6c6c61746572616c0000000000000000000000000000000000000000000000006102c0526102805061028051806102a001601f826000031636823750506308c379a061024052602061026052601f19601f61028051011660440161025cfd5b600101818118610928575b5050610220516102405161c34f81116117805760010155610200516102405161c34f81116117805761c35101556102405160018101818110611780579050620186a555610160517febbe0dfde9dde641808b7a803882653420f3a5b12bb405d238faed959e1e3aa3610220516102605261020051610280526101a0516102a052610240516102c0526080610260a26102205161026052610200516102805260406102606003600055f35b6331dc3ca88118610b9f5760043610611780576000604052620186a554606052600061c350905b8060805260605160805118610b3957610b97565b60405160805161c34f811161178057600101546331dc3ca860a052602060a0600460bc845afa610b6e573d600060003e3d6000fd5b60203d106117805760a09050518082018281106117805790509050604052600101818118610b25575b505060206040f35b63f44102368118610bbc5760243610611780576000606052610bd6565b636bbd5ec78118610c3a5760443610611780576024356060525b6004358060a01c61178057604052620249f660405160205260005260406000206060516103e78111611780578101905054700100000000000000000000000000000000810381811161178057905061c34f8111611780576001015460805260206080f35b63b12d54608118610c575760243610611780576000606052610c71565b631539838f8118610cd65760443610611780576024356060525b6004358060a01c61178057604052620249f660405160205260005260406000206060516103e78111611780578101905054700100000000000000000000000000000000810381811161178057905061c34f81116117805761c351015460805260206080f35b639af8f23c8118610d785760443610611780576004358060a01c611780576040526024358060a01c61178057606052600054600214611780576002600055620186a15433186117805760405115611780576060511561178057604051620186a355606051620186a4557f1694b0703640754583177bb0c9e8d97e4d163cd89d08ae426ef8cb3f4710954260605160805260405160a05260406080a16003600055005b63e9333fab8118610dee5760243610611780576004358060a01c61178057604052600054600214611780576002600055620186a154331861178057604051620186a1557f5a272403b402d892977df56625f4164ccaf70ca3863991c43ecfe76a6905b0a160405160605260206060a16003600055005b63e41ab7718118610e6c5760243610611780576004358060a01c61178057604052600054600214611780576002600055620186a1543318611780576040511561178057604051620186a2557fffb40bfdfd246e95f543d08d9713c339f1d90fa9265e39b4f562f9011d7c919f60405160605260206060a16003600055005b63b933c50a8118610ec95760443610611780576004358060a01c6117805761016052600054600214611780576002600055620186a154331861178057610160516040526024356060526001608052610ec2611537565b6003600055005b632651990f8118610f2c5760243610611780576004358060a01c611780576101605260005460021461178057600260005561016051604052620249f7610160516020526000526040600020546060526000608052610f25611537565b6003600055005b63df068aba81186111815760243610611780576004358060a01c61178057604052600054600214611780576002600055620186a154331861178057620249f8604051602052600052604060002054606052620249f760405160205260005260406000205415610f9c576001610fa2565b60605115155b15611780576040516331dc3ca860a052602060a0600460bc845afa610fcc573d600060003e3d6000fd5b60203d106117805760a090505160405163e231bff060e052602060e0600460fc845afa610ffe573d600060003e3d6000fd5b60203d106117805760e09050518082018281106117805790509050604051634f02c420610120526020610120600461013c845afa611041573d600060003e3d6000fd5b60203d1061178057610120905051808203828111611780579050905060805260206117926000396000516370a0823160c05260405160e052602060c0602460dc845afa611093573d600060003e3d6000fd5b60203d106117805760c090505160a05260a05160805111156111475760805160a051808203828111611780579050905060c05260206117926000396000516340c10f1960e0526040516101005260c05161012052602060e0604460fc6000855af1611103573d600060003e3d6000fd5b60203d106117805760e0518060011c6117805761014052610140505060605160c0518082018281106117805790509050620249f86040516020526000526040600020555b604051631e0cfcef60c052602060c0600460dc6000855af161116e573d600060003e3d6000fd5b60203d106117805760c050506003600055005b63e94b0dd281186111ad57602436106117805760043561c34f8111611780576001015460405260206040f35b6386a8cdbc81186111da57602436106117805760043561c34f81116117805761c351015460405260206040f35b63f851a44081186111fb576004361061178057620186a15460405260206040f35b63cab4d3db811861121c576004361061178057620186a25460405260206040f35b630275417e811861123d576004361061178057620186a35460405260206040f35b633bc5799f811861125e576004361061178057620186a45460405260206040f35b6312397fa1811861127f576004361061178057620186a55460405260206040f35b6324c1173b81186112ad57602436106117805760043561c34f811161178057620186a6015460405260206040f35b63a736726881186112fa5760443610611780576004358060a01c61178057604052620249f660405160205260005260406000206024356103e7811161178057810190505460605260206060f35b63602b62d481186113375760243610611780576004358060a01c61178057604052620249f760405160205260005260406000205460605260206060f35b63c92696b281186113745760243610611780576004358060a01c61178057604052620249f860405160205260005260406000205460605260206060f35b63ad5c4648811861139b57600436106117805760206117b260003960005160405260206040f35b505b60006000fd5b604051606052600060805260006008905b8060a05260a051806007036007811161178057905060ff8111611780578060020a905060c05260c05160ff8111611780578060020a905060e05260e051670de0b6b3a7640000810281670de0b6b3a7640000820418611780579050606051106114635760605160e0518015611780578082049050905060605260805160c051670de0b6b3a7640000810281670de0b6b3a764000082041861178057905080820182811061178057905090506080525b6001018181186113b4575050670de0b6b3a764000060a0526000603b905b8060c052671bc16d674ec80000606051106114ba5760805160a05180820182811061178057905090506080526060518060011c90506060525b6060516060518082028115838383041417156117805790509050670de0b6b3a76400008104905060605260a0518060011c905060a052600101818118611481575050608051670de0b6b3a7640000810281670de0b6b3a76400008204186117805790506714057b7ef7678100810490508060ff1c61178057815250565b620249f860405160205260005260406000205460a05260a051606051111561160f5760605160a051808203828111611780579050905060c05260206117926000396000516340c10f1960e0526040516101005260c05161012052602060e0604460fc6000855af16115ad573d600060003e3d6000fd5b60203d106117805760e0518060011c61178057610140526101405050606051620249f86040516020526000526040600020556040517fad17aca0dc59a6d96350f71e2732094471c65b5a5cecd8f95b376edcd5534cc960c05160e052602060e0a25b60a05160605110156117305760a051606051808203828111611780579050905060206117926000396000516370a0823160e05260405161010052602060e0602460fc845afa611663573d600060003e3d6000fd5b60203d106117805760e09050518082811882841002189050905060c05260206117926000396000516379cc679060e0526040516101005260c05161012052602060e0604460fc6000855af16116bd573d600060003e3d6000fd5b60203d106117805760e0518060011c6117805761014052610140505060a05160c0518082038281116117805790509050620249f86040516020526000526040600020556040517fb21604369d32a00404a085ea01ab0a3f6b63f8a0ebda770e25695572416d9bcf60c05160e052602060e0a25b6080511561177e57606051620249f76040516020526000526040600020556040517f22d26e5448456e0d2368bca46b2c824717b39390656f1c6314237e11d691e4f260605160c052602060c0a25b565b600080fda165767970657283000307000b005b600080fd000000000000000000000000f939e0a03fb07f59a73314e73794be0e57ac1b4e000000000000000000000000babe61887f1de2713c6f97e567623453d3c79f67000000000000000000000000ecb456ea5365865ebab8a2661b0c503410e9b347000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
Deployed Bytecode
0x6003361161000c5761139d565b60003560e01c346117805763e9cbd822811861003e576004361061178057602061179260003960005160405260206040f35b638a82f1fe8118610afe576101243610611780576004358060a01c61178057610160526084358060a01c611780576101805260a4358060a01c611780576101a052600054600214611780576002600055620186a15433181561010057600a6101c0527f4f6e6c792061646d696e000000000000000000000000000000000000000000006101e0526101c0506101c051806101e001601f826000031636823750506308c379a06101805260206101a052601f19601f6101c051011660440161019cfd5b6002602435101561011257600061011b565b61271060243511155b6101855760076101c0527f57726f6e672041000000000000000000000000000000000000000000000000006101e0526101c0506101c051806101e001601f826000031636823750506308c379a06101805260206101a052601f19601f6101c051011660440161019cfd5b67016345785d8a000060443511156101fd57600c6101c0527f46656520746f6f206869676800000000000000000000000000000000000000006101e0526101c0506101c051806101e001601f826000031636823750506308c379a06101805260206101a052601f19601f6101c051011660440161019cfd5b620f4240604435101561027057600b6101c0527f46656520746f6f206c6f770000000000000000000000000000000000000000006101e0526101c0506101c051806101e001601f826000031636823750506308c379a06101805260206101a052601f19601f6101c051011660440161019cfd5b670de0b6b3a763ffff60643511156102e85760126101c0527f41646d696e2066656520746f6f206869676800000000000000000000000000006101e0526101c0506101c051806101e001601f826000031636823750506308c379a06101805260206101a052601f19601f6101c051011660440161019cfd5b662386f26fc1000060e435101561035f57601c6101c0527f4c69717569646174696f6e20646973636f756e7420746f6f206c6f77000000006101e0526101c0506101c051806101e001601f826000031636823750506308c379a06101805260206101a052601f19601f6101c051011660440161019cfd5b6706f05b59d3b2000060c43511156103d75760166101c0527f4c6f616e20646973636f756e7420746f6f2068696768000000000000000000006101e0526101c0506101c051806101e001601f826000031636823750506308c379a06101805260206101a052601f19601f6101c051011660440161019cfd5b60e43560c4351161046d5760276101c0527f6e656564206c6f616e5f646973636f756e743e6c69717569646174696f6e5f646101e0527f6973636f756e7400000000000000000000000000000000000000000000000000610200526101c0506101c051806101e001601f826000031636823750506308c379a06101805260206101a052601f19601f6101c051011660440161019cfd5b6101a05163e91f2f4c6101c05260206101c060046101dc6000855af1610498573d600060003e3d6000fd5b60203d10611780576101c050506101805163a035b1fe6101e05260206101e060046101fc845afa6104ce573d600060003e3d6000fd5b60203d10611780576101e09050516101c0526101c05115611780576101c0516101805163ceb7f7596101e05260206101e060046101fc6000855af1610518573d600060003e3d6000fd5b60203d10611780576101e09050511861178057602435670de0b6b3a7640000810281670de0b6b3a764000082041861178057905060243560018103818111611780579050801561178057808204905090506101e052620186a45460206117926000396000516102c0526102c05161042052602061179260003960005163313ce567610220526020610220600461023c845afa6105b9573d600060003e3d6000fd5b60203d10611780576102209050518060120360128111611780579050604d81116117805780600a0a90506102e0526102e05161044052610160516103005261030051610460526101605163313ce567610260526020610260600461027c845afa610628573d600060003e3d6000fd5b60203d10611780576102609050518060120360128111611780579050604d81116117805780600a0a905061032052610320516104805260243561034052610340516104a0526101e051670de0b6b3a7640000810281670de0b6b3a76400008204186117805790508060b57101000000000000000000000000000000000082106106b8578160801c91508060401b90505b690100000000000000000082106106d6578160401c91508060201b90505b6501000000000082106106f0578160201c91508060101b90505b63010000008210610708578160101c91508060081b90505b620100008201810260121c9050808184040160011c9050808184040160011c9050808184040160011c9050808184040160011c9050808184040160011c9050808184040160011c9050808184040160011c9050808304808281188284100218905090509050905061036052610360516104c0526101e05160405261078d6102a06113a3565b6102a05161038052610380516104e0526101c0516103a0526103a051610500526044356103c0526103c051610520526064356103e0526103e05161054052610180516104005261040051610560526101606003823b0359600182126117805781600382863c81810183818561042060045afa5050828201816000f0801561178057905090509050905061020052620186a3546101605161024052610240516102e0526101a05161026052610260516103005260c43561028052610280516103205260e4356102a0526102a05161034052610200516102c0526102c0516103605260a06003823b0359600182126117805781600382863c8181018381856102e060045afa5050828201816000f08015611780579050905090509050610220526102005163e9333fab610240526102205161026052803b15611780576000610240602461025c6000855af16108e5573d600060003e3d6000fd5b5061022051604052610104356060526001608052610901611537565b620186a55461024052610160516102405161c34f811161178057620186a6015560006103e8905b8061026052620249f6610160516020526000526040600020610260516103e781116117805781019050546109b2576102405180700100000000000000000000000000000000017001000000000000000000000000000000008110611780579050620249f6610160516020526000526040600020610260516103e78111611780578101905055610a54565b6103e76102605118610a49576028610280527f546f6f206d616e7920636f6e74726f6c6c65727320666f722073616d6520636f6102a0527f6c6c61746572616c0000000000000000000000000000000000000000000000006102c0526102805061028051806102a001601f826000031636823750506308c379a061024052602061026052601f19601f61028051011660440161025cfd5b600101818118610928575b5050610220516102405161c34f81116117805760010155610200516102405161c34f81116117805761c35101556102405160018101818110611780579050620186a555610160517febbe0dfde9dde641808b7a803882653420f3a5b12bb405d238faed959e1e3aa3610220516102605261020051610280526101a0516102a052610240516102c0526080610260a26102205161026052610200516102805260406102606003600055f35b6331dc3ca88118610b9f5760043610611780576000604052620186a554606052600061c350905b8060805260605160805118610b3957610b97565b60405160805161c34f811161178057600101546331dc3ca860a052602060a0600460bc845afa610b6e573d600060003e3d6000fd5b60203d106117805760a09050518082018281106117805790509050604052600101818118610b25575b505060206040f35b63f44102368118610bbc5760243610611780576000606052610bd6565b636bbd5ec78118610c3a5760443610611780576024356060525b6004358060a01c61178057604052620249f660405160205260005260406000206060516103e78111611780578101905054700100000000000000000000000000000000810381811161178057905061c34f8111611780576001015460805260206080f35b63b12d54608118610c575760243610611780576000606052610c71565b631539838f8118610cd65760443610611780576024356060525b6004358060a01c61178057604052620249f660405160205260005260406000206060516103e78111611780578101905054700100000000000000000000000000000000810381811161178057905061c34f81116117805761c351015460805260206080f35b639af8f23c8118610d785760443610611780576004358060a01c611780576040526024358060a01c61178057606052600054600214611780576002600055620186a15433186117805760405115611780576060511561178057604051620186a355606051620186a4557f1694b0703640754583177bb0c9e8d97e4d163cd89d08ae426ef8cb3f4710954260605160805260405160a05260406080a16003600055005b63e9333fab8118610dee5760243610611780576004358060a01c61178057604052600054600214611780576002600055620186a154331861178057604051620186a1557f5a272403b402d892977df56625f4164ccaf70ca3863991c43ecfe76a6905b0a160405160605260206060a16003600055005b63e41ab7718118610e6c5760243610611780576004358060a01c61178057604052600054600214611780576002600055620186a1543318611780576040511561178057604051620186a2557fffb40bfdfd246e95f543d08d9713c339f1d90fa9265e39b4f562f9011d7c919f60405160605260206060a16003600055005b63b933c50a8118610ec95760443610611780576004358060a01c6117805761016052600054600214611780576002600055620186a154331861178057610160516040526024356060526001608052610ec2611537565b6003600055005b632651990f8118610f2c5760243610611780576004358060a01c611780576101605260005460021461178057600260005561016051604052620249f7610160516020526000526040600020546060526000608052610f25611537565b6003600055005b63df068aba81186111815760243610611780576004358060a01c61178057604052600054600214611780576002600055620186a154331861178057620249f8604051602052600052604060002054606052620249f760405160205260005260406000205415610f9c576001610fa2565b60605115155b15611780576040516331dc3ca860a052602060a0600460bc845afa610fcc573d600060003e3d6000fd5b60203d106117805760a090505160405163e231bff060e052602060e0600460fc845afa610ffe573d600060003e3d6000fd5b60203d106117805760e09050518082018281106117805790509050604051634f02c420610120526020610120600461013c845afa611041573d600060003e3d6000fd5b60203d1061178057610120905051808203828111611780579050905060805260206117926000396000516370a0823160c05260405160e052602060c0602460dc845afa611093573d600060003e3d6000fd5b60203d106117805760c090505160a05260a05160805111156111475760805160a051808203828111611780579050905060c05260206117926000396000516340c10f1960e0526040516101005260c05161012052602060e0604460fc6000855af1611103573d600060003e3d6000fd5b60203d106117805760e0518060011c6117805761014052610140505060605160c0518082018281106117805790509050620249f86040516020526000526040600020555b604051631e0cfcef60c052602060c0600460dc6000855af161116e573d600060003e3d6000fd5b60203d106117805760c050506003600055005b63e94b0dd281186111ad57602436106117805760043561c34f8111611780576001015460405260206040f35b6386a8cdbc81186111da57602436106117805760043561c34f81116117805761c351015460405260206040f35b63f851a44081186111fb576004361061178057620186a15460405260206040f35b63cab4d3db811861121c576004361061178057620186a25460405260206040f35b630275417e811861123d576004361061178057620186a35460405260206040f35b633bc5799f811861125e576004361061178057620186a45460405260206040f35b6312397fa1811861127f576004361061178057620186a55460405260206040f35b6324c1173b81186112ad57602436106117805760043561c34f811161178057620186a6015460405260206040f35b63a736726881186112fa5760443610611780576004358060a01c61178057604052620249f660405160205260005260406000206024356103e7811161178057810190505460605260206060f35b63602b62d481186113375760243610611780576004358060a01c61178057604052620249f760405160205260005260406000205460605260206060f35b63c92696b281186113745760243610611780576004358060a01c61178057604052620249f860405160205260005260406000205460605260206060f35b63ad5c4648811861139b57600436106117805760206117b260003960005160405260206040f35b505b60006000fd5b604051606052600060805260006008905b8060a05260a051806007036007811161178057905060ff8111611780578060020a905060c05260c05160ff8111611780578060020a905060e05260e051670de0b6b3a7640000810281670de0b6b3a7640000820418611780579050606051106114635760605160e0518015611780578082049050905060605260805160c051670de0b6b3a7640000810281670de0b6b3a764000082041861178057905080820182811061178057905090506080525b6001018181186113b4575050670de0b6b3a764000060a0526000603b905b8060c052671bc16d674ec80000606051106114ba5760805160a05180820182811061178057905090506080526060518060011c90506060525b6060516060518082028115838383041417156117805790509050670de0b6b3a76400008104905060605260a0518060011c905060a052600101818118611481575050608051670de0b6b3a7640000810281670de0b6b3a76400008204186117805790506714057b7ef7678100810490508060ff1c61178057815250565b620249f860405160205260005260406000205460a05260a051606051111561160f5760605160a051808203828111611780579050905060c05260206117926000396000516340c10f1960e0526040516101005260c05161012052602060e0604460fc6000855af16115ad573d600060003e3d6000fd5b60203d106117805760e0518060011c61178057610140526101405050606051620249f86040516020526000526040600020556040517fad17aca0dc59a6d96350f71e2732094471c65b5a5cecd8f95b376edcd5534cc960c05160e052602060e0a25b60a05160605110156117305760a051606051808203828111611780579050905060206117926000396000516370a0823160e05260405161010052602060e0602460fc845afa611663573d600060003e3d6000fd5b60203d106117805760e09050518082811882841002189050905060c05260206117926000396000516379cc679060e0526040516101005260c05161012052602060e0604460fc6000855af16116bd573d600060003e3d6000fd5b60203d106117805760e0518060011c6117805761014052610140505060a05160c0518082038281116117805790509050620249f86040516020526000526040600020556040517fb21604369d32a00404a085ea01ab0a3f6b63f8a0ebda770e25695572416d9bcf60c05160e052602060e0a25b6080511561177e57606051620249f76040516020526000526040600020556040517f22d26e5448456e0d2368bca46b2c824717b39390656f1c6314237e11d691e4f260605160c052602060c0a25b565b600080fda165767970657283000307000b000000000000000000000000f939e0a03fb07f59a73314e73794be0e57ac1b4e000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000f939e0a03fb07f59a73314e73794be0e57ac1b4e000000000000000000000000babe61887f1de2713c6f97e567623453d3c79f67000000000000000000000000ecb456ea5365865ebab8a2661b0c503410e9b347000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
-----Decoded View---------------
Arg [0] : stablecoin (address): 0xf939E0A03FB07F59A73314E73794Be0E57ac1b4E
Arg [1] : admin (address): 0xbabe61887f1de2713c6f97e567623453d3C79f67
Arg [2] : fee_receiver (address): 0xeCb456EA5365865EbAb8a2661B0c503410e9B347
Arg [3] : weth (address): 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 000000000000000000000000f939e0a03fb07f59a73314e73794be0e57ac1b4e
Arg [1] : 000000000000000000000000babe61887f1de2713c6f97e567623453d3c79f67
Arg [2] : 000000000000000000000000ecb456ea5365865ebab8a2661b0c503410e9b347
Arg [3] : 000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ 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.