ETH Price: $1,865.86 (-4.82%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Withdraw_profit204058892024-07-28 15:17:23579 days ago1722179843IN
0xE7cd2b4E...1Ac7DC5C8
0 ETH0.00025623.04781894
Withdraw_profit198250842024-05-08 11:36:23661 days ago1715168183IN
0xE7cd2b4E...1Ac7DC5C8
0 ETH0.00882028104.9271881
Withdraw_profit197748882024-05-01 11:09:47668 days ago1714561787IN
0xE7cd2b4E...1Ac7DC5C8
0 ETH0.00724499109.70780492
Withdraw_profit196709422024-04-16 22:13:11682 days ago1713305591IN
0xE7cd2b4E...1Ac7DC5C8
0 ETH0.0006517110.79366634
Withdraw_profit196193072024-04-09 16:34:59689 days ago1712680499IN
0xE7cd2b4E...1Ac7DC5C8
0 ETH0.0025227441.153442
Withdraw_profit195733732024-04-03 6:10:11696 days ago1712124611IN
0xE7cd2b4E...1Ac7DC5C8
0 ETH0.0012216619.9289158
Withdraw_profit195250242024-03-27 10:18:47703 days ago1711534727IN
0xE7cd2b4E...1Ac7DC5C8
0 ETH0.0014405523.49967084
Withdraw_profit194758022024-03-20 12:06:47710 days ago1710936407IN
0xE7cd2b4E...1Ac7DC5C8
0 ETH0.0019006531.47870881
Withdraw_profit194260712024-03-13 12:11:59716 days ago1710331919IN
0xE7cd2b4E...1Ac7DC5C8
0 ETH0.0039101463.785936
Withdraw_profit194182282024-03-12 9:53:23718 days ago1710237203IN
0xE7cd2b4E...1Ac7DC5C8
0 ETH0.0029883548.74895693
Withdraw_profit193731162024-03-06 2:21:59724 days ago1709691719IN
0xE7cd2b4E...1Ac7DC5C8
0 ETH0.0036034258.78241132
Withdraw_profit193474802024-03-02 12:28:11727 days ago1709382491IN
0xE7cd2b4E...1Ac7DC5C8
0 ETH0.0023710738.67924398
Withdraw_profit193254562024-02-28 10:32:23731 days ago1709116343IN
0xE7cd2b4E...1Ac7DC5C8
0 ETH0.0032662353.28196796
Withdraw_profit192758662024-02-21 11:54:35738 days ago1708516475IN
0xE7cd2b4E...1Ac7DC5C8
0 ETH0.0025288637.76619898
Withdraw_profit191723702024-02-06 23:10:47752 days ago1707261047IN
0xE7cd2b4E...1Ac7DC5C8
0 ETH0.0020759724.96989958
Withdraw_profit191267152024-01-31 13:19:11758 days ago1706707151IN
0xE7cd2b4E...1Ac7DC5C8
0 ETH0.0025905331.15907227
Withdraw_profit190761662024-01-24 11:21:59766 days ago1706095319IN
0xE7cd2b4E...1Ac7DC5C8
0 ETH0.0010393912.50187688
Update190724122024-01-23 22:43:35766 days ago1706049815IN
0xE7cd2b4E...1Ac7DC5C8
0 ETH0.0032636811.13810103
Update190625592024-01-22 13:26:23767 days ago1705929983IN
0xE7cd2b4E...1Ac7DC5C8
0 ETH0.0060285920.61623171
Update190621542024-01-22 12:02:59768 days ago1705924979IN
0xE7cd2b4E...1Ac7DC5C8
0 ETH0.0041082714.04923613
Withdraw_profit190266832024-01-17 12:43:11772 days ago1705495391IN
0xE7cd2b4E...1Ac7DC5C8
0 ETH0.0020893634.60421527
Withdraw_profit189731342024-01-10 0:59:47780 days ago1704848387IN
0xE7cd2b4E...1Ac7DC5C8
0 ETH0.0011839219.31327156
Withdraw_profit189287922024-01-03 19:05:11786 days ago1704308711IN
0xE7cd2b4E...1Ac7DC5C8
0 ETH0.0041644168.97126633
Withdraw_profit189272982024-01-03 14:02:47786 days ago1704290567IN
0xE7cd2b4E...1Ac7DC5C8
0 ETH0.0036474660.40957466
Withdraw_profit188784662023-12-27 17:25:23793 days ago1703697923IN
0xE7cd2b4E...1Ac7DC5C8
0 ETH0.0034128840.60010253
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Peg Keeper

Compiler Version
vyper:0.3.7

Optimization Enabled:
N/A

Other Settings:
paris EvmVersion, None license

Contract Source Code (Vyper language format)

# @version 0.3.7
"""
@title Peg Keeper
@license MIT
@author Curve.Fi
@notice Peg Keeper for pool with equal decimals of coins
"""

interface StableAggregator:
    def price() -> uint256: view

interface CurvePool:
    def balances(i_coin: uint256) -> uint256: view
    def coins(i: uint256) -> address: view
    def calc_token_amount(_amounts: uint256[2], _is_deposit: bool) -> uint256: view
    def add_liquidity(_amounts: uint256[2], _min_mint_amount: uint256) -> uint256: nonpayable
    def remove_liquidity_imbalance(_amounts: uint256[2], _max_burn_amount: uint256) -> uint256: nonpayable
    def get_virtual_price() -> uint256: view
    def balanceOf(arg0: address) -> uint256: view
    def transfer(_to : address, _value : uint256) -> bool: nonpayable
    def get_p() -> uint256: view

interface ERC20:
    def approve(_spender: address, _amount: uint256): nonpayable
    def decimals() -> uint256: view


event Provide:
    amount: uint256

event Withdraw:
    amount: uint256

event Profit:
    lp_amount: uint256

event CommitNewReceiver:
    receiver: address

event ApplyNewReceiver:
    receiver: address

event CommitNewAdmin:
    admin: address

event ApplyNewAdmin:
    admin: address

event SetNewCallerShare:
    caller_share: uint256


# Time between providing/withdrawing coins
ACTION_DELAY: constant(uint256) = 15 * 60
ADMIN_ACTIONS_DELAY: constant(uint256) = 3 * 86400

PRECISION: constant(uint256) = 10 ** 18
# Calculation error for profit
PROFIT_THRESHOLD: constant(uint256) = 10 ** 18

POOL: immutable(CurvePool)
I: immutable(uint256)  # index of pegged in pool
PEGGED: immutable(address)
IS_INVERSE: immutable(bool)
PEG_MUL: immutable(uint256)

AGGREGATOR: immutable(StableAggregator)

last_change: public(uint256)
debt: public(uint256)

SHARE_PRECISION: constant(uint256) = 10 ** 5
caller_share: public(uint256)

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

# Receiver of profit
receiver: public(address)
future_receiver: public(address)

new_admin_deadline: public(uint256)
new_receiver_deadline: public(uint256)

FACTORY: immutable(address)


@external
def __init__(_pool: CurvePool, _index: uint256, _receiver: address, _caller_share: uint256, _factory: address, _aggregator: StableAggregator, _admin: address):
    """
    @notice Contract constructor
    @param _pool Contract pool address
    @param _index Index of the pegged
    @param _receiver Receiver of the profit
    @param _caller_share Caller's share of profit
    @param _factory Factory which should be able to take coins away
    @param _aggregator Price aggregator which shows the price of pegged in real "dollars"
    @param _admin Admin account
    """
    assert _index < 2
    POOL = _pool
    I = _index
    pegged: address = _pool.coins(_index)
    PEGGED = pegged
    ERC20(pegged).approve(_pool.address, max_value(uint256))
    ERC20(pegged).approve(_factory, max_value(uint256))

    PEG_MUL = 10 ** (18 - ERC20(_pool.coins(1 - _index)).decimals())

    self.admin = _admin
    assert _receiver != empty(address)
    self.receiver = _receiver
    log ApplyNewAdmin(msg.sender)
    log ApplyNewReceiver(_receiver)

    assert _caller_share <= SHARE_PRECISION  # dev: bad part value
    self.caller_share = _caller_share
    log SetNewCallerShare(_caller_share)

    FACTORY = _factory
    AGGREGATOR = _aggregator
    IS_INVERSE = (_index == 0)


@pure
@external
def factory() -> address:
    return FACTORY


@pure
@external
def pegged() -> address:
    return PEGGED


@pure
@external
def pool() -> CurvePool:
    return POOL


@pure
@external
def aggregator() -> StableAggregator:
    return AGGREGATOR


@internal
def _provide(_amount: uint256):
    # We already have all reserves here
    # ERC20(PEGGED).mint(self, _amount)
    if _amount == 0:
        return

    amounts: uint256[2] = empty(uint256[2])
    amounts[I] = _amount
    POOL.add_liquidity(amounts, 0)

    self.last_change = block.timestamp
    self.debt += _amount
    log Provide(_amount)


@internal
def _withdraw(_amount: uint256):
    if _amount == 0:
        return

    debt: uint256 = self.debt
    amount: uint256 = min(_amount, debt)

    amounts: uint256[2] = empty(uint256[2])
    amounts[I] = amount
    POOL.remove_liquidity_imbalance(amounts, max_value(uint256))

    self.last_change = block.timestamp
    self.debt -= amount

    log Withdraw(amount)


@internal
@view
def _calc_profit() -> uint256:
    lp_balance: uint256 = POOL.balanceOf(self)

    virtual_price: uint256 = POOL.get_virtual_price()
    lp_debt: uint256 = self.debt * PRECISION / virtual_price + PROFIT_THRESHOLD

    if lp_balance <= lp_debt:
        return 0
    else:
        return lp_balance - lp_debt


@internal
@view
def _calc_future_profit(_amount: uint256, _is_deposit: bool) -> uint256:
    lp_balance: uint256 = POOL.balanceOf(self)
    debt: uint256 = self.debt
    amount: uint256 = _amount
    if not _is_deposit:
        amount = min(_amount, debt)

    amounts: uint256[2] = empty(uint256[2])
    amounts[I] = amount
    lp_balance_diff: uint256 = POOL.calc_token_amount(amounts, _is_deposit)

    if _is_deposit:
        lp_balance += lp_balance_diff
        debt += amount
    else:
        lp_balance -= lp_balance_diff
        debt -= amount

    virtual_price: uint256 = POOL.get_virtual_price()
    lp_debt: uint256 = debt * PRECISION / virtual_price + PROFIT_THRESHOLD

    if lp_balance <= lp_debt:
        return 0
    else:
        return lp_balance - lp_debt


@external
@view
def calc_profit() -> uint256:
    """
    @notice Calculate generated profit in LP tokens
    @return Amount of generated profit
    """
    return self._calc_profit()


@external
@view
def estimate_caller_profit() -> uint256:
    """
    @notice Estimate profit from calling update()
    @dev This method is not precise, real profit is always more because of increasing virtual price
    @return Expected amount of profit going to beneficiary
    """
    if self.last_change + ACTION_DELAY > block.timestamp:
        return 0

    balance_pegged: uint256 = POOL.balances(I)
    balance_peg: uint256 = POOL.balances(1 - I) * PEG_MUL

    initial_profit: uint256 = self._calc_profit()

    p_agg: uint256 = AGGREGATOR.price()  # Current USD per stablecoin

    # Checking the balance will ensure no-loss of the stabilizer, but to ensure stabilization
    # we need to exclude "bad" p_agg, so we add an extra check for it

    new_profit: uint256 = 0
    if balance_peg > balance_pegged:
        if p_agg < 10**18:
            return 0
        new_profit = self._calc_future_profit((balance_peg - balance_pegged) / 5, True)  # this dumps stablecoin

    else:
        if p_agg > 10**18:
            return 0
        new_profit = self._calc_future_profit((balance_pegged - balance_peg) / 5, False)  # this pumps stablecoin

    if new_profit < initial_profit:
        return 0
    lp_amount: uint256 = new_profit - initial_profit

    return lp_amount * self.caller_share / SHARE_PRECISION


@external
@nonpayable
def update(_beneficiary: address = msg.sender) -> uint256:
    """
    @notice Provide or withdraw coins from the pool to stabilize it
    @param _beneficiary Beneficiary address
    @return Amount of profit received by beneficiary
    """
    if self.last_change + ACTION_DELAY > block.timestamp:
        return 0

    balance_pegged: uint256 = POOL.balances(I)
    balance_peg: uint256 = POOL.balances(1 - I) * PEG_MUL

    initial_profit: uint256 = self._calc_profit()

    p_agg: uint256 = AGGREGATOR.price()  # Current USD per stablecoin

    # Checking the balance will ensure no-loss of the stabilizer, but to ensure stabilization
    # we need to exclude "bad" p_agg, so we add an extra check for it

    if balance_peg > balance_pegged:
        assert p_agg >= 10**18
        self._provide((balance_peg - balance_pegged) / 5)  # this dumps stablecoin

    else:
        assert p_agg <= 10**18
        self._withdraw((balance_pegged - balance_peg) / 5)  # this pumps stablecoin

    # Send generated profit
    new_profit: uint256 = self._calc_profit()
    assert new_profit >= initial_profit, "peg unprofitable"
    lp_amount: uint256 = new_profit - initial_profit
    caller_profit: uint256 = lp_amount * self.caller_share / SHARE_PRECISION
    if caller_profit > 0:
        POOL.transfer(_beneficiary, caller_profit)

    return caller_profit


@external
@nonpayable
def set_new_caller_share(_new_caller_share: uint256):
    """
    @notice Set new update caller's part
    @param _new_caller_share Part with SHARE_PRECISION
    """
    assert msg.sender == self.admin  # dev: only admin
    assert _new_caller_share <= SHARE_PRECISION  # dev: bad part value

    self.caller_share = _new_caller_share

    log SetNewCallerShare(_new_caller_share)


@external
@nonpayable
def withdraw_profit() -> uint256:
    """
    @notice Withdraw profit generated by Peg Keeper
    @return Amount of LP Token received
    """
    lp_amount: uint256 = self._calc_profit()
    POOL.transfer(self.receiver, lp_amount)

    log Profit(lp_amount)

    return lp_amount


@external
@nonpayable
def commit_new_admin(_new_admin: address):
    """
    @notice Commit new admin of the Peg Keeper
    @param _new_admin Address of the new admin
    """
    assert msg.sender == self.admin  # dev: only admin
    assert self.new_admin_deadline == 0 # dev: active action

    deadline: uint256 = block.timestamp + ADMIN_ACTIONS_DELAY
    self.new_admin_deadline = deadline
    self.future_admin = _new_admin

    log CommitNewAdmin(_new_admin)


@external
@nonpayable
def apply_new_admin():
    """
    @notice Apply new admin of the Peg Keeper
    @dev Should be executed from new admin
    """
    new_admin: address = self.future_admin
    assert msg.sender == new_admin  # dev: only new admin
    assert block.timestamp >= self.new_admin_deadline  # dev: insufficient time
    assert self.new_admin_deadline != 0  # dev: no active action

    self.admin = new_admin
    self.new_admin_deadline = 0

    log ApplyNewAdmin(new_admin)


@external
@nonpayable
def commit_new_receiver(_new_receiver: address):
    """
    @notice Commit new receiver of profit
    @param _new_receiver Address of the new receiver
    """
    assert msg.sender == self.admin  # dev: only admin
    assert self.new_receiver_deadline == 0 # dev: active action

    deadline: uint256 = block.timestamp + ADMIN_ACTIONS_DELAY
    self.new_receiver_deadline = deadline
    self.future_receiver = _new_receiver

    log CommitNewReceiver(_new_receiver)


@external
@nonpayable
def apply_new_receiver():
    """
    @notice Apply new receiver of profit
    """
    assert block.timestamp >= self.new_receiver_deadline  # dev: insufficient time
    assert self.new_receiver_deadline != 0  # dev: no active action

    new_receiver: address = self.future_receiver
    self.receiver = new_receiver
    self.new_receiver_deadline = 0

    log ApplyNewReceiver(new_receiver)


@external
@nonpayable
def revert_new_options():
    """
    @notice Revert new admin of the Peg Keeper or new receiver
    @dev Should be executed from admin
    """
    assert msg.sender == self.admin  # dev: only admin

    self.new_admin_deadline = 0
    self.new_receiver_deadline = 0

    log ApplyNewAdmin(self.admin)
    log ApplyNewReceiver(self.receiver)

Contract Security Audit

Contract ABI

API
[{"name":"Provide","inputs":[{"name":"amount","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"Withdraw","inputs":[{"name":"amount","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"Profit","inputs":[{"name":"lp_amount","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"CommitNewReceiver","inputs":[{"name":"receiver","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"name":"ApplyNewReceiver","inputs":[{"name":"receiver","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"name":"CommitNewAdmin","inputs":[{"name":"admin","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"name":"ApplyNewAdmin","inputs":[{"name":"admin","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"name":"SetNewCallerShare","inputs":[{"name":"caller_share","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"stateMutability":"nonpayable","type":"constructor","inputs":[{"name":"_pool","type":"address"},{"name":"_index","type":"uint256"},{"name":"_receiver","type":"address"},{"name":"_caller_share","type":"uint256"},{"name":"_factory","type":"address"},{"name":"_aggregator","type":"address"},{"name":"_admin","type":"address"}],"outputs":[]},{"stateMutability":"pure","type":"function","name":"factory","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"pure","type":"function","name":"pegged","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"pure","type":"function","name":"pool","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"pure","type":"function","name":"aggregator","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"calc_profit","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"estimate_caller_profit","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"nonpayable","type":"function","name":"update","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"nonpayable","type":"function","name":"update","inputs":[{"name":"_beneficiary","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"nonpayable","type":"function","name":"set_new_caller_share","inputs":[{"name":"_new_caller_share","type":"uint256"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"withdraw_profit","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"nonpayable","type":"function","name":"commit_new_admin","inputs":[{"name":"_new_admin","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"apply_new_admin","inputs":[],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"commit_new_receiver","inputs":[{"name":"_new_receiver","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"apply_new_receiver","inputs":[],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"revert_new_options","inputs":[],"outputs":[]},{"stateMutability":"view","type":"function","name":"last_change","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"debt","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"caller_share","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"admin","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"future_admin","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"receiver","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"future_receiver","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"new_admin_deadline","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"new_receiver_deadline","inputs":[],"outputs":[{"name":"","type":"uint256"}]}]

60206113726000396000518060a01c61136d5760405260206113b26000396000518060a01c61136d5760605260206113f26000396000518060a01c61136d5760805260206114126000396000518060a01c61136d5760a05260206114326000396000518060a01c61136d5760c0523461136d57600160206113926000396000511161136d5760405161100b52602061139260003960005161102b5260405163c6610657610100526020611392600039600051610120526020610100602461011c845afa6100d1573d600060003e3d6000fd5b60203d1061136d57610100518060a01c61136d576101405261014090505160e05260e05161104b5260e05163095ea7b361010052604051610120527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61014052803b1561136d576000610100604461011c6000855af1610156573d600060003e3d6000fd5b5060e05163095ea7b361010052608051610120527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61014052803b1561136d576000610100604461011c6000855af16101b4573d600060003e3d6000fd5b5060405163c6610657610100526020611392600039600051806001036001811161136d579050610120526020610100602461011c845afa6101fa573d600060003e3d6000fd5b60203d1061136d57610100518060a01c61136d576101405261014090505163313ce567610160526020610160600461017c845afa61023d573d600060003e3d6000fd5b60203d1061136d57610160905051806012036012811161136d579050604d811161136d5780600a0a905061108b5260c0516003556060511561136d576060516005557fc0a6e80c08b9d10c650a9f3e8ff16d7ee0f62bbd5c8ac3b5eba62dae04ec995a33610100526020610100a17fd9338c71e91ed720d2bd77976c87a0cd6f01ee443a6410481ffdebb9f442db67606051610100526020610100a1620186a060206113d26000396000511161136d5760206113d26000396000516002557f43abfd568a12e5f6ea230e56ba11b83e29e9921019211df9cc2e216ba9f225dc60206113d2600039600051610100526020610100a16080516110cb5260a0516110ab5260206113926000396000511561106b5261100b610361610000396110eb610000f36003361161000c57610b1d565b60003560e01c34610ff95763c45a0155811861003e5760043610610ff95760206110cb60003960005160405260206040f35b630907861381186100655760043610610ff957602061104b60003960005160405260206040f35b6316f0115b811861008c5760043610610ff957602061100b60003960005160405260206040f35b63245a7bfc81186100b35760043610610ff95760206110ab60003960005160405260206040f35b63322f15d981186100d65760043610610ff95760206100d260c0610cec565b60c0f35b63d0d1849181186103675760043610610ff957426000546103848101818110610ff957905011156101115760006101c05260206101c0610365565b602061100b600039600051634903b0d16101e052602061102b6000396000516102005260206101e060246101fc845afa610150573d600060003e3d6000fd5b60203d10610ff9576101e09050516101c052602061100b600039600051634903b0d161020052602061102b6000396000518060010360018111610ff9579050610220526020610200602461021c845afa6101af573d600060003e3d6000fd5b60203d10610ff957610200905051602061108b600039600051808202811583838304141715610ff957905090506101e0526101eb610220610cec565b610220516102005260206110ab60003960005163a035b1fe610240526020610240600461025c845afa610223573d600060003e3d6000fd5b60203d10610ff957610240905051610220526000610240526101c0516101e051116102a657670de0b6b3a7640001610220511061026a576000610260526020610260610365565b6101c0516101e051808203828111610ff957905090506005810490506040526000606052610299610260610de6565b6102605161024052610300565b670de0b6b3a763ffff61022051116102c8576000610260526020610260610365565b6101e0516101c051808203828111610ff9579050905060058104905060405260016060526102f7610260610de6565b61026051610240525b6102005161024051101561031e576000610260526020610260610365565b6102405161020051808203828111610ff957905090506102605261026051600254808202811583838304141715610ff95790509050620186a0810490506102805260206102805bf35b63a2e6204581186103845760043610610ff95733610160526103a7565b631c1b877281186106af5760243610610ff9576004358060a01c610ff957610160525b426000546103848101818110610ff957905011156103cf5760006101805260206101806106ad565b602061100b600039600051634903b0d16101a052602061102b6000396000516101c05260206101a060246101bc845afa61040e573d600060003e3d6000fd5b60203d10610ff9576101a090505161018052602061100b600039600051634903b0d16101c052602061102b6000396000518060010360018111610ff95790506101e05260206101c060246101dc845afa61046d573d600060003e3d6000fd5b60203d10610ff9576101c0905051602061108b600039600051808202811583838304141715610ff957905090506101a0526104a96101e0610cec565b6101e0516101c05260206110ab60003960005163a035b1fe610200526020610200600461021c845afa6104e1573d600060003e3d6000fd5b60203d10610ff9576102009050516101e052610180516101a0511161053d57670de0b6b3a76400006101e05111610ff957610180516101a051808203828111610ff95790509050600581049050604052610576610be956610576565b670de0b6b3a76400006101e05110610ff9576101a05161018051808203828111610ff95790509050600581049050604052610576610b23565b610581610220610cec565b61022051610200526101c0516102005110156105fd576010610220527f70656720756e70726f66697461626c65000000000000000000000000000000006102405261022050610220518061024001601f826000031636823750506308c379a06101e052602061020052601f19601f6102205101166044016101fcfd5b610200516101c051808203828111610ff957905090506102205261022051600254808202811583838304141715610ff95790509050620186a0810490506102405261024051156106a757602061100b60003960005163a9059cbb610260526101605161028052610240516102a0526020610260604461027c6000855af1610689573d600060003e3d6000fd5b60203d10610ff957610260518060011c610ff9576102c0526102c050505b60206102405bf35b639f5ef86f811861070b5760243610610ff9576003543318610ff957620186a060043511610ff9576004356002557f43abfd568a12e5f6ea230e56ba11b83e29e9921019211df9cc2e216ba9f225dc60043560405260206040a1005b632c9f7f9281186107b95760043610610ff95761072860e0610cec565b60e05160c052602061100b60003960005163a9059cbb60e0526005546101005260c05161012052602060e0604460fc6000855af161076b573d600060003e3d6000fd5b60203d10610ff95760e0518060011c610ff9576101405261014050507f357d905f1831209797df4d55d79c5c5bf1d9f7311c976afd05e13d881eab9bc860c05160e052602060e0a1602060c0f35b63f636b05f81186108375760243610610ff9576004358060a01c610ff9576040526003543318610ff957600754610ff957426203f4808101818110610ff95790506060526060516007556040516004557f0305c49816a5a9a099d81e90d76421c9a4a529e0640cd15297b6fc8f1c9ac6ff60405160805260206080a1005b63c336fbd581186108a35760043610610ff9576004546040526040513318610ff9576007544210610ff95760075415610ff95760405160035560006007557fc0a6e80c08b9d10c650a9f3e8ff16d7ee0f62bbd5c8ac3b5eba62dae04ec995a60405160605260206060a1005b63561a414781186109215760243610610ff9576004358060a01c610ff9576040526003543318610ff957600854610ff957426203f4808101818110610ff95790506060526060516008556040516006557ff918f289f5185efe74d8bdf25364dbbc9c83a2bc438ede64b939cf6751ccf27c60405160805260206080a1005b63ceb667c581186109845760043610610ff9576008544210610ff95760085415610ff95760065460405260405160055560006008557fd9338c71e91ed720d2bd77976c87a0cd6f01ee443a6410481ffdebb9f442db6760405160605260206060a1005b637bfd8fad8118610a045760043610610ff9576003543318610ff957600060075560006008557fc0a6e80c08b9d10c650a9f3e8ff16d7ee0f62bbd5c8ac3b5eba62dae04ec995a60035460405260206040a17fd9338c71e91ed720d2bd77976c87a0cd6f01ee443a6410481ffdebb9f442db6760055460405260206040a1005b63394b146d8118610a235760043610610ff95760005460405260206040f35b630dca59c18118610a425760043610610ff95760015460405260206040f35b63df81cd3f8118610a615760043610610ff95760025460405260206040f35b63f851a4408118610a805760043610610ff95760035460405260206040f35b6317f7182a8118610a9f5760043610610ff95760045460405260206040f35b63f7260d3e8118610abe5760043610610ff95760055460405260206040f35b633bea9ddd8118610add5760043610610ff95760065460405260206040f35b63553b549c8118610afc5760043610610ff95760075460405260206040f35b63623960668118610b1b5760043610610ff95760085460405260206040f35b505b60006000fd5b604051610b2f57610be7565b604036606037604051602061102b60003960005160018111610ff95760051b60600152602061100b600039600051630b4c7e4d60a05260605160c05260805160e052600061010052602060a0606460bc6000855af1610b93573d600060003e3d6000fd5b60203d10610ff95760a0505042600055600154604051808201828110610ff957905090506001557f8d685bd3f45d861c759ed7a46ea3d30eb5cc6ce9fe06c526931f94c963bca7d260405160a052602060a0a15b565b604051610bf557610cea565b6001546060526040516060518082811882841002189050905060805260403660a037608051602061102b60003960005160018111610ff95760051b60a00152602061100b60003960005163e310327360e05260a0516101005260c051610120527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61014052602060e0606460fc6000855af1610c96573d600060003e3d6000fd5b60203d10610ff95760e0505042600055600154608051808203828111610ff957905090506001557f5b6b431d4476a211bb7d41c20d1aab9ae2321deee0d20be3d9fc9b1093fa6e3d60805160e052602060e0a15b565b602061100b6000396000516370a0823160605230608052602060606024607c845afa610d1d573d600060003e3d6000fd5b60203d10610ff9576060905051604052602061100b60003960005163bb7b8b80608052602060806004609c845afa610d5a573d600060003e3d6000fd5b60203d10610ff9576080905051606052600154670de0b6b3a7640000810281670de0b6b3a7640000820418610ff95790506060518015610ff95780820490509050670de0b6b3a76400008101818110610ff95790506080526080516040511115610dde57604051608051808203828111610ff95790509050815250610de456610de4565b60008152505b565b602061100b6000396000516370a0823160a0523060c052602060a0602460bc845afa610e17573d600060003e3d6000fd5b60203d10610ff95760a090505160805260015460a05260405160c052606051610e515760405160a0518082811882841002189050905060c0525b60403660e03760c051602061102b60003960005160018111610ff95760051b60e00152602061100b60003960005163ed8e84f36101405260e0516101605261010051610180526060516101a0526020610140606461015c845afa610eba573d600060003e3d6000fd5b60203d10610ff95761014090505161012052606051610f075760805161012051808203828111610ff9579050905060805260a05160c051808203828111610ff9579050905060a052610f37565b60805161012051808201828110610ff9579050905060805260a05160c051808201828110610ff9579050905060a0525b602061100b60003960005163bb7b8b80610160526020610160600461017c845afa610f67573d600060003e3d6000fd5b60203d10610ff9576101609050516101405260a051670de0b6b3a7640000810281670de0b6b3a7640000820418610ff9579050610140518015610ff95780820490509050670de0b6b3a76400008101818110610ff957905061016052610160516080511115610ff15760805161016051808203828111610ff95790509050815250610ff756610ff7565b60008152505b565b600080fda165767970657283000307000b005b600080fd000000000000000000000000390f3595bca2df7d23783dfd126427cceb997bf40000000000000000000000000000000000000000000000000000000000000001000000000000000000000000ecb456ea5365865ebab8a2661b0c503410e9b3470000000000000000000000000000000000000000000000000000000000004e20000000000000000000000000c9332fdcb1c491dcc683bae86fe3cb70360738bc000000000000000000000000e5afcf332a5457e8fafcd668bce3df953762dfe700000000000000000000000040907540d8a6c65c637785e8f8b742ae6b0b9968

Deployed Bytecode

0x6003361161000c57610b1d565b60003560e01c34610ff95763c45a0155811861003e5760043610610ff95760206110cb60003960005160405260206040f35b630907861381186100655760043610610ff957602061104b60003960005160405260206040f35b6316f0115b811861008c5760043610610ff957602061100b60003960005160405260206040f35b63245a7bfc81186100b35760043610610ff95760206110ab60003960005160405260206040f35b63322f15d981186100d65760043610610ff95760206100d260c0610cec565b60c0f35b63d0d1849181186103675760043610610ff957426000546103848101818110610ff957905011156101115760006101c05260206101c0610365565b602061100b600039600051634903b0d16101e052602061102b6000396000516102005260206101e060246101fc845afa610150573d600060003e3d6000fd5b60203d10610ff9576101e09050516101c052602061100b600039600051634903b0d161020052602061102b6000396000518060010360018111610ff9579050610220526020610200602461021c845afa6101af573d600060003e3d6000fd5b60203d10610ff957610200905051602061108b600039600051808202811583838304141715610ff957905090506101e0526101eb610220610cec565b610220516102005260206110ab60003960005163a035b1fe610240526020610240600461025c845afa610223573d600060003e3d6000fd5b60203d10610ff957610240905051610220526000610240526101c0516101e051116102a657670de0b6b3a7640001610220511061026a576000610260526020610260610365565b6101c0516101e051808203828111610ff957905090506005810490506040526000606052610299610260610de6565b6102605161024052610300565b670de0b6b3a763ffff61022051116102c8576000610260526020610260610365565b6101e0516101c051808203828111610ff9579050905060058104905060405260016060526102f7610260610de6565b61026051610240525b6102005161024051101561031e576000610260526020610260610365565b6102405161020051808203828111610ff957905090506102605261026051600254808202811583838304141715610ff95790509050620186a0810490506102805260206102805bf35b63a2e6204581186103845760043610610ff95733610160526103a7565b631c1b877281186106af5760243610610ff9576004358060a01c610ff957610160525b426000546103848101818110610ff957905011156103cf5760006101805260206101806106ad565b602061100b600039600051634903b0d16101a052602061102b6000396000516101c05260206101a060246101bc845afa61040e573d600060003e3d6000fd5b60203d10610ff9576101a090505161018052602061100b600039600051634903b0d16101c052602061102b6000396000518060010360018111610ff95790506101e05260206101c060246101dc845afa61046d573d600060003e3d6000fd5b60203d10610ff9576101c0905051602061108b600039600051808202811583838304141715610ff957905090506101a0526104a96101e0610cec565b6101e0516101c05260206110ab60003960005163a035b1fe610200526020610200600461021c845afa6104e1573d600060003e3d6000fd5b60203d10610ff9576102009050516101e052610180516101a0511161053d57670de0b6b3a76400006101e05111610ff957610180516101a051808203828111610ff95790509050600581049050604052610576610be956610576565b670de0b6b3a76400006101e05110610ff9576101a05161018051808203828111610ff95790509050600581049050604052610576610b23565b610581610220610cec565b61022051610200526101c0516102005110156105fd576010610220527f70656720756e70726f66697461626c65000000000000000000000000000000006102405261022050610220518061024001601f826000031636823750506308c379a06101e052602061020052601f19601f6102205101166044016101fcfd5b610200516101c051808203828111610ff957905090506102205261022051600254808202811583838304141715610ff95790509050620186a0810490506102405261024051156106a757602061100b60003960005163a9059cbb610260526101605161028052610240516102a0526020610260604461027c6000855af1610689573d600060003e3d6000fd5b60203d10610ff957610260518060011c610ff9576102c0526102c050505b60206102405bf35b639f5ef86f811861070b5760243610610ff9576003543318610ff957620186a060043511610ff9576004356002557f43abfd568a12e5f6ea230e56ba11b83e29e9921019211df9cc2e216ba9f225dc60043560405260206040a1005b632c9f7f9281186107b95760043610610ff95761072860e0610cec565b60e05160c052602061100b60003960005163a9059cbb60e0526005546101005260c05161012052602060e0604460fc6000855af161076b573d600060003e3d6000fd5b60203d10610ff95760e0518060011c610ff9576101405261014050507f357d905f1831209797df4d55d79c5c5bf1d9f7311c976afd05e13d881eab9bc860c05160e052602060e0a1602060c0f35b63f636b05f81186108375760243610610ff9576004358060a01c610ff9576040526003543318610ff957600754610ff957426203f4808101818110610ff95790506060526060516007556040516004557f0305c49816a5a9a099d81e90d76421c9a4a529e0640cd15297b6fc8f1c9ac6ff60405160805260206080a1005b63c336fbd581186108a35760043610610ff9576004546040526040513318610ff9576007544210610ff95760075415610ff95760405160035560006007557fc0a6e80c08b9d10c650a9f3e8ff16d7ee0f62bbd5c8ac3b5eba62dae04ec995a60405160605260206060a1005b63561a414781186109215760243610610ff9576004358060a01c610ff9576040526003543318610ff957600854610ff957426203f4808101818110610ff95790506060526060516008556040516006557ff918f289f5185efe74d8bdf25364dbbc9c83a2bc438ede64b939cf6751ccf27c60405160805260206080a1005b63ceb667c581186109845760043610610ff9576008544210610ff95760085415610ff95760065460405260405160055560006008557fd9338c71e91ed720d2bd77976c87a0cd6f01ee443a6410481ffdebb9f442db6760405160605260206060a1005b637bfd8fad8118610a045760043610610ff9576003543318610ff957600060075560006008557fc0a6e80c08b9d10c650a9f3e8ff16d7ee0f62bbd5c8ac3b5eba62dae04ec995a60035460405260206040a17fd9338c71e91ed720d2bd77976c87a0cd6f01ee443a6410481ffdebb9f442db6760055460405260206040a1005b63394b146d8118610a235760043610610ff95760005460405260206040f35b630dca59c18118610a425760043610610ff95760015460405260206040f35b63df81cd3f8118610a615760043610610ff95760025460405260206040f35b63f851a4408118610a805760043610610ff95760035460405260206040f35b6317f7182a8118610a9f5760043610610ff95760045460405260206040f35b63f7260d3e8118610abe5760043610610ff95760055460405260206040f35b633bea9ddd8118610add5760043610610ff95760065460405260206040f35b63553b549c8118610afc5760043610610ff95760075460405260206040f35b63623960668118610b1b5760043610610ff95760085460405260206040f35b505b60006000fd5b604051610b2f57610be7565b604036606037604051602061102b60003960005160018111610ff95760051b60600152602061100b600039600051630b4c7e4d60a05260605160c05260805160e052600061010052602060a0606460bc6000855af1610b93573d600060003e3d6000fd5b60203d10610ff95760a0505042600055600154604051808201828110610ff957905090506001557f8d685bd3f45d861c759ed7a46ea3d30eb5cc6ce9fe06c526931f94c963bca7d260405160a052602060a0a15b565b604051610bf557610cea565b6001546060526040516060518082811882841002189050905060805260403660a037608051602061102b60003960005160018111610ff95760051b60a00152602061100b60003960005163e310327360e05260a0516101005260c051610120527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61014052602060e0606460fc6000855af1610c96573d600060003e3d6000fd5b60203d10610ff95760e0505042600055600154608051808203828111610ff957905090506001557f5b6b431d4476a211bb7d41c20d1aab9ae2321deee0d20be3d9fc9b1093fa6e3d60805160e052602060e0a15b565b602061100b6000396000516370a0823160605230608052602060606024607c845afa610d1d573d600060003e3d6000fd5b60203d10610ff9576060905051604052602061100b60003960005163bb7b8b80608052602060806004609c845afa610d5a573d600060003e3d6000fd5b60203d10610ff9576080905051606052600154670de0b6b3a7640000810281670de0b6b3a7640000820418610ff95790506060518015610ff95780820490509050670de0b6b3a76400008101818110610ff95790506080526080516040511115610dde57604051608051808203828111610ff95790509050815250610de456610de4565b60008152505b565b602061100b6000396000516370a0823160a0523060c052602060a0602460bc845afa610e17573d600060003e3d6000fd5b60203d10610ff95760a090505160805260015460a05260405160c052606051610e515760405160a0518082811882841002189050905060c0525b60403660e03760c051602061102b60003960005160018111610ff95760051b60e00152602061100b60003960005163ed8e84f36101405260e0516101605261010051610180526060516101a0526020610140606461015c845afa610eba573d600060003e3d6000fd5b60203d10610ff95761014090505161012052606051610f075760805161012051808203828111610ff9579050905060805260a05160c051808203828111610ff9579050905060a052610f37565b60805161012051808201828110610ff9579050905060805260a05160c051808201828110610ff9579050905060a0525b602061100b60003960005163bb7b8b80610160526020610160600461017c845afa610f67573d600060003e3d6000fd5b60203d10610ff9576101609050516101405260a051670de0b6b3a7640000810281670de0b6b3a7640000820418610ff9579050610140518015610ff95780820490509050670de0b6b3a76400008101818110610ff957905061016052610160516080511115610ff15760805161016051808203828111610ff95790509050815250610ff756610ff7565b60008152505b565b600080fda165767970657283000307000b000000000000000000000000390f3595bca2df7d23783dfd126427cceb997bf40000000000000000000000000000000000000000000000000000000000000001000000000000000000000000f939e0a03fb07f59a73314e73794be0e57ac1b4e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e8d4a51000000000000000000000000000e5afcf332a5457e8fafcd668bce3df953762dfe7000000000000000000000000c9332fdcb1c491dcc683bae86fe3cb70360738bc

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

000000000000000000000000390f3595bca2df7d23783dfd126427cceb997bf40000000000000000000000000000000000000000000000000000000000000001000000000000000000000000ecb456ea5365865ebab8a2661b0c503410e9b3470000000000000000000000000000000000000000000000000000000000004e20000000000000000000000000c9332fdcb1c491dcc683bae86fe3cb70360738bc000000000000000000000000e5afcf332a5457e8fafcd668bce3df953762dfe700000000000000000000000040907540d8a6c65c637785e8f8b742ae6b0b9968

-----Decoded View---------------
Arg [0] : _pool (address): 0x390f3595bCa2Df7d23783dFd126427CCeb997BF4
Arg [1] : _index (uint256): 1
Arg [2] : _receiver (address): 0xeCb456EA5365865EbAb8a2661B0c503410e9B347
Arg [3] : _caller_share (uint256): 20000
Arg [4] : _factory (address): 0xC9332fdCB1C491Dcc683bAe86Fe3cb70360738BC
Arg [5] : _aggregator (address): 0xe5Afcf332a5457E8FafCD668BcE3dF953762Dfe7
Arg [6] : _admin (address): 0x40907540d8a6C65c637785e8f8B742ae6b0b9968

-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 000000000000000000000000390f3595bca2df7d23783dfd126427cceb997bf4
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [2] : 000000000000000000000000ecb456ea5365865ebab8a2661b0c503410e9b347
Arg [3] : 0000000000000000000000000000000000000000000000000000000000004e20
Arg [4] : 000000000000000000000000c9332fdcb1c491dcc683bae86fe3cb70360738bc
Arg [5] : 000000000000000000000000e5afcf332a5457e8fafcd668bce3df953762dfe7
Arg [6] : 00000000000000000000000040907540d8a6c65c637785e8f8b742ae6b0b9968


Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]

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