ETH Price: $3,748.29 (-2.64%)

Contract

0xabC000d88f23Bb45525E447528DBF656A9D55bf5
Transaction Hash
Method
Block
From
To
Mint1291105242024-12-10 8:37:053 hrs ago1733819825IN
Curve.fi: ChildLiquidityGaugeFactory
0 ETH0.0000002365450.00010084
Mint1291008112024-12-10 3:13:198 hrs ago1733800399IN
Curve.fi: ChildLiquidityGaugeFactory
0 ETH0.0000010614850.00100912
Mint1290937292024-12-09 23:17:1512 hrs ago1733786235IN
Curve.fi: ChildLiquidityGaugeFactory
0 ETH0.0000005934360.0013277
Mint1290849692024-12-09 18:25:1517 hrs ago1733768715IN
Curve.fi: ChildLiquidityGaugeFactory
0 ETH0.0000002454510.00000065
Mint1290844502024-12-09 18:07:5717 hrs ago1733767677IN
Curve.fi: ChildLiquidityGaugeFactory
0 ETH0.0000007577270.001001
Mint1290843722024-12-09 18:05:2117 hrs ago1733767521IN
Curve.fi: ChildLiquidityGaugeFactory
0 ETH0.0000006636520.00120073
Mint1290833202024-12-09 17:30:1718 hrs ago1733765417IN
Curve.fi: ChildLiquidityGaugeFactory
0 ETH0.000000506270.00100066
Mint1290787552024-12-09 14:58:0720 hrs ago1733756287IN
Curve.fi: ChildLiquidityGaugeFactory
0 ETH0.0000005840930.0010009
Mint1290786522024-12-09 14:54:4120 hrs ago1733756081IN
Curve.fi: ChildLiquidityGaugeFactory
0 ETH0.0000005841610.0010009
Mint1290740522024-12-09 12:21:2123 hrs ago1733746881IN
Curve.fi: ChildLiquidityGaugeFactory
0 ETH0.0000016646760.0010006
Mint1290715262024-12-09 10:57:0924 hrs ago1733741829IN
Curve.fi: ChildLiquidityGaugeFactory
0 ETH0.0000005186090.00011069
Mint1290708952024-12-09 10:36:0725 hrs ago1733740567IN
Curve.fi: ChildLiquidityGaugeFactory
0 ETH0.0000007350280.00036535
Mint1290594132024-12-09 4:13:2331 hrs ago1733717603IN
Curve.fi: ChildLiquidityGaugeFactory
0 ETH0.0000010849070.0010006
Mint1290585642024-12-09 3:45:0532 hrs ago1733715905IN
Curve.fi: ChildLiquidityGaugeFactory
0 ETH0.0000011118380.00100043
Mint1290430332024-12-08 19:07:2340 hrs ago1733684843IN
Curve.fi: ChildLiquidityGaugeFactory
0 ETH0.0000003530450.0010009
Mint1290421672024-12-08 18:38:3141 hrs ago1733683111IN
Curve.fi: ChildLiquidityGaugeFactory
0 ETH0.000000147560.00010071
Mint1290377142024-12-08 16:10:0543 hrs ago1733674205IN
Curve.fi: ChildLiquidityGaugeFactory
0 ETH0.0000006230170.00100095
Mint1290374672024-12-08 16:01:5143 hrs ago1733673711IN
Curve.fi: ChildLiquidityGaugeFactory
0 ETH0.0000007060540.00100101
Mint1290374302024-12-08 16:00:3743 hrs ago1733673637IN
Curve.fi: ChildLiquidityGaugeFactory
0 ETH0.00000065750.00100101
Mint1290356382024-12-08 15:00:5344 hrs ago1733670053IN
Curve.fi: ChildLiquidityGaugeFactory
0 ETH0.0000007674510.0010015
Mint1290338282024-12-08 14:00:3345 hrs ago1733666433IN
Curve.fi: ChildLiquidityGaugeFactory
0 ETH0.000000687170.0010021
Mint1290335562024-12-08 13:51:2945 hrs ago1733665889IN
Curve.fi: ChildLiquidityGaugeFactory
0 ETH0.0000005051420.0010022
Mint1290332902024-12-08 13:42:3746 hrs ago1733665357IN
Curve.fi: ChildLiquidityGaugeFactory
0 ETH0.0000003557650.00100187
Mint1290282662024-12-08 10:55:092 days ago1733655309IN
Curve.fi: ChildLiquidityGaugeFactory
0 ETH0.0000002910630.0010075
Mint1290235092024-12-08 8:16:352 days ago1733645795IN
Curve.fi: ChildLiquidityGaugeFactory
0 ETH0.0000001388020.00036101
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
1250722892024-09-07 21:09:1593 days ago1725743355
Curve.fi: ChildLiquidityGaugeFactory
 Contract Creation0 ETH
1250722842024-09-07 21:09:0593 days ago1725743345
Curve.fi: ChildLiquidityGaugeFactory
 Contract Creation0 ETH
1250722792024-09-07 21:08:5593 days ago1725743335
Curve.fi: ChildLiquidityGaugeFactory
 Contract Creation0 ETH
1250722742024-09-07 21:08:4593 days ago1725743325
Curve.fi: ChildLiquidityGaugeFactory
 Contract Creation0 ETH
1250722692024-09-07 21:08:3593 days ago1725743315
Curve.fi: ChildLiquidityGaugeFactory
 Contract Creation0 ETH
1207319212024-05-30 9:50:19194 days ago1717062619
Curve.fi: ChildLiquidityGaugeFactory
 Contract Creation0 ETH
1182006142024-04-01 19:33:25252 days ago1712000005
Curve.fi: ChildLiquidityGaugeFactory
 Contract Creation0 ETH
1182004182024-04-01 19:26:53252 days ago1711999613
Curve.fi: ChildLiquidityGaugeFactory
 Contract Creation0 ETH
1179794182024-03-27 16:40:13257 days ago1711557613
Curve.fi: ChildLiquidityGaugeFactory
 Contract Creation0 ETH
1169204032024-03-03 4:19:43282 days ago1709439583
Curve.fi: ChildLiquidityGaugeFactory
 Contract Creation0 ETH
1168741242024-03-02 2:37:05283 days ago1709347025
Curve.fi: ChildLiquidityGaugeFactory
 Contract Creation0 ETH
1160481552024-02-11 23:44:47302 days ago1707695087
Curve.fi: ChildLiquidityGaugeFactory
 Contract Creation0 ETH
1149154492024-01-16 18:27:55328 days ago1705429675
Curve.fi: ChildLiquidityGaugeFactory
 Contract Creation0 ETH
1143228662024-01-03 1:15:09342 days ago1704244509
Curve.fi: ChildLiquidityGaugeFactory
 Contract Creation0 ETH
1143228122024-01-03 1:13:21342 days ago1704244401
Curve.fi: ChildLiquidityGaugeFactory
 Contract Creation0 ETH
1143227312024-01-03 1:10:39342 days ago1704244239
Curve.fi: ChildLiquidityGaugeFactory
 Contract Creation0 ETH
1139565552023-12-25 13:44:47350 days ago1703511887
Curve.fi: ChildLiquidityGaugeFactory
 Contract Creation0 ETH
1129108242023-12-01 8:47:05375 days ago1701420425
Curve.fi: ChildLiquidityGaugeFactory
 Contract Creation0 ETH
1128681932023-11-30 9:06:03376 days ago1701335163
Curve.fi: ChildLiquidityGaugeFactory
 Contract Creation0 ETH
1075566192023-07-30 10:13:35499 days ago1690712015
Curve.fi: ChildLiquidityGaugeFactory
0 ETH
1075566192023-07-30 10:13:35499 days ago1690712015
Curve.fi: ChildLiquidityGaugeFactory
0 ETH
1075566192023-07-30 10:13:35499 days ago1690712015
Curve.fi: ChildLiquidityGaugeFactory
0 ETH
1075566192023-07-30 10:13:35499 days ago1690712015
Curve.fi: ChildLiquidityGaugeFactory
0 ETH
1075508052023-07-30 6:59:47499 days ago1690700387
Curve.fi: ChildLiquidityGaugeFactory
0 ETH
1075508052023-07-30 6:59:47499 days ago1690700387
Curve.fi: ChildLiquidityGaugeFactory
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:
default evmVersion, MIT license

Contract Source Code (Vyper language format)

# @version 0.3.1
"""
@title Child Liquidity Gauge Factory
@license MIT
@author Curve Finance
"""


interface ChildGauge:
    def initialize(_lp_token: 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 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: immutable(address)


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

owner: public(address)
future_owner: 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_INT128])


@external
def __init__(_call_proxy: address, _crv: address, _owner: address):
    CRV = _crv

    self.call_proxy = _call_proxy
    log UpdateCallProxy(ZERO_ADDRESS, _call_proxy)

    self.owner = _owner
    log TransferOwnership(ZERO_ADDRESS, _owner)


@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 bitwise_and(gauge_data, 2) != 0 and shift(gauge_data, -2) / WEEK != block.timestamp / WEEK:
        CallProxy(self.call_proxy).anyCall(
            self,
            _abi_encode(_gauge, method_id=method_id("transmit_emissions(address)")),
            ZERO_ADDRESS,
            1,
        )
        # update last request time
        self.gauge_data[_gauge] = shift(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:
        # transfer tokens to user
        response: Bytes[32] = raw_call(
            CRV,
            _abi_encode(_user, to_mint, method_id=method_id("transfer(address,uint256)")),
            max_outsize=32,
        )
        if len(response) != 0:
            assert convert(response, bool)
        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] == ZERO_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 _manager The address to set as manager of the gauge
    @param _salt A value to deterministically deploy a gauge
    """
    if self.get_gauge_from_lp_token[_lp_token] != ZERO_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
    gauge: address = create_forwarder_to(
        implementation, salt=keccak256(_abi_encode(chain.id, msg.sender, _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)")),
            ZERO_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

    ChildGauge(gauge).initialize(_lp_token, _manager)

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


@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 = shift(shift(gauge_data, -2), 2) + 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 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 bitwise_and(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 shift(self.gauge_data[_gauge], -2)

Contract Security Audit

Contract ABI

[{"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":"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":"_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_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":"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":"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":"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"}]}]

6020610e936080396080518060a01c610e8e5760e05260206020610e93016080396080518060a01c610e8e576101005260206040610e93016080396080518060a01c610e8e5761012052610100516101405260e0516005557fe385116766307e81d4427b03f1ac50c300b2f6a5df7b3c67eeb7eaaab12f080560006101605260e051610180526040610160a1610120516003557f5c486528ec3e3f0ea91181cff8116f02bfa350e03b8b6f12e00765adbb5af85c60006101605261012051610180526040610160a1610e6656600436101561000d57610a7e565b60046000601c3760005134610d9557636a627842811861005d576004358060a01c610d95576102a052600054610d955760016000556102a05160e0523361010052610056610a84565b6000600055005b6355ec670881186102cf576004358060a01c610d95576102a0526024358060a01c610d95576102c0526044358060a01c610d95576102e0526064358060a01c610d9557610300526084358060a01c610d95576103205260a4358060a01c610d95576103405260c4358060a01c610d95576103605260e4358060a01c610d955761038052610104358060a01c610d95576103a052610124358060a01c610d95576103c052610144358060a01c610d95576103e052610164358060a01c610d955761040052610184358060a01c610d9557610420526101a4358060a01c610d9557610440526101c4358060a01c610d9557610460526101e4358060a01c610d955761048052610204358060a01c610d95576104a052610224358060a01c610d95576104c052610244358060a01c610d95576104e052610264358060a01c610d955761050052610284358060a01c610d9557610520526102a4358060a01c610d9557610540526102c4358060a01c610d9557610560526102e4358060a01c610d955761058052610304358060a01c610d95576105a052610324358060a01c610d95576105c052610344358060a01c610d95576105e052610364358060a01c610d955761060052610384358060a01c610d9557610620526103a4358060a01c610d9557610640526103c4358060a01c610d9557610660526103e4358060a01c610d955761068052600054610d955760016000556106a060006020818352015b6102a06106a0516020811015610d95576020020151610292575b6102a06106a0516020811015610d9557602002015160e05233610100526102b7610a84565b81516001018083528114156102785750506000600055005b638db98b5c81186102e45733610100526102ff565b636be320d281186105e2576044358060a01c610d9557610100525b6004358060a01c610d955760e0526000600860e05160a0526080526040608020541461032f576003543318610d95575b600161012052600154610140527f602d3d8160093d39f3363d3d373d3d3d363d7300000000000000000000000000610280526101405160601b610293527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006102a752466102205233610240526024356102605260606102005261020080516020820120905060366102806000f56101605260055433186104e157610120805160028181830110610d955780820190509050815250610160517f54b0a41dd85251df77437effbf9fbdca133bd234e7771816495877177288092c6001610180526020610180a263f9754c936102005261022080608030825260208201915080825263e10a16b8610184526004466101a4526024356101c45260400161018052610180818401808280516020018083828460045afa905050508051806020830101818260206001820306601f8201039050033682375050805160200160206001820306601f82010390509050905090508101905060208201915060008252602082019150600182525050506005543b15610d95576000600061010461021c60006005545af16104e1573d600060003e3d6000fd5b6101205160066101605160a05260805260406080205560095461018052610160516001610180516f7fffffffffffffffffffffffffffffff811015610d955702600a01556101805160018181830110610d95578082019050905060095561016051600860e05160a05260805260406080205563485cc9556101a05260e0516101c052610100516101e052610160513b15610d95576000600060446101bc6000610160515af1610595573d600060003e3d6000fd5b3360e051610140517f69e16554b097f489830077da86e9e40cc91529a8d0787c42c4f33a0a337a0e086024356101a052610160516101c05260406101a0a4610160516101a05260206101a0f35b6323fc5a478118610641576004358060a01c610d955760e0526003543318610d95577fa1b167642dcf1fee2fbf716c48c7c3f2326e4f26020cb042cd6405dfa72f4fd26002546101005260e051610120526040610100a160e051600255005b634cd69da081186106a0576004358060a01c610d955760e0526003543318610d95577fcdfeee65e4d0a88d6e47c5d034c34b03d52f1e6ffc56906257fc93d993ca04c46001546101005260e051610120526040610100a160e051600155005b634b29cac8811861077e576004358060a01c610d955760e0526024358060011c610d955761010052600660e05160a0526080526040608020546101205260006101205114610d95576003543318610d95576101205160021c60021b60018181830110610d95578082019050905061012052610100511561073557610120805160028181830110610d9557808201905090508152505b61012051600660e05160a05260805260406080205560e0517f54b0a41dd85251df77437effbf9fbdca133bd234e7771816495877177288092c61010051610140526020610140a2005b635ecb9e1481186107dd576004358060a01c610d955760e0526003543318610d95577fe385116766307e81d4427b03f1ac50c300b2f6a5df7b3c67eeb7eaaab12f08056005546101005260e051610120526040610100a160e051600555005b636b441a408118610807576004358060a01c610d955760e0526003543318610d955760e051600455005b63e5ea47b88118610852576004543318610d95577f5c486528ec3e3f0ea91181cff8116f02bfa350e03b8b6f12e00765adbb5af85c60035460e0523361010052604060e0a133600355005b634b920379811861088b576004358060a01c610d955760e0526000600660e05160a0526080526040608020541415610100526020610100f35b638a42bd8281186108c7576004358060a01c610d955760e05260006002600660e05160a052608052604060802054161415610100526020610100f35b6351bd4db581186108ff576004358060a01c610d955760e052600660e05160a05260805260406080205460021c610100526020610100f35b63c781c66881186109165760015460e052602060e0f35b63dfe05031811861092d5760025460e052602060e0f35b638da5cb5b81186109445760035460e052602060e0f35b631ec0cdc1811861095b5760045460e052602060e0f35b63f81c6c3e81186109725760055460e052602060e0f35b63f0ce32f881186109a7576004358060a01c610d955760e052600660e05160a052608052604060802054610100526020610100f35b638b752bb081186109fa576004358060a01c610d955760e0526024358060a01c610d955761010052600760e05160a05260805260406080206101005160a052608052604060802054610120526020610120f35b635d95c65e8118610a2f576004358060a01c610d955760e052600860e05160a052608052604060802054610100526020610100f35b63f111569c8118610a465760095460e052602060e0f35b63285218488118610a7c5760016004356f7fffffffffffffffffffffffffffffff811015610d955702600a015460e052602060e0f35b505b60006000fd5b600660e05160a0526080526040608020546101205260006101205114610d95576000600261012051161415610aba576000610adb565b4262093a80808204905090506101205160021c62093a808082049050905014155b15610bcf5763f9754c936101a0526101c08060803082526020820191508082526311bfb95661014452600460e0516101645260200161014052610140818401808280516020018083828460045afa905050508051806020830101818260206001820306601f8201039050033682375050805160200160206001820306601f82010390509050905090508101905060208201915060008252602082019150600182525050506005543b15610d95576000600060e46101bc60006005545af1610ba7573d600060003e3d6000fd5b4260021b60038181830110610d955780820190509050600660e05160a0526080526040608020555b634b8200936101405261010051610160526020610140602461015c600060e0515af1610c00573d600060003e3d6000fd5b601f3d1115610d95576101405115610d955763094007076101605261010051610180526020610160602461017c60e0515afa610c41573d600060003e3d6000fd5b601f3d1115610d955761016051610140526101405160076101005160a052608052604060802060e05160a052608052604060802054808210610d9557808203905090506101605260006101605114610d935763a9059cbb6101c4526004610100516101e45261016051610204526040016101c0526101c05060206102606101c0516101e060006020602038036080396080515af1610ce4573d600060003e3d6000fd5b61024060203d808211610cf75781610cf9565b805b905090508152805160200180610180828460045afa9050505060006101805114610d38576101a0516101805181816020036008021c9050905015610d95575b6101405160076101005160a052608052604060802060e05160a05260805260406080205560e051610100517f9d228d69b5fdb8d273a2336f8fb8612d039631024ea9bf09c424a9503aa078f0610140516101c05260206101c0a35b565b600080fd5b6100cc610e66036100cc610160396100cc610e66036101405181610160015280602001610160f35b600080fd00000000000000000000000037414a8662bc1d25be3ee51fb27c2686e2490a890000000000000000000000000994206dfe8de6ec6920ff4d779b0d950605fb53000000000000000000000000919124f5f5135d3020a0b075412679755545f7c5

Deployed Bytecode

0x600436101561000d57610a7e565b60046000601c3760005134610d9557636a627842811861005d576004358060a01c610d95576102a052600054610d955760016000556102a05160e0523361010052610056610a84565b6000600055005b6355ec670881186102cf576004358060a01c610d95576102a0526024358060a01c610d95576102c0526044358060a01c610d95576102e0526064358060a01c610d9557610300526084358060a01c610d95576103205260a4358060a01c610d95576103405260c4358060a01c610d95576103605260e4358060a01c610d955761038052610104358060a01c610d95576103a052610124358060a01c610d95576103c052610144358060a01c610d95576103e052610164358060a01c610d955761040052610184358060a01c610d9557610420526101a4358060a01c610d9557610440526101c4358060a01c610d9557610460526101e4358060a01c610d955761048052610204358060a01c610d95576104a052610224358060a01c610d95576104c052610244358060a01c610d95576104e052610264358060a01c610d955761050052610284358060a01c610d9557610520526102a4358060a01c610d9557610540526102c4358060a01c610d9557610560526102e4358060a01c610d955761058052610304358060a01c610d95576105a052610324358060a01c610d95576105c052610344358060a01c610d95576105e052610364358060a01c610d955761060052610384358060a01c610d9557610620526103a4358060a01c610d9557610640526103c4358060a01c610d9557610660526103e4358060a01c610d955761068052600054610d955760016000556106a060006020818352015b6102a06106a0516020811015610d95576020020151610292575b6102a06106a0516020811015610d9557602002015160e05233610100526102b7610a84565b81516001018083528114156102785750506000600055005b638db98b5c81186102e45733610100526102ff565b636be320d281186105e2576044358060a01c610d9557610100525b6004358060a01c610d955760e0526000600860e05160a0526080526040608020541461032f576003543318610d95575b600161012052600154610140527f602d3d8160093d39f3363d3d373d3d3d363d7300000000000000000000000000610280526101405160601b610293527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006102a752466102205233610240526024356102605260606102005261020080516020820120905060366102806000f56101605260055433186104e157610120805160028181830110610d955780820190509050815250610160517f54b0a41dd85251df77437effbf9fbdca133bd234e7771816495877177288092c6001610180526020610180a263f9754c936102005261022080608030825260208201915080825263e10a16b8610184526004466101a4526024356101c45260400161018052610180818401808280516020018083828460045afa905050508051806020830101818260206001820306601f8201039050033682375050805160200160206001820306601f82010390509050905090508101905060208201915060008252602082019150600182525050506005543b15610d95576000600061010461021c60006005545af16104e1573d600060003e3d6000fd5b6101205160066101605160a05260805260406080205560095461018052610160516001610180516f7fffffffffffffffffffffffffffffff811015610d955702600a01556101805160018181830110610d95578082019050905060095561016051600860e05160a05260805260406080205563485cc9556101a05260e0516101c052610100516101e052610160513b15610d95576000600060446101bc6000610160515af1610595573d600060003e3d6000fd5b3360e051610140517f69e16554b097f489830077da86e9e40cc91529a8d0787c42c4f33a0a337a0e086024356101a052610160516101c05260406101a0a4610160516101a05260206101a0f35b6323fc5a478118610641576004358060a01c610d955760e0526003543318610d95577fa1b167642dcf1fee2fbf716c48c7c3f2326e4f26020cb042cd6405dfa72f4fd26002546101005260e051610120526040610100a160e051600255005b634cd69da081186106a0576004358060a01c610d955760e0526003543318610d95577fcdfeee65e4d0a88d6e47c5d034c34b03d52f1e6ffc56906257fc93d993ca04c46001546101005260e051610120526040610100a160e051600155005b634b29cac8811861077e576004358060a01c610d955760e0526024358060011c610d955761010052600660e05160a0526080526040608020546101205260006101205114610d95576003543318610d95576101205160021c60021b60018181830110610d95578082019050905061012052610100511561073557610120805160028181830110610d9557808201905090508152505b61012051600660e05160a05260805260406080205560e0517f54b0a41dd85251df77437effbf9fbdca133bd234e7771816495877177288092c61010051610140526020610140a2005b635ecb9e1481186107dd576004358060a01c610d955760e0526003543318610d95577fe385116766307e81d4427b03f1ac50c300b2f6a5df7b3c67eeb7eaaab12f08056005546101005260e051610120526040610100a160e051600555005b636b441a408118610807576004358060a01c610d955760e0526003543318610d955760e051600455005b63e5ea47b88118610852576004543318610d95577f5c486528ec3e3f0ea91181cff8116f02bfa350e03b8b6f12e00765adbb5af85c60035460e0523361010052604060e0a133600355005b634b920379811861088b576004358060a01c610d955760e0526000600660e05160a0526080526040608020541415610100526020610100f35b638a42bd8281186108c7576004358060a01c610d955760e05260006002600660e05160a052608052604060802054161415610100526020610100f35b6351bd4db581186108ff576004358060a01c610d955760e052600660e05160a05260805260406080205460021c610100526020610100f35b63c781c66881186109165760015460e052602060e0f35b63dfe05031811861092d5760025460e052602060e0f35b638da5cb5b81186109445760035460e052602060e0f35b631ec0cdc1811861095b5760045460e052602060e0f35b63f81c6c3e81186109725760055460e052602060e0f35b63f0ce32f881186109a7576004358060a01c610d955760e052600660e05160a052608052604060802054610100526020610100f35b638b752bb081186109fa576004358060a01c610d955760e0526024358060a01c610d955761010052600760e05160a05260805260406080206101005160a052608052604060802054610120526020610120f35b635d95c65e8118610a2f576004358060a01c610d955760e052600860e05160a052608052604060802054610100526020610100f35b63f111569c8118610a465760095460e052602060e0f35b63285218488118610a7c5760016004356f7fffffffffffffffffffffffffffffff811015610d955702600a015460e052602060e0f35b505b60006000fd5b600660e05160a0526080526040608020546101205260006101205114610d95576000600261012051161415610aba576000610adb565b4262093a80808204905090506101205160021c62093a808082049050905014155b15610bcf5763f9754c936101a0526101c08060803082526020820191508082526311bfb95661014452600460e0516101645260200161014052610140818401808280516020018083828460045afa905050508051806020830101818260206001820306601f8201039050033682375050805160200160206001820306601f82010390509050905090508101905060208201915060008252602082019150600182525050506005543b15610d95576000600060e46101bc60006005545af1610ba7573d600060003e3d6000fd5b4260021b60038181830110610d955780820190509050600660e05160a0526080526040608020555b634b8200936101405261010051610160526020610140602461015c600060e0515af1610c00573d600060003e3d6000fd5b601f3d1115610d95576101405115610d955763094007076101605261010051610180526020610160602461017c60e0515afa610c41573d600060003e3d6000fd5b601f3d1115610d955761016051610140526101405160076101005160a052608052604060802060e05160a052608052604060802054808210610d9557808203905090506101605260006101605114610d935763a9059cbb6101c4526004610100516101e45261016051610204526040016101c0526101c05060206102606101c0516101e060006020602038036080396080515af1610ce4573d600060003e3d6000fd5b61024060203d808211610cf75781610cf9565b805b905090508152805160200180610180828460045afa9050505060006101805114610d38576101a0516101805181816020036008021c9050905015610d95575b6101405160076101005160a052608052604060802060e05160a05260805260406080205560e051610100517f9d228d69b5fdb8d273a2336f8fb8612d039631024ea9bf09c424a9503aa078f0610140516101c05260206101c0a35b565b600080fd0000000000000000000000000994206dfe8de6ec6920ff4d779b0d950605fb53

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

00000000000000000000000037414a8662bc1d25be3ee51fb27c2686e2490a890000000000000000000000000994206dfe8de6ec6920ff4d779b0d950605fb53000000000000000000000000919124f5f5135d3020a0b075412679755545f7c5

-----Decoded View---------------
Arg [0] : _call_proxy (address): 0x37414a8662bC1D25be3ee51Fb27C2686e2490A89
Arg [1] : _crv (address): 0x0994206dfE8De6Ec6920FF4D779B0d950605Fb53
Arg [2] : _owner (address): 0x919124f5f5135D3020a0B075412679755545F7c5

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 00000000000000000000000037414a8662bc1d25be3ee51fb27c2686e2490a89
Arg [1] : 0000000000000000000000000994206dfe8de6ec6920ff4d779b0d950605fb53
Arg [2] : 000000000000000000000000919124f5f5135d3020a0b075412679755545f7c5


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.