FRAX Price: $0.99 (-2.15%)

Contract

0x0B8D6B6CeFC7Aa1C2852442e518443B1b22e1C52

Overview

FRAX Balance | FXTL Balance

0 FRAX | 23,827 FXTL

FRAX Value

$0.00

Token Holdings

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Block
From
To
Mint311346822026-01-22 11:07:552 days ago1769080075IN
Curve: Child Gauge Factory
0 FRAX0.000003540.00001525
Mint311292132026-01-22 8:05:372 days ago1769069137IN
Curve: Child Gauge Factory
0 FRAX0.000006260.00149925
Mint311061902026-01-21 19:18:113 days ago1769023091IN
Curve: Child Gauge Factory
0 FRAX0.000011880.001
Mint311060642026-01-21 19:13:593 days ago1769022839IN
Curve: Child Gauge Factory
0 FRAX0.000012990.001
Mint310941222026-01-21 12:35:553 days ago1768998955IN
Curve: Child Gauge Factory
0 FRAX0.000017410.001
Mint310100882026-01-19 13:54:475 days ago1768830887IN
Curve: Child Gauge Factory
0 FRAX0.000002410.00010025
Mint310096252026-01-19 13:39:215 days ago1768829961IN
Curve: Child Gauge Factory
0 FRAX0.000002970.001632
Mint309763832026-01-18 19:11:176 days ago1768763477IN
Curve: Child Gauge Factory
0 FRAX0.000003130.00211225
Mint309445832026-01-18 1:31:177 days ago1768699877IN
Curve: Child Gauge Factory
0 FRAX0.000002730.001
Mint308592982026-01-16 2:08:279 days ago1768529307IN
Curve: Child Gauge Factory
0 FRAX0.000003960.001
Mint307145282026-01-12 17:42:4712 days ago1768239767IN
Curve: Child Gauge Factory
0 FRAX0.000013280.00100025
Mint306567092026-01-11 9:35:2913 days ago1768124129IN
Curve: Child Gauge Factory
0 FRAX0.000002720.001
Mint306130152026-01-10 9:19:0114 days ago1768036741IN
Curve: Child Gauge Factory
0 FRAX0.000002770.001
Mint305774382026-01-09 13:33:0715 days ago1767965587IN
Curve: Child Gauge Factory
0 FRAX0.000008680.001
Mint304737272026-01-07 3:56:0517 days ago1767758165IN
Curve: Child Gauge Factory
0 FRAX0.00000350.001
Mint303849502026-01-05 2:36:5120 days ago1767580611IN
Curve: Child Gauge Factory
0 FRAX0.0000040.001
Mint303634902026-01-04 14:41:3120 days ago1767537691IN
Curve: Child Gauge Factory
0 FRAX0.000003920.001
Mint302687192026-01-02 10:02:2922 days ago1767348149IN
Curve: Child Gauge Factory
0 FRAX0.00000360.0012
Mint301254172025-12-30 2:25:4526 days ago1767061545IN
Curve: Child Gauge Factory
0 FRAX0.000002780.00100025
Mint300523852025-12-28 9:51:2127 days ago1766915481IN
Curve: Child Gauge Factory
0 FRAX0.000002380.001
Mint300255372025-12-27 18:56:2528 days ago1766861785IN
Curve: Child Gauge Factory
0 FRAX0.000002320.001
Mint300167172025-12-27 14:02:2528 days ago1766844145IN
Curve: Child Gauge Factory
0 FRAX0.000002830.001
Mint297053912025-12-20 9:04:5335 days ago1766221493IN
Curve: Child Gauge Factory
0 FRAX0.000002290.001
Mint296722512025-12-19 14:40:1336 days ago1766155213IN
Curve: Child Gauge Factory
0 FRAX0.000031370.001
Mint296445632025-12-18 23:17:1737 days ago1766099837IN
Curve: Child Gauge Factory
0 FRAX0.000002230.0012003
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
312501872026-01-25 3:18:053 mins ago1769311085
0x0B8D6B6C...1b22e1C52
0 FRAX
312501872026-01-25 3:18:053 mins ago1769311085
0x0B8D6B6C...1b22e1C52
0 FRAX
312501872026-01-25 3:18:053 mins ago1769311085
0x0B8D6B6C...1b22e1C52
0 FRAX
312501872026-01-25 3:18:053 mins ago1769311085
0x0B8D6B6C...1b22e1C52
0 FRAX
312501872026-01-25 3:18:053 mins ago1769311085
0x0B8D6B6C...1b22e1C52
0 FRAX
312501872026-01-25 3:18:053 mins ago1769311085
0x0B8D6B6C...1b22e1C52
0 FRAX
312501872026-01-25 3:18:053 mins ago1769311085
0x0B8D6B6C...1b22e1C52
0 FRAX
312501872026-01-25 3:18:053 mins ago1769311085
0x0B8D6B6C...1b22e1C52
0 FRAX
312501872026-01-25 3:18:053 mins ago1769311085
0x0B8D6B6C...1b22e1C52
0 FRAX
312501872026-01-25 3:18:053 mins ago1769311085
0x0B8D6B6C...1b22e1C52
0 FRAX
312501802026-01-25 3:17:513 mins ago1769311071
0x0B8D6B6C...1b22e1C52
0 FRAX
312501802026-01-25 3:17:513 mins ago1769311071
0x0B8D6B6C...1b22e1C52
0 FRAX
312501802026-01-25 3:17:513 mins ago1769311071
0x0B8D6B6C...1b22e1C52
0 FRAX
312501802026-01-25 3:17:513 mins ago1769311071
0x0B8D6B6C...1b22e1C52
0 FRAX
312501802026-01-25 3:17:513 mins ago1769311071
0x0B8D6B6C...1b22e1C52
0 FRAX
312501802026-01-25 3:17:513 mins ago1769311071
0x0B8D6B6C...1b22e1C52
0 FRAX
312501802026-01-25 3:17:513 mins ago1769311071
0x0B8D6B6C...1b22e1C52
0 FRAX
312501802026-01-25 3:17:513 mins ago1769311071
0x0B8D6B6C...1b22e1C52
0 FRAX
312501802026-01-25 3:17:513 mins ago1769311071
0x0B8D6B6C...1b22e1C52
0 FRAX
312501802026-01-25 3:17:513 mins ago1769311071
0x0B8D6B6C...1b22e1C52
0 FRAX
312501802026-01-25 3:17:513 mins ago1769311071
0x0B8D6B6C...1b22e1C52
0 FRAX
312501802026-01-25 3:17:513 mins ago1769311071
0x0B8D6B6C...1b22e1C52
0 FRAX
312501802026-01-25 3:17:513 mins ago1769311071
0x0B8D6B6C...1b22e1C52
0 FRAX
312501802026-01-25 3:17:513 mins ago1769311071
0x0B8D6B6C...1b22e1C52
0 FRAX
312501802026-01-25 3:17:513 mins ago1769311071
0x0B8D6B6C...1b22e1C52
0 FRAX
View All Internal Transactions

Cross-Chain Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Child Liquidity Gauge Factory

Compiler Version
vyper:0.3.10

Optimization Enabled:
N/A

Other Settings:
default evmVersion, MIT license

Contract Source Code (Vyper language format)

# pragma version 0.3.10
"""
@title Child Liquidity Gauge Factory
@license MIT
@author Curve Finance
@custom:version 2.0.0
"""

version: public(constant(String[8])) = "2.0.0"


from vyper.interfaces import ERC20

interface ChildGauge:
    def initialize(_lp_token: address, _root: address, _manager: address): nonpayable
    def integrate_fraction(_user: address) -> uint256: view
    def user_checkpoint(_user: address) -> bool: nonpayable

interface CallProxy:
    def anyCall(
        _to: address, _data: Bytes[1024], _fallback: address, _to_chain_id: uint256
    ): nonpayable


event DeployedGauge:
    _implementation: indexed(address)
    _lp_token: indexed(address)
    _deployer: indexed(address)
    _salt: bytes32
    _gauge: address

event Minted:
    _user: indexed(address)
    _gauge: indexed(address)
    _new_total: uint256

event UpdateImplementation:
    _old_implementation: address
    _new_implementation: address

event UpdateVotingEscrow:
    _old_voting_escrow: address
    _new_voting_escrow: address

event UpdateRoot:
    _factory: address
    _implementation: address

event UpdateManager:
    _manager: address

event UpdateCallProxy:
    _old_call_proxy: address
    _new_call_proxy: address

event UpdateMirrored:
    _gauge: indexed(address)
    _mirrored: bool

event TransferOwnership:
    _old_owner: address
    _new_owner: address


WEEK: constant(uint256) = 86400 * 7


crv: public(ERC20)


get_implementation: public(address)
voting_escrow: public(address)

owner: public(address)
future_owner: public(address)
manager: public(address)

root_factory: public(address)
root_implementation: public(address)
call_proxy: public(address)
# [last_request][has_counterpart][is_valid_gauge]
gauge_data: public(HashMap[address, uint256])
# user -> gauge -> value
minted: public(HashMap[address, HashMap[address, uint256]])

get_gauge_from_lp_token: public(HashMap[address, address])
get_gauge_count: public(uint256)
get_gauge: public(address[max_value(int128)])


@external
def __init__(_call_proxy: address, _root_factory: address, _root_impl: address, _crv: address, _owner: address):
    """
    @param _call_proxy Contract for
    @param _root_factory Root factory to anchor to
    @param _root_impl Address of root gauge implementation to calculate mirror (can be updated)
    @param _crv Bridged CRV token address (might be zero if not known yet)
    @param _owner Owner of factory (xgov)
    """
    self.crv = ERC20(_crv)

    self.call_proxy = _call_proxy
    log UpdateCallProxy(empty(address), _call_proxy)

    assert _root_factory != empty(address)
    assert _root_impl != empty(address)
    self.root_factory = _root_factory
    self.root_implementation = _root_impl
    log UpdateRoot(_root_factory, _root_impl)

    self.owner = _owner
    log TransferOwnership(empty(address), _owner)

    self.manager = msg.sender
    log UpdateManager(msg.sender)


@internal
def _psuedo_mint(_gauge: address, _user: address):
    gauge_data: uint256 = self.gauge_data[_gauge]
    assert gauge_data != 0  # dev: invalid gauge

    # if is_mirrored and last_request != this week
    if gauge_data & 2 != 0 and (gauge_data >> 2) / WEEK != block.timestamp / WEEK:
        CallProxy(self.call_proxy).anyCall(
            self,
            _abi_encode(_gauge, method_id=method_id("transmit_emissions(address)")),
            empty(address),
            1,
        )
        # update last request time
        self.gauge_data[_gauge] = block.timestamp << 2 + 3

    assert ChildGauge(_gauge).user_checkpoint(_user)
    total_mint: uint256 = ChildGauge(_gauge).integrate_fraction(_user)
    to_mint: uint256 = total_mint - self.minted[_user][_gauge]

    if to_mint != 0 and self.crv != empty(ERC20):
        assert self.crv.transfer(_user, to_mint, default_return_value=True)
        self.minted[_user][_gauge] = total_mint

        log Minted(_user, _gauge, total_mint)


@external
@nonreentrant("lock")
def mint(_gauge: address):
    """
    @notice Mint everything which belongs to `msg.sender` and send to them
    @param _gauge `LiquidityGauge` address to get mintable amount from
    """
    self._psuedo_mint(_gauge, msg.sender)


@external
@nonreentrant("lock")
def mint_many(_gauges: address[32]):
    """
    @notice Mint everything which belongs to `msg.sender` across multiple gauges
    @param _gauges List of `LiquidityGauge` addresses
    """
    for i in range(32):
        if _gauges[i] == empty(address):
            pass
        self._psuedo_mint(_gauges[i], msg.sender)


@external
def deploy_gauge(_lp_token: address, _salt: bytes32, _manager: address = msg.sender) -> address:
    """
    @notice Deploy a liquidity gauge
    @param _lp_token The token to deposit in the gauge
    @param _salt A value to deterministically deploy a gauge
    @param _manager The address to set as manager of the gauge
    """
    if self.get_gauge_from_lp_token[_lp_token] != empty(address):
        # overwriting lp_token -> gauge mapping requires
        assert msg.sender == self.owner  # dev: only owner

    gauge_data: uint256 = 1  # set is_valid_gauge = True
    implementation: address = self.get_implementation
    salt: bytes32 = keccak256(_abi_encode(chain.id, _salt))
    gauge: address = create_minimal_proxy_to(
        implementation, salt=salt
    )

    if msg.sender == self.call_proxy:
        gauge_data += 2  # set mirrored = True
        log UpdateMirrored(gauge, True)
        # issue a call to the root chain to deploy a root gauge
        CallProxy(self.call_proxy).anyCall(
            self,
            _abi_encode(chain.id, _salt, method_id=method_id("deploy_gauge(uint256,bytes32)")),
            empty(address),
            1
        )

    self.gauge_data[gauge] = gauge_data

    idx: uint256 = self.get_gauge_count
    self.get_gauge[idx] = gauge
    self.get_gauge_count = idx + 1
    self.get_gauge_from_lp_token[_lp_token] = gauge

    # derive root gauge address
    gauge_codehash: bytes32 = keccak256(
        concat(
            0x602d3d8160093d39f3363d3d373d3d3d363d73,
            convert(self.root_implementation, bytes20),
            0x5af43d82803e903d91602b57fd5bf3,
        )
    )
    digest: bytes32 = keccak256(concat(0xFF, convert(self.root_factory, bytes20), salt, gauge_codehash))
    root: address = convert(convert(digest, uint256) & convert(max_value(uint160), uint256), address)

    # If root is uninitialized, self.owner can always set the root gauge manually
    # on the gauge contract itself via set_root_gauge method
    ChildGauge(gauge).initialize(_lp_token, root, _manager)

    log DeployedGauge(implementation, _lp_token, msg.sender, _salt, gauge)
    return gauge


@external
def set_crv(_crv: ERC20):
    """
    @notice Sets CRV token address
    @dev Child gauges reference the factory to fetch CRV address
         If empty, the gauges do not mint any CRV tokens.
    @param _crv address of CRV token on child chain
    """
    assert msg.sender == self.owner
    assert _crv != empty(ERC20)

    self.crv = _crv


@external
def set_root(_factory: address, _implementation: address):
    """
    @notice Update root addresses
    @dev Addresses are used only as helper methods
    @param _factory Root gauge factory
    @param _implementation Root gauge
    """
    assert msg.sender in [self.owner, self.manager]  # dev: access denied

    self.root_factory = _factory
    self.root_implementation = _implementation
    log UpdateRoot(_factory, _implementation)


@external
def set_voting_escrow(_voting_escrow: address):
    """
    @notice Update the voting escrow contract
    @param _voting_escrow Contract to use as the voting escrow oracle
    """
    assert msg.sender == self.owner  # dev: only owner

    log UpdateVotingEscrow(self.voting_escrow, _voting_escrow)
    self.voting_escrow = _voting_escrow


@external
def set_implementation(_implementation: address):
    """
    @notice Set the implementation
    @param _implementation The address of the implementation to use
    """
    assert msg.sender == self.owner  # dev: only owner

    log UpdateImplementation(self.get_implementation, _implementation)
    self.get_implementation = _implementation


@external
def set_mirrored(_gauge: address, _mirrored: bool):
    """
    @notice Set the mirrored bit of the gauge data for `_gauge`
    @param _gauge The gauge of interest
    @param _mirrored Boolean deteremining whether to set the mirrored bit to True/False
    """
    gauge_data: uint256 = self.gauge_data[_gauge]
    assert gauge_data != 0  # dev: invalid gauge
    assert msg.sender == self.owner  # dev: only owner

    gauge_data = gauge_data | 1  # set is_valid_gauge = True
    if _mirrored:
        gauge_data += 2  # set is_mirrored = True

    self.gauge_data[_gauge] = gauge_data
    log UpdateMirrored(_gauge, _mirrored)


@external
def set_call_proxy(_new_call_proxy: address):
    """
    @notice Set the address of the call proxy used
    @dev _new_call_proxy should adhere to the same interface as defined
    @param _new_call_proxy Address of the cross chain call proxy
    """
    assert msg.sender == self.owner

    log UpdateCallProxy(self.call_proxy, _new_call_proxy)
    self.call_proxy = _new_call_proxy


@external
def set_manager(_new_manager: address):
    assert msg.sender in [self.owner, self.manager]  # dev: access denied

    self.manager = _new_manager
    log UpdateManager(_new_manager)


@external
def commit_transfer_ownership(_future_owner: address):
    """
    @notice Transfer ownership to `_future_owner`
    @param _future_owner The account to commit as the future owner
    """
    assert msg.sender == self.owner  # dev: only owner

    self.future_owner = _future_owner


@external
def accept_transfer_ownership():
    """
    @notice Accept the transfer of ownership
    @dev Only the committed future owner can call this function
    """
    assert msg.sender == self.future_owner  # dev: only future owner

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


@view
@external
def is_valid_gauge(_gauge: address) -> bool:
    """
    @notice Query whether the gauge is a valid one deployed via the factory
    @param _gauge The address of the gauge of interest
    """
    return self.gauge_data[_gauge] != 0


@view
@external
def is_mirrored(_gauge: address) -> bool:
    """
    @notice Query whether the gauge is mirrored on Ethereum mainnet
    @param _gauge The address of the gauge of interest
    """
    return (self.gauge_data[_gauge] & 2) != 0


@view
@external
def last_request(_gauge: address) -> uint256:
    """
    @notice Query the timestamp of the last cross chain request for emissions
    @param _gauge The address of the gauge of interest
    """
    return self.gauge_data[_gauge] >> 2

Contract Security Audit

Contract ABI

API
[{"name":"DeployedGauge","inputs":[{"name":"_implementation","type":"address","indexed":true},{"name":"_lp_token","type":"address","indexed":true},{"name":"_deployer","type":"address","indexed":true},{"name":"_salt","type":"bytes32","indexed":false},{"name":"_gauge","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"name":"Minted","inputs":[{"name":"_user","type":"address","indexed":true},{"name":"_gauge","type":"address","indexed":true},{"name":"_new_total","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"UpdateImplementation","inputs":[{"name":"_old_implementation","type":"address","indexed":false},{"name":"_new_implementation","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"name":"UpdateVotingEscrow","inputs":[{"name":"_old_voting_escrow","type":"address","indexed":false},{"name":"_new_voting_escrow","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"name":"UpdateRoot","inputs":[{"name":"_factory","type":"address","indexed":false},{"name":"_implementation","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"name":"UpdateManager","inputs":[{"name":"_manager","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"name":"UpdateCallProxy","inputs":[{"name":"_old_call_proxy","type":"address","indexed":false},{"name":"_new_call_proxy","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"name":"UpdateMirrored","inputs":[{"name":"_gauge","type":"address","indexed":true},{"name":"_mirrored","type":"bool","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":"_call_proxy","type":"address"},{"name":"_root_factory","type":"address"},{"name":"_root_impl","type":"address"},{"name":"_crv","type":"address"},{"name":"_owner","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"mint","inputs":[{"name":"_gauge","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"mint_many","inputs":[{"name":"_gauges","type":"address[32]"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"deploy_gauge","inputs":[{"name":"_lp_token","type":"address"},{"name":"_salt","type":"bytes32"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"nonpayable","type":"function","name":"deploy_gauge","inputs":[{"name":"_lp_token","type":"address"},{"name":"_salt","type":"bytes32"},{"name":"_manager","type":"address"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"nonpayable","type":"function","name":"set_crv","inputs":[{"name":"_crv","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_root","inputs":[{"name":"_factory","type":"address"},{"name":"_implementation","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_voting_escrow","inputs":[{"name":"_voting_escrow","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_implementation","inputs":[{"name":"_implementation","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_mirrored","inputs":[{"name":"_gauge","type":"address"},{"name":"_mirrored","type":"bool"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_call_proxy","inputs":[{"name":"_new_call_proxy","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_manager","inputs":[{"name":"_new_manager","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"commit_transfer_ownership","inputs":[{"name":"_future_owner","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"accept_transfer_ownership","inputs":[],"outputs":[]},{"stateMutability":"view","type":"function","name":"is_valid_gauge","inputs":[{"name":"_gauge","type":"address"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"view","type":"function","name":"is_mirrored","inputs":[{"name":"_gauge","type":"address"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"view","type":"function","name":"last_request","inputs":[{"name":"_gauge","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"version","inputs":[],"outputs":[{"name":"","type":"string"}]},{"stateMutability":"view","type":"function","name":"crv","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"get_implementation","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"voting_escrow","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"future_owner","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"manager","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"root_factory","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"root_implementation","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"call_proxy","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"gauge_data","inputs":[{"name":"arg0","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"minted","inputs":[{"name":"arg0","type":"address"},{"name":"arg1","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"get_gauge_from_lp_token","inputs":[{"name":"arg0","type":"address"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"get_gauge_count","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"get_gauge","inputs":[{"name":"arg0","type":"uint256"}],"outputs":[{"name":"","type":"address"}]}]

3461016b57602061127e5f395f518060a01c61016b57604052602061129e5f395f518060a01c61016b5760605260206112be5f395f518060a01c61016b5760805260206112de5f395f518060a01c61016b5760a05260206112fe5f395f518060a01c61016b5760c05260a0516001556040516009557fe385116766307e81d4427b03f1ac50c300b2f6a5df7b3c67eeb7eaaab12f08055f60e05260405161010052604060e0a16060511561016b576080511561016b576060516007556080516008557f70f9501abbdc1e859ff8c1a6d83d3cb1ba973674e97c3e3c2292540d6e40dcfe60605160e05260805161010052604060e0a160c0516004557f5c486528ec3e3f0ea91181cff8116f02bfa350e03b8b6f12e00765adbb5af85c5f60e05260c05161010052604060e0a1336006557f5c18ab5c697b63d102fc7e14c77bfaef0f1013206eca139920fd389277814e093360e052602060e0a16110fa61016f610000396110fa610000f35b5f80fd5f3560e01c6002601d820660011b6110c001601e395f51565b6354fd4d50811861009657346110bc5760208060805260056040527f322e302e3000000000000000000000000000000000000000000000000000000060605260408160800181518152602082015160208201528051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506080f35b631ec0cdc181186100b257346110bc5760055460405260206040f35b6366e1de658118610e35576044361034176110bc576004358060a01c6110bc576040526024358060a01c6110bc576060523360045481186100f45760016100fb565b6006548118155b9050156110bc576040516007556060516008557f70f9501abbdc1e859ff8c1a6d83d3cb1ba973674e97c3e3c2292540d6e40dcfe60405160805260605160a05260406080a100610e35565b636a4874a18118610e3557346110bc5760015460405260206040f3610e35565b63c781c6688118610e3557346110bc5760025460405260206040f3610e35565b63dfe0503181186101a257346110bc5760035460405260206040f35b639aece83e8118610e35576024361034176110bc576004358060a01c6110bc576040523360045481186101d65760016101dd565b6006548118155b9050156110bc576040516006557f5c18ab5c697b63d102fc7e14c77bfaef0f1013206eca139920fd389277814e0960405160605260206060a100610e35565b638da5cb5b811861023857346110bc5760045460405260206040f35b63285218488118610e35576024361034176110bc576004356f7ffffffffffffffffffffffffffffffe81116110bc57600e015460405260206040f3610e35565b63481c6a758118610e3557346110bc5760065460405260206040f3610e35565b633043228d8118610e3557346110bc5760075460405260206040f3610e35565b637de035c18118610e3557346110bc5760085460405260206040f3610e35565b63f81c6c3e81186102f457346110bc5760095460405260206040f35b635d95c65e8118610e35576024361034176110bc576004358060a01c6110bc57604052600c6040516020525f5260405f205460605260206060f3610e35565b63f0ce32f8811861036e576024361034176110bc576004358060a01c6110bc57604052600a6040516020525f5260405f205460605260206060f35b632d4841218118610e35576024361034176110bc576004358060a01c6110bc5760405260045433186110bc57604051156110bc5760405160015500610e35565b638b752bb08118610e35576044361034176110bc576004358060a01c6110bc576040526024358060a01c6110bc57606052600b6040516020525f5260405f20806060516020525f5260405f2090505460805260206080f3610e35565b63f111569c8118610e3557346110bc57600d5460405260206040f3610e35565b636a6278428118610e35576024361034176110bc576004358060a01c6110bc57610200525f546002146110bc5760025f55610200516040523360605261046e610e39565b60035f5500610e35565b6355ec67088118610e3557610404361034176110bc576004358060a01c6110bc57610200526024358060a01c6110bc57610220526044358060a01c6110bc57610240526064358060a01c6110bc57610260526084358060a01c6110bc576102805260a4358060a01c6110bc576102a05260c4358060a01c6110bc576102c05260e4358060a01c6110bc576102e052610104358060a01c6110bc5761030052610124358060a01c6110bc5761032052610144358060a01c6110bc5761034052610164358060a01c6110bc5761036052610184358060a01c6110bc57610380526101a4358060a01c6110bc576103a0526101c4358060a01c6110bc576103c0526101e4358060a01c6110bc576103e052610204358060a01c6110bc5761040052610224358060a01c6110bc5761042052610244358060a01c6110bc5761044052610264358060a01c6110bc5761046052610284358060a01c6110bc57610480526102a4358060a01c6110bc576104a0526102c4358060a01c6110bc576104c0526102e4358060a01c6110bc576104e052610304358060a01c6110bc5761050052610324358060a01c6110bc5761052052610344358060a01c6110bc5761054052610364358060a01c6110bc5761056052610384358060a01c6110bc57610580526103a4358060a01c6110bc576105a0526103c4358060a01c6110bc576105c0526103e4358060a01c6110bc576105e0525f546002146110bc5760025f555f6020905b806106005261060051601f81116110bc5760051b61020001516106b6575b61060051601f81116110bc5760051b6102000151604052336060526106d9610e39565b60010181811861069857505060035f5500610e35565b638db98b5c8118610e35576044361034176110bc573360605261073556610e35565b636be320d28118610e35576064361034176110bc576044358060a01c6110bc576060525b6004358060a01c6110bc57604052600c6040516020525f5260405f2054156107615760045433186110bc575b600160805260025460a052466101005260243561012052604060e05260e080516020820120905060c0527f602d3d8160093d39f3363d3d373d3d3d363d73000000000000000000000000006101005260a05160601b610113527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006101275260c05160366101005ff580156110bc5760e05260095433186108e157608051600281018181106110bc57905060805260e0517f54b0a41dd85251df77437effbf9fbdca133bd234e7771816495877177288092c6001610100526020610100a260095463f9754c93610180526080306101a052806101c05263e10a16b861010452600446610124526024356101445260400161010052610100816101a00160208251018082828560045afa50508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190505f6101e05260016102005250803b156110bc575f61018061010461019c5f855af16108df573d5f5f3e3d5ffd5b505b608051600a60e0516020525f5260405f2055600d546101005260e051610100516f7ffffffffffffffffffffffffffffffe81116110bc57600e015561010051600181018181106110bc579050600d5560e051600c6040516020525f5260405f20555f7f602d3d8160093d39f3363d3d373d3d3d363d73000000000000000000000000008161016001526013810190506008548060601b90508161016001526014810190507f5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000816101600152600f8101905080610140526101409050805160208201209050610120525f7fff000000000000000000000000000000000000000000000000000000000000008161018001526001810190506007548060601b905081610180015260148101905060c05181610180015260208101905061012051816101800152602081019050806101605261016090508051602082012090506101405273ffffffffffffffffffffffffffffffffffffffff61014051168060a01c6110bc576101605260e05163c0c53b8b610180526040516101a052610160516101c0526060516101e052803b156110bc575f610180606461019c5f855af1610aaa573d5f5f3e3d5ffd5b503360405160a0517f69e16554b097f489830077da86e9e40cc91529a8d0787c42c4f33a0a337a0e086024356101805260e0516101a0526040610180a4602060e0f3610e35565b6323fc5a478118610e35576024361034176110bc576004358060a01c6110bc5760405260045433186110bc577fa1b167642dcf1fee2fbf716c48c7c3f2326e4f26020cb042cd6405dfa72f4fd260035460605260405160805260406060a160405160035500610e35565b634cd69da08118610e35576024361034176110bc576004358060a01c6110bc5760405260045433186110bc577fcdfeee65e4d0a88d6e47c5d034c34b03d52f1e6ffc56906257fc93d993ca04c460025460605260405160805260406060a160405160025500610e35565b634b29cac88118610c81576044361034176110bc576004358060a01c6110bc576040526024358060011c6110bc57606052600a6040516020525f5260405f2054608052608051156110bc5760045433186110bc5760016080511760805260605115610c3e57608051600281018181106110bc5790506080525b608051600a6040516020525f5260405f20556040517f54b0a41dd85251df77437effbf9fbdca133bd234e7771816495877177288092c60605160a052602060a0a2005b636b441a408118610e35576024361034176110bc576004358060a01c6110bc5760405260045433186110bc5760405160055500610e35565b635ecb9e148118610e35576024361034176110bc576004358060a01c6110bc5760405260045433186110bc577fe385116766307e81d4427b03f1ac50c300b2f6a5df7b3c67eeb7eaaab12f080560095460605260405160805260406060a160405160095500610e35565b63e5ea47b88118610d7257346110bc5760055433186110bc577f5c486528ec3e3f0ea91181cff8116f02bfa350e03b8b6f12e00765adbb5af85c6004546040523360605260406040a133600455005b6351bd4db58118610e35576024361034176110bc576004358060a01c6110bc57604052600a6040516020525f5260405f205460021c60605260206060f3610e35565b634b9203798118610e35576024361034176110bc576004358060a01c6110bc57604052600a6040516020525f5260405f2054151560605260206060f3610e35565b638a42bd828118610e35576024361034176110bc576004358060a01c6110bc576040526002600a6040516020525f5260405f205416151560605260206060f35b5f5ffd5b600a6040516020525f5260405f2054608052608051156110bc5760026080511615610e7c574262093a808104905060805160021c62093a80810490501415610e7e565b5f5b15610f2f5760095463f9754c93610100526080306101205280610140526311bfb95660a452600460405160c45260200160a05260a0816101200160208251018082828560045afa50508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190505f6101605260016101805250803b156110bc575f61010060e461011c5f855af1610f1a573d5f5f3e3d5ffd5b504260051b600a6040516020525f5260405f20555b604051634b82009360a05260605160c052602060a0602460bc5f855af1610f58573d5f5f3e3d5ffd5b60203d106110bc5760a0518060011c6110bc5760e05260e0905051156110bc57604051630940070760c05260605160e052602060c0602460dc845afa610fa0573d5f5f3e3d5ffd5b60203d106110bc5760c090505160a05260a051600b6060516020525f5260405f20806040516020525f5260405f209050548082038281116110bc579050905060c05260c05115610ff4576001541515610ff6565b5f5b156110ba5760015463a9059cbb60e0526060516101005260c05161012052602060e0604460fc5f855af161102c573d5f5f3e3d5ffd5b3d61104357803b156110bc5760016101405261105b565b60203d106110bc5760e0518060011c6110bc57610140525b610140905051156110bc5760a051600b6060516020525f5260405f20806040516020525f5260405f209050556040516060517f9d228d69b5fdb8d273a2336f8fb8612d039631024ea9bf09c424a9503aa078f060a05160e052602060e0a35b565b5f80fd0e3503330e350e350bc5042a07110db40cb90af10b5b03ae040a0e350e35001802780478021c0e3502d801460d23018602b80298016606ef0df5841910fa81183a00a16576797065728300030a00150000000000000000000000000000000000000000000000000000000000000000000000000000000000000000306a45a1478a000dc701a6e1f7a569afb8d9dcd600000000000000000000000096720942f9ff22efd8611f696e5333fe3671717a000000000000000000000000331b9182088e2a7d6d3fe4742aba1fb231aecc56000000000000000000000000ae50429025b59c9d62ae9c3a52a657bc7ab64036

Deployed Bytecode

0x5f3560e01c6002601d820660011b6110c001601e395f51565b6354fd4d50811861009657346110bc5760208060805260056040527f322e302e3000000000000000000000000000000000000000000000000000000060605260408160800181518152602082015160208201528051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506080f35b631ec0cdc181186100b257346110bc5760055460405260206040f35b6366e1de658118610e35576044361034176110bc576004358060a01c6110bc576040526024358060a01c6110bc576060523360045481186100f45760016100fb565b6006548118155b9050156110bc576040516007556060516008557f70f9501abbdc1e859ff8c1a6d83d3cb1ba973674e97c3e3c2292540d6e40dcfe60405160805260605160a05260406080a100610e35565b636a4874a18118610e3557346110bc5760015460405260206040f3610e35565b63c781c6688118610e3557346110bc5760025460405260206040f3610e35565b63dfe0503181186101a257346110bc5760035460405260206040f35b639aece83e8118610e35576024361034176110bc576004358060a01c6110bc576040523360045481186101d65760016101dd565b6006548118155b9050156110bc576040516006557f5c18ab5c697b63d102fc7e14c77bfaef0f1013206eca139920fd389277814e0960405160605260206060a100610e35565b638da5cb5b811861023857346110bc5760045460405260206040f35b63285218488118610e35576024361034176110bc576004356f7ffffffffffffffffffffffffffffffe81116110bc57600e015460405260206040f3610e35565b63481c6a758118610e3557346110bc5760065460405260206040f3610e35565b633043228d8118610e3557346110bc5760075460405260206040f3610e35565b637de035c18118610e3557346110bc5760085460405260206040f3610e35565b63f81c6c3e81186102f457346110bc5760095460405260206040f35b635d95c65e8118610e35576024361034176110bc576004358060a01c6110bc57604052600c6040516020525f5260405f205460605260206060f3610e35565b63f0ce32f8811861036e576024361034176110bc576004358060a01c6110bc57604052600a6040516020525f5260405f205460605260206060f35b632d4841218118610e35576024361034176110bc576004358060a01c6110bc5760405260045433186110bc57604051156110bc5760405160015500610e35565b638b752bb08118610e35576044361034176110bc576004358060a01c6110bc576040526024358060a01c6110bc57606052600b6040516020525f5260405f20806060516020525f5260405f2090505460805260206080f3610e35565b63f111569c8118610e3557346110bc57600d5460405260206040f3610e35565b636a6278428118610e35576024361034176110bc576004358060a01c6110bc57610200525f546002146110bc5760025f55610200516040523360605261046e610e39565b60035f5500610e35565b6355ec67088118610e3557610404361034176110bc576004358060a01c6110bc57610200526024358060a01c6110bc57610220526044358060a01c6110bc57610240526064358060a01c6110bc57610260526084358060a01c6110bc576102805260a4358060a01c6110bc576102a05260c4358060a01c6110bc576102c05260e4358060a01c6110bc576102e052610104358060a01c6110bc5761030052610124358060a01c6110bc5761032052610144358060a01c6110bc5761034052610164358060a01c6110bc5761036052610184358060a01c6110bc57610380526101a4358060a01c6110bc576103a0526101c4358060a01c6110bc576103c0526101e4358060a01c6110bc576103e052610204358060a01c6110bc5761040052610224358060a01c6110bc5761042052610244358060a01c6110bc5761044052610264358060a01c6110bc5761046052610284358060a01c6110bc57610480526102a4358060a01c6110bc576104a0526102c4358060a01c6110bc576104c0526102e4358060a01c6110bc576104e052610304358060a01c6110bc5761050052610324358060a01c6110bc5761052052610344358060a01c6110bc5761054052610364358060a01c6110bc5761056052610384358060a01c6110bc57610580526103a4358060a01c6110bc576105a0526103c4358060a01c6110bc576105c0526103e4358060a01c6110bc576105e0525f546002146110bc5760025f555f6020905b806106005261060051601f81116110bc5760051b61020001516106b6575b61060051601f81116110bc5760051b6102000151604052336060526106d9610e39565b60010181811861069857505060035f5500610e35565b638db98b5c8118610e35576044361034176110bc573360605261073556610e35565b636be320d28118610e35576064361034176110bc576044358060a01c6110bc576060525b6004358060a01c6110bc57604052600c6040516020525f5260405f2054156107615760045433186110bc575b600160805260025460a052466101005260243561012052604060e05260e080516020820120905060c0527f602d3d8160093d39f3363d3d373d3d3d363d73000000000000000000000000006101005260a05160601b610113527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006101275260c05160366101005ff580156110bc5760e05260095433186108e157608051600281018181106110bc57905060805260e0517f54b0a41dd85251df77437effbf9fbdca133bd234e7771816495877177288092c6001610100526020610100a260095463f9754c93610180526080306101a052806101c05263e10a16b861010452600446610124526024356101445260400161010052610100816101a00160208251018082828560045afa50508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190505f6101e05260016102005250803b156110bc575f61018061010461019c5f855af16108df573d5f5f3e3d5ffd5b505b608051600a60e0516020525f5260405f2055600d546101005260e051610100516f7ffffffffffffffffffffffffffffffe81116110bc57600e015561010051600181018181106110bc579050600d5560e051600c6040516020525f5260405f20555f7f602d3d8160093d39f3363d3d373d3d3d363d73000000000000000000000000008161016001526013810190506008548060601b90508161016001526014810190507f5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000816101600152600f8101905080610140526101409050805160208201209050610120525f7fff000000000000000000000000000000000000000000000000000000000000008161018001526001810190506007548060601b905081610180015260148101905060c05181610180015260208101905061012051816101800152602081019050806101605261016090508051602082012090506101405273ffffffffffffffffffffffffffffffffffffffff61014051168060a01c6110bc576101605260e05163c0c53b8b610180526040516101a052610160516101c0526060516101e052803b156110bc575f610180606461019c5f855af1610aaa573d5f5f3e3d5ffd5b503360405160a0517f69e16554b097f489830077da86e9e40cc91529a8d0787c42c4f33a0a337a0e086024356101805260e0516101a0526040610180a4602060e0f3610e35565b6323fc5a478118610e35576024361034176110bc576004358060a01c6110bc5760405260045433186110bc577fa1b167642dcf1fee2fbf716c48c7c3f2326e4f26020cb042cd6405dfa72f4fd260035460605260405160805260406060a160405160035500610e35565b634cd69da08118610e35576024361034176110bc576004358060a01c6110bc5760405260045433186110bc577fcdfeee65e4d0a88d6e47c5d034c34b03d52f1e6ffc56906257fc93d993ca04c460025460605260405160805260406060a160405160025500610e35565b634b29cac88118610c81576044361034176110bc576004358060a01c6110bc576040526024358060011c6110bc57606052600a6040516020525f5260405f2054608052608051156110bc5760045433186110bc5760016080511760805260605115610c3e57608051600281018181106110bc5790506080525b608051600a6040516020525f5260405f20556040517f54b0a41dd85251df77437effbf9fbdca133bd234e7771816495877177288092c60605160a052602060a0a2005b636b441a408118610e35576024361034176110bc576004358060a01c6110bc5760405260045433186110bc5760405160055500610e35565b635ecb9e148118610e35576024361034176110bc576004358060a01c6110bc5760405260045433186110bc577fe385116766307e81d4427b03f1ac50c300b2f6a5df7b3c67eeb7eaaab12f080560095460605260405160805260406060a160405160095500610e35565b63e5ea47b88118610d7257346110bc5760055433186110bc577f5c486528ec3e3f0ea91181cff8116f02bfa350e03b8b6f12e00765adbb5af85c6004546040523360605260406040a133600455005b6351bd4db58118610e35576024361034176110bc576004358060a01c6110bc57604052600a6040516020525f5260405f205460021c60605260206060f3610e35565b634b9203798118610e35576024361034176110bc576004358060a01c6110bc57604052600a6040516020525f5260405f2054151560605260206060f3610e35565b638a42bd828118610e35576024361034176110bc576004358060a01c6110bc576040526002600a6040516020525f5260405f205416151560605260206060f35b5f5ffd5b600a6040516020525f5260405f2054608052608051156110bc5760026080511615610e7c574262093a808104905060805160021c62093a80810490501415610e7e565b5f5b15610f2f5760095463f9754c93610100526080306101205280610140526311bfb95660a452600460405160c45260200160a05260a0816101200160208251018082828560045afa50508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190505f6101605260016101805250803b156110bc575f61010060e461011c5f855af1610f1a573d5f5f3e3d5ffd5b504260051b600a6040516020525f5260405f20555b604051634b82009360a05260605160c052602060a0602460bc5f855af1610f58573d5f5f3e3d5ffd5b60203d106110bc5760a0518060011c6110bc5760e05260e0905051156110bc57604051630940070760c05260605160e052602060c0602460dc845afa610fa0573d5f5f3e3d5ffd5b60203d106110bc5760c090505160a05260a051600b6060516020525f5260405f20806040516020525f5260405f209050548082038281116110bc579050905060c05260c05115610ff4576001541515610ff6565b5f5b156110ba5760015463a9059cbb60e0526060516101005260c05161012052602060e0604460fc5f855af161102c573d5f5f3e3d5ffd5b3d61104357803b156110bc5760016101405261105b565b60203d106110bc5760e0518060011c6110bc57610140525b610140905051156110bc5760a051600b6060516020525f5260405f20806040516020525f5260405f209050556040516060517f9d228d69b5fdb8d273a2336f8fb8612d039631024ea9bf09c424a9503aa078f060a05160e052602060e0a35b565b5f80fd0e3503330e350e350bc5042a07110db40cb90af10b5b03ae040a0e350e35001802780478021c0e3502d801460d23018602b80298016606ef0df5

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

0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000306a45a1478a000dc701a6e1f7a569afb8d9dcd600000000000000000000000096720942f9ff22efd8611f696e5333fe3671717a000000000000000000000000331b9182088e2a7d6d3fe4742aba1fb231aecc56000000000000000000000000ae50429025b59c9d62ae9c3a52a657bc7ab64036

-----Decoded View---------------
Arg [0] : _call_proxy (address): 0x0000000000000000000000000000000000000000
Arg [1] : _root_factory (address): 0x306A45a1478A000dC701A6e1f7a569afb8D9DCD6
Arg [2] : _root_impl (address): 0x96720942F9fF22eFd8611F696E5333Fe3671717a
Arg [3] : _crv (address): 0x331B9182088e2A7d6D3Fe4742AbA1fB231aEcc56
Arg [4] : _owner (address): 0xaE50429025B59C9D62Ae9c3A52a657BC7AB64036

-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [1] : 000000000000000000000000306a45a1478a000dc701a6e1f7a569afb8d9dcd6
Arg [2] : 00000000000000000000000096720942f9ff22efd8611f696e5333fe3671717a
Arg [3] : 000000000000000000000000331b9182088e2a7d6d3fe4742aba1fb231aecc56
Arg [4] : 000000000000000000000000ae50429025b59c9d62ae9c3a52a657bc7ab64036


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
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.