ETH Price: $3,446.30 (+4.73%)

Contract

0xa2Bcd1a4Efbd04B63cd03f5aFf2561106ebCCE00
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Collect212178882024-11-18 23:27:474 days ago1731972467IN
Curve.fi: Fee Receiver
0 ETH0.0127128111.35371152
Collect212175302024-11-18 22:15:594 days ago1731968159IN
Curve.fi: Fee Receiver
0 ETH0.0121975711.32032464
Collect212168662024-11-18 20:02:474 days ago1731960167IN
Curve.fi: Fee Receiver
0 ETH0.0032768417.66595531
Collect212144222024-11-18 11:51:595 days ago1731930719IN
Curve.fi: Fee Receiver
0 ETH0.0024591811.86210675
Collect212132062024-11-18 7:47:475 days ago1731916067IN
Curve.fi: Fee Receiver
0 ETH0.002160269.2921203
Collect212122972024-11-18 4:45:355 days ago1731905135IN
Curve.fi: Fee Receiver
0 ETH0.002334919.66317319
Collect212117352024-11-18 2:52:475 days ago1731898367IN
Curve.fi: Fee Receiver
0 ETH0.0012749510.63254819
Collect212112072024-11-18 1:06:475 days ago1731892007IN
Curve.fi: Fee Receiver
0 ETH0.002234487.97453611
Collect212111022024-11-18 0:45:355 days ago1731890735IN
Curve.fi: Fee Receiver
0 ETH0.0020851110.81423111
Collect211678282024-11-11 23:48:5911 days ago1731368939IN
Curve.fi: Fee Receiver
0 ETH0.0061757432.11114807
Collect211672602024-11-11 21:54:5911 days ago1731362099IN
Curve.fi: Fee Receiver
0 ETH0.0092817637.50646148
Collect211633272024-11-11 8:44:1112 days ago1731314651IN
Curve.fi: Fee Receiver
0 ETH0.0011129512.29318519
Collect211633112024-11-11 8:40:5912 days ago1731314459IN
Curve.fi: Fee Receiver
0 ETH0.0011318912.39370977
Collect211633052024-11-11 8:39:4712 days ago1731314387IN
Curve.fi: Fee Receiver
0 ETH0.0147751711.58863588
Collect211615812024-11-11 2:54:1112 days ago1731293651IN
Curve.fi: Fee Receiver
0 ETH0.0050786212.82753112
Collect211610772024-11-11 1:12:5912 days ago1731287579IN
Curve.fi: Fee Receiver
0 ETH0.0018305113.34071204
Collect211176372024-11-04 23:41:4718 days ago1730763707IN
Curve.fi: Fee Receiver
0 ETH0.001396074.74053886
Collect211176322024-11-04 23:40:4718 days ago1730763647IN
Curve.fi: Fee Receiver
0 ETH0.001019754.80375071
Collect211176052024-11-04 23:35:2318 days ago1730763323IN
Curve.fi: Fee Receiver
0 ETH0.00078184.76324959
Burn211175992024-11-04 23:34:1118 days ago1730763251IN
Curve.fi: Fee Receiver
0 ETH0.000268574.87487765
Collect211175842024-11-04 23:31:1118 days ago1730763071IN
Curve.fi: Fee Receiver
0 ETH0.001956215.17425487
Collect211159922024-11-04 18:11:3518 days ago1730743895IN
Curve.fi: Fee Receiver
0 ETH0.000934985.8814716
Collect211134722024-11-04 9:45:1119 days ago1730713511IN
Curve.fi: Fee Receiver
0 ETH0.000478694.12042217
Collect211129262024-11-04 7:55:1119 days ago1730706911IN
Curve.fi: Fee Receiver
0 ETH0.001328853.88582042
Collect211124812024-11-04 6:26:1119 days ago1730701571IN
Curve.fi: Fee Receiver
0 ETH0.000405243.80001316
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
212144222024-11-18 11:51:595 days ago1731930719
Curve.fi: Fee Receiver
0.91248365 ETH
212144222024-11-18 11:51:595 days ago1731930719
Curve.fi: Fee Receiver
0.61799497 ETH
212138732024-11-18 10:01:595 days ago1731924119
Curve.fi: Fee Receiver
0.11184903 ETH
212138732024-11-18 10:01:595 days ago1731924119
Curve.fi: Fee Receiver
0.18263963 ETH
211615812024-11-11 2:54:1112 days ago1731293651
Curve.fi: Fee Receiver
1.85051281 ETH
211615812024-11-11 2:54:1112 days ago1731293651
Curve.fi: Fee Receiver
1.85051281 ETH
211176052024-11-04 23:35:2318 days ago1730763323
Curve.fi: Fee Receiver
0.10917706 ETH
211176052024-11-04 23:35:2318 days ago1730763323
Curve.fi: Fee Receiver
0.10917706 ETH
211175992024-11-04 23:34:1118 days ago1730763251
Curve.fi: Fee Receiver
0.477869 ETH
211123982024-11-04 6:09:3519 days ago1730700575
Curve.fi: Fee Receiver
0.11566995 ETH
211123982024-11-04 6:09:3519 days ago1730700575
Curve.fi: Fee Receiver
0.16555336 ETH
211123982024-11-04 6:09:3519 days ago1730700575
Curve.fi: Fee Receiver
0.19664568 ETH
211111532024-11-04 1:59:3519 days ago1730685575
Curve.fi: Fee Receiver
0.83044256 ETH
211111532024-11-04 1:59:3519 days ago1730685575
Curve.fi: Fee Receiver
0.71508503 ETH
210629302024-10-28 8:27:1126 days ago1730104031
Curve.fi: Fee Receiver
0.11535752 ETH
210619222024-10-28 5:03:2326 days ago1730091803
Curve.fi: Fee Receiver
1.08160253 ETH
210619222024-10-28 5:03:2326 days ago1730091803
Curve.fi: Fee Receiver
1.08160253 ETH
210172802024-10-21 23:35:4732 days ago1729553747
Curve.fi: Fee Receiver
0.26659786 ETH
210172802024-10-21 23:35:4732 days ago1729553747
Curve.fi: Fee Receiver
0.12759612 ETH
210165352024-10-21 21:06:2332 days ago1729544783
Curve.fi: Fee Receiver
0.13900173 ETH
210122992024-10-21 6:56:1133 days ago1729493771
Curve.fi: Fee Receiver
0.66117191 ETH
210122992024-10-21 6:56:1133 days ago1729493771
Curve.fi: Fee Receiver
0.66117191 ETH
209670112024-10-14 23:13:1139 days ago1728947591
Curve.fi: Fee Receiver
1.8039476 ETH
209670112024-10-14 23:13:1139 days ago1728947591
Curve.fi: Fee Receiver
1.3106835 ETH
209669992024-10-14 23:10:4739 days ago1728947447
Curve.fi: Fee Receiver
0.18504346 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
FeeCollector

Compiler Version
vyper:0.3.10

Optimization Enabled:
N/A

Other Settings:
MIT license

Contract Source Code (Vyper language format)

# pragma version 0.3.10
"""
@title FeeCollector
@license MIT
@author Curve Finance
@notice Collects fees and delegates to burner for exchange
"""


interface ERC20:
    def approve(_to: address, _value: uint256): nonpayable
    def transfer(_to: address, _value: uint256) -> bool: nonpayable
    def transferFrom(_from: address, _to: address, _value: uint256) -> bool: nonpayable
    def balanceOf(_owner: address) -> uint256: view

interface wETH:
    def balanceOf(_owner: address) -> uint256: view
    def transferFrom(_sender: address, _receiver: address, _amount: uint256): nonpayable
    def transfer(_receiver: address, _amount: uint256): nonpayable
    def withdraw(_amount: uint256): nonpayable
    def deposit(): payable

interface Curve:
    def withdraw_admin_fees(): nonpayable

interface Burner:
    def burn(_coins: DynArray[ERC20, MAX_LEN], _receiver: address): nonpayable
    def push_target() -> uint256: nonpayable
    def supportsInterface(_interface_id: bytes4) -> bool: view

interface Hooker:
    def duty_act(_hook_inputs: DynArray[HookInput, MAX_HOOK_LEN], _receiver: address=msg.sender) -> uint256: payable
    def buffer_amount() -> uint256: view
    def supportsInterface(_interface_id: bytes4) -> bool: view


event SetMaxFee:
    epoch: indexed(Epoch)
    max_fee: uint256

event SetBurner:
    burner: indexed(Burner)

event SetHooker:
    hooker: indexed(Hooker)

event SetTarget:
    target: indexed(ERC20)

event SetKilled:
    coin: indexed(ERC20)
    epoch_mask: Epoch

event SetOwner:
    owner: indexed(address)

event SetEmergencyOwner:
    emergency_owner: indexed(address)


enum Epoch:
    SLEEP  # 1
    COLLECT  # 2
    EXCHANGE  # 4
    FORWARD  # 8


struct Transfer:
    coin: ERC20
    to: address
    amount: uint256  # 2^256-1 for the whole balance


struct HookInput:
    hook_id: uint8
    value: uint256
    data: Bytes[8192]


struct RecoverInput:
    coin: ERC20
    amount: uint256


struct KilledInput:
    coin: ERC20
    killed: Epoch  # True where killed


ETH_ADDRESS: constant(address) = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE
WETH: immutable(wETH)

MAX_LEN: constant(uint256) = 64
MAX_HOOK_LEN: constant(uint256) = 32
ONE: constant(uint256) = 10 ** 18  # Precision

START_TIME: constant(uint256) = 1600300800  # ts of distribution start
WEEK: constant(uint256) = 7 * 24 * 3600
EPOCH_TIMESTAMPS: constant(uint256[17]) = [
    0, 0,  # 1
    4 * 24 * 3600,  # 2
    0, 5 * 24 * 3600,   # 4
    0, 0, 0, 6 * 24 * 3600,  # 8
    0, 0, 0, 0, 0, 0, 0, WEEK,  # 16, next period
]

target: public(ERC20)  # coin swapped into
max_fee: public(uint256[9])  # max_fee[Epoch]

BURNER_INTERFACE_ID: constant(bytes4) = 0xa3b5e311
HOOKER_INTERFACE_ID: constant(bytes4) = 0xe569b44d
burner: public(Burner)
hooker: public(Hooker)

last_hooker_approve: uint256

is_killed: public(HashMap[ERC20, Epoch])
ALL_COINS: constant(ERC20) = empty(ERC20)  # Auxiliary indicator for all coins (=ZERO_ADDRESS)

owner: public(address)
emergency_owner: public(address)


@external
def __init__(_target_coin: ERC20, _weth: wETH, _owner: address, _emergency_owner: address):
    """
    @notice Contract constructor
    @param _target_coin Coin to swap to
    @param _weth Wrapped ETH(native coin) address
    @param _owner Owner address
    @param _emergency_owner Emergency owner address. Can kill the contract
    """
    self.target = _target_coin
    WETH = _weth
    self.owner = _owner
    self.emergency_owner = _emergency_owner

    self.max_fee[convert(Epoch.COLLECT, uint256)] = ONE / 100  # 1%
    self.max_fee[convert(Epoch.FORWARD, uint256)] = ONE / 100  # 1%

    self.is_killed[ALL_COINS] = Epoch.COLLECT | Epoch.FORWARD  # Set burner first
    self.is_killed[_target_coin] = Epoch.COLLECT | Epoch.EXCHANGE  # Keep target coin in contract

    log SetTarget(_target_coin)
    log SetOwner(_owner)
    log SetEmergencyOwner(_emergency_owner)
    log SetMaxFee(Epoch.COLLECT, ONE / 100)
    log SetMaxFee(Epoch.FORWARD, ONE / 100)
    log SetKilled(ALL_COINS, Epoch.COLLECT | Epoch.FORWARD)
    log SetKilled(_target_coin, Epoch.COLLECT | Epoch.FORWARD)


@external
@payable
def __default__():
    # Deposited ETH can be converted using `burn(ETH_ADDRESS)`
    pass


@external
def withdraw_many(_pools: DynArray[address, MAX_LEN]):
    """
    @notice Withdraw admin fees from multiple pools
    @param _pools List of pool address to withdraw admin fees from
    """
    for pool in _pools:
        Curve(pool).withdraw_admin_fees()


@external
@payable
def burn(_coin: address) -> bool:
    """
    @notice Transfer coin from contract with approval
    @dev Needed for back compatability along with dealing raw ETH
    @param _coin Coin to transfer
    @return True if did not fail, back compatability
    """
    if _coin == ETH_ADDRESS:  # Deposit
        WETH.deposit(value=self.balance)
    else:
        amount: uint256 = ERC20(_coin).balanceOf(msg.sender)
        ERC20(_coin).transferFrom(msg.sender, self, amount)
    return True


@internal
@pure
def _epoch_ts(ts: uint256) -> Epoch:
    ts = (ts - START_TIME) % WEEK
    for epoch in [Epoch.SLEEP, Epoch.COLLECT, Epoch.EXCHANGE, Epoch.FORWARD]:
        if ts < EPOCH_TIMESTAMPS[2 * convert(epoch, uint256)]:
            return epoch
    raise UNREACHABLE


@external
@view
def epoch(ts: uint256=block.timestamp) -> Epoch:
    """
    @notice Get epoch at certain timestamp
    @param ts Timestamp. Current by default
    @return Epoch
    """
    return self._epoch_ts(ts)


@internal
@pure
def _epoch_time_frame(epoch: Epoch, ts: uint256) -> (uint256, uint256):
    subset: uint256 = convert(epoch, uint256)
    assert subset & (subset - 1) == 0, "Bad Epoch"

    ts = ts - (ts - START_TIME) % WEEK
    return (ts + EPOCH_TIMESTAMPS[convert(epoch, uint256)], ts + EPOCH_TIMESTAMPS[2 * convert(epoch, uint256)])


@external
@view
def epoch_time_frame(_epoch: Epoch, _ts: uint256=block.timestamp) -> (uint256, uint256):
    """
    @notice Get time frame of certain epoch
    @param _epoch Epoch
    @param _ts Timestamp to anchor to. Current by default
    @return [start, end) time frame boundaries
    """
    return self._epoch_time_frame(_epoch, _ts)


@internal
@view
def _fee(epoch: Epoch, ts: uint256) -> uint256:
    start: uint256 = 0
    end: uint256 = 0
    start, end = self._epoch_time_frame(epoch, ts)
    if ts >= end:
        return 0
    return self.max_fee[convert(epoch, uint256)] * (ts + 1 - start) / (end - start)


@external
@view
def fee(_epoch: Epoch=empty(Epoch), _ts: uint256=block.timestamp) -> uint256:
    """
    @notice Calculate keeper's fee
    @param _epoch Epoch to count fee for
    @param _ts Timestamp of collection
    @return Fee with base 10^18
    """
    if _epoch == empty(Epoch):
        return self._fee(self._epoch_ts(_ts), _ts)
    return self._fee(_epoch, _ts)


@external
@nonreentrant("transfer")
def transfer(_transfers: DynArray[Transfer, MAX_LEN]):
    """
    @dev No approvals so can change burner easily
    @param _transfers Transfers to apply
    """
    assert msg.sender == self.burner.address, "Only Burner"
    epoch: Epoch = self._epoch_ts(block.timestamp)
    assert epoch in Epoch.COLLECT | Epoch.EXCHANGE, "Wrong Epoch"

    for transfer in _transfers:
        assert not self.is_killed[transfer.coin] in epoch, "Killed coin"

        amount: uint256 = transfer.amount
        if amount == max_value(uint256):
            amount = transfer.coin.balanceOf(self)
        assert transfer.coin.transfer(transfer.to, amount, default_return_value=True)


@external
@nonreentrant("collect")
def collect(_coins: DynArray[ERC20, MAX_LEN], _receiver: address=msg.sender):
    """
    @notice Collect earned fees. Collection should happen under callback to earn caller fees.
    @param _coins Coins to collect sorted in ascending order
    @param _receiver Receiver of caller `collect_fee`s
    """
    assert self._epoch_ts(block.timestamp) == Epoch.COLLECT, "Wrong epoch"
    assert not self.is_killed[ALL_COINS] in Epoch.COLLECT, "Killed epoch"

    for i in range(len(_coins), bound=MAX_LEN):
        assert not self.is_killed[_coins[i]] in Epoch.COLLECT, "Killed coin"
        # Eliminate case of repeated coins
        if i > 0:
            assert convert(_coins[i].address, uint160) > convert(_coins[i - 1].address, uint160), "Coins not sorted"

    self.burner.burn(_coins, _receiver)


@external
@view
def can_exchange(_coins: DynArray[ERC20, MAX_LEN]) -> bool:
    """
    @notice Check whether coins are allowed to be exchanged
    @param _coins Coins to exchange
    @return Boolean value if coins are allowed to be exchanged
    """
    if self._epoch_ts(block.timestamp) != Epoch.EXCHANGE or\
        self.is_killed[ALL_COINS] in Epoch.EXCHANGE:
        return False
    for coin in _coins:
        if self.is_killed[coin] in Epoch.EXCHANGE:
            return False
    return True


@external
@payable
@nonreentrant("forward")
def forward(_hook_inputs: DynArray[HookInput, MAX_HOOK_LEN], _receiver: address=msg.sender) -> uint256:
    """
    @notice Transfer target coin forward
    @param _hook_inputs Input parameters for forward hooks
    @param _receiver Receiver of caller `forward_fee`
    @return Amount of received fee
    """
    assert self._epoch_ts(block.timestamp) == Epoch.FORWARD, "Wrong epoch"
    target: ERC20 = self.target
    assert not (self.is_killed[ALL_COINS] | self.is_killed[target]) in Epoch.FORWARD, "Killed"

    self.burner.push_target()
    amount: uint256 = target.balanceOf(self)

    # Account buffer
    hooker: Hooker = self.hooker
    hooker_buffer: uint256 = hooker.buffer_amount()
    amount -= min(hooker_buffer, amount)

    fee: uint256 = self._fee(Epoch.FORWARD, block.timestamp) * amount / ONE
    target.transfer(_receiver, fee)

    target.transfer(hooker.address, amount - fee)
    if self.last_hooker_approve < (block.timestamp - START_TIME) / WEEK:  # First time this week
        target.approve(hooker.address, hooker_buffer)
        self.last_hooker_approve = (block.timestamp - START_TIME) / WEEK
    fee += hooker.duty_act(_hook_inputs, _receiver, value=msg.value)

    return fee


@external
def recover(_recovers: DynArray[RecoverInput, MAX_LEN], _receiver: address):
    """
    @notice Recover ERC20 tokens or Ether from this contract
    @dev Callable only by owner and emergency owner
    @param _recovers (Token, amount) to recover
    @param _receiver Receiver of coins
    """
    assert msg.sender in [self.owner, self.emergency_owner], "Only owner"

    for input in _recovers:
        amount: uint256 = input.amount
        if input.coin.address == ETH_ADDRESS:
            if amount == max_value(uint256):
                amount = self.balance
            raw_call(_receiver, b"", value=amount)
        else:
            if amount == max_value(uint256):
                amount = input.coin.balanceOf(self)
            input.coin.transfer(_receiver, amount)  # do not need safe transfer


@external
def set_max_fee(_epoch: Epoch, _max_fee: uint256):
    """
    @notice Set keeper's max fee
    @dev Callable only by owner
    @param _epoch Epoch to set fee for
    @param _max_fee Maximum fee to set
    """
    assert msg.sender == self.owner, "Only owner"
    subset: uint256 = convert(_epoch, uint256)
    assert subset & (subset - 1) == 0, "Bad Epoch"
    assert _max_fee <= ONE, "Bad max_fee"
    self.max_fee[convert(_epoch, uint256)] = _max_fee

    log SetMaxFee(_epoch, _max_fee)


@external
def set_burner(_new_burner: Burner):
    """
    @notice Set burner for exchanging coins, must implement BURNER_INTERFACE
    @dev Callable only by owner
    @param _new_burner Address of the new contract
    """
    assert msg.sender == self.owner, "Only owner"
    assert _new_burner.supportsInterface(BURNER_INTERFACE_ID)
    self.burner = _new_burner

    log SetBurner(_new_burner)


@external
def set_hooker(_new_hooker: Hooker):
    """
    @notice Set contract for hooks, must implement HOOKER_INTERFACE
    @dev Callable only by owner
    @param _new_hooker Address of the new contract
    """
    assert msg.sender == self.owner, "Only owner"
    assert _new_hooker.supportsInterface(HOOKER_INTERFACE_ID)

    if self.hooker != empty(Hooker):
        self.target.approve(self.hooker.address, 0)
    self.hooker = _new_hooker

    log SetHooker(_new_hooker)


@external
def set_target(_new_target: ERC20):
    """
    @notice Set new coin for fees accumulation
    @dev Callable only by owner
    @param _new_target Address of the new target coin
    """
    assert msg.sender == self.owner, "Only owner"

    target: ERC20 = self.target
    self.is_killed[target] = empty(Epoch)  # allow to collect and exchange
    log SetKilled(target, empty(Epoch))

    self.target = _new_target
    self.is_killed[_new_target] = Epoch.COLLECT | Epoch.EXCHANGE  # Keep target coin in contract
    log SetTarget(_new_target)
    log SetKilled(_new_target, Epoch.COLLECT | Epoch.EXCHANGE)


@external
def set_killed(_input: DynArray[KilledInput, MAX_LEN]):
    """
    @notice Stop a contract or specific coin to be burnt
    @dev Callable only by owner or emergency owner
    @param _input Array of (coin address, killed phases enum)
    """
    assert msg.sender in [self.owner, self.emergency_owner], "Only owner"

    for input in _input:
        self.is_killed[input.coin] = input.killed
        log SetKilled(input.coin, input.killed)


@external
def set_owner(_new_owner: address):
    """
    @notice Set owner of the contract
    @dev Callable only by current owner
    @param _new_owner Address of the new owner
    """
    assert msg.sender == self.owner, "Only owner"
    assert _new_owner != empty(address)
    self.owner = _new_owner
    log SetOwner(_new_owner)


@external
def set_emergency_owner(_new_owner: address):
    """
    @notice Set emergency owner of the contract
    @dev Callable only by current owner
    @param _new_owner Address of the new emergency owner
    """
    assert msg.sender == self.owner, "Only owner"
    assert _new_owner != empty(address)
    self.emergency_owner = _new_owner
    log SetEmergencyOwner(_new_owner)

Contract Security Audit

Contract ABI

[{"name":"SetMaxFee","inputs":[{"name":"epoch","type":"uint256","indexed":true},{"name":"max_fee","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"SetBurner","inputs":[{"name":"burner","type":"address","indexed":true}],"anonymous":false,"type":"event"},{"name":"SetHooker","inputs":[{"name":"hooker","type":"address","indexed":true}],"anonymous":false,"type":"event"},{"name":"SetTarget","inputs":[{"name":"target","type":"address","indexed":true}],"anonymous":false,"type":"event"},{"name":"SetKilled","inputs":[{"name":"coin","type":"address","indexed":true},{"name":"epoch_mask","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"SetOwner","inputs":[{"name":"owner","type":"address","indexed":true}],"anonymous":false,"type":"event"},{"name":"SetEmergencyOwner","inputs":[{"name":"emergency_owner","type":"address","indexed":true}],"anonymous":false,"type":"event"},{"stateMutability":"nonpayable","type":"constructor","inputs":[{"name":"_target_coin","type":"address"},{"name":"_weth","type":"address"},{"name":"_owner","type":"address"},{"name":"_emergency_owner","type":"address"}],"outputs":[]},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"nonpayable","type":"function","name":"withdraw_many","inputs":[{"name":"_pools","type":"address[]"}],"outputs":[]},{"stateMutability":"payable","type":"function","name":"burn","inputs":[{"name":"_coin","type":"address"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"view","type":"function","name":"epoch","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"epoch","inputs":[{"name":"ts","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"epoch_time_frame","inputs":[{"name":"_epoch","type":"uint256"}],"outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"epoch_time_frame","inputs":[{"name":"_epoch","type":"uint256"},{"name":"_ts","type":"uint256"}],"outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"fee","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"fee","inputs":[{"name":"_epoch","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"fee","inputs":[{"name":"_epoch","type":"uint256"},{"name":"_ts","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"nonpayable","type":"function","name":"transfer","inputs":[{"name":"_transfers","type":"tuple[]","components":[{"name":"coin","type":"address"},{"name":"to","type":"address"},{"name":"amount","type":"uint256"}]}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"collect","inputs":[{"name":"_coins","type":"address[]"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"collect","inputs":[{"name":"_coins","type":"address[]"},{"name":"_receiver","type":"address"}],"outputs":[]},{"stateMutability":"view","type":"function","name":"can_exchange","inputs":[{"name":"_coins","type":"address[]"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"payable","type":"function","name":"forward","inputs":[{"name":"_hook_inputs","type":"tuple[]","components":[{"name":"hook_id","type":"uint8"},{"name":"value","type":"uint256"},{"name":"data","type":"bytes"}]}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"payable","type":"function","name":"forward","inputs":[{"name":"_hook_inputs","type":"tuple[]","components":[{"name":"hook_id","type":"uint8"},{"name":"value","type":"uint256"},{"name":"data","type":"bytes"}]},{"name":"_receiver","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"nonpayable","type":"function","name":"recover","inputs":[{"name":"_recovers","type":"tuple[]","components":[{"name":"coin","type":"address"},{"name":"amount","type":"uint256"}]},{"name":"_receiver","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_max_fee","inputs":[{"name":"_epoch","type":"uint256"},{"name":"_max_fee","type":"uint256"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_burner","inputs":[{"name":"_new_burner","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_hooker","inputs":[{"name":"_new_hooker","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_target","inputs":[{"name":"_new_target","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_killed","inputs":[{"name":"_input","type":"tuple[]","components":[{"name":"coin","type":"address"},{"name":"killed","type":"uint256"}]}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_owner","inputs":[{"name":"_new_owner","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_emergency_owner","inputs":[{"name":"_new_owner","type":"address"}],"outputs":[]},{"stateMutability":"view","type":"function","name":"target","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"max_fee","inputs":[{"name":"arg0","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"burner","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"hooker","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"is_killed","inputs":[{"name":"arg0","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"emergency_owner","inputs":[],"outputs":[{"name":"","type":"address"}]}]

6120375150346101f25760206122435f395f518060a01c6101f25760405260206122635f395f518060a01c6101f25760605260206122835f395f518060a01c6101f25760805260206122a35f395f518060a01c6101f25760a0526040516003556060516120375260805160115560a051601255662386f26fc10000600655662386f26fc10000600c55600a60105f6020525f5260405f2055600660106040516020525f5260405f20556040517f529334a1c6836c58fdfaae38f1bc5b62d6a69e91fc4181371b8cd8db71831ea75f60c0a26080517f167d3e9c1016ab80e58802ca9da10ce5c6a0f4debc46a2e7a2cd9e56899a4fb55f60c0a260a0517f8d244bde4451f1c7643d677f668fcf551617d4046657105728f1e0c6d1f41abd5f60c0a260027f62c711266aa88195f0a4d039bff4072f30cd1171b5473007a6ed72225cf8f329662386f26fc1000060c052602060c0a260087f62c711266aa88195f0a4d039bff4072f30cd1171b5473007a6ed72225cf8f329662386f26fc1000060c052602060c0a25f7fbe9ca79c5858b597d131478211339014c63cf8066fc364a3a616e5635de82e6a600a60c052602060c0a26040517fbe9ca79c5858b597d131478211339014c63cf8066fc364a3a616e5635de82e6a600a60c052602060c0a26120376101f661000039612057610000f35b5f80fd5f3560e01c6002601b820660011b61200101601e395f51565b63d4b839928118611cf75734611ffd5760035460405260206040f3611cf7565b63c47339c2811861006557602436103417611ffd5760043560088111611ffd576004015460405260206040f35b63ddca3f438118611cf75734611ffd575f6105a052426105c05261087e56611cf7565b6327810b6e81186100a45734611ffd57600d5460405260206040f35b63427c9a958118611cf757602436103417611ffd576004358060a01c611ffd5760405260115433181561012d57600a6060527f4f6e6c79206f776e65720000000000000000000000000000000000000000000060805260605060605180608001601f825f031636823750506308c379a06020526020604052601f19601f6060510116604401603cfd5b6003546060525f60106060516020525f5260405f20556060517fbe9ca79c5858b597d131478211339014c63cf8066fc364a3a616e5635de82e6a5f60805260206080a2604051600355600660106040516020525f5260405f20556040517f529334a1c6836c58fdfaae38f1bc5b62d6a69e91fc4181371b8cd8db71831ea75f6080a26040517fbe9ca79c5858b597d131478211339014c63cf8066fc364a3a616e5635de82e6a600660805260206080a200611cf7565b636dfaf77281186101ff5734611ffd57600e5460405260206040f35b63d11d83ab8118611cf7576043361115611ffd5733620411c052610c2c56611cf7565b6359e63166811861025d57602436103417611ffd576004358060a01c611ffd5760405260106040516020525f5260405f205460605260206060f35b63755da8118118611cf757604436103417611ffd576004356004016040813511611ffd5780355f8160408111611ffd5780156102ba57905b8060051b6020850101358060a01c611ffd578160051b60600152600101818118610295575b50508060405250505f60405160408111611ffd57801561031b57905b8060051b6060015161086052610860516330c5408561088052803b15611ffd575f610880600461089c5f855af161030f573d5f5f3e3d5ffd5b506001018181186102d6575b505000611cf7565b638da5cb5b811861033f5734611ffd5760115460405260206040f35b63e07748628118611cf757602436103417611ffd576004358060a01c611ffd576040526011543318156103c857600a6060527f4f6e6c79206f776e65720000000000000000000000000000000000000000000060805260605060605180608001601f825f031636823750506308c379a06020526020604052601f19601f6060510116604401603cfd5b6040516301ffc9a76060527fa3b5e31100000000000000000000000000000000000000000000000000000000608052602060606024607c845afa61040e573d5f5f3e3d5ffd5b60203d10611ffd576060518060011c611ffd5760a05260a090505115611ffd57604051600d556040517f5d02513563a6890385b0d6684a867cbf8032b19adbd10bca1f78f430db041e375f6060a200611cf7565b6363a4042a811861047e5734611ffd5760125460405260206040f35b63900cf0cf8118611cf75734611ffd5742610320526105bc56611cf7565b6389afcb44811861059f576023361115611ffd576004358060a01c611ffd5760405273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee604051186105105760206120375f395f5163d0e30db0606052803b15611ffd575f60606004607c47855af161050a573d5f5f3e3d5ffd5b50610594565b6040516370a082316080523360a052602060806024609c845afa610536573d5f5f3e3d5ffd5b60203d10611ffd5760809050516060526040516323b872dd6080523360a0523060c05260605160e052602060806064609c5f855af1610577573d5f5f3e3d5ffd5b60203d10611ffd576080518060011c611ffd576101005261010050505b600160605260206060f35b635487c5778118611cf757602436103417611ffd57600435610320525b6020610320516040526105d0610340611cf9565b610340f3611cf7565b63dffe059c81186105f857602436103417611ffd574261050052610638565b63a4520aee8118611cf757604436103417611ffd5733610b40526111c956611cf7565b63b676f7488118611cf757604436103417611ffd57602435610500525b6004358060041c611ffd576104e05260406104e05160405261050051606052610662610520611dc1565b610520f3611cf7565b6339b37ab0811861069957602436103417611ffd576004358060041c611ffd576105a052426105c05261087e565b6397160c5b8118611cf757604436103417611ffd576004358060041c611ffd5760405260115433181561072257600a6060527f4f6e6c79206f776e65720000000000000000000000000000000000000000000060805260605060605180608001601f825f031636823750506308c379a06020526020604052601f19601f6060510116604401603cfd5b60405160605260605160018103818111611ffd579050606051161561079d5760096080527f4261642045706f6368000000000000000000000000000000000000000000000060a0526080506080518060a001601f825f031636823750506308c379a06040526020606052601f19601f6080510116604401605cfd5b670de0b6b3a7640000602435111561080b57600b6080527f426164206d61785f66656500000000000000000000000000000000000000000060a0526080506080518060a001601f825f031636823750506308c379a06040526020606052601f19601f6080510116604401605cfd5b60243560405160088111611ffd57600401556040517f62c711266aa88195f0a4d039bff4072f30cd1171b5473007a6ed72225cf8f32960243560805260206080a200611cf7565b63939f5ea48118611cf757604436103417611ffd576004358060041c611ffd576105a0526024356105c0525b6105a0516108cd5760206105c05160405261089a6105e0611cf9565b6105e051610620526105c05161064052610620516104e05261064051610500526108c5610600611f44565b6106006108ee565b60206105a0516104e0526105c051610500526108ea6105e0611f44565b6105e05bf3611cf7565b630e67c6bc8118610c0757604436103417611ffd576004356004016040813511611ffd5780355f8160408111611ffd57801561097257905b606081026103400160608202602086010180358060a01c611ffd57825260208101358060a01c611ffd57602083015260408101356040830152505060010181811861092c575b5050806103205250505f54600214611ffd5760025f55600d543318156109f757600b611b40527f4f6e6c79204275726e6572000000000000000000000000000000000000000000611b6052611b4050611b405180611b6001601f825f031636823750506308c379a0611b00526020611b2052601f19601f611b40510116604401611b1cfd5b42604052610a06611b60611cf9565b611b6051611b40526006611b405116610a7e57600b611b60527f57726f6e672045706f6368000000000000000000000000000000000000000000611b8052611b6050611b605180611b8001601f825f031636823750506308c379a0611b20526020611b4052601f19601f611b60510116604401611b3cfd5b5f6103205160408111611ffd578015610bff57905b60608102610340018051611b60526020810151611b80526040810151611ba05250611b40516010611b60516020525f5260405f20541615610b3357600b611bc0527f4b696c6c656420636f696e000000000000000000000000000000000000000000611be052611bc050611bc05180611be001601f825f031636823750506308c379a0611b80526020611ba052601f19601f611bc0510116604401611b9cfd5b611ba051611bc052611bc05119610b8257611b60516370a08231611be05230611c00526020611be06024611bfc845afa610b6f573d5f5f3e3d5ffd5b60203d10611ffd57611be0905051611bc0525b611b605163a9059cbb611be052611b8051611c0052611bc051611c20526020611be06044611bfc5f855af1610bb9573d5f5f3e3d5ffd5b3d610bd057803b15611ffd576001611c4052610be9565b60203d10611ffd57611be0518060011c611ffd57611c40525b611c4090505115611ffd57600101818118610a93575b505060035f55005b63167f83f48118611cf7576063361115611ffd576024358060a01c611ffd57620411c0525b6004356004016020813511611ffd5780355f8160208111611ffd578015610cab57905b61206081026105c0018160051b602086010135602086010180358060081c611ffd5782526020810135602083015260408101358101612000813511611ffd57602081350160408401818382375050505050600101818118610c4f575b5050806105a0525050600254600214611ffd576002600255600842604052610cd5620411e0611cf9565b620411e0511815610d4e57600b62041200527f57726f6e672065706f6368000000000000000000000000000000000000000000620412205262041200506204120051806204122001601f825f031636823750506308c379a0620411c0526020620411e052601f19601f62041200510116604401620411dcfd5b600354620411e05260086010620411e0516020525f5260405f205460105f6020525f5260405f2054171615610deb57600662041200527f4b696c6c65640000000000000000000000000000000000000000000000000000620412205262041200506204120051806204122001601f825f031636823750506308c379a0620411c0526020620411e052601f19601f62041200510116604401620411dcfd5b600d54632eb078cd620412005260206204120060046204121c5f855af1610e14573d5f5f3e3d5ffd5b60203d10611ffd57620412005050620411e0516370a08231620412205230620412405260206204122060246204123c845afa610e52573d5f5f3e3d5ffd5b60203d10611ffd57620412209050516204120052600e54620412205262041220516369e15fcb620412605260206204126060046204127c845afa610e98573d5f5f3e3d5ffd5b60203d10611ffd5762041260905051620412405262041200516204124051620412005180828118828410021890509050808203828111611ffd5790509050620412005260086104e0524261050052610ef262041280611f44565b62041280516204120051808202811583838304141715611ffd5790509050670de0b6b3a7640000810490506204126052620411e05163a9059cbb6204128052620411c051620412a0526204126051620412c05260206204128060446204129c5f855af1610f61573d5f5f3e3d5ffd5b60203d10611ffd5762041280518060011c611ffd57620412e052620412e05050620411e05163a9059cbb62041280526204122051620412a05262041200516204126051808203828111611ffd5790509050620412c05260206204128060446204129c5f855af1610fd3573d5f5f3e3d5ffd5b60203d10611ffd5762041280518060011c611ffd57620412e052620412e0505042635f62a7008103818111611ffd57905062093a8081049050600f54101561107857620411e05163095ea7b362041280526204122051620412a0526204124051620412c052803b15611ffd575f6204128060446204129c5f855af161105a573d5f5f3e3d5ffd5b5042635f62a7008103818111611ffd57905062093a8081049050600f555b62041260516204122051638c88eb866204128052604080620412a05280620412a0015f6105a0518083528060051b5f8260208111611ffd57801561113857905b828160051b60208801015261206081026105c001836020880101606082518252602083015160208301528060408301526040830181830160208251018082828560045afa50508051806020830101601f825f03163682375050601f19601f82516020010116905090508101905090509050830192506001018181186110b8575b50508201602001915050905081019050620411c051620412c05250602062041280620414646204129c34855af1611171573d5f5f3e3d5ffd5b60203d10611ffd5762041280905051808201828110611ffd579050905062041260526020620412606003600255f3611cf7565b6342b1689d8118611cf757606436103417611ffd576024358060a01c611ffd57610b40525b6004356004016040813511611ffd5780355f8160408111611ffd57801561121257905b8060051b6020850101358060a01c611ffd578160051b61034001526001018181186111ec575b505080610320525050600154600214611ffd57600260015560024260405261123b610b60611cf9565b610b605118156112aa57600b610b80527f57726f6e672065706f6368000000000000000000000000000000000000000000610ba052610b8050610b805180610ba001601f825f031636823750506308c379a0610b40526020610b6052601f19601f610b80510116604401610b5cfd5b600260105f6020525f5260405f2054161561132457600c610b60527f4b696c6c65642065706f63680000000000000000000000000000000000000000610b8052610b6050610b605180610b8001601f825f031636823750506308c379a0610b20526020610b4052601f19601f610b60510116604401610b3cfd5b5f6103205160408111611ffd57801561148757905b80610b605260026010610b605161032051811015611ffd5760051b61034001516020525f5260405f205416156113ce57600b610b80527f4b696c6c656420636f696e000000000000000000000000000000000000000000610ba052610b8050610b805180610ba001601f825f031636823750506308c379a0610b40526020610b6052601f19601f610b80510116604401610b5cfd5b610b60511561147c57610b605160018103818111611ffd57905061032051811015611ffd5760051b6103400151610b605161032051811015611ffd5760051b61034001511361147c576010610b80527f436f696e73206e6f7420736f7274656400000000000000000000000000000000610ba052610b8050610b805180610ba001601f825f031636823750506308c379a0610b40526020610b6052601f19601f610b80510116604401610b5cfd5b600101818118611339575b5050600d546372a436a8610b6052604080610b805280610b80015f610320518083528060051b5f8260408111611ffd5780156114dd57905b8060051b61034001518160051b6020880101526001018181186114bf575b50508201602001915050905081019050610b4051610ba05250803b15611ffd575f610b60610864610b7c5f855af1611517573d5f5f3e3d5ffd5b50600360015500611cf7565b63dc7168e98118611cf757604436103417611ffd576004356004016040813511611ffd5780355f8160408111611ffd57801561158157905b8060051b6020850101358060a01c611ffd578160051b610340015260010181811861155b575b50508061032052505060044260405261159b610b40611cf9565b610b4051146115ab5760016115be565b600460105f6020525f5260405f20541615155b156115d2575f610b60526020610b60611636565b5f6103205160408111611ffd57801561162857905b8060051b6103400151610b405260046010610b40516020525f5260405f2054161561161d5750505f610b60526020610b60611636565b6001018181186115e7575b50506001610b40526020610b405bf3611cf7565b634e1602df8118611cf757606436103417611ffd576004356004016040813511611ffd5780355f8160408111611ffd5780156116a757905b8060061b6060018160061b602086010180358060a01c611ffd578252602081013560208301525050600101818118611674575b50508060405250506024358060a01c611ffd57611060523360115481186116cf5760016116d6565b6012548118155b905061174157600a6110a0527f4f6e6c79206f776e6572000000000000000000000000000000000000000000006110c0526110a0506110a051806110c001601f825f031636823750506308c379a061106052602061108052601f19601f6110a051011660440161107cfd5b5f60405160408111611ffd57801561187d57905b8060061b60600180516110805260208101516110a052506110a0516110c05273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee61108051186117d6576110c051196117a157476110c0525b611060516110c0515a5f6110e0526110e0505f5f6110e051611100858786f1905090509050611872573d5f5f3e3d5ffd611872565b6110c0511961181d57611080516370a082316110e052306111005260206110e060246110fc845afa61180a573d5f5f3e3d5ffd5b60203d10611ffd576110e09050516110c0525b6110805163a9059cbb6110e05261106051611100526110c0516111205260206110e060446110fc5f855af1611854573d5f5f3e3d5ffd5b60203d10611ffd576110e0518060011c611ffd576111405261114050505b600101818118611755575b505000611cf7565b63a35eba8d8118611cf757602436103417611ffd576004358060a01c611ffd5760405260115433181561190e57600a6060527f4f6e6c79206f776e65720000000000000000000000000000000000000000000060805260605060605180608001601f825f031636823750506308c379a06020526020604052601f19601f6060510116604401603cfd5b6040516301ffc9a76060527fe569b44d00000000000000000000000000000000000000000000000000000000608052602060606024607c845afa611954573d5f5f3e3d5ffd5b60203d10611ffd576060518060011c611ffd5760a05260a090505115611ffd57600e54156119b15760035463095ea7b3606052600e546080525f60a052803b15611ffd575f60606044607c5f855af16119af573d5f5f3e3d5ffd5b505b604051600e556040517f557aa1ccd69dcfb5220a0ee57e91034c3e2ae382692ffe000c16b2865fcca9695f6060a200611cf7565b633f4822d68118611cf757604436103417611ffd576004356004016040813511611ffd5780355f8160408111611ffd578015611a5857905b8060061b6060018160061b602086010180358060a01c611ffd57825260208101358060041c611ffd5760208301525050600101818118611a1d575b5050806040525050336011548118611a71576001611a78565b6012548118155b9050611ae357600a611080527f4f6e6c79206f776e6572000000000000000000000000000000000000000000006110a0526110805061108051806110a001601f825f031636823750506308c379a061104052602061106052601f19601f61108051011660440161105cfd5b5f60405160408111611ffd578015611b6057905b8060061b60600180516110605260208101516110805250611080516010611060516020525f5260405f2055611060517fbe9ca79c5858b597d131478211339014c63cf8066fc364a3a616e5635de82e6a611080516110a05260206110a0a2600101818118611af7575b505000611cf7565b637cb97b2b8118611cf757602436103417611ffd576004358060a01c611ffd57604052601154331815611bf157600a6060527f4f6e6c79206f776e65720000000000000000000000000000000000000000000060805260605060605180608001601f825f031636823750506308c379a06020526020604052601f19601f6060510116604401603cfd5b60405115611ffd576040516011556040517f167d3e9c1016ab80e58802ca9da10ce5c6a0f4debc46a2e7a2cd9e56899a4fb55f6060a200611cf7565b637e1b1e4b8118611cf757602436103417611ffd576004358060a01c611ffd57604052601154331815611cb657600a6060527f4f6e6c79206f776e65720000000000000000000000000000000000000000000060805260605060605180608001601f825f031636823750506308c379a06020526020604052601f19601f6060510116604401603cfd5b60405115611ffd576040516012556040517f8d244bde4451f1c7643d677f668fcf551617d4046657105728f1e0c6d1f41abd5f6060a200611cf756611cf7565b5b005b604051635f62a7008103818111611ffd57905062093a80810690506040526001608052600260a052600460c052600860e0525f6004905b8060051b608001516060526040366101003762054600610140525f6101605262069780610180526060366101a0376207e9006102005260e0366102203762093a80610300526101006060518060011b818160011c18611ffd57905060108111611ffd5760051b81019050516040511015611db1576060518352505050611dbf565b600101818118611d30575050fe5b565b60405160805260805160018103818111611ffd5790506080511615611e3c57600960a0527f4261642045706f6368000000000000000000000000000000000000000000000060c05260a05060a0518060c001601f825f031636823750506308c379a06060526020608052601f19601f60a0510116604401607cfd5b606051606051635f62a7008103818111611ffd57905062093a8081069050808203828111611ffd579050905060605260605160403660a0376205460060e0525f610100526206978061012052606036610140376207e9006101a05260e0366101c03762093a806102a05260a060405160108111611ffd5760051b8101905051808201828110611ffd579050905081526060516040366102c03762054600610300525f610320526206978061034052606036610360376207e9006103c05260e0366103e03762093a806104c0526102c06040518060011b818160011c18611ffd57905060108111611ffd5760051b8101905051808201828110611ffd5790509050602082015250565b604036610520376104e05160405261050051606052611f64610560611dc1565b61056080516105205260208101516105405250610540516105005110611f8d575f815250611ffb565b6104e05160088111611ffd57600401546105005160018101818110611ffd57905061052051808203828111611ffd5790509050808202811583838304141715611ffd57905090506105405161052051808203828111611ffd57905090508015611ffd57808204905090508152505b565b5f80fd08520038001803231cf608f411a4008819e501e3049c1cf61cf6152318851cf6061b05d904621b681cf6066b163c1cf61c2d1cf60222841920378118361820a16576797065728300030a0016000000000000000000000000f939e0a03fb07f59a73314e73794be0e57ac1b4e000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000071f718d3e4d1449d1502a6a7595eb84ebccb1683000000000000000000000000467947ee34af926cf1dcac093870f613c96b1e0c

Deployed Bytecode

0x5f3560e01c6002601b820660011b61200101601e395f51565b63d4b839928118611cf75734611ffd5760035460405260206040f3611cf7565b63c47339c2811861006557602436103417611ffd5760043560088111611ffd576004015460405260206040f35b63ddca3f438118611cf75734611ffd575f6105a052426105c05261087e56611cf7565b6327810b6e81186100a45734611ffd57600d5460405260206040f35b63427c9a958118611cf757602436103417611ffd576004358060a01c611ffd5760405260115433181561012d57600a6060527f4f6e6c79206f776e65720000000000000000000000000000000000000000000060805260605060605180608001601f825f031636823750506308c379a06020526020604052601f19601f6060510116604401603cfd5b6003546060525f60106060516020525f5260405f20556060517fbe9ca79c5858b597d131478211339014c63cf8066fc364a3a616e5635de82e6a5f60805260206080a2604051600355600660106040516020525f5260405f20556040517f529334a1c6836c58fdfaae38f1bc5b62d6a69e91fc4181371b8cd8db71831ea75f6080a26040517fbe9ca79c5858b597d131478211339014c63cf8066fc364a3a616e5635de82e6a600660805260206080a200611cf7565b636dfaf77281186101ff5734611ffd57600e5460405260206040f35b63d11d83ab8118611cf7576043361115611ffd5733620411c052610c2c56611cf7565b6359e63166811861025d57602436103417611ffd576004358060a01c611ffd5760405260106040516020525f5260405f205460605260206060f35b63755da8118118611cf757604436103417611ffd576004356004016040813511611ffd5780355f8160408111611ffd5780156102ba57905b8060051b6020850101358060a01c611ffd578160051b60600152600101818118610295575b50508060405250505f60405160408111611ffd57801561031b57905b8060051b6060015161086052610860516330c5408561088052803b15611ffd575f610880600461089c5f855af161030f573d5f5f3e3d5ffd5b506001018181186102d6575b505000611cf7565b638da5cb5b811861033f5734611ffd5760115460405260206040f35b63e07748628118611cf757602436103417611ffd576004358060a01c611ffd576040526011543318156103c857600a6060527f4f6e6c79206f776e65720000000000000000000000000000000000000000000060805260605060605180608001601f825f031636823750506308c379a06020526020604052601f19601f6060510116604401603cfd5b6040516301ffc9a76060527fa3b5e31100000000000000000000000000000000000000000000000000000000608052602060606024607c845afa61040e573d5f5f3e3d5ffd5b60203d10611ffd576060518060011c611ffd5760a05260a090505115611ffd57604051600d556040517f5d02513563a6890385b0d6684a867cbf8032b19adbd10bca1f78f430db041e375f6060a200611cf7565b6363a4042a811861047e5734611ffd5760125460405260206040f35b63900cf0cf8118611cf75734611ffd5742610320526105bc56611cf7565b6389afcb44811861059f576023361115611ffd576004358060a01c611ffd5760405273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee604051186105105760206120375f395f5163d0e30db0606052803b15611ffd575f60606004607c47855af161050a573d5f5f3e3d5ffd5b50610594565b6040516370a082316080523360a052602060806024609c845afa610536573d5f5f3e3d5ffd5b60203d10611ffd5760809050516060526040516323b872dd6080523360a0523060c05260605160e052602060806064609c5f855af1610577573d5f5f3e3d5ffd5b60203d10611ffd576080518060011c611ffd576101005261010050505b600160605260206060f35b635487c5778118611cf757602436103417611ffd57600435610320525b6020610320516040526105d0610340611cf9565b610340f3611cf7565b63dffe059c81186105f857602436103417611ffd574261050052610638565b63a4520aee8118611cf757604436103417611ffd5733610b40526111c956611cf7565b63b676f7488118611cf757604436103417611ffd57602435610500525b6004358060041c611ffd576104e05260406104e05160405261050051606052610662610520611dc1565b610520f3611cf7565b6339b37ab0811861069957602436103417611ffd576004358060041c611ffd576105a052426105c05261087e565b6397160c5b8118611cf757604436103417611ffd576004358060041c611ffd5760405260115433181561072257600a6060527f4f6e6c79206f776e65720000000000000000000000000000000000000000000060805260605060605180608001601f825f031636823750506308c379a06020526020604052601f19601f6060510116604401603cfd5b60405160605260605160018103818111611ffd579050606051161561079d5760096080527f4261642045706f6368000000000000000000000000000000000000000000000060a0526080506080518060a001601f825f031636823750506308c379a06040526020606052601f19601f6080510116604401605cfd5b670de0b6b3a7640000602435111561080b57600b6080527f426164206d61785f66656500000000000000000000000000000000000000000060a0526080506080518060a001601f825f031636823750506308c379a06040526020606052601f19601f6080510116604401605cfd5b60243560405160088111611ffd57600401556040517f62c711266aa88195f0a4d039bff4072f30cd1171b5473007a6ed72225cf8f32960243560805260206080a200611cf7565b63939f5ea48118611cf757604436103417611ffd576004358060041c611ffd576105a0526024356105c0525b6105a0516108cd5760206105c05160405261089a6105e0611cf9565b6105e051610620526105c05161064052610620516104e05261064051610500526108c5610600611f44565b6106006108ee565b60206105a0516104e0526105c051610500526108ea6105e0611f44565b6105e05bf3611cf7565b630e67c6bc8118610c0757604436103417611ffd576004356004016040813511611ffd5780355f8160408111611ffd57801561097257905b606081026103400160608202602086010180358060a01c611ffd57825260208101358060a01c611ffd57602083015260408101356040830152505060010181811861092c575b5050806103205250505f54600214611ffd5760025f55600d543318156109f757600b611b40527f4f6e6c79204275726e6572000000000000000000000000000000000000000000611b6052611b4050611b405180611b6001601f825f031636823750506308c379a0611b00526020611b2052601f19601f611b40510116604401611b1cfd5b42604052610a06611b60611cf9565b611b6051611b40526006611b405116610a7e57600b611b60527f57726f6e672045706f6368000000000000000000000000000000000000000000611b8052611b6050611b605180611b8001601f825f031636823750506308c379a0611b20526020611b4052601f19601f611b60510116604401611b3cfd5b5f6103205160408111611ffd578015610bff57905b60608102610340018051611b60526020810151611b80526040810151611ba05250611b40516010611b60516020525f5260405f20541615610b3357600b611bc0527f4b696c6c656420636f696e000000000000000000000000000000000000000000611be052611bc050611bc05180611be001601f825f031636823750506308c379a0611b80526020611ba052601f19601f611bc0510116604401611b9cfd5b611ba051611bc052611bc05119610b8257611b60516370a08231611be05230611c00526020611be06024611bfc845afa610b6f573d5f5f3e3d5ffd5b60203d10611ffd57611be0905051611bc0525b611b605163a9059cbb611be052611b8051611c0052611bc051611c20526020611be06044611bfc5f855af1610bb9573d5f5f3e3d5ffd5b3d610bd057803b15611ffd576001611c4052610be9565b60203d10611ffd57611be0518060011c611ffd57611c40525b611c4090505115611ffd57600101818118610a93575b505060035f55005b63167f83f48118611cf7576063361115611ffd576024358060a01c611ffd57620411c0525b6004356004016020813511611ffd5780355f8160208111611ffd578015610cab57905b61206081026105c0018160051b602086010135602086010180358060081c611ffd5782526020810135602083015260408101358101612000813511611ffd57602081350160408401818382375050505050600101818118610c4f575b5050806105a0525050600254600214611ffd576002600255600842604052610cd5620411e0611cf9565b620411e0511815610d4e57600b62041200527f57726f6e672065706f6368000000000000000000000000000000000000000000620412205262041200506204120051806204122001601f825f031636823750506308c379a0620411c0526020620411e052601f19601f62041200510116604401620411dcfd5b600354620411e05260086010620411e0516020525f5260405f205460105f6020525f5260405f2054171615610deb57600662041200527f4b696c6c65640000000000000000000000000000000000000000000000000000620412205262041200506204120051806204122001601f825f031636823750506308c379a0620411c0526020620411e052601f19601f62041200510116604401620411dcfd5b600d54632eb078cd620412005260206204120060046204121c5f855af1610e14573d5f5f3e3d5ffd5b60203d10611ffd57620412005050620411e0516370a08231620412205230620412405260206204122060246204123c845afa610e52573d5f5f3e3d5ffd5b60203d10611ffd57620412209050516204120052600e54620412205262041220516369e15fcb620412605260206204126060046204127c845afa610e98573d5f5f3e3d5ffd5b60203d10611ffd5762041260905051620412405262041200516204124051620412005180828118828410021890509050808203828111611ffd5790509050620412005260086104e0524261050052610ef262041280611f44565b62041280516204120051808202811583838304141715611ffd5790509050670de0b6b3a7640000810490506204126052620411e05163a9059cbb6204128052620411c051620412a0526204126051620412c05260206204128060446204129c5f855af1610f61573d5f5f3e3d5ffd5b60203d10611ffd5762041280518060011c611ffd57620412e052620412e05050620411e05163a9059cbb62041280526204122051620412a05262041200516204126051808203828111611ffd5790509050620412c05260206204128060446204129c5f855af1610fd3573d5f5f3e3d5ffd5b60203d10611ffd5762041280518060011c611ffd57620412e052620412e0505042635f62a7008103818111611ffd57905062093a8081049050600f54101561107857620411e05163095ea7b362041280526204122051620412a0526204124051620412c052803b15611ffd575f6204128060446204129c5f855af161105a573d5f5f3e3d5ffd5b5042635f62a7008103818111611ffd57905062093a8081049050600f555b62041260516204122051638c88eb866204128052604080620412a05280620412a0015f6105a0518083528060051b5f8260208111611ffd57801561113857905b828160051b60208801015261206081026105c001836020880101606082518252602083015160208301528060408301526040830181830160208251018082828560045afa50508051806020830101601f825f03163682375050601f19601f82516020010116905090508101905090509050830192506001018181186110b8575b50508201602001915050905081019050620411c051620412c05250602062041280620414646204129c34855af1611171573d5f5f3e3d5ffd5b60203d10611ffd5762041280905051808201828110611ffd579050905062041260526020620412606003600255f3611cf7565b6342b1689d8118611cf757606436103417611ffd576024358060a01c611ffd57610b40525b6004356004016040813511611ffd5780355f8160408111611ffd57801561121257905b8060051b6020850101358060a01c611ffd578160051b61034001526001018181186111ec575b505080610320525050600154600214611ffd57600260015560024260405261123b610b60611cf9565b610b605118156112aa57600b610b80527f57726f6e672065706f6368000000000000000000000000000000000000000000610ba052610b8050610b805180610ba001601f825f031636823750506308c379a0610b40526020610b6052601f19601f610b80510116604401610b5cfd5b600260105f6020525f5260405f2054161561132457600c610b60527f4b696c6c65642065706f63680000000000000000000000000000000000000000610b8052610b6050610b605180610b8001601f825f031636823750506308c379a0610b20526020610b4052601f19601f610b60510116604401610b3cfd5b5f6103205160408111611ffd57801561148757905b80610b605260026010610b605161032051811015611ffd5760051b61034001516020525f5260405f205416156113ce57600b610b80527f4b696c6c656420636f696e000000000000000000000000000000000000000000610ba052610b8050610b805180610ba001601f825f031636823750506308c379a0610b40526020610b6052601f19601f610b80510116604401610b5cfd5b610b60511561147c57610b605160018103818111611ffd57905061032051811015611ffd5760051b6103400151610b605161032051811015611ffd5760051b61034001511361147c576010610b80527f436f696e73206e6f7420736f7274656400000000000000000000000000000000610ba052610b8050610b805180610ba001601f825f031636823750506308c379a0610b40526020610b6052601f19601f610b80510116604401610b5cfd5b600101818118611339575b5050600d546372a436a8610b6052604080610b805280610b80015f610320518083528060051b5f8260408111611ffd5780156114dd57905b8060051b61034001518160051b6020880101526001018181186114bf575b50508201602001915050905081019050610b4051610ba05250803b15611ffd575f610b60610864610b7c5f855af1611517573d5f5f3e3d5ffd5b50600360015500611cf7565b63dc7168e98118611cf757604436103417611ffd576004356004016040813511611ffd5780355f8160408111611ffd57801561158157905b8060051b6020850101358060a01c611ffd578160051b610340015260010181811861155b575b50508061032052505060044260405261159b610b40611cf9565b610b4051146115ab5760016115be565b600460105f6020525f5260405f20541615155b156115d2575f610b60526020610b60611636565b5f6103205160408111611ffd57801561162857905b8060051b6103400151610b405260046010610b40516020525f5260405f2054161561161d5750505f610b60526020610b60611636565b6001018181186115e7575b50506001610b40526020610b405bf3611cf7565b634e1602df8118611cf757606436103417611ffd576004356004016040813511611ffd5780355f8160408111611ffd5780156116a757905b8060061b6060018160061b602086010180358060a01c611ffd578252602081013560208301525050600101818118611674575b50508060405250506024358060a01c611ffd57611060523360115481186116cf5760016116d6565b6012548118155b905061174157600a6110a0527f4f6e6c79206f776e6572000000000000000000000000000000000000000000006110c0526110a0506110a051806110c001601f825f031636823750506308c379a061106052602061108052601f19601f6110a051011660440161107cfd5b5f60405160408111611ffd57801561187d57905b8060061b60600180516110805260208101516110a052506110a0516110c05273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee61108051186117d6576110c051196117a157476110c0525b611060516110c0515a5f6110e0526110e0505f5f6110e051611100858786f1905090509050611872573d5f5f3e3d5ffd611872565b6110c0511961181d57611080516370a082316110e052306111005260206110e060246110fc845afa61180a573d5f5f3e3d5ffd5b60203d10611ffd576110e09050516110c0525b6110805163a9059cbb6110e05261106051611100526110c0516111205260206110e060446110fc5f855af1611854573d5f5f3e3d5ffd5b60203d10611ffd576110e0518060011c611ffd576111405261114050505b600101818118611755575b505000611cf7565b63a35eba8d8118611cf757602436103417611ffd576004358060a01c611ffd5760405260115433181561190e57600a6060527f4f6e6c79206f776e65720000000000000000000000000000000000000000000060805260605060605180608001601f825f031636823750506308c379a06020526020604052601f19601f6060510116604401603cfd5b6040516301ffc9a76060527fe569b44d00000000000000000000000000000000000000000000000000000000608052602060606024607c845afa611954573d5f5f3e3d5ffd5b60203d10611ffd576060518060011c611ffd5760a05260a090505115611ffd57600e54156119b15760035463095ea7b3606052600e546080525f60a052803b15611ffd575f60606044607c5f855af16119af573d5f5f3e3d5ffd5b505b604051600e556040517f557aa1ccd69dcfb5220a0ee57e91034c3e2ae382692ffe000c16b2865fcca9695f6060a200611cf7565b633f4822d68118611cf757604436103417611ffd576004356004016040813511611ffd5780355f8160408111611ffd578015611a5857905b8060061b6060018160061b602086010180358060a01c611ffd57825260208101358060041c611ffd5760208301525050600101818118611a1d575b5050806040525050336011548118611a71576001611a78565b6012548118155b9050611ae357600a611080527f4f6e6c79206f776e6572000000000000000000000000000000000000000000006110a0526110805061108051806110a001601f825f031636823750506308c379a061104052602061106052601f19601f61108051011660440161105cfd5b5f60405160408111611ffd578015611b6057905b8060061b60600180516110605260208101516110805250611080516010611060516020525f5260405f2055611060517fbe9ca79c5858b597d131478211339014c63cf8066fc364a3a616e5635de82e6a611080516110a05260206110a0a2600101818118611af7575b505000611cf7565b637cb97b2b8118611cf757602436103417611ffd576004358060a01c611ffd57604052601154331815611bf157600a6060527f4f6e6c79206f776e65720000000000000000000000000000000000000000000060805260605060605180608001601f825f031636823750506308c379a06020526020604052601f19601f6060510116604401603cfd5b60405115611ffd576040516011556040517f167d3e9c1016ab80e58802ca9da10ce5c6a0f4debc46a2e7a2cd9e56899a4fb55f6060a200611cf7565b637e1b1e4b8118611cf757602436103417611ffd576004358060a01c611ffd57604052601154331815611cb657600a6060527f4f6e6c79206f776e65720000000000000000000000000000000000000000000060805260605060605180608001601f825f031636823750506308c379a06020526020604052601f19601f6060510116604401603cfd5b60405115611ffd576040516012556040517f8d244bde4451f1c7643d677f668fcf551617d4046657105728f1e0c6d1f41abd5f6060a200611cf756611cf7565b5b005b604051635f62a7008103818111611ffd57905062093a80810690506040526001608052600260a052600460c052600860e0525f6004905b8060051b608001516060526040366101003762054600610140525f6101605262069780610180526060366101a0376207e9006102005260e0366102203762093a80610300526101006060518060011b818160011c18611ffd57905060108111611ffd5760051b81019050516040511015611db1576060518352505050611dbf565b600101818118611d30575050fe5b565b60405160805260805160018103818111611ffd5790506080511615611e3c57600960a0527f4261642045706f6368000000000000000000000000000000000000000000000060c05260a05060a0518060c001601f825f031636823750506308c379a06060526020608052601f19601f60a0510116604401607cfd5b606051606051635f62a7008103818111611ffd57905062093a8081069050808203828111611ffd579050905060605260605160403660a0376205460060e0525f610100526206978061012052606036610140376207e9006101a05260e0366101c03762093a806102a05260a060405160108111611ffd5760051b8101905051808201828110611ffd579050905081526060516040366102c03762054600610300525f610320526206978061034052606036610360376207e9006103c05260e0366103e03762093a806104c0526102c06040518060011b818160011c18611ffd57905060108111611ffd5760051b8101905051808201828110611ffd5790509050602082015250565b604036610520376104e05160405261050051606052611f64610560611dc1565b61056080516105205260208101516105405250610540516105005110611f8d575f815250611ffb565b6104e05160088111611ffd57600401546105005160018101818110611ffd57905061052051808203828111611ffd5790509050808202811583838304141715611ffd57905090506105405161052051808203828111611ffd57905090508015611ffd57808204905090508152505b565b5f80fd08520038001803231cf608f411a4008819e501e3049c1cf61cf6152318851cf6061b05d904621b681cf6066b163c1cf61c2d1cf60222000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2

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

000000000000000000000000f939e0a03fb07f59a73314e73794be0e57ac1b4e000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000071f718d3e4d1449d1502a6a7595eb84ebccb1683000000000000000000000000467947ee34af926cf1dcac093870f613c96b1e0c

-----Decoded View---------------
Arg [0] : _target_coin (address): 0xf939E0A03FB07F59A73314E73794Be0E57ac1b4E
Arg [1] : _weth (address): 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
Arg [2] : _owner (address): 0x71F718D3e4d1449D1502A6A7595eb84eBcCB1683
Arg [3] : _emergency_owner (address): 0x467947EE34aF926cF1DCac093870f613C96B1E0c

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 000000000000000000000000f939e0a03fb07f59a73314e73794be0e57ac1b4e
Arg [1] : 000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
Arg [2] : 00000000000000000000000071f718d3e4d1449d1502a6a7595eb84ebccb1683
Arg [3] : 000000000000000000000000467947ee34af926cf1dcac093870f613c96b1e0c


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
Chain Token Portfolio % Price Amount Value
ETH76.83%$0.99544793,456.6412$93,031.13
ETH6.95%$18,402.125$8,418.93
ETH3.86%$0.9996184,673.1759$4,671.39
ETH2.59%$0.9994083,134.7082$3,132.85
ETH1.51%$4,071.410.4503$1,833.33
ETH1.31%$3,468.010.4563$1,582.49
ETH0.90%$0.9997581,096.1234$1,095.86
ETH0.88%$0.9990461,071.6073$1,070.59
ETH0.65%$1.12700.6157$784.69
ETH0.61%$0.996032743.5949$740.64
ETH0.60%$0.998881727.5045$726.69
ETH0.44%$1.12470.8999$527.41
ETH0.33%$98,4510.00410954$404.59
ETH0.27%$0.991405328.0291$325.21
ETH0.24%$1292.9455$293.24
ETH0.23%$98,5190.00279036$274.9
ETH0.21%$0.995912253.4501$252.41
ETH0.19%$3,545.670.0658$233.44
ETH0.18%$0.99933221.1945$221.05
ETH0.17%$3,446.30.0591$203.69
ETH0.14%$3,946.550.042$165.73
ETH0.10%$3,816.310.031$118.22
ETH0.09%$0.987037104.7928$103.43
ETH0.07%$0.0640161,387.9019$88.85
ETH0.06%$3,505.890.0205$71.87
ETH0.06%$3,495.940.0195$68.25
ETH0.06%$0.99401867.9303$67.52
ETH0.05%$3,518.680.0187$65.71
ETH0.05%$3,448.660.019$65.4
ETH0.05%$97,8510.00065281$63.88
ETH0.04%$3,621.370.0139$50.31
ETH0.04%$0.99638646.7201$46.55
ETH0.04%$3,385.230.0127$42.94
ETH0.03%$2,585.530.0127$32.72
ETH0.03%$539.790.0572$30.85
ETH0.02%$98,8530.00030123$29.78
ETH0.02%$125.5872$25.61
ETH0.02%$1.0920.7274$22.51
ETH0.02%$0.052289375.1387$19.62
ETH0.01%$1.0116.6161$16.75
ETH<0.01%$0.99783811.4818$11.46
ETH<0.01%$1.0210.9381$11.18
ETH<0.01%$72,4110.00013473$9.76
ETH<0.01%$3,143.640.00279136$8.78
ETH<0.01%$98,7600.00007024$6.94
ETH<0.01%$3,405.050.00163791$5.58
ETH<0.01%$3.21.7374$5.56
ETH<0.01%$3,562.430.00148628$5.29
ETH<0.01%$1.074.7506$5.1
ETH<0.01%$1.170.8901$1.04
ETH<0.01%$0.9981030.765$0.7635
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.