frxETH Price: $1,973.71 (+0.30%)

Contract

0xf3c9bdAB17B7016fBE3B77D17b1602A7db93ac66

Overview

frxETH Balance | FXTL Balance

0 frxETH | 2,449 FXTL

frxETH Value

$0.00

Token Holdings

Transaction Hash
Method
Block
From
To
Create101616362024-09-23 23:26:23179 days ago1727133983IN
0xf3c9bdAB...7db93ac66
0 frxETH0.000012150.00110025
Create94660972024-09-07 21:01:45195 days ago1725742905IN
0xf3c9bdAB...7db93ac66
0 frxETH0.000011090.00100025
Create94660902024-09-07 21:01:31195 days ago1725742891IN
0xf3c9bdAB...7db93ac66
0 frxETH0.000011090.00100025
Create94660832024-09-07 21:01:17195 days ago1725742877IN
0xf3c9bdAB...7db93ac66
0 frxETH0.000011120.00100025
Create94660752024-09-07 21:01:01195 days ago1725742861IN
0xf3c9bdAB...7db93ac66
0 frxETH0.000011190.00100025

Latest 10 internal transactions

Parent Transaction Hash Block From To
101616362024-09-23 23:26:23179 days ago1727133983
0xf3c9bdAB...7db93ac66
 Contract Creation0 frxETH
101616362024-09-23 23:26:23179 days ago1727133983
0xf3c9bdAB...7db93ac66
 Contract Creation0 frxETH
94660972024-09-07 21:01:45195 days ago1725742905
0xf3c9bdAB...7db93ac66
 Contract Creation0 frxETH
94660972024-09-07 21:01:45195 days ago1725742905
0xf3c9bdAB...7db93ac66
 Contract Creation0 frxETH
94660902024-09-07 21:01:31195 days ago1725742891
0xf3c9bdAB...7db93ac66
 Contract Creation0 frxETH
94660902024-09-07 21:01:31195 days ago1725742891
0xf3c9bdAB...7db93ac66
 Contract Creation0 frxETH
94660832024-09-07 21:01:17195 days ago1725742877
0xf3c9bdAB...7db93ac66
 Contract Creation0 frxETH
94660832024-09-07 21:01:17195 days ago1725742877
0xf3c9bdAB...7db93ac66
 Contract Creation0 frxETH
94660752024-09-07 21:01:01195 days ago1725742861
0xf3c9bdAB...7db93ac66
 Contract Creation0 frxETH
94660752024-09-07 21:01:01195 days ago1725742861
0xf3c9bdAB...7db93ac66
 Contract Creation0 frxETH

Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
OneWayLendingFactory

Compiler Version
vyper:0.3.10

Optimization Enabled:
N/A

Other Settings:
default evmVersion, None license

Contract Source Code (Vyper language format)

# @version 0.3.10
"""
@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.
       This version is for L2s: it does not create gauges by itself but uses Gauge Factory to read gauge info.
@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

interface GaugeFactory:
    def get_gauge_from_lp_token(addr: address) -> address: view


event SetImplementations:
    amm: address
    controller: address
    vault: address
    price_oracle: address
    monetary_policy: address
    gauge_factory: 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


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)

# 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])

names: public(HashMap[uint256, String[64]])
gauge_factory: public(GaugeFactory)


@external
def __init__(
        stablecoin: address,
        amm: address,
        controller: address,
        vault: address,
        pool_price_oracle: address,
        monetary_policy: address,
        gauge_factory: GaugeFactory,
        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_factory Address for gauge factory on this L2
    @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_factory = gauge_factory

    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


@view
@external
def gauge_for_vault(vault: address) -> address:
    out: address = self.gauge_factory.get_gauge_from_lp_token(vault)
    assert out != empty(address)
    return out


@view
@external
def gauges(vault_id: uint256) -> address:
    return self.gauge_factory.get_gauge_from_lp_token(self.vaults[vault_id].address)


@external
@nonreentrant('lock')
def set_implementations(controller: address, amm: address, vault: address,
                        pool_price_oracle: address, monetary_policy: address, gauge_factory: 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_factory Address for gauge factory
    """
    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_factory != empty(address):
        self.gauge_factory = GaugeFactory(gauge_factory)

    log SetImplementations(amm, controller, vault, pool_price_oracle, monetary_policy, gauge_factory)


@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

Contract ABI

API
[{"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_factory","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"},{"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_factory","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":"view","type":"function","name":"gauge_for_vault","inputs":[{"name":"vault","type":"address"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"gauges","inputs":[{"name":"vault_id","type":"uint256"}],"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_factory","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":"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":"names","inputs":[{"name":"arg0","type":"uint256"}],"outputs":[{"name":"","type":"string"}]},{"stateMutability":"view","type":"function","name":"gauge_factory","inputs":[],"outputs":[{"name":"","type":"address"}]}]

6115885150346101085760206116aa5f395f518060a01c6101085760405260206116ca5f395f518060a01c6101085760605260206116ea5f395f518060a01c61010857608052602061170a5f395f518060a01c6101085760a052602061172a5f395f518060a01c6101085760c052602061174a5f395f518060a01c6101085760e052602061176a5f395f518060a01c6101085761010052602061178a5f395f518060a01c61010857610120526040516115885260605160015560805160025560a05160035560c05160045560e05160055561010051671bc16d674ec8000e5563097343df6006556403b10683776007556101205160085561158861010c610000396115a8610000f35b5f80fd5f3560e01c60026025820660011b61153e01601e395f51565b6393a39776811861105b573461153a57602061158860403960206040f361105b565b63d819bfef811861105b573461153a576301e3da5f60405260206040f361105b565b63c24dbebd811861105b573461153a576449d482455d60405260206040f361105b565b63041622b5811861105b573461153a5760015460405260206040f361105b565b63168819c081186100bb573461153a5760025460405260206040f35b638c64ea4a811861105b5760243610341761153a57600435670de0b6b3a763ffff811161153a576009015460405260206040f361105b565b636677b287811861105b573461153a5760035460405260206040f361105b565b630b91bd27811861012f573461153a5760045460405260206040f35b6373edeb30811861017c576101443610341761153a57610104356104e0525f610500527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610520526107b5565b63c6610657811861105b5760243610341761153a57600435670de0b6b3a763ffff811161153a576009015460405260405163765337b6606052602060606004607c845afa6101cc573d5f5f3e3d5ffd5b60203d1061153a576060518060a01c61153a5760a05260a090505161012052604051632621db2f60c052602060c0600460dc845afa61020d573d5f5f3e3d5ffd5b60203d1061153a5760c0518060a01c61153a5761010052610100905051610140526040610120f361105b565b63247ec8788118610255573461153a5760055460405260206040f35b634622ab03811861105b5760243610341761153a57602080604052671bc16d674ec8000d6004356020525f5260405f208160400160208254015f81601f0160051c6003811161153a5780156102bc57905b808501548160051b8501526001018181186102a6575b5050508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506040f361105b565b633cfd3d8c811861030a573461153a5760065460405260206040f35b636c3a55e5811861105b576101843610341761153a5760606101046104e0375b6004358060a01c61153a57610420526024358060a01c61153a576104405260c4358060a01c61153a576104605260e435600401604081351161153a57602081350180826104803750505f5460021461153a5760025f55610420516040526104405160605260806044608037610460516101005260206104805101806101208261048060045afa50506104e05161018052610500516101a0526103cd61056061105f565b61056051610540527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61052051146104365761054051638a938f2f610560526105205161058052803b1561153a575f610560602461057c5f855af1610434573d5f5f3e3d5ffd5b505b602061054060035f55f361105b565b6399d0b1ba811861105b573461153a5760075460405260206040f361105b565b63f851a4408118610481573461153a5760085460405260206040f35b63a8acf8df81186104d95760443610341761153a576004358060a01c61153a57604052671bc16d674ec8000b6040516020525f5260405f20602435670de0b6b3a763ffff811161153a57810190505460605260206060f35b635904e8dc811861105b576101443610341761153a57610104356104e0525f610500527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6105205261032a5661105b565b6386a8cdbc81186105655760243610341761153a57600435670de0b6b3a763ffff811161153a57670de0b6b3a7640009015460405260206040f35b63c6f2a81d811861105b5760243610341761153a576020600435670de0b6b3a763ffff811161153a57600901546386fc88d3604052602060406004605c845afa6105b1573d5f5f3e3d5ffd5b60203d1061153a576040518060a01c61153a5760805260809050f361105b565b63fd775c78811861105b573461153a57671bc16d674ec8000a5460405260206040f361105b565b63e5f260ba811861105b5760243610341761153a576004358060a01c61153a57604052671bc16d674ec8000c6040516020525f5260405f205460605260206060f361105b565b63e8980c6e811861105b573461153a57671bc16d674ec8000e5460405260206040f361105b565b639c3b70a6811861105b576101243610341761153a576040366104e0377fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6105205261032a5661105b565b635673683f811861105b576101643610341761153a5760406101046104e0377fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6105205261032a5661105b565b63d984d2a1811861105b576101243610341761153a576040366104e0377fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610520526107b55661105b565b63bccc056c811861105b576101643610341761153a5760406101046104e0377fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610520526107b55661105b565b634351e30b811861105b576101843610341761153a5760606101046104e0375b6004358060a01c61153a57610420526024358060a01c61153a576104405260c4358060a01c61153a576104605260e435600401604081351161153a57602081350180826104803750505f5460021461153a5760025f556064610540526064610560525f610580525f600a905b806105a0526040366105c037610460515a63c66106576106245260046105a05161064452602001610620526106205060206106a0610620516106408585fa905090506105c0523d602081183d60201002186106805261068080516105e05260208101516106005250610600516105e05160200360031b1c8060a01c61153a57610620526105c0516108b35760016108b9565b61062051155b156108c357610913565b610580516001810181811061153a579050610580526104205161062051186108f2576105a05161054052610908565b610440516106205118610908576105a051610560525b600101818118610821575b505060646105605118610927576001610930565b60646105405118155b1561099a5760126105a0527f546f6b656e73206e6f7420696e20706f6f6c00000000000000000000000000006105c0526105a0506105a051806105c001601f825f031636823750506308c379a061056052602061058052601f19601f6105a051011660440161057cfd5b600454610460516105c0526105c05161064052610580516105e0526105e05161066052610540516106005261060051610680526105605161062052610620516106a05260806003823b03596001821261153a5781600382863c81810183818561064060045afa5050828201815ff0801561153a5790509050905090506105a0526104205160405261044051606052608060446080376105a0516101005260206104805101806101208261048060045afa50506104e05161018052610500516101a052610a676105e061105f565b6105e0516105c0527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6105205114610ad0576105c051638a938f2f6105e0526105205161060052803b1561153a575f6105e060246105fc5f855af1610ace573d5f5f3e3d5ffd5b505b60206105c060035f55f361105b565b63e94b0dd2811861105b5760243610341761153a576020600435670de0b6b3a763ffff811161153a576009015463f77c4791604052602060406004605c845afa610b2b573d5f5f3e3d5ffd5b60203d1061153a576040518060a01c61153a5760805260809050f361105b565b636fe4501f811861105b5760243610341761153a576020600435670de0b6b3a763ffff811161153a576009015463765337b6604052602060406004605c845afa610b97573d5f5f3e3d5ffd5b60203d1061153a576040518060a01c61153a5760805260809050f361105b565b6349b899848118610c1f5760243610341761153a576020600435670de0b6b3a763ffff811161153a5760090154632621db2f604052602060406004605c845afa610c03573d5f5f3e3d5ffd5b60203d1061153a576040518060a01c61153a5760805260809050f35b63b0539187811861105b5760243610341761153a576020671bc16d674ec8000e54635d95c65e604052600435670de0b6b3a763ffff811161153a5760090154606052602060406024605c845afa610c78573d5f5f3e3d5ffd5b60203d1061153a576040518060a01c61153a5760805260809050f361105b565b63762e7b92811861105b5760243610341761153a576020600435670de0b6b3a763ffff811161153a576009015463f77c4791604052602060406004605c845afa610ce4573d5f5f3e3d5ffd5b60203d1061153a576040518060a01c61153a57608052608090505163adfae4ce60a052602060a0600460bc845afa610d1e573d5f5f3e3d5ffd5b60203d1061153a5760a0518060a01c61153a5760e05260e09050f361105b565b63bcf75a8f8118610d9d5760243610341761153a576004358060a01c61153a57604052671bc16d674ec800096040516020525f5260405f2054700100000000000000000000000000000000810381811161153a57905060605260206060f35b63a74fcf90811861105b5760443610341761153a575f5460021461153a5760025f55600854331861153a576301e3da5f6004351061153a576449d482455d6024351161153a576004356024351061153a576004356006556024356007557f279f1fe0f91b15d983792d0305a146961875690054db0d81bec8d1582461fc656040600460403760406040a160035f550061105b565b6350c1163a8118610eaf5760243610341761153a576004358060a01c61153a57604052671bc16d674ec8000e54635d95c65e60805260405160a052602060806024609c845afa610e83573d5f5f3e3d5ffd5b60203d1061153a576080518060a01c61153a5760c05260c09050516060526060511561153a5760206060f35b636c15eadf811861105b5760c43610341761153a576004358060a01c61153a576040526024358060a01c61153a576060526044358060a01c61153a576080526064358060a01c61153a5760a0526084358060a01c61153a5760c05260a4358060a01c61153a5760e0525f5460021461153a5760025f55600854331861153a5760405115610f3d576040516002555b60605115610f4c576060516001555b60805115610f5b576080516003555b60a05115610f6a5760a0516004555b60c05115610f795760c0516005555b60e05115610f8f5760e051671bc16d674ec8000e555b7f91d63b24386eae580bbbe65f3f50fd736c41031f36d85641bc13e74ac0cb95bb60605161010052604051610120526080516101405260a0516101605260c0516101805260e0516101a05260c0610100a160035f550061105b565b63e9333fab811861105b5760243610341761153a576004358060a01c61153a576040525f5460021461153a5760025f55600854331861153a576040516008557f5a272403b402d892977df56625f4164ccaf70ca3863991c43ecfe76a6905b0a160405160605260206060a160035f55005b5f5ffd5b606051604051186110cf57600a6101c0527f53616d6520746f6b656e000000000000000000000000000000000000000000006101e0526101c0506101c051806101e001601f825f031636823750506308c379a06101805260206101a052601f19601f6101c051011660440161019cfd5b60206115885f395f51604051186110e75760016110f6565b60206115885f395f5160605118155b1561153a577f602d3d8160093d39f3363d3d373d3d3d363d73000000000000000000000000006101e05260035460601b6101f3527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006102075260366101e05ff0801561153a576101c0526006546101e05260075461020052610180511561118057610180516101e0525b6101a05115611192576101a051610200525b6301e3da5f6101e05110156111a7575f6111c8565b6449d482455d6102005111156111bd575f6111c8565b610200516101e05111155b61123157600b610220527f57726f6e672072617465730000000000000000000000000000000000000000006102405261022050610220518061024001601f825f031636823750506308c379a06101e052602061020052601f19601f6102205101166044016101fcfd5b60055460405161024052610240516102a0526101e05161026052610260516102c0526102005161028052610280516102e05260606003823b03596001821261153a5781600382863c8181018381856102a060045afa5050828201815ff0801561153a57905090509050905061022052604036610240376101c0516343687bba610280526001546102a0526002546102c0526040516102e052606051610300526080516103205260a051610340526101005161036052610220516103805260c0516103a05260e0516103c052604061028061014461029c5f855af1611317573d5f5f3e3d5ffd5b60403d1061153a57610280518060a01c61153a576103e0526102a0518060a01c61153a57610400526103e0905080516102405260208101516102605250671bc16d674ec8000a5461028052604051606051610280517f2a854a597908740dff5f0846840f167547ea0d7614c43bde3ea49be2e68c07ec6101c0516102a052610240516102c052610260516102e0526101005161030052610220516103205260a06102a0a46101c05161028051670de0b6b3a763ffff811161153a57600901556102605161028051670de0b6b3a763ffff811161153a57670de0b6b3a7640009015561028051700100000000000000000000000000000000810181811061153a579050671bc16d674ec800096101c0516020525f5260405f205560206101205101671bc16d674ec8000d610280516020525f5260405f205f82601f0160051c6003811161153a57801561147d57905b8060051b610120015181840155600101818118611465575b50505050610280516001810181811061153a579050671bc16d674ec8000a556040516102a05260206115885f395f51604051186114bc576060516102a0525b671bc16d674ec8000c6102a0516020525f5260405f2054610280526101c051671bc16d674ec8000b6102a0516020525f5260405f2061028051670de0b6b3a763ffff811161153a578101905055610280516001810181811061153a579050671bc16d674ec8000c6102a0516020525f5260405f20556101c051815250565b5f80fd05f8105b0c9806fd05d1105b0465009f105b105b105b105b00180e31105b0239003a0d3e06b0105b052a007f02ee04450bb7063e079500f3105b105b0b4b0adf005c0fea0665074801138419158881184a1820a16576797065728300030a0016000000000000000000000000b102f7efa0d5de071a8d37b3548e1c7cb148caf300000000000000000000000059cffdc8cf8b9b71d91da6de480c957993020e8a0000000000000000000000007002b727ef8f5571cb5f9d70d13dbeeb4dfae9d1000000000000000000000000c1db00a8e5ef7bfa476395cdbcc98235477cde4e0000000000000000000000000cd5a1e9e19af1f1b910ac3c3452a16b2b37155b00000000000000000000000086d347ce5f1e6f7ef4da00fb7c8d31fbd16996f0000000000000000000000000ef672bd94913cb6f1d2812a6e18c1ffded8eff5c0000000000000000000000004bbdfed5696b3a8f6b3813506b5389959c5cdc57

Deployed Bytecode

0x5f3560e01c60026025820660011b61153e01601e395f51565b6393a39776811861105b573461153a57602061158860403960206040f361105b565b63d819bfef811861105b573461153a576301e3da5f60405260206040f361105b565b63c24dbebd811861105b573461153a576449d482455d60405260206040f361105b565b63041622b5811861105b573461153a5760015460405260206040f361105b565b63168819c081186100bb573461153a5760025460405260206040f35b638c64ea4a811861105b5760243610341761153a57600435670de0b6b3a763ffff811161153a576009015460405260206040f361105b565b636677b287811861105b573461153a5760035460405260206040f361105b565b630b91bd27811861012f573461153a5760045460405260206040f35b6373edeb30811861017c576101443610341761153a57610104356104e0525f610500527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610520526107b5565b63c6610657811861105b5760243610341761153a57600435670de0b6b3a763ffff811161153a576009015460405260405163765337b6606052602060606004607c845afa6101cc573d5f5f3e3d5ffd5b60203d1061153a576060518060a01c61153a5760a05260a090505161012052604051632621db2f60c052602060c0600460dc845afa61020d573d5f5f3e3d5ffd5b60203d1061153a5760c0518060a01c61153a5761010052610100905051610140526040610120f361105b565b63247ec8788118610255573461153a5760055460405260206040f35b634622ab03811861105b5760243610341761153a57602080604052671bc16d674ec8000d6004356020525f5260405f208160400160208254015f81601f0160051c6003811161153a5780156102bc57905b808501548160051b8501526001018181186102a6575b5050508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506040f361105b565b633cfd3d8c811861030a573461153a5760065460405260206040f35b636c3a55e5811861105b576101843610341761153a5760606101046104e0375b6004358060a01c61153a57610420526024358060a01c61153a576104405260c4358060a01c61153a576104605260e435600401604081351161153a57602081350180826104803750505f5460021461153a5760025f55610420516040526104405160605260806044608037610460516101005260206104805101806101208261048060045afa50506104e05161018052610500516101a0526103cd61056061105f565b61056051610540527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61052051146104365761054051638a938f2f610560526105205161058052803b1561153a575f610560602461057c5f855af1610434573d5f5f3e3d5ffd5b505b602061054060035f55f361105b565b6399d0b1ba811861105b573461153a5760075460405260206040f361105b565b63f851a4408118610481573461153a5760085460405260206040f35b63a8acf8df81186104d95760443610341761153a576004358060a01c61153a57604052671bc16d674ec8000b6040516020525f5260405f20602435670de0b6b3a763ffff811161153a57810190505460605260206060f35b635904e8dc811861105b576101443610341761153a57610104356104e0525f610500527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6105205261032a5661105b565b6386a8cdbc81186105655760243610341761153a57600435670de0b6b3a763ffff811161153a57670de0b6b3a7640009015460405260206040f35b63c6f2a81d811861105b5760243610341761153a576020600435670de0b6b3a763ffff811161153a57600901546386fc88d3604052602060406004605c845afa6105b1573d5f5f3e3d5ffd5b60203d1061153a576040518060a01c61153a5760805260809050f361105b565b63fd775c78811861105b573461153a57671bc16d674ec8000a5460405260206040f361105b565b63e5f260ba811861105b5760243610341761153a576004358060a01c61153a57604052671bc16d674ec8000c6040516020525f5260405f205460605260206060f361105b565b63e8980c6e811861105b573461153a57671bc16d674ec8000e5460405260206040f361105b565b639c3b70a6811861105b576101243610341761153a576040366104e0377fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6105205261032a5661105b565b635673683f811861105b576101643610341761153a5760406101046104e0377fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6105205261032a5661105b565b63d984d2a1811861105b576101243610341761153a576040366104e0377fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610520526107b55661105b565b63bccc056c811861105b576101643610341761153a5760406101046104e0377fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610520526107b55661105b565b634351e30b811861105b576101843610341761153a5760606101046104e0375b6004358060a01c61153a57610420526024358060a01c61153a576104405260c4358060a01c61153a576104605260e435600401604081351161153a57602081350180826104803750505f5460021461153a5760025f556064610540526064610560525f610580525f600a905b806105a0526040366105c037610460515a63c66106576106245260046105a05161064452602001610620526106205060206106a0610620516106408585fa905090506105c0523d602081183d60201002186106805261068080516105e05260208101516106005250610600516105e05160200360031b1c8060a01c61153a57610620526105c0516108b35760016108b9565b61062051155b156108c357610913565b610580516001810181811061153a579050610580526104205161062051186108f2576105a05161054052610908565b610440516106205118610908576105a051610560525b600101818118610821575b505060646105605118610927576001610930565b60646105405118155b1561099a5760126105a0527f546f6b656e73206e6f7420696e20706f6f6c00000000000000000000000000006105c0526105a0506105a051806105c001601f825f031636823750506308c379a061056052602061058052601f19601f6105a051011660440161057cfd5b600454610460516105c0526105c05161064052610580516105e0526105e05161066052610540516106005261060051610680526105605161062052610620516106a05260806003823b03596001821261153a5781600382863c81810183818561064060045afa5050828201815ff0801561153a5790509050905090506105a0526104205160405261044051606052608060446080376105a0516101005260206104805101806101208261048060045afa50506104e05161018052610500516101a052610a676105e061105f565b6105e0516105c0527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6105205114610ad0576105c051638a938f2f6105e0526105205161060052803b1561153a575f6105e060246105fc5f855af1610ace573d5f5f3e3d5ffd5b505b60206105c060035f55f361105b565b63e94b0dd2811861105b5760243610341761153a576020600435670de0b6b3a763ffff811161153a576009015463f77c4791604052602060406004605c845afa610b2b573d5f5f3e3d5ffd5b60203d1061153a576040518060a01c61153a5760805260809050f361105b565b636fe4501f811861105b5760243610341761153a576020600435670de0b6b3a763ffff811161153a576009015463765337b6604052602060406004605c845afa610b97573d5f5f3e3d5ffd5b60203d1061153a576040518060a01c61153a5760805260809050f361105b565b6349b899848118610c1f5760243610341761153a576020600435670de0b6b3a763ffff811161153a5760090154632621db2f604052602060406004605c845afa610c03573d5f5f3e3d5ffd5b60203d1061153a576040518060a01c61153a5760805260809050f35b63b0539187811861105b5760243610341761153a576020671bc16d674ec8000e54635d95c65e604052600435670de0b6b3a763ffff811161153a5760090154606052602060406024605c845afa610c78573d5f5f3e3d5ffd5b60203d1061153a576040518060a01c61153a5760805260809050f361105b565b63762e7b92811861105b5760243610341761153a576020600435670de0b6b3a763ffff811161153a576009015463f77c4791604052602060406004605c845afa610ce4573d5f5f3e3d5ffd5b60203d1061153a576040518060a01c61153a57608052608090505163adfae4ce60a052602060a0600460bc845afa610d1e573d5f5f3e3d5ffd5b60203d1061153a5760a0518060a01c61153a5760e05260e09050f361105b565b63bcf75a8f8118610d9d5760243610341761153a576004358060a01c61153a57604052671bc16d674ec800096040516020525f5260405f2054700100000000000000000000000000000000810381811161153a57905060605260206060f35b63a74fcf90811861105b5760443610341761153a575f5460021461153a5760025f55600854331861153a576301e3da5f6004351061153a576449d482455d6024351161153a576004356024351061153a576004356006556024356007557f279f1fe0f91b15d983792d0305a146961875690054db0d81bec8d1582461fc656040600460403760406040a160035f550061105b565b6350c1163a8118610eaf5760243610341761153a576004358060a01c61153a57604052671bc16d674ec8000e54635d95c65e60805260405160a052602060806024609c845afa610e83573d5f5f3e3d5ffd5b60203d1061153a576080518060a01c61153a5760c05260c09050516060526060511561153a5760206060f35b636c15eadf811861105b5760c43610341761153a576004358060a01c61153a576040526024358060a01c61153a576060526044358060a01c61153a576080526064358060a01c61153a5760a0526084358060a01c61153a5760c05260a4358060a01c61153a5760e0525f5460021461153a5760025f55600854331861153a5760405115610f3d576040516002555b60605115610f4c576060516001555b60805115610f5b576080516003555b60a05115610f6a5760a0516004555b60c05115610f795760c0516005555b60e05115610f8f5760e051671bc16d674ec8000e555b7f91d63b24386eae580bbbe65f3f50fd736c41031f36d85641bc13e74ac0cb95bb60605161010052604051610120526080516101405260a0516101605260c0516101805260e0516101a05260c0610100a160035f550061105b565b63e9333fab811861105b5760243610341761153a576004358060a01c61153a576040525f5460021461153a5760025f55600854331861153a576040516008557f5a272403b402d892977df56625f4164ccaf70ca3863991c43ecfe76a6905b0a160405160605260206060a160035f55005b5f5ffd5b606051604051186110cf57600a6101c0527f53616d6520746f6b656e000000000000000000000000000000000000000000006101e0526101c0506101c051806101e001601f825f031636823750506308c379a06101805260206101a052601f19601f6101c051011660440161019cfd5b60206115885f395f51604051186110e75760016110f6565b60206115885f395f5160605118155b1561153a577f602d3d8160093d39f3363d3d373d3d3d363d73000000000000000000000000006101e05260035460601b6101f3527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006102075260366101e05ff0801561153a576101c0526006546101e05260075461020052610180511561118057610180516101e0525b6101a05115611192576101a051610200525b6301e3da5f6101e05110156111a7575f6111c8565b6449d482455d6102005111156111bd575f6111c8565b610200516101e05111155b61123157600b610220527f57726f6e672072617465730000000000000000000000000000000000000000006102405261022050610220518061024001601f825f031636823750506308c379a06101e052602061020052601f19601f6102205101166044016101fcfd5b60055460405161024052610240516102a0526101e05161026052610260516102c0526102005161028052610280516102e05260606003823b03596001821261153a5781600382863c8181018381856102a060045afa5050828201815ff0801561153a57905090509050905061022052604036610240376101c0516343687bba610280526001546102a0526002546102c0526040516102e052606051610300526080516103205260a051610340526101005161036052610220516103805260c0516103a05260e0516103c052604061028061014461029c5f855af1611317573d5f5f3e3d5ffd5b60403d1061153a57610280518060a01c61153a576103e0526102a0518060a01c61153a57610400526103e0905080516102405260208101516102605250671bc16d674ec8000a5461028052604051606051610280517f2a854a597908740dff5f0846840f167547ea0d7614c43bde3ea49be2e68c07ec6101c0516102a052610240516102c052610260516102e0526101005161030052610220516103205260a06102a0a46101c05161028051670de0b6b3a763ffff811161153a57600901556102605161028051670de0b6b3a763ffff811161153a57670de0b6b3a7640009015561028051700100000000000000000000000000000000810181811061153a579050671bc16d674ec800096101c0516020525f5260405f205560206101205101671bc16d674ec8000d610280516020525f5260405f205f82601f0160051c6003811161153a57801561147d57905b8060051b610120015181840155600101818118611465575b50505050610280516001810181811061153a579050671bc16d674ec8000a556040516102a05260206115885f395f51604051186114bc576060516102a0525b671bc16d674ec8000c6102a0516020525f5260405f2054610280526101c051671bc16d674ec8000b6102a0516020525f5260405f2061028051670de0b6b3a763ffff811161153a578101905055610280516001810181811061153a579050671bc16d674ec8000c6102a0516020525f5260405f20556101c051815250565b5f80fd05f8105b0c9806fd05d1105b0465009f105b105b105b105b00180e31105b0239003a0d3e06b0105b052a007f02ee04450bb7063e079500f3105b105b0b4b0adf005c0fea066507480113000000000000000000000000b102f7efa0d5de071a8d37b3548e1c7cb148caf3

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000b102f7efa0d5de071a8d37b3548e1c7cb148caf300000000000000000000000059cffdc8cf8b9b71d91da6de480c957993020e8a0000000000000000000000007002b727ef8f5571cb5f9d70d13dbeeb4dfae9d1000000000000000000000000c1db00a8e5ef7bfa476395cdbcc98235477cde4e0000000000000000000000000cd5a1e9e19af1f1b910ac3c3452a16b2b37155b00000000000000000000000086d347ce5f1e6f7ef4da00fb7c8d31fbd16996f0000000000000000000000000ef672bd94913cb6f1d2812a6e18c1ffded8eff5c0000000000000000000000004bbdfed5696b3a8f6b3813506b5389959c5cdc57

-----Decoded View---------------
Arg [0] : stablecoin (address): 0xB102f7Efa0d5dE071A8D37B3548e1C7CB148Caf3
Arg [1] : amm (address): 0x59CfFdC8cf8b9b71D91Da6de480c957993020E8A
Arg [2] : controller (address): 0x7002B727Ef8F5571Cb5F9D70D13DBEEb4dFAe9d1
Arg [3] : vault (address): 0xc1DB00a8E5Ef7bfa476395cdbcc98235477cDE4E
Arg [4] : pool_price_oracle (address): 0x0cD5A1e9E19Af1f1b910Ac3C3452A16B2B37155b
Arg [5] : monetary_policy (address): 0x86D347cE5f1E6f7Ef4Da00FB7c8d31fBD16996F0
Arg [6] : gauge_factory (address): 0xeF672bD94913CB6f1d2812a6e18c1fFdEd8eFf5c
Arg [7] : admin (address): 0x4BbdFEd5696b3a8F6B3813506b5389959C5CDC57

-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 000000000000000000000000b102f7efa0d5de071a8d37b3548e1c7cb148caf3
Arg [1] : 00000000000000000000000059cffdc8cf8b9b71d91da6de480c957993020e8a
Arg [2] : 0000000000000000000000007002b727ef8f5571cb5f9d70d13dbeeb4dfae9d1
Arg [3] : 000000000000000000000000c1db00a8e5ef7bfa476395cdbcc98235477cde4e
Arg [4] : 0000000000000000000000000cd5a1e9e19af1f1b910ac3c3452a16b2b37155b
Arg [5] : 00000000000000000000000086d347ce5f1e6f7ef4da00fb7c8d31fbd16996f0
Arg [6] : 000000000000000000000000ef672bd94913cb6f1d2812a6e18c1ffded8eff5c
Arg [7] : 0000000000000000000000004bbdfed5696b3a8f6b3813506b5389959c5cdc57


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
[ 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.