ETH Price: $2,725.66 (-1.00%)

Contract

0xF18056Bbd320E96A48e3Fbf8bC061322531aac99
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Deploy_gauge214864882024-12-26 11:57:5959 days ago1735214279IN
Curve: Two Crypto Factory
0 ETH0.001844345.43939988
Deploy_gauge192789572024-02-21 22:19:23368 days ago1708553963IN
Curve: Two Crypto Factory
0 ETH0.0115568736.46920026
Deploy_pool192788862024-02-21 22:04:59368 days ago1708553099IN
Curve: Two Crypto Factory
0 ETH0.0408770547.83079069
Deploy_pool192621962024-02-19 13:52:47370 days ago1708350767IN
Curve: Two Crypto Factory
0 ETH0.0326976938.1265736
Deploy_gauge192241052024-02-14 5:23:59375 days ago1707888239IN
Curve: Two Crypto Factory
0 ETH0.0056731316.73199819
Deploy_pool192240232024-02-14 5:07:23375 days ago1707887243IN
Curve: Two Crypto Factory
0 ETH0.0149444717.12494143
Deploy_pool191929052024-02-09 20:19:35380 days ago1707509975IN
Curve: Two Crypto Factory
0 ETH0.0439473650.36549233
Deploy_gauge191630022024-02-05 15:37:11384 days ago1707147431IN
Curve: Two Crypto Factory
0 ETH0.0088163526.00150356
Deploy_pool191629962024-02-05 15:35:59384 days ago1707147359IN
Curve: Two Crypto Factory
0 ETH0.0195632823.00212947
Deploy_gauge191626532024-02-05 14:25:59384 days ago1707143159IN
Curve: Two Crypto Factory
0 ETH0.0139782441.22512931
Deploy_pool191626322024-02-05 14:21:47384 days ago1707142907IN
Curve: Two Crypto Factory
0 ETH0.0373136543.26215435
Deploy_pool191625902024-02-05 14:13:23384 days ago1707142403IN
Curve: Two Crypto Factory
0 ETH0.0354361841.66791269
Deploy_gauge191490362024-02-03 16:32:11386 days ago1706977931IN
Curve: Two Crypto Factory
0 ETH0.0092994927.42638927
Deploy_pool191469712024-02-03 9:34:35386 days ago1706952875IN
Curve: Two Crypto Factory
0 ETH0.0129179215.15503621
Deploy_pool191432802024-02-02 21:06:11387 days ago1706907971IN
Curve: Two Crypto Factory
0 ETH0.0185973321.87417874
Deploy_gauge191288322024-01-31 20:26:23389 days ago1706732783IN
Curve: Two Crypto Factory
0 ETH0.008601725.36843788
Deploy_pool191288282024-01-31 20:25:35389 days ago1706732735IN
Curve: Two Crypto Factory
0 ETH0.0234832227.45529382
Deploy_pool191269992024-01-31 14:16:11389 days ago1706710571IN
Curve: Two Crypto Factory
0 ETH0.0267476731.45119734
Deploy_pool190126672024-01-15 13:46:23405 days ago1705326383IN
Curve: Two Crypto Factory
0 ETH0.0193438322.68938622
Deploy_gauge189407412024-01-05 11:21:47415 days ago1704453707IN
Curve: Two Crypto Factory
0 ETH0.0055696717.57582768
Deploy_pool189407392024-01-05 11:21:23415 days ago1704453683IN
Curve: Two Crypto Factory
0 ETH0.0155813617.67137174
Deploy_gauge188881652023-12-29 2:07:59423 days ago1703815679IN
Curve: Two Crypto Factory
0 ETH0.006013717.73583911
Deploy_pool188881432023-12-29 2:03:23423 days ago1703815403IN
Curve: Two Crypto Factory
0 ETH0.0164125818.80951775
Deploy_gauge188820452023-12-28 5:31:35423 days ago1703741495IN
Curve: Two Crypto Factory
0 ETH0.00901928.46063589
Deploy_pool188820402023-12-28 5:30:35423 days ago1703741435IN
Curve: Two Crypto Factory
0 ETH0.0258853429.60009292
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
219134502025-02-24 3:17:4715 mins ago1740367067
0xF18056Bb...2531aac99
0 ETH
219134222025-02-24 3:12:1121 mins ago1740366731
0xF18056Bb...2531aac99
0 ETH
219133962025-02-24 3:06:5926 mins ago1740366419
0xF18056Bb...2531aac99
0 ETH
219133732025-02-24 3:02:2331 mins ago1740366143
0xF18056Bb...2531aac99
0 ETH
219133642025-02-24 3:00:3533 mins ago1740366035
0xF18056Bb...2531aac99
0 ETH
219131902025-02-24 2:25:471 hr ago1740363947
0xF18056Bb...2531aac99
0 ETH
219131792025-02-24 2:23:351 hr ago1740363815
0xF18056Bb...2531aac99
0 ETH
219131532025-02-24 2:18:231 hr ago1740363503
0xF18056Bb...2531aac99
0 ETH
219130802025-02-24 2:03:471 hr ago1740362627
0xF18056Bb...2531aac99
0 ETH
219130722025-02-24 2:02:111 hr ago1740362531
0xF18056Bb...2531aac99
0 ETH
219130272025-02-24 1:53:111 hr ago1740361991
0xF18056Bb...2531aac99
0 ETH
219130162025-02-24 1:50:591 hr ago1740361859
0xF18056Bb...2531aac99
0 ETH
219129732025-02-24 1:42:231 hr ago1740361343
0xF18056Bb...2531aac99
0 ETH
219129702025-02-24 1:41:471 hr ago1740361307
0xF18056Bb...2531aac99
0 ETH
219129372025-02-24 1:35:111 hr ago1740360911
0xF18056Bb...2531aac99
0 ETH
219128312025-02-24 1:13:592 hrs ago1740359639
0xF18056Bb...2531aac99
0 ETH
219128162025-02-24 1:10:592 hrs ago1740359459
0xF18056Bb...2531aac99
0 ETH
219127902025-02-24 1:05:352 hrs ago1740359135
0xF18056Bb...2531aac99
0 ETH
219127792025-02-24 1:03:232 hrs ago1740359003
0xF18056Bb...2531aac99
0 ETH
219125762025-02-24 0:22:233 hrs ago1740356543
0xF18056Bb...2531aac99
0 ETH
219125362025-02-24 0:14:233 hrs ago1740356063
0xF18056Bb...2531aac99
0 ETH
219125182025-02-24 0:10:473 hrs ago1740355847
0xF18056Bb...2531aac99
0 ETH
219125082025-02-24 0:08:473 hrs ago1740355727
0xF18056Bb...2531aac99
0 ETH
219124892025-02-24 0:04:593 hrs ago1740355499
0xF18056Bb...2531aac99
0 ETH
219124892025-02-24 0:04:593 hrs ago1740355499
0xF18056Bb...2531aac99
0 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Vyper_contract

Compiler Version
vyper:0.3.1

Optimization Enabled:
N/A

Other Settings:
berlin EvmVersion, None license
# @version 0.3.1
"""
@title Curve Factory
@license MIT
@author Curve.Fi
@notice Permissionless pool deployer and registry
"""


interface CryptoPool:
    def balances(i: uint256) -> uint256: view
    def initialize(
        A: uint256,
        gamma: uint256,
        mid_fee: uint256,
        out_fee: uint256,
        allowed_extra_profit: uint256,
        fee_gamma: uint256,
        adjustment_step: uint256,
        admin_fee: uint256,
        ma_half_time: uint256,
        initial_price: uint256,
        _token: address,
        _coins: address[2],
        _precisions: uint256
    ): nonpayable

interface ERC20:
    def decimals() -> uint256: view

interface LiquidityGauge:
    def initialize(_lp_token: address): nonpayable

interface Token:
    def initialize(_name: String[64], _symbol: String[32], _pool: address): nonpayable


event CryptoPoolDeployed:
    token: address
    coins: address[2]
    A: uint256
    gamma: uint256
    mid_fee: uint256
    out_fee: uint256
    allowed_extra_profit: uint256
    fee_gamma: uint256
    adjustment_step: uint256
    admin_fee: uint256
    ma_half_time: uint256
    initial_price: uint256
    deployer: address

event LiquidityGaugeDeployed:
    pool: address
    token: address
    gauge: address

event UpdateFeeReceiver:
    _old_fee_receiver: address
    _new_fee_receiver: address

event UpdatePoolImplementation:
    _old_pool_implementation: address
    _new_pool_implementation: address

event UpdateTokenImplementation:
    _old_token_implementation: address
    _new_token_implementation: address

event UpdateGaugeImplementation:
    _old_gauge_implementation: address
    _new_gauge_implementation: address

event TransferOwnership:
    _old_owner: address
    _new_owner: address


struct PoolArray:
    token: address
    liquidity_gauge: address
    coins: address[2]
    decimals: uint256


N_COINS: constant(int128) = 2
A_MULTIPLIER: constant(uint256) = 10000

# Limits
MAX_ADMIN_FEE: constant(uint256) = 10 * 10 ** 9
MIN_FEE: constant(uint256) = 5 * 10 ** 5  # 0.5 bps
MAX_FEE: constant(uint256) = 10 * 10 ** 9

MIN_GAMMA: constant(uint256) = 10 ** 10
MAX_GAMMA: constant(uint256) = 2 * 10 ** 16

MIN_A: constant(uint256) = N_COINS ** N_COINS * A_MULTIPLIER / 10
MAX_A: constant(uint256) = N_COINS ** N_COINS * A_MULTIPLIER * 100000


WETH: immutable(address)


admin: public(address)
future_admin: public(address)

# fee receiver for plain pools
fee_receiver: public(address)

pool_implementation: public(address)
token_implementation: public(address)
gauge_implementation: public(address)

# mapping of coins -> pools for trading
# a mapping key is generated for each pair of addresses via
# `bitwise_xor(convert(a, uint256), convert(b, uint256))`
markets: HashMap[uint256, address[4294967296]]
market_counts: HashMap[uint256, uint256]

pool_count: public(uint256)              # actual length of pool_list
pool_data: HashMap[address, PoolArray]
pool_list: public(address[4294967296])   # master list of pools


@external
def __init__(
    _fee_receiver: address,
    _pool_implementation: address,
    _token_implementation: address,
    _gauge_implementation: address,
    _weth: address
):
    self.fee_receiver = _fee_receiver
    self.pool_implementation = _pool_implementation
    self.token_implementation = _token_implementation
    self.gauge_implementation = _gauge_implementation

    self.admin = msg.sender
    WETH = _weth

    log UpdateFeeReceiver(ZERO_ADDRESS, _fee_receiver)
    log UpdatePoolImplementation(ZERO_ADDRESS, _pool_implementation)
    log UpdateTokenImplementation(ZERO_ADDRESS, _token_implementation)
    log UpdateGaugeImplementation(ZERO_ADDRESS, _gauge_implementation)
    log TransferOwnership(ZERO_ADDRESS, msg.sender)


# <--- Pool Deployers --->

@external
def deploy_pool(
    _name: String[32],
    _symbol: String[10],
    _coins: address[2],
    A: uint256,
    gamma: uint256,
    mid_fee: uint256,
    out_fee: uint256,
    allowed_extra_profit: uint256,
    fee_gamma: uint256,
    adjustment_step: uint256,
    admin_fee: uint256,
    ma_half_time: uint256,
    initial_price: uint256
) -> address:
    """
    @notice Deploy a new pool
    @param _name Name of the new plain pool
    @param _symbol Symbol for the new plain pool - will be concatenated with factory symbol
    Other parameters need some description
    @return Address of the deployed pool
    """
    # Validate parameters
    assert A > MIN_A-1
    assert A < MAX_A+1
    assert gamma > MIN_GAMMA-1
    assert gamma < MAX_GAMMA+1
    assert mid_fee > MIN_FEE-1
    assert mid_fee < MAX_FEE-1
    assert out_fee >= mid_fee
    assert out_fee < MAX_FEE-1
    assert admin_fee < 10**18+1
    assert allowed_extra_profit < 10**16+1
    assert fee_gamma < 10**18+1
    assert fee_gamma > 0
    assert adjustment_step < 10**18+1
    assert adjustment_step > 0
    assert ma_half_time < 7 * 86400
    assert ma_half_time > 0
    assert initial_price > 10**6
    assert initial_price < 10**30
    assert _coins[0] != _coins[1], "Duplicate coins"

    decimals: uint256[2] = empty(uint256[2])
    for i in range(2):
        d: uint256 = ERC20(_coins[i]).decimals()
        assert d < 19, "Max 18 decimals for coins"
        decimals[i] = d
    precisions: uint256 = (18 - decimals[0]) + shift(18 - decimals[1], 8)


    name: String[64] = concat("Curve.fi Factory Crypto Pool: ", _name)
    symbol: String[32] = concat(_symbol, "-f")

    token: address = create_forwarder_to(self.token_implementation)
    pool: address = create_forwarder_to(self.pool_implementation)

    Token(token).initialize(name, symbol, pool)
    CryptoPool(pool).initialize(
        A, gamma, mid_fee, out_fee, allowed_extra_profit, fee_gamma,
        adjustment_step, admin_fee, ma_half_time, initial_price,
        token, _coins, precisions)

    length: uint256 = self.pool_count
    self.pool_list[length] = pool
    self.pool_count = length + 1
    self.pool_data[pool].token = token
    self.pool_data[pool].decimals = shift(decimals[0], 8) + decimals[1]
    self.pool_data[pool].coins = _coins

    key: uint256 = bitwise_xor(convert(_coins[0], uint256), convert(_coins[1], uint256))
    length = self.market_counts[key]
    self.markets[key][length] = pool
    self.market_counts[key] = length + 1

    log CryptoPoolDeployed(
        token, _coins,
        A, gamma, mid_fee, out_fee, allowed_extra_profit, fee_gamma,
        adjustment_step, admin_fee, ma_half_time, initial_price,
        msg.sender)
    return pool


@external
def deploy_gauge(_pool: address) -> address:
    """
    @notice Deploy a liquidity gauge for a factory pool
    @param _pool Factory pool address to deploy a gauge for
    @return Address of the deployed gauge
    """
    assert self.pool_data[_pool].coins[0] != ZERO_ADDRESS, "Unknown pool"
    assert self.pool_data[_pool].liquidity_gauge == ZERO_ADDRESS, "Gauge already deployed"

    gauge: address = create_forwarder_to(self.gauge_implementation)
    token: address = self.pool_data[_pool].token
    LiquidityGauge(gauge).initialize(token)
    self.pool_data[_pool].liquidity_gauge = gauge

    log LiquidityGaugeDeployed(_pool, token, gauge)
    return gauge


# <--- Admin / Guarded Functionality --->


@external
def set_fee_receiver(_fee_receiver: address):
    """
    @notice Set fee receiver
    @param _fee_receiver Address that fees are sent to
    """
    assert msg.sender == self.admin  # dev: admin only

    log UpdateFeeReceiver(self.fee_receiver, _fee_receiver)
    self.fee_receiver = _fee_receiver


@external
def set_pool_implementation(_pool_implementation: address):
    """
    @notice Set pool implementation
    @dev Set to ZERO_ADDRESS to prevent deployment of new pools
    @param _pool_implementation Address of the new pool implementation
    """
    assert msg.sender == self.admin  # dev: admin only

    log UpdatePoolImplementation(self.pool_implementation, _pool_implementation)
    self.pool_implementation = _pool_implementation


@external
def set_token_implementation(_token_implementation: address):
    """
    @notice Set token implementation
    @dev Set to ZERO_ADDRESS to prevent deployment of new pools
    @param _token_implementation Address of the new token implementation
    """
    assert msg.sender == self.admin  # dev: admin only

    log UpdateTokenImplementation(self.token_implementation, _token_implementation)
    self.token_implementation = _token_implementation


@external
def set_gauge_implementation(_gauge_implementation: address):
    """
    @notice Set gauge implementation
    @dev Set to ZERO_ADDRESS to prevent deployment of new gauges
    @param _gauge_implementation Address of the new token implementation
    """
    assert msg.sender == self.admin  # dev: admin-only function

    log UpdateGaugeImplementation(self.gauge_implementation, _gauge_implementation)
    self.gauge_implementation = _gauge_implementation


@external
def commit_transfer_ownership(_addr: address):
    """
    @notice Transfer ownership of this contract to `addr`
    @param _addr Address of the new owner
    """
    assert msg.sender == self.admin  # dev: admin only

    self.future_admin = _addr


@external
def accept_transfer_ownership():
    """
    @notice Accept a pending ownership transfer
    @dev Only callable by the new owner
    """
    assert msg.sender == self.future_admin  # dev: future admin only

    log TransferOwnership(self.admin, msg.sender)
    self.admin = msg.sender


# <--- Factory Getters --->


@view
@external
def find_pool_for_coins(_from: address, _to: address, i: uint256 = 0) -> address:
    """
    @notice Find an available pool for exchanging two coins
    @param _from Address of coin to be sent
    @param _to Address of coin to be received
    @param i Index value. When multiple pools are available
            this value is used to return the n'th address.
    @return Pool address
    """
    key: uint256 = bitwise_xor(convert(_from, uint256), convert(_to, uint256))
    return self.markets[key][i]


# <--- Pool Getters --->


@view
@external
def get_coins(_pool: address) -> address[2]:
    """
    @notice Get the coins within a pool
    @param _pool Pool address
    @return List of coin addresses
    """
    return self.pool_data[_pool].coins


@view
@external
def get_decimals(_pool: address) -> uint256[2]:
    """
    @notice Get decimal places for each coin within a pool
    @param _pool Pool address
    @return uint256 list of decimals
    """
    decimals: uint256 = self.pool_data[_pool].decimals
    return [shift(decimals, -8), decimals % 256]


@view
@external
def get_balances(_pool: address) -> uint256[2]:
    """
    @notice Get balances for each coin within a pool
    @dev For pools using lending, these are the wrapped coin balances
    @param _pool Pool address
    @return uint256 list of balances
    """
    return [CryptoPool(_pool).balances(0), CryptoPool(_pool).balances(1)]


@view
@external
def get_coin_indices(
    _pool: address,
    _from: address,
    _to: address
) -> (uint256, uint256):
    """
    @notice Convert coin addresses to indices for use with pool methods
    @param _pool Pool address
    @param _from Coin address to be used as `i` within a pool
    @param _to Coin address to be used as `j` within a pool
    @return uint256 `i`, uint256 `j`
    """
    coins: address[2] = self.pool_data[_pool].coins

    if _from == coins[0] and _to == coins[1]:
        return 0, 1
    elif _from == coins[1] and _to == coins[0]:
        return 1, 0
    else:
        raise "Coins not found"


@view
@external
def get_gauge(_pool: address) -> address:
    """
    @notice Get the address of the liquidity gauge contract for a factory pool
    @dev Returns `ZERO_ADDRESS` if a gauge has not been deployed
    @param _pool Pool address
    @return Implementation contract address
    """
    return self.pool_data[_pool].liquidity_gauge


@view
@external
def get_eth_index(_pool: address) -> uint256:
    """
    @notice Get the index of WETH for a pool
    @dev Returns MAX_UINT256 if WETH is not a coin in the pool
    """
    for i in range(2):
        if self.pool_data[_pool].coins[i] == WETH:
            return i
    return MAX_UINT256


@view
@external
def get_token(_pool: address) -> address:
    """
    @notice Get the address of the LP token of a pool
    """
    return self.pool_data[_pool].token

Contract Security Audit

Contract ABI

[{"name":"CryptoPoolDeployed","inputs":[{"name":"token","type":"address","indexed":false},{"name":"coins","type":"address[2]","indexed":false},{"name":"A","type":"uint256","indexed":false},{"name":"gamma","type":"uint256","indexed":false},{"name":"mid_fee","type":"uint256","indexed":false},{"name":"out_fee","type":"uint256","indexed":false},{"name":"allowed_extra_profit","type":"uint256","indexed":false},{"name":"fee_gamma","type":"uint256","indexed":false},{"name":"adjustment_step","type":"uint256","indexed":false},{"name":"admin_fee","type":"uint256","indexed":false},{"name":"ma_half_time","type":"uint256","indexed":false},{"name":"initial_price","type":"uint256","indexed":false},{"name":"deployer","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"name":"LiquidityGaugeDeployed","inputs":[{"name":"pool","type":"address","indexed":false},{"name":"token","type":"address","indexed":false},{"name":"gauge","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"name":"UpdateFeeReceiver","inputs":[{"name":"_old_fee_receiver","type":"address","indexed":false},{"name":"_new_fee_receiver","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"name":"UpdatePoolImplementation","inputs":[{"name":"_old_pool_implementation","type":"address","indexed":false},{"name":"_new_pool_implementation","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"name":"UpdateTokenImplementation","inputs":[{"name":"_old_token_implementation","type":"address","indexed":false},{"name":"_new_token_implementation","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"name":"UpdateGaugeImplementation","inputs":[{"name":"_old_gauge_implementation","type":"address","indexed":false},{"name":"_new_gauge_implementation","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"name":"TransferOwnership","inputs":[{"name":"_old_owner","type":"address","indexed":false},{"name":"_new_owner","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"stateMutability":"nonpayable","type":"constructor","inputs":[{"name":"_fee_receiver","type":"address"},{"name":"_pool_implementation","type":"address"},{"name":"_token_implementation","type":"address"},{"name":"_gauge_implementation","type":"address"},{"name":"_weth","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"deploy_pool","inputs":[{"name":"_name","type":"string"},{"name":"_symbol","type":"string"},{"name":"_coins","type":"address[2]"},{"name":"A","type":"uint256"},{"name":"gamma","type":"uint256"},{"name":"mid_fee","type":"uint256"},{"name":"out_fee","type":"uint256"},{"name":"allowed_extra_profit","type":"uint256"},{"name":"fee_gamma","type":"uint256"},{"name":"adjustment_step","type":"uint256"},{"name":"admin_fee","type":"uint256"},{"name":"ma_half_time","type":"uint256"},{"name":"initial_price","type":"uint256"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"nonpayable","type":"function","name":"deploy_gauge","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"nonpayable","type":"function","name":"set_fee_receiver","inputs":[{"name":"_fee_receiver","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_pool_implementation","inputs":[{"name":"_pool_implementation","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_token_implementation","inputs":[{"name":"_token_implementation","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_gauge_implementation","inputs":[{"name":"_gauge_implementation","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"commit_transfer_ownership","inputs":[{"name":"_addr","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"accept_transfer_ownership","inputs":[],"outputs":[]},{"stateMutability":"view","type":"function","name":"find_pool_for_coins","inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"find_pool_for_coins","inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"i","type":"uint256"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"get_coins","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"address[2]"}]},{"stateMutability":"view","type":"function","name":"get_decimals","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"uint256[2]"}]},{"stateMutability":"view","type":"function","name":"get_balances","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"uint256[2]"}]},{"stateMutability":"view","type":"function","name":"get_coin_indices","inputs":[{"name":"_pool","type":"address"},{"name":"_from","type":"address"},{"name":"_to","type":"address"}],"outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"get_gauge","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"get_eth_index","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"get_token","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"admin","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"future_admin","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"fee_receiver","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"pool_implementation","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"token_implementation","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"gauge_implementation","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"pool_count","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"pool_list","inputs":[{"name":"arg0","type":"uint256"}],"outputs":[{"name":"","type":"address"}]}]

602061130e6080396080518060a01c6113095760e0526020602061130e016080396080518060a01c61130957610100526020604061130e016080396080518060a01c61130957610120526020606061130e016080396080518060a01c61130957610140526020608061130e016080396080518060a01c611309576101605260e0516002556101005160035561012051600455610140516005553360005561016051610180527f2861448678f0be67f11bfb5481b3e3b4cfeb3acc6126ad60a05f95bfc653066660006101a05260e0516101c05260406101a0a17f0617fd31aa5ab95ec80eefc1eb61a2c477aa419d1d761b4e46f5f077e47852aa60006101a052610100516101c05260406101a0a17f1cc4f8e20b0cd3e5109eb156cadcfd3a5496ac0794c6085ca02afd7d710dd56660006101a052610120516101c05260406101a0a17f1fd705f9c77053962a503f2f2f57f0862b4c3af687c25615c13817a86946c35960006101a052610140516101c05260406101a0a17f5c486528ec3e3f0ea91181cff8116f02bfa350e03b8b6f12e00765adbb5af85c60006101a052336101c05260406101a0a16112e156600436101561000d57611128565b60046000601c376000513461112e5763c955fa04811861080057600435600401602081351161112e57808035602001808260e037505050602435600401600a81351161112e578080356020018082610120375050506044358060a01c61112e57610160526064358060a01c61112e5761018052610f9f608435111561112e5763ee6b2801608435101561112e576402540be3ff60a435111561112e5766470de4df82000160a435101561112e576207a11f60c435111561112e576402540be3ff60c435101561112e5760c43560e4351061112e576402540be3ff60e435101561112e57670de0b6b3a764000161016435101561112e57662386f26fc1000161010435101561112e57670de0b6b3a764000161012435101561112e57600061012435111561112e57670de0b6b3a764000161014435101561112e57600061014435111561112e5762093a8061018435101561112e57600061018435111561112e57620f42406101a435111561112e576c0c9f2c9cd04674edea400000006101a435101561112e576101805161016051141561021857600f6101a0527f4475706c696361746520636f696e7300000000000000000000000000000000006101c0526101a0506101a051806101c001818260206001820306601f82010390500336823750506308c379a0610160526020610180526101a05160206001820306601f820103905060440161017cfd5b6040366101a0376101e060006002818352015b63313ce567610220526020610220600461023c6101606101e051600281101561112e5760200201515afa610264573d600060003e3d6000fd5b601f3d111561112e576102205161020052601361020051106102f7576019610220527f4d617820313820646563696d616c7320666f7220636f696e73000000000000006102405261022050610220518061024001818260206001820306601f82010390500336823750506308c379a06101e0526020610200526102205160206001820306601f82010390506044016101fcfd5b610200516101a06101e051600281101561112e576020020152815160010180835281141561022b57505060126101a05180821061112e578082039050905060126101c05180821061112e578082039050905060081b818183011061112e57808201905090506101e0526000601e610260527f43757276652e666920466163746f72792043727970746f20506f6f6c3a20000061028052610260601e806020846102a00101826020850160045afa50508051820191505060e06020806020846102a00101826020850160045afa505080518201915050806102a0526102a09050805160200180610200828460045afa905050506000610120600a806020846102e00101826020850160045afa50508051820191505060026102a0527f2d660000000000000000000000000000000000000000000000000000000000006102c0526102a06002806020846102e00101826020850160045afa505080518201915050806102e0526102e09050805160200180610260828460045afa905050507f602d3d8160093d39f3363d3d373d3d3d363d73000000000000000000000000006102c05260045460601b6102d3527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006102e75260366102c06000f06102a0527f602d3d8160093d39f3363d3d373d3d3d363d73000000000000000000000000006102e05260035460601b6102f3527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006103075260366102e06000f06102c05263077f224a6102e0526103008060608082528083018061020080516020018083828460045afa905050508051806020830101818260206001820306601f8201039050033682375050805160200160206001820306601f820103905090509050810190506020820191508082528083018061026080516020018083828460045afa905050508051806020830101818260206001820306601f8201039050033682375050805160200160206001820306601f820103905090509050810190506020820191506102c05182525050506102a0513b1561112e57600060006101046102fc60006102a0515af161062a573d600060003e3d6000fd5b63a39e95c56102e0526101406084610300376102a05161044052610160516104605261018051610480526101e0516104a0526102c0513b1561112e57600060006101c46102fc60006102c0515af1610687573d600060003e3d6000fd5b6008546102e0526102c05160016102e05164010000000081101561112e5702600a01556102e0516001818183011061112e57808201905090506008556102a05160096102c05160a0526080526040608020556101a05160081b6101c051818183011061112e5780820190509050600460096102c05160a05260805260406080200155600260096102c05160a052608052604060802001610160518155610180516001820155506101805161016051186103005260076103005160a0526080526040608020546102e0526102c05160016102e05164010000000081101561112e570260066103005160a052608052604060802001556102e0516001818183011061112e578082019050905060076103005160a0526080526040608020557f0394cb40d7dbe28dad1d4ee890bdd35bbb0d89e17924a80a542535e83d54ba146102a0516103205261016051610340526101805161036052610140608461038037336104c0526101c0610320a16102c051610320526020610320f35b6396bebb348118610a4b576004358060a01c61112e5760e05260006002600960e05160a0526080526040608020015414156108a957600c610100527f556e6b6e6f776e20706f6f6c00000000000000000000000000000000000000006101205261010050610100518061012001818260206001820306601f82010390500336823750506308c379a060c052602060e0526101005160206001820306601f820103905060440160dcfd5b6001600960e05160a0526080526040608020015415610936576016610100527f476175676520616c7265616479206465706c6f796564000000000000000000006101205261010050610100518061012001818260206001820306601f82010390500336823750506308c379a060c052602060e0526101005160206001820306601f820103905060440160dcfd5b7f602d3d8160093d39f3363d3d373d3d3d363d73000000000000000000000000006101205260055460601b610133527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006101475260366101206000f061010052600960e05160a0526080526040608020546101205263c4d66de8610140526101205161016052610100513b1561112e5760006000602461015c6000610100515af16109e6573d600060003e3d6000fd5b610100516001600960e05160a052608052604060802001557f1d6247eae69b5feb96b30be78552f35de45f61fdb6d6d7e1b08aae159b6226af60e05161014052610120516101605261010051610180526060610140a161010051610140526020610140f35b63e41ab7718118610aaa576004358060a01c61112e5760e052600054331861112e577f2861448678f0be67f11bfb5481b3e3b4cfeb3acc6126ad60a05f95bfc65306666002546101005260e051610120526040610100a160e051600255005b639ed796d08118610b09576004358060a01c61112e5760e052600054331861112e577f0617fd31aa5ab95ec80eefc1eb61a2c477aa419d1d761b4e46f5f077e47852aa6003546101005260e051610120526040610100a160e051600355005b63653023c28118610b68576004358060a01c61112e5760e052600054331861112e577f1cc4f8e20b0cd3e5109eb156cadcfd3a5496ac0794c6085ca02afd7d710dd5666004546101005260e051610120526040610100a160e051600455005b638f03182c8118610bc7576004358060a01c61112e5760e052600054331861112e577f1fd705f9c77053962a503f2f2f57f0862b4c3af687c25615c13817a86946c3596005546101005260e051610120526040610100a160e051600555005b636b441a408118610bf1576004358060a01c61112e5760e052600054331861112e5760e051600155005b63e5ea47b88118610c3c57600154331861112e577f5c486528ec3e3f0ea91181cff8116f02bfa350e03b8b6f12e00765adbb5af85c60005460e0523361010052604060e0a133600055005b63a87df06c8118610c5257600061012052610c65565b636982eb0b8118610cc057604435610120525b6004358060a01c61112e5760e0526024358060a01c61112e57610100526101005160e051186101405260016101205164010000000081101561112e570260066101405160a05260805260406080200154610160526020610160f35b639ac90d3d8118610d03576004358060a01c61112e5760e0526002600960e05160a052608052604060802001805461010052600181015461012052506040610100f35b6352b515558118610d58576004358060a01c61112e5760e0526004600960e05160a05260805260406080200154610100526101005160081c610120526101005161010080820690509050610140526040610120f35b6392e3cc2d8118610df4576004358060a01c61112e5760e052634903b0d1610100526000610120526020610100602461011c60e0515afa610d9e573d600060003e3d6000fd5b601f3d111561112e576101005161018052634903b0d1610140526001610160526020610140602461015c60e0515afa610ddc573d600060003e3d6000fd5b601f3d111561112e57610140516101a0526040610180f35b63eb85226d8118610f3f576004358060a01c61112e5760e0526024358060a01c61112e57610100526044358060a01c61112e57610120526002600960e05160a05260805260406080200180546101405260018101546101605250610140516101005118610e6957610160516101205114610e6c565b60005b610f2757610160516101005118610e8b57610140516101205114610e8e565b60005b610f0d57600f610180527f436f696e73206e6f7420666f756e6400000000000000000000000000000000006101a0526101805061018051806101a001818260206001820306601f82010390500336823750506308c379a0610140526020610160526101805160206001820306601f820103905060440161015cfd610f3d565b60016101805260006101a0526040610180610f3d56610f3d565b60006101805260016101a0526040610180610f3d565bf35b63daf297b98118610f77576004358060a01c61112e5760e0526001600960e05160a05260805260406080200154610100526020610100f35b63ccb156058118611025576004358060a01c61112e5760e05261010060006002818352015b602060203803608039608051600161010051600281101561112e57026002600960e05160a052608052604060802001015418610fe75750505061010051610120526020610120611023565b8151600101808352811415610f9c5750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101005260206101005bf35b63977d9122811861105a576004358060a01c61112e5760e052600960e05160a052608052604060802054610100526020610100f35b63f851a44081186110715760005460e052602060e0f35b6317f7182a81186110885760015460e052602060e0f35b63cab4d3db811861109f5760025460e052602060e0f35b632489a2c381186110b65760035460e052602060e0f35b6335214d8181186110cd5760045460e052602060e0f35b638df2420781186110e45760055460e052602060e0f35b63956aae3a81186110fb5760085460e052602060e0f35b633a1d5d8e811861112657600160043564010000000081101561112e5702600a015460e052602060e0f35b505b60006000fd5b600080fd5b6101ae6112e1036101ae6101a0396101ae6112e10361018051816101a00152806020016101a0f35b600080fd000000000000000000000000ecb456ea5365865ebab8a2661b0c503410e9b347000000000000000000000000a85461afc2deec01bda23b5cd267d51f765fba10000000000000000000000000c08550a4cc5333f40e593ecc4c4724808085d304000000000000000000000000dc892358d55d5ae1ec47a531130d62151eba36e5000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2

Deployed Bytecode

0x600436101561000d57611128565b60046000601c376000513461112e5763c955fa04811861080057600435600401602081351161112e57808035602001808260e037505050602435600401600a81351161112e578080356020018082610120375050506044358060a01c61112e57610160526064358060a01c61112e5761018052610f9f608435111561112e5763ee6b2801608435101561112e576402540be3ff60a435111561112e5766470de4df82000160a435101561112e576207a11f60c435111561112e576402540be3ff60c435101561112e5760c43560e4351061112e576402540be3ff60e435101561112e57670de0b6b3a764000161016435101561112e57662386f26fc1000161010435101561112e57670de0b6b3a764000161012435101561112e57600061012435111561112e57670de0b6b3a764000161014435101561112e57600061014435111561112e5762093a8061018435101561112e57600061018435111561112e57620f42406101a435111561112e576c0c9f2c9cd04674edea400000006101a435101561112e576101805161016051141561021857600f6101a0527f4475706c696361746520636f696e7300000000000000000000000000000000006101c0526101a0506101a051806101c001818260206001820306601f82010390500336823750506308c379a0610160526020610180526101a05160206001820306601f820103905060440161017cfd5b6040366101a0376101e060006002818352015b63313ce567610220526020610220600461023c6101606101e051600281101561112e5760200201515afa610264573d600060003e3d6000fd5b601f3d111561112e576102205161020052601361020051106102f7576019610220527f4d617820313820646563696d616c7320666f7220636f696e73000000000000006102405261022050610220518061024001818260206001820306601f82010390500336823750506308c379a06101e0526020610200526102205160206001820306601f82010390506044016101fcfd5b610200516101a06101e051600281101561112e576020020152815160010180835281141561022b57505060126101a05180821061112e578082039050905060126101c05180821061112e578082039050905060081b818183011061112e57808201905090506101e0526000601e610260527f43757276652e666920466163746f72792043727970746f20506f6f6c3a20000061028052610260601e806020846102a00101826020850160045afa50508051820191505060e06020806020846102a00101826020850160045afa505080518201915050806102a0526102a09050805160200180610200828460045afa905050506000610120600a806020846102e00101826020850160045afa50508051820191505060026102a0527f2d660000000000000000000000000000000000000000000000000000000000006102c0526102a06002806020846102e00101826020850160045afa505080518201915050806102e0526102e09050805160200180610260828460045afa905050507f602d3d8160093d39f3363d3d373d3d3d363d73000000000000000000000000006102c05260045460601b6102d3527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006102e75260366102c06000f06102a0527f602d3d8160093d39f3363d3d373d3d3d363d73000000000000000000000000006102e05260035460601b6102f3527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006103075260366102e06000f06102c05263077f224a6102e0526103008060608082528083018061020080516020018083828460045afa905050508051806020830101818260206001820306601f8201039050033682375050805160200160206001820306601f820103905090509050810190506020820191508082528083018061026080516020018083828460045afa905050508051806020830101818260206001820306601f8201039050033682375050805160200160206001820306601f820103905090509050810190506020820191506102c05182525050506102a0513b1561112e57600060006101046102fc60006102a0515af161062a573d600060003e3d6000fd5b63a39e95c56102e0526101406084610300376102a05161044052610160516104605261018051610480526101e0516104a0526102c0513b1561112e57600060006101c46102fc60006102c0515af1610687573d600060003e3d6000fd5b6008546102e0526102c05160016102e05164010000000081101561112e5702600a01556102e0516001818183011061112e57808201905090506008556102a05160096102c05160a0526080526040608020556101a05160081b6101c051818183011061112e5780820190509050600460096102c05160a05260805260406080200155600260096102c05160a052608052604060802001610160518155610180516001820155506101805161016051186103005260076103005160a0526080526040608020546102e0526102c05160016102e05164010000000081101561112e570260066103005160a052608052604060802001556102e0516001818183011061112e578082019050905060076103005160a0526080526040608020557f0394cb40d7dbe28dad1d4ee890bdd35bbb0d89e17924a80a542535e83d54ba146102a0516103205261016051610340526101805161036052610140608461038037336104c0526101c0610320a16102c051610320526020610320f35b6396bebb348118610a4b576004358060a01c61112e5760e05260006002600960e05160a0526080526040608020015414156108a957600c610100527f556e6b6e6f776e20706f6f6c00000000000000000000000000000000000000006101205261010050610100518061012001818260206001820306601f82010390500336823750506308c379a060c052602060e0526101005160206001820306601f820103905060440160dcfd5b6001600960e05160a0526080526040608020015415610936576016610100527f476175676520616c7265616479206465706c6f796564000000000000000000006101205261010050610100518061012001818260206001820306601f82010390500336823750506308c379a060c052602060e0526101005160206001820306601f820103905060440160dcfd5b7f602d3d8160093d39f3363d3d373d3d3d363d73000000000000000000000000006101205260055460601b610133527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006101475260366101206000f061010052600960e05160a0526080526040608020546101205263c4d66de8610140526101205161016052610100513b1561112e5760006000602461015c6000610100515af16109e6573d600060003e3d6000fd5b610100516001600960e05160a052608052604060802001557f1d6247eae69b5feb96b30be78552f35de45f61fdb6d6d7e1b08aae159b6226af60e05161014052610120516101605261010051610180526060610140a161010051610140526020610140f35b63e41ab7718118610aaa576004358060a01c61112e5760e052600054331861112e577f2861448678f0be67f11bfb5481b3e3b4cfeb3acc6126ad60a05f95bfc65306666002546101005260e051610120526040610100a160e051600255005b639ed796d08118610b09576004358060a01c61112e5760e052600054331861112e577f0617fd31aa5ab95ec80eefc1eb61a2c477aa419d1d761b4e46f5f077e47852aa6003546101005260e051610120526040610100a160e051600355005b63653023c28118610b68576004358060a01c61112e5760e052600054331861112e577f1cc4f8e20b0cd3e5109eb156cadcfd3a5496ac0794c6085ca02afd7d710dd5666004546101005260e051610120526040610100a160e051600455005b638f03182c8118610bc7576004358060a01c61112e5760e052600054331861112e577f1fd705f9c77053962a503f2f2f57f0862b4c3af687c25615c13817a86946c3596005546101005260e051610120526040610100a160e051600555005b636b441a408118610bf1576004358060a01c61112e5760e052600054331861112e5760e051600155005b63e5ea47b88118610c3c57600154331861112e577f5c486528ec3e3f0ea91181cff8116f02bfa350e03b8b6f12e00765adbb5af85c60005460e0523361010052604060e0a133600055005b63a87df06c8118610c5257600061012052610c65565b636982eb0b8118610cc057604435610120525b6004358060a01c61112e5760e0526024358060a01c61112e57610100526101005160e051186101405260016101205164010000000081101561112e570260066101405160a05260805260406080200154610160526020610160f35b639ac90d3d8118610d03576004358060a01c61112e5760e0526002600960e05160a052608052604060802001805461010052600181015461012052506040610100f35b6352b515558118610d58576004358060a01c61112e5760e0526004600960e05160a05260805260406080200154610100526101005160081c610120526101005161010080820690509050610140526040610120f35b6392e3cc2d8118610df4576004358060a01c61112e5760e052634903b0d1610100526000610120526020610100602461011c60e0515afa610d9e573d600060003e3d6000fd5b601f3d111561112e576101005161018052634903b0d1610140526001610160526020610140602461015c60e0515afa610ddc573d600060003e3d6000fd5b601f3d111561112e57610140516101a0526040610180f35b63eb85226d8118610f3f576004358060a01c61112e5760e0526024358060a01c61112e57610100526044358060a01c61112e57610120526002600960e05160a05260805260406080200180546101405260018101546101605250610140516101005118610e6957610160516101205114610e6c565b60005b610f2757610160516101005118610e8b57610140516101205114610e8e565b60005b610f0d57600f610180527f436f696e73206e6f7420666f756e6400000000000000000000000000000000006101a0526101805061018051806101a001818260206001820306601f82010390500336823750506308c379a0610140526020610160526101805160206001820306601f820103905060440161015cfd610f3d565b60016101805260006101a0526040610180610f3d56610f3d565b60006101805260016101a0526040610180610f3d565bf35b63daf297b98118610f77576004358060a01c61112e5760e0526001600960e05160a05260805260406080200154610100526020610100f35b63ccb156058118611025576004358060a01c61112e5760e05261010060006002818352015b602060203803608039608051600161010051600281101561112e57026002600960e05160a052608052604060802001015418610fe75750505061010051610120526020610120611023565b8151600101808352811415610f9c5750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101005260206101005bf35b63977d9122811861105a576004358060a01c61112e5760e052600960e05160a052608052604060802054610100526020610100f35b63f851a44081186110715760005460e052602060e0f35b6317f7182a81186110885760015460e052602060e0f35b63cab4d3db811861109f5760025460e052602060e0f35b632489a2c381186110b65760035460e052602060e0f35b6335214d8181186110cd5760045460e052602060e0f35b638df2420781186110e45760055460e052602060e0f35b63956aae3a81186110fb5760085460e052602060e0f35b633a1d5d8e811861112657600160043564010000000081101561112e5702600a015460e052602060e0f35b505b60006000fd5b600080fd000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2

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

000000000000000000000000ecb456ea5365865ebab8a2661b0c503410e9b347000000000000000000000000a85461afc2deec01bda23b5cd267d51f765fba10000000000000000000000000c08550a4cc5333f40e593ecc4c4724808085d304000000000000000000000000dc892358d55d5ae1ec47a531130d62151eba36e5000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2

-----Decoded View---------------
Arg [0] : _fee_receiver (address): 0xeCb456EA5365865EbAb8a2661B0c503410e9B347
Arg [1] : _pool_implementation (address): 0xa85461AFc2DEEC01bDA23b5cd267d51F765fba10
Arg [2] : _token_implementation (address): 0xc08550A4cc5333f40e593eCc4C4724808085D304
Arg [3] : _gauge_implementation (address): 0xdc892358d55d5Ae1Ec47a531130D62151EBA36E5
Arg [4] : _weth (address): 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2

-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 000000000000000000000000ecb456ea5365865ebab8a2661b0c503410e9b347
Arg [1] : 000000000000000000000000a85461afc2deec01bda23b5cd267d51f765fba10
Arg [2] : 000000000000000000000000c08550a4cc5333f40e593ecc4c4724808085d304
Arg [3] : 000000000000000000000000dc892358d55d5ae1ec47a531130d62151eba36e5
Arg [4] : 000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2


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
Loading...
Loading
[ 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.