ETH Price: $3,348.49 (-1.17%)
Gas: 18 Gwei

Contract

0x41B994C192183793bB9cc35bAAb8bD9C6885c6bf
 
Transaction Hash
Method
Block
From
To
Value
Refund_incentive197356782024-04-25 23:30:4761 days ago1714087847IN
0x41B994C1...C6885c6bf
0 ETH0.000303575.53685308
Claim_incentive190301022024-01-18 0:13:59160 days ago1705536839IN
0x41B994C1...C6885c6bf
0 ETH0.0014743444.05644896
Vote178413172023-08-04 11:27:23327 days ago1691148443IN
0x41B994C1...C6885c6bf
0 ETH0.0031820217.16322307
Vote178410142023-08-04 10:26:11327 days ago1691144771IN
0x41B994C1...C6885c6bf
0 ETH0.0018277615.13451617
Vote178407232023-08-04 9:27:47327 days ago1691141267IN
0x41B994C1...C6885c6bf
0 ETH0.0011356512.83554792
Vote178406742023-08-04 9:17:59327 days ago1691140679IN
0x41B994C1...C6885c6bf
0 ETH0.0013825615.62631412
Vote178406102023-08-04 9:05:11327 days ago1691139911IN
0x41B994C1...C6885c6bf
0 ETH0.0018084420.43975396
Vote178405542023-08-04 8:53:59327 days ago1691139239IN
0x41B994C1...C6885c6bf
0 ETH0.0020530517
Vote178379822023-08-04 0:16:23327 days ago1691108183IN
0x41B994C1...C6885c6bf
0 ETH0.0013549315.31397436
Vote178366942023-08-03 19:56:35327 days ago1691092595IN
0x41B994C1...C6885c6bf
0 ETH0.0042180827.55855196
Vote178346082023-08-03 12:55:47328 days ago1691067347IN
0x41B994C1...C6885c6bf
0 ETH0.0019503416.14955385
Vote178333962023-08-03 8:51:47328 days ago1691052707IN
0x41B994C1...C6885c6bf
0 ETH0.0026939417.59652563
Vote178313452023-08-03 1:58:59328 days ago1691027939IN
0x41B994C1...C6885c6bf
0 ETH0.0013302915.0354535
Vote178281742023-08-02 15:22:23329 days ago1690989743IN
0x41B994C1...C6885c6bf
0 ETH0.0039954545.15807363
Vote178271052023-08-02 11:46:35329 days ago1690976795IN
0x41B994C1...C6885c6bf
0 ETH0.001592818
Vote178257382023-08-02 7:11:23329 days ago1690960283IN
0x41B994C1...C6885c6bf
0 ETH0.0016054413.29631233
Vote178228352023-08-01 21:27:23329 days ago1690925243IN
0x41B994C1...C6885c6bf
0 ETH0.0028920123.95164288
Vote178223242023-08-01 19:44:59329 days ago1690919099IN
0x41B994C1...C6885c6bf
0 ETH0.0024072427.20759106
Vote178174422023-08-01 3:23:11330 days ago1690860191IN
0x41B994C1...C6885c6bf
0 ETH0.0015930118
Vote178147502023-07-31 18:21:59330 days ago1690827719IN
0x41B994C1...C6885c6bf
0 ETH0.0026004429.39116434
Vote178136122023-07-31 14:33:11331 days ago1690813991IN
0x41B994C1...C6885c6bf
0 ETH0.0040174533.26592931
Vote178136072023-07-31 14:32:11331 days ago1690813931IN
0x41B994C1...C6885c6bf
0 ETH0.0073108833.59890716
Vote178135602023-07-31 14:22:35331 days ago1690813355IN
0x41B994C1...C6885c6bf
0 ETH0.0035204329.15623026
Vote178134942023-07-31 14:09:11331 days ago1690812551IN
0x41B994C1...C6885c6bf
0 ETH0.0029491833.32823577
Vote178130412023-07-31 12:38:23331 days ago1690807103IN
0x41B994C1...C6885c6bf
0 ETH0.0017697820
View all transactions

Latest 17 internal transactions

Advanced mode:
Parent Transaction Hash Block From To Value
178570232023-08-06 16:11:23325 days ago1691338283
0x41B994C1...C6885c6bf
1,891.64836686 ETH
178570232023-08-06 16:11:23325 days ago1691338283
0x41B994C1...C6885c6bf
210.18315187 ETH
177780342023-07-26 15:05:47336 days ago1690383947
0x41B994C1...C6885c6bf
280 ETH
177714112023-07-25 16:50:35337 days ago1690303835
0x41B994C1...C6885c6bf
5 ETH
177689382023-07-25 8:31:23337 days ago1690273883
0x41B994C1...C6885c6bf
100 ETH
177360962023-07-20 18:14:47341 days ago1689876887
0x41B994C1...C6885c6bf
1 ETH
177360962023-07-20 18:14:47341 days ago1689876887
0x41B994C1...C6885c6bf
1 ETH
177136062023-07-17 14:34:47345 days ago1689604487
0x41B994C1...C6885c6bf
250 ETH
177116482023-07-17 7:59:47345 days ago1689580787
0x41B994C1...C6885c6bf
5 ETH
176952832023-07-15 0:34:47347 days ago1689381287
0x41B994C1...C6885c6bf
15 ETH
176931822023-07-14 17:28:47348 days ago1689355727
0x41B994C1...C6885c6bf
1 ETH
176918992023-07-14 13:08:23348 days ago1689340103
0x41B994C1...C6885c6bf
1 ETH
176916302023-07-14 12:14:11348 days ago1689336851
0x41B994C1...C6885c6bf
1 ETH
176916302023-07-14 12:14:11348 days ago1689336851
0x41B994C1...C6885c6bf
1 ETH
176777132023-07-12 13:15:11350 days ago1689167711
0x41B994C1...C6885c6bf
1 ETH
176777132023-07-12 13:15:11350 days ago1689167711
0x41B994C1...C6885c6bf
1 ETH
176777132023-07-12 13:15:11350 days ago1689167711
0x41B994C1...C6885c6bf
1 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
yETH bootstrap

Compiler Version
vyper:0.3.7

Optimization Enabled:
N/A

Other Settings:
GNU AGPLv3 license

Contract Source Code (Vyper language format)

# @version 0.3.7
"""
@title yETH bootstrap
@author 0xkorin, Yearn Finance
@license Copyright (c) Yearn Finance, 2023 - all rights reserved
@notice 
    Implements the bootstrap phase as outlined in YIP-72, summarized:
    Contract defines multiple periods
        - Whitelist period: LSD protocols apply to be whitelisted by depositing 1 ETH
        - Deposit period: anyone can deposit ETH, which mints st-yETH 1:1 locked into the contract
        - Incentive period: anyone is able to incentivize voting for a whitelisted protocol by depositing tokens
        - Vote period: depositors are able to vote on their preferred whitelisted protocol
    After the vote period up to 5 protocols are declared as winner.
    Incentives for winning protocols will be distributed over all voters according to their overall vote weight, 
    regardless whether they voted for that specific protocol or not.
    Protocols that do not win will have their incentives refunded.
    10% of deposited ETH is sent to the POL.
    90% of deposited ETH is used to buy LSDs and deposit into the newly deployed yETH pool.
    The minted yETH is used to pay off 90% of the debt in the bootstrap contract.
    Depositor's st-yETH become withdrawable after a specific time.
"""

from vyper.interfaces import ERC20

interface Token:
    def mint(_account: address, _amount: uint256): nonpayable
    def burn(_account: address, _amount: uint256): nonpayable

interface Staking:
    def deposit(_assets: uint256) -> uint256: nonpayable

token: public(immutable(address))
staking: public(immutable(address))
treasury: public(immutable(address))
pol: public(immutable(address))
management: public(address)
pending_management: public(address)
repay_allowed: public(HashMap[address, bool])

applications: HashMap[address, uint256]
debt: public(uint256)
deposited: public(uint256)
deposits: public(HashMap[address, uint256]) # user => amount deposited
incentives: public(HashMap[address, HashMap[address, uint256]]) # protocol => incentive => amount
incentive_depositors: public(HashMap[address, HashMap[address, HashMap[address, uint256]]]) # protocol => incentive => depositor => amount
voted: public(uint256)
votes_used: public(HashMap[address, uint256]) # user => votes used
votes_used_protocol: public(HashMap[address, HashMap[address, uint256]]) # user => protocol => votes
votes: public(HashMap[address, uint256]) # protocol => votes
winners_list: public(DynArray[address, MAX_WINNERS])
winners: public(HashMap[address, bool]) # protocol => winner?
incentive_claimed: public(HashMap[address, HashMap[address, HashMap[address, bool]]]) # winner => incentive => user => claimed?

whitelist_begin: public(uint256)
whitelist_end: public(uint256)
incentive_begin: public(uint256)
incentive_end: public(uint256)
deposit_begin: public(uint256)
deposit_end: public(uint256)
vote_begin: public(uint256)
vote_end: public(uint256)
lock_end: public(uint256)

event Apply:
    protocol: indexed(address)

event Whitelist:
    protocol: indexed(address)

event Incentivize:
    protocol: indexed(address)
    incentive: indexed(address)
    depositor: indexed(address)
    amount: uint256

event Deposit:
    depositor: indexed(address)
    receiver: indexed(address)
    amount: uint256

event Claim:
    claimer: indexed(address)
    receiver: indexed(address)
    amount: uint256

event Vote:
    voter: indexed(address)
    protocol: indexed(address)
    amount: uint256

event Repay:
    payer: indexed(address)
    amount: uint256

event Split:
    amount: uint256

event ClaimIncentive:
    protocol: indexed(address)
    incentive: indexed(address)
    claimer: indexed(address)
    amount: uint256

event RefundIncentive:
    protocol: indexed(address)
    incentive: indexed(address)
    depositor: indexed(address)
    amount: uint256

event SetPeriod:
    period: indexed(uint256)
    begin: uint256
    end: uint256

event Winners:
    winners: DynArray[address, MAX_WINNERS]

event PendingManagement:
    management: indexed(address)

event SetManagement:
    management: indexed(address)

NOTHING: constant(uint256) = 0
APPLIED: constant(uint256) = 1
WHITELISTED: constant(uint256) = 2
MAX_WINNERS: constant(uint256) = 5

@external
def __init__(_token: address, _staking: address, _treasury: address, _pol: address):
    """
    @notice Constructor
    @param _token yETH token address
    @param _staking st-yETH token address
    @param _treasury Treasury address
    @param _pol POL address
    """
    token = _token
    staking = _staking
    treasury = _treasury
    pol = _pol
    self.management = msg.sender
    assert ERC20(token).approve(_staking, max_value(uint256), default_return_value=True)

@external
@payable
def __default__():
    """
    @notice Send ETH in exchange for 1:1 locked st-yETH
    """
    self._deposit(msg.sender)

@external
@payable
def apply(_protocol: address):
    """
    @notice
        As a LSD protocol apply to be whitelisted for potential inclusion into the yETH pool.
        Requires an application fee of 1 ETH to be sent along with the call
    @param _protocol The LSD protocol token address
    """
    assert msg.value == 1_000_000_000_000_000_000 # dev: application fee
    assert block.timestamp >= self.whitelist_begin and block.timestamp < self.whitelist_end # dev: outside application period
    assert self.applications[_protocol] == NOTHING # dev: already applied
    self.applications[_protocol] = APPLIED
    log Apply(_protocol)

@external
def incentivize(_protocol: address, _incentive: address, _amount: uint256):
    """
    @notice
        Incentivize depositors to vote on a specific protocol.
        Deposited incentives are refunded if the protocol does not receive sufficient votes to be included in the yETH pool
    @param _protocol The LSD protocol address
    @param _incentive The incentive token address
    @param _amount The amount of tokens to deposit as incentive
    """
    assert _amount > 0
    assert block.timestamp >= self.incentive_begin and block.timestamp < self.incentive_end # dev: outside incentive period
    assert self.applications[_protocol] == WHITELISTED # dev: not whitelisted
    self.incentives[_protocol][_incentive] += _amount
    self.incentive_depositors[_protocol][_incentive][msg.sender] += _amount
    assert ERC20(_incentive).transferFrom(msg.sender, self, _amount, default_return_value=True)
    log Incentivize(_protocol, _incentive, msg.sender, _amount)

@external
@payable
def deposit(_account: address = msg.sender):
    """
    @notice Deposit ETH in exchange for 1:1 locked st-yETH
    @param _account Deposit on behalf of this account
    """
    self._deposit(_account)

@internal
@payable
def _deposit(_account: address):
    """
    @notice Deposit ETH in exchange for 1:1 locked st-yETH
    @param _account Deposit on behalf of this account
    """
    assert msg.value > 0
    assert block.timestamp >= self.deposit_begin and block.timestamp < self.deposit_end # dev: outside deposit period
    assert self.lock_end > 0
    self.debt += msg.value
    self.deposited += msg.value
    self.deposits[_account] += msg.value
    Token(token).mint(self, msg.value)
    Staking(staking).deposit(msg.value)
    log Deposit(msg.sender, _account, msg.value)

@external
def claim(_amount: uint256, _receiver: address = msg.sender):
    """
    @notice Claim st-yETH once the lock has expired
    @param _amount Amount of tokens to claim
    @param _receiver Account to transfer the tokens to
    """
    assert _amount > 0
    assert block.timestamp >= self.lock_end
    self.deposited -= _amount
    self.deposits[msg.sender] -= _amount
    assert ERC20(staking).transfer(_receiver, _amount, default_return_value=True)
    log Claim(msg.sender, _receiver, _amount)

@external
@view
def votes_available(_account: address) -> uint256:
    """
    @notice Get the amount of available votes for a specific account
    @param _account The account to query for
    @return Amount of available votes
    """
    if block.timestamp < self.vote_begin or block.timestamp >= self.vote_end:
        return 0

    return self.deposits[_account] - self.votes_used[_account]

@external
def vote(_protocols: DynArray[address, 32], _votes: DynArray[uint256, 32]):
    """
    @notice Vote for whitelisted protocols to be included into the pool
    @param _protocols Protocols to vote for
    @param _votes Amount of votes to allocate for each protocol
    """
    assert len(_protocols) == len(_votes)
    assert block.timestamp >= self.vote_begin and block.timestamp < self.vote_end # dev: outside vote period
    used: uint256 = 0
    for i in range(32):
        if i == len(_protocols):
            break
        protocol: address = _protocols[i]
        votes: uint256 = _votes[i]
        assert self.applications[protocol] == WHITELISTED # dev: protocol not whitelisted
        used += votes
        self.votes[protocol] += votes
        self.votes_used_protocol[msg.sender][protocol] += votes
        log Vote(msg.sender, protocol, votes)
    self.voted += used
    used += self.votes_used[msg.sender]
    assert used <= self.deposits[msg.sender] # dev: too many votes
    self.votes_used[msg.sender] = used

@external
def undo_vote(_protocol: address, _account: address = msg.sender) -> uint256:
    """
    @notice Undo vote for a protocol that had their whitelist retracted
    @param _protocol Protocol to undo votes for
    @param _account Account to undo votes for
    @return Amount of freed up votes
    """
    assert block.timestamp >= self.vote_begin and block.timestamp < self.vote_end # dev: outside vote period
    assert self.applications[_protocol] != WHITELISTED
    assert _account == msg.sender or msg.sender == self.management
    votes: uint256 = self.votes_used_protocol[_account][_protocol]
    assert votes > 0
    self.voted -= votes
    self.votes[_protocol] -= votes
    self.votes_used[_account] -= votes
    self.votes_used_protocol[_account][_protocol] = 0
    return votes

@external
def repay(_amount: uint256):
    """
    @notice Repay yETH debt by burning it
    @param _amount Amount of debt to repay
    @dev Requires prior permission by management
    """
    assert self.repay_allowed[msg.sender]
    self.debt -= _amount
    assert ERC20(token).transferFrom(msg.sender, self, _amount, default_return_value=True)
    Token(token).burn(self, _amount)
    log Repay(msg.sender, _amount)

@external
def split():
    """
    @notice Split deposited ETH 9:1 between treasury and POL
    """
    assert msg.sender == self.management or msg.sender == treasury
    amount: uint256 = self.balance
    assert amount > 0
    log Split(amount)
    raw_call(pol, b"", value=amount/10)
    amount -= amount/10
    raw_call(treasury, b"", value=amount)

@external
@view
def claimable_incentive(_protocol: address, _incentive: address, _claimer: address) -> uint256:
    """
    @notice Get the amount of claimable incentives
    @param _protocol Address of the LSD protocol to claim incentives for
    @param _incentive Incentive token to claim
    @param _claimer Account to query for
    @return Amount of claimable incentive tokens
    """
    if not self.winners[_protocol] or self.incentive_claimed[_protocol][_incentive][_claimer]:
        return 0
    return self.incentives[_protocol][_incentive] * self.votes_used[_claimer] / self.voted

@external
def claim_incentive(_protocol: address, _incentive: address, _claimer: address = msg.sender) -> uint256:
    """
    @notice Claim a specific incentive
    @param _protocol Address of the LSD protocol to claim incentives for
    @param _incentive Incentive token to claim
    @param _claimer Account to claim for
    @return Amount of incentive tokens claimed
    """
    assert self.winners[_protocol] # dev: protocol is not winner
    assert not self.incentive_claimed[_protocol][_incentive][_claimer] # dev: incentive already claimed
    
    incentive: uint256 = self.incentives[_protocol][_incentive] * self.votes_used[_claimer] / self.voted
    assert incentive > 0 # dev: nothing to claim

    self.incentive_claimed[_protocol][_incentive][_claimer] = True
    assert ERC20(_incentive).transfer(_claimer, incentive, default_return_value=True)
    log ClaimIncentive(_protocol, _incentive, _claimer, incentive)
    return incentive

@external
def refund_incentive(_protocol: address, _incentive: address, _depositor: address = msg.sender) -> uint256:
    """
    @notice Refund incentive for protocols that did not win
    @param _protocol Address of the LSD protocol to refund incentives for
    @param _incentive Incentive token to refund
    @param _depositor Account that deposited the incentive
    @return Amount of incentive tokens refunded
    """
    assert len(self.winners_list) > 0 # dev: no winners declared
    assert not self.winners[_protocol] # dev: protocol is winner

    amount: uint256 = self.incentive_depositors[_protocol][_incentive][_depositor]
    assert amount > 0 # dev: nothing to refund

    self.incentive_depositors[_protocol][_incentive][_depositor] = 0
    assert ERC20(_incentive).transfer(_depositor, amount, default_return_value=True)
    log RefundIncentive(_protocol, _incentive, _depositor, amount)
    return amount

@external
@view
def has_applied(_protocol: address) -> bool:
    """
    @notice Check whether the LSD protocol has applied to be whitelisted
    @param _protocol Address of the LSD protocol to query for
    @return True if the protocol has applied, False if it has not yet applied
    """
    return self.applications[_protocol] > NOTHING

@external
@view
def is_whitelisted(_protocol: address) -> bool:
    """
    @notice Check whether the LSD protocol is whitelisted
    @param _protocol Address of the LSD protocol to query for
    @return True if the protocol is whitelisted, False if it has not been whitelisted
    """
    return self.applications[_protocol] == WHITELISTED

@external
@view
def num_winners() -> uint256:
    """
    @notice Get the number of declared winners
    @return Number of declared winners
    """
    return len(self.winners_list)

# MANAGEMENT FUNCTIONS

@external
def set_whitelist_period(_begin: uint256, _end: uint256):
    """
    @notice Set the period during which protocols can apply to be whitelisted
    @param _begin Timestamp of the beginning of the period
    @param _end Timestamp of the end of the period
    """
    assert msg.sender == self.management
    assert _end > _begin
    self.whitelist_begin = _begin
    self.whitelist_end = _end
    log SetPeriod(0, _begin,  _end)

@external
def set_incentive_period(_begin: uint256, _end: uint256):
    """
    @notice Set the period during which incentives can be deposited
    @dev Not allowed to start before the whitelist period
    @param _begin Timestamp of the beginning of the period
    @param _end Timestamp of the end of the period
    """
    assert msg.sender == self.management
    assert _begin >= self.whitelist_begin
    assert _end > _begin
    self.incentive_begin = _begin
    self.incentive_end = _end
    log SetPeriod(1, _begin,  _end)

@external
def set_deposit_period(_begin: uint256, _end: uint256):
    """
    @notice Set the period during which users can deposit ETH for st-yETH
    @dev Not allowed to start before the whitelist period
    @param _begin Timestamp of the beginning of the period
    @param _end Timestamp of the end of the period
    """
    assert msg.sender == self.management
    assert _begin >= self.whitelist_begin
    assert _end > _begin
    self.deposit_begin = _begin
    self.deposit_end = _end
    log SetPeriod(2, _begin,  _end)

@external
def set_vote_period(_begin: uint256, _end: uint256):
    """
    @notice Set the period during which depositors can vote for protocols
    @dev Not allowed to start before the deposit period
    @param _begin Timestamp of the beginning of the period
    @param _end Timestamp of the end of the period
    """
    assert msg.sender == self.management
    assert _begin >= self.deposit_begin
    assert _end > _begin
    assert _end <= self.lock_end
    self.vote_begin = _begin
    self.vote_end = _end
    log SetPeriod(3, _begin, _end)

@external
def set_lock_end(_end: uint256):
    """
    @notice Set the time the st-yETH lock ends
    @dev Not allowed to be before the end of the vote period
    @param _end Timestamp of the end of the lock
    """
    assert msg.sender == self.management
    assert _end >= self.vote_end
    self.lock_end = _end
    log SetPeriod(4, 0, _end)

@external
def whitelist(_protocol: address):
    """
    @notice Whitelist a protocol 
    @param _protocol Address of the LSD protocol
    """
    assert msg.sender == self.management
    assert self.applications[_protocol] == APPLIED # dev: has not applied
    self.applications[_protocol] = WHITELISTED
    log Whitelist(_protocol)

@external
def undo_whitelist(_protocol: address):
    """
    @notice Undo a protocol whitelist. Should only be used in emergencies
    @param _protocol Address of the LSD protocol
    """
    assert msg.sender == self.management
    assert self.applications[_protocol] == WHITELISTED # dev: not whitelisted
    self.applications[_protocol] = APPLIED

@external
def declare_winners(_winners: DynArray[address, MAX_WINNERS]):
    """
    @notice Declare the winners of the vote
    @param _winners Addresses of the LSD protocols
    """
    assert msg.sender == self.management
    assert block.timestamp >= self.incentive_end
    assert block.timestamp >= self.deposit_end
    assert block.timestamp >= self.vote_end
    assert len(self.winners_list) == 0
    for winner in _winners:
        assert self.applications[winner] == WHITELISTED
        assert not self.winners[winner]
        self.winners_list.append(winner)
        self.winners[winner] = True
    log Winners(_winners)

@external
def allow_repay(_account: address, _allow: bool):
    """
    @notice Allow specific account to repay debt
    @param _account Account to set permission for
    @param _allow Flag whether to allow repayment or not
    """
    assert msg.sender == self.management
    self.repay_allowed[_account] = _allow

@external
def set_management(_management: address):
    """
    @notice 
        Set the pending management address.
        Needs to be accepted by that account separately to transfer management over
    @param _management New pending management address
    """
    assert msg.sender == self.management
    self.pending_management = _management
    log PendingManagement(_management)

@external
def accept_management():
    """
    @notice 
        Accept management role.
        Can only be called by account previously marked as pending management by current management
    """
    assert msg.sender == self.pending_management
    self.pending_management = empty(address)
    self.management = msg.sender
    log SetManagement(msg.sender)

Contract Security Audit

Contract ABI

[{"name":"Apply","inputs":[{"name":"protocol","type":"address","indexed":true}],"anonymous":false,"type":"event"},{"name":"Whitelist","inputs":[{"name":"protocol","type":"address","indexed":true}],"anonymous":false,"type":"event"},{"name":"Incentivize","inputs":[{"name":"protocol","type":"address","indexed":true},{"name":"incentive","type":"address","indexed":true},{"name":"depositor","type":"address","indexed":true},{"name":"amount","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"Deposit","inputs":[{"name":"depositor","type":"address","indexed":true},{"name":"receiver","type":"address","indexed":true},{"name":"amount","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"Claim","inputs":[{"name":"claimer","type":"address","indexed":true},{"name":"receiver","type":"address","indexed":true},{"name":"amount","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"Vote","inputs":[{"name":"voter","type":"address","indexed":true},{"name":"protocol","type":"address","indexed":true},{"name":"amount","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"Repay","inputs":[{"name":"payer","type":"address","indexed":true},{"name":"amount","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"Split","inputs":[{"name":"amount","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"ClaimIncentive","inputs":[{"name":"protocol","type":"address","indexed":true},{"name":"incentive","type":"address","indexed":true},{"name":"claimer","type":"address","indexed":true},{"name":"amount","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"RefundIncentive","inputs":[{"name":"protocol","type":"address","indexed":true},{"name":"incentive","type":"address","indexed":true},{"name":"depositor","type":"address","indexed":true},{"name":"amount","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"SetPeriod","inputs":[{"name":"period","type":"uint256","indexed":true},{"name":"begin","type":"uint256","indexed":false},{"name":"end","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"Winners","inputs":[{"name":"winners","type":"address[]","indexed":false}],"anonymous":false,"type":"event"},{"name":"PendingManagement","inputs":[{"name":"management","type":"address","indexed":true}],"anonymous":false,"type":"event"},{"name":"SetManagement","inputs":[{"name":"management","type":"address","indexed":true}],"anonymous":false,"type":"event"},{"stateMutability":"nonpayable","type":"constructor","inputs":[{"name":"_token","type":"address"},{"name":"_staking","type":"address"},{"name":"_treasury","type":"address"},{"name":"_pol","type":"address"}],"outputs":[]},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"function","name":"apply","inputs":[{"name":"_protocol","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"incentivize","inputs":[{"name":"_protocol","type":"address"},{"name":"_incentive","type":"address"},{"name":"_amount","type":"uint256"}],"outputs":[]},{"stateMutability":"payable","type":"function","name":"deposit","inputs":[],"outputs":[]},{"stateMutability":"payable","type":"function","name":"deposit","inputs":[{"name":"_account","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"claim","inputs":[{"name":"_amount","type":"uint256"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"claim","inputs":[{"name":"_amount","type":"uint256"},{"name":"_receiver","type":"address"}],"outputs":[]},{"stateMutability":"view","type":"function","name":"votes_available","inputs":[{"name":"_account","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"nonpayable","type":"function","name":"vote","inputs":[{"name":"_protocols","type":"address[]"},{"name":"_votes","type":"uint256[]"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"undo_vote","inputs":[{"name":"_protocol","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"nonpayable","type":"function","name":"undo_vote","inputs":[{"name":"_protocol","type":"address"},{"name":"_account","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"nonpayable","type":"function","name":"repay","inputs":[{"name":"_amount","type":"uint256"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"split","inputs":[],"outputs":[]},{"stateMutability":"view","type":"function","name":"claimable_incentive","inputs":[{"name":"_protocol","type":"address"},{"name":"_incentive","type":"address"},{"name":"_claimer","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"nonpayable","type":"function","name":"claim_incentive","inputs":[{"name":"_protocol","type":"address"},{"name":"_incentive","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"nonpayable","type":"function","name":"claim_incentive","inputs":[{"name":"_protocol","type":"address"},{"name":"_incentive","type":"address"},{"name":"_claimer","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"nonpayable","type":"function","name":"refund_incentive","inputs":[{"name":"_protocol","type":"address"},{"name":"_incentive","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"nonpayable","type":"function","name":"refund_incentive","inputs":[{"name":"_protocol","type":"address"},{"name":"_incentive","type":"address"},{"name":"_depositor","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"has_applied","inputs":[{"name":"_protocol","type":"address"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"view","type":"function","name":"is_whitelisted","inputs":[{"name":"_protocol","type":"address"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"view","type":"function","name":"num_winners","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"nonpayable","type":"function","name":"set_whitelist_period","inputs":[{"name":"_begin","type":"uint256"},{"name":"_end","type":"uint256"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_incentive_period","inputs":[{"name":"_begin","type":"uint256"},{"name":"_end","type":"uint256"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_deposit_period","inputs":[{"name":"_begin","type":"uint256"},{"name":"_end","type":"uint256"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_vote_period","inputs":[{"name":"_begin","type":"uint256"},{"name":"_end","type":"uint256"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_lock_end","inputs":[{"name":"_end","type":"uint256"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"whitelist","inputs":[{"name":"_protocol","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"undo_whitelist","inputs":[{"name":"_protocol","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"declare_winners","inputs":[{"name":"_winners","type":"address[]"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"allow_repay","inputs":[{"name":"_account","type":"address"},{"name":"_allow","type":"bool"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_management","inputs":[{"name":"_management","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"accept_management","inputs":[],"outputs":[]},{"stateMutability":"view","type":"function","name":"token","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"staking","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"treasury","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"pol","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"management","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"pending_management","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"repay_allowed","inputs":[{"name":"arg0","type":"address"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"view","type":"function","name":"debt","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"deposited","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"deposits","inputs":[{"name":"arg0","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"incentives","inputs":[{"name":"arg0","type":"address"},{"name":"arg1","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"incentive_depositors","inputs":[{"name":"arg0","type":"address"},{"name":"arg1","type":"address"},{"name":"arg2","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"voted","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"votes_used","inputs":[{"name":"arg0","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"votes_used_protocol","inputs":[{"name":"arg0","type":"address"},{"name":"arg1","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"votes","inputs":[{"name":"arg0","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"winners_list","inputs":[{"name":"arg0","type":"uint256"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"winners","inputs":[{"name":"arg0","type":"address"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"view","type":"function","name":"incentive_claimed","inputs":[{"name":"arg0","type":"address"},{"name":"arg1","type":"address"},{"name":"arg2","type":"address"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"view","type":"function","name":"whitelist_begin","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"whitelist_end","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"incentive_begin","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"incentive_end","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"deposit_begin","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"deposit_end","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"vote_begin","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"vote_end","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"lock_end","inputs":[],"outputs":[{"name":"","type":"uint256"}]}]

6020611d466000396000518060a01c611d41576040526020611d666000396000518060a01c611d41576060526020611d866000396000518060a01c611d41576080526020611da66000396000518060a01c611d415760a05234611d4157604051611c2552606051611c4552608051611c655260a051611c855233600055611c255163095ea7b360c05260605160e0527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010052602060c0604460dc6000855af16100cf573d600060003e3d6000fd5b3d6100e657803b15611d41576001610120526100fe565b60203d10611d415760c0518060011c611d4157610120525b61012090505115611d4157611c2561011b61000039611ca5610000f36003361161000c57611adf565b60003560e01c63c6b32f3481186100b15760243610611c13576004358060a01c611c1357604052670de0b6b3a76400003418611c1357601554421015610053576000610059565b60165442105b15611c13576003604051602052600052604060002054611c1357600160036040516020526000526040600020556040517f4df8adbd211698d1efc9a43d86d55cfd9ba7a2d6fd9e267a651707cc742602ab60006060a2005b63d0e30db081186100cd5760043610611c13573360c0526100ef565b63f340fa0181186100ff5760243610611c13576004358060a01c611c135760c0525b60c0516040526100fd611aed565b005b634069531e81186102905760643610611c13576004358060a01c611c13576040526024358060a01c611c135760605234611c135760443515611c135760175442101561014c576000610152565b60185442105b15611c13576002600360405160205260005260406000205418611c13576007604051602052600052604060002080606051602052600052604060002090508054604435808201828110611c1357905090508155506008604051602052600052604060002080606051602052600052604060002090508033602052600052604060002090508054604435808201828110611c1357905090508155506060516323b872dd6080523360a0523060c05260443560e052602060806064609c6000855af1610221573d600060003e3d6000fd5b3d61023857803b15611c1357600161010052610250565b60203d10611c13576080518060011c611c1357610100525b61010090505115611c1357336060516040517fdeea2603793c4aa3731636e2d2d95fae54fe1eef2ef010d8dae544e1e1f127b760443560805260206080a4005b63379607f581186102ac5760243610611c1357336040526102ce565b63ddd5e1b281186103c35760443610611c13576024358060a01c611c13576040525b34611c135760043515611c1357601d544210611c1357600554600435808203828111611c13579050905060055560063360205260005260406000208054600435808203828111611c1357905090508155506020611c4560003960005163a9059cbb60605260405160805260043560a052602060606044607c6000855af161035a573d600060003e3d6000fd5b3d61037057803b15611c1357600160c052610387565b60203d10611c13576060518060011c611c135760c0525b60c090505115611c1357604051337f70eb43c4a8ae8c40502dcf22436c509c28d6ff421cf07c491be56984bd98706860043560605260206060a3005b63fab5a02c811861044d5760243610611c13576004358060a01c611c135760405234611c1357601b5442106103fd57601c54421015610400565b60015b156104135760006060526020606061044b565b6006604051602052600052604060002054600a604051602052600052604060002054808203828111611c135790509050606052602060605bf35b636f816a2081186106995760843610611c13576004356004016020813511611c135780358060405260008160208111611c135780156104ad57905b8060051b6020850101358060a01c611c13578160051b60600152600101818118610488575b505050506024356004016020813511611c135780358061046052602082018160051b8082610480375050505034611c13576104605160405118611c1357601b544210156104fb576000610501565b601c5442105b15611c135760006108805260006020905b806108a0526040516108a051186105285761062d565b6108a051604051811015611c135760051b606001516108c0526108a05161046051811015611c135760051b61048001516108e052600260036108c05160205260005260406000205418611c1357610880516108e051808201828110611c13579050905061088052600c6108c051602052600052604060002080546108e051808201828110611c135790509050815550600b336020526000526040600020806108c0516020526000526040600020905080546108e051808201828110611c1357905090508155506108c051337f66a9138482c99e9baf08860110ef332cc0c23b4a199a53593d8db0fc8f96fbfc6108e051610900526020610900a3600101818118610512575b505060095461088051808201828110611c13579050905060095561088051600a33602052600052604060002054808201828110611c135790509050610880526006336020526000526040600020546108805111611c135761088051600a33602052600052604060002055005b63d372d04c81186106b55760243610611c1357336060526106d7565b63e6ee832281186107f45760443610611c13576024358060a01c611c13576060525b6004358060a01c611c135760405234611c1357601b544210156106fb576000610701565b601c5442105b15611c13576002600360405160205260005260406000205414611c1357336060511861072e576001610735565b6000543318155b15611c1357600b606051602052600052604060002080604051602052600052604060002090505460805260805115611c1357600954608051808203828111611c135790509050600955600c60405160205260005260406000208054608051808203828111611c135790509050815550600a60605160205260005260406000208054608051808203828111611c1357905090508155506000600b606051602052600052604060002080604051602052600052604060002090505560206080f35b63371fd8e6811861091b5760243610611c135734611c135760023360205260005260406000205415611c1357600454600435808203828111611c1357905090506004556020611c256000396000516323b872dd604052336060523060805260043560a052602060406064605c6000855af1610874573d600060003e3d6000fd5b3d61088a57803b15611c1357600160c0526108a1565b60203d10611c13576040518060011c611c135760c0525b60c090505115611c13576020611c25600039600051639dc29fac60405230606052600435608052803b15611c1357600060406044605c6000855af16108eb573d600060003e3d6000fd5b50337f5c16de4f8b59bd9caf0f49a545f25819a895ed223294290b408242e72a59423160043560405260206040a2005b63f76541768118610a145760043610611c135734611c13576000543318610943576001610952565b6020611c656000396000513318155b15611c13574760405260405115611c13577f734b7c838092bed0c73268b7a2cb67b07305321ec5c5610480c2c4c5d43d698e60405160605260206060a16000606052606050600060006060516080604051600a810490506020611c856000396000515af16109c5573d600060003e3d6000fd5b604051604051600a81049050808203828111611c13579050905060405260006060526060506000600060605160806040516020611c656000396000515af1610a12573d600060003e3d6000fd5b005b63afa3bdbe8118610b1a5760643610611c13576004358060a01c611c13576040526024358060a01c611c13576060526044358060a01c611c135760805234611c13576013604051602052600052604060002054610a72576001610aa6565b6014604051602052600052604060002080606051602052600052604060002090508060805160205260005260406000209050545b15610ab957600060a052602060a0610b18565b60076040516020526000526040600020806060516020526000526040600020905054600a608051602052600052604060002054808202811583838304141715611c1357905090506009548015611c13578082049050905060a052602060a05bf35b63eb89cf548118610b365760443610611c135733608052610b58565b63d8a6b2308118610d065760643610611c13576044358060a01c611c13576080525b6004358060a01c611c13576040526024358060a01c611c135760605234611c1357601360405160205260005260406000205415611c1357601460405160205260005260406000208060605160205260005260406000209050806080516020526000526040600020905054611c135760076040516020526000526040600020806060516020526000526040600020905054600a608051602052600052604060002054808202811583838304141715611c1357905090506009548015611c13578082049050905060a05260a05115611c1357600160146040516020526000526040600020806060516020526000526040600020905080608051602052600052604060002090505560605163a9059cbb60c05260805160e05260a05161010052602060c0604460dc6000855af1610c91573d600060003e3d6000fd5b3d610ca857803b15611c1357600161012052610cc0565b60203d10611c135760c0518060011c611c1357610120525b61012090505115611c13576080516060516040517fe6057108b7b8df1f4882cef77de8e7f837bec1003142c97738922e17db63949260a05160c052602060c0a4602060a0f35b638a48d1f58118610d225760443610611c135733608052610d44565b63d2c343c88118610e9e5760643610611c13576044358060a01c611c13576080525b6004358060a01c611c13576040526024358060a01c611c135760605234611c1357600d5415611c13576013604051602052600052604060002054611c135760086040516020526000526040600020806060516020526000526040600020905080608051602052600052604060002090505460a05260a05115611c1357600060086040516020526000526040600020806060516020526000526040600020905080608051602052600052604060002090505560605163a9059cbb60c05260805160e05260a05161010052602060c0604460dc6000855af1610e29573d600060003e3d6000fd5b3d610e4057803b15611c1357600161012052610e58565b60203d10611c135760c0518060011c611c1357610120525b61012090505115611c13576080516060516040517f74b6ba953ef3640dd7e74ce2bd0009413fa4482bdfb45b319aef5b50f7e6124c60a05160c052602060c0a4602060a0f35b630b6871f68118610ee05760243610611c13576004358060a01c611c135760405234611c13576003604051602052600052604060002054151560605260206060f35b63779ee6288118610f235760243610611c13576004358060a01c611c135760405234611c1357600260036040516020526000526040600020541460605260206060f35b636a3719828118610f475760043610611c135734611c1357600d5460405260206040f35b63adbb12158118610fb15760443610611c135734611c13576000543318611c13576004356024351115611c135760043560155560243560165560007fea9d2776e1379a049c99ffdef1512aeed8dd3416e12980c3731198cb418ac3c96040600460403760406040a2005b637e91bff081186110265760443610611c135734611c13576000543318611c135760155460043510611c13576004356024351115611c135760043560175560243560185560017fea9d2776e1379a049c99ffdef1512aeed8dd3416e12980c3731198cb418ac3c96040600460403760406040a2005b63b969d6a0811861109b5760443610611c135734611c13576000543318611c135760155460043510611c13576004356024351115611c1357600435601955602435601a5560027fea9d2776e1379a049c99ffdef1512aeed8dd3416e12980c3731198cb418ac3c96040600460403760406040a2005b63502fe079811861111b5760443610611c135734611c13576000543318611c135760195460043510611c13576004356024351115611c1357601d5460243511611c1357600435601b55602435601c5560037fea9d2776e1379a049c99ffdef1512aeed8dd3416e12980c3731198cb418ac3c96040600460403760406040a2005b63d499870181186111825760243610611c135734611c13576000543318611c1357601c5460043510611c1357600435601d5560047fea9d2776e1379a049c99ffdef1512aeed8dd3416e12980c3731198cb418ac3c9600060405260043560605260406040a2005b639b19251a81186112075760243610611c13576004358060a01c611c135760405234611c13576000543318611c13576001600360405160205260005260406000205418611c1357600260036040516020526000526040600020556040517feb73900b98b6a3e2b8b01708fe544760cf570d21e7fbe5225f24e48b5b2b432e60006060a2005b63c160273581186112635760243610611c13576004358060a01c611c135760405234611c13576000543318611c13576002600360405160205260005260406000205418611c135760016003604051602052600052604060002055005b630c4e112f81186114035760443610611c13576004356004016005813511611c135780358060405260008160058111611c135780156112c357905b8060051b6020850101358060a01c611c13578160051b6060015260010181811861129e575b5050505034611c13576000543318611c13576018544210611c1357601a544210611c1357601c544210611c1357600d54611c1357600060405160058111611c1357801561138257905b8060051b6060015161010052600260036101005160205260005260406000205418611c1357601361010051602052600052604060002054611c1357600d5460048111611c135760018101600d556101005181600e015550600160136101005160205260005260406000205560010181811861130c575b50507f269ee29ef3602a66e11783821e5f60cb92750b4c4c9294864c8c450b3bf6a43660208061010052806101000160006040518083528060051b60008260058111611c135780156113ed57905b8060051b606001518160051b6020880101526001018181186113d0575b50508201602001915050905081019050610100a1005b63c1c9141f81186114565760443610611c13576004358060a01c611c13576040526024358060011c611c135760605234611c13576000543318611c13576060516002604051602052600052604060002055005b63fd066ecc81186114b65760243610611c13576004358060a01c611c135760405234611c13576000543318611c13576040516001556040517fe7b5cc087e6e47e33e86bdfe4720b7e849891938b18ff6e0c3f92299de79e60c60006060a2005b63759be10c81186115095760043610611c135734611c13576001543318611c1357600060015533600055337fafe23f9e1f603b288748a507d5a993957e9f14313a5889d5a070851299939d5960006040a2005b63fc0c546a81186115355760043610611c135734611c13576020611c2560003960005160405260206040f35b634cf088d981186115615760043610611c135734611c13576020611c4560003960005160405260206040f35b6361d027b3811861158d5760043610611c135734611c13576020611c6560003960005160405260206040f35b63e46761c481186115b95760043610611c135734611c13576020611c8560003960005160405260206040f35b6388a8d60281186115dd5760043610611c135734611c135760005460405260206040f35b63770817ec81186116015760043610611c135734611c135760015460405260206040f35b6351a2cb7081186116415760243610611c13576004358060a01c611c135760405234611c1357600260405160205260005260406000205460605260206060f35b630dca59c181186116655760043610611c135734611c135760045460405260206040f35b63eef49ee381186116895760043610611c135734611c135760055460405260206040f35b63fc7e286d81186116c95760243610611c13576004358060a01c611c135760405234611c1357600660405160205260005260406000205460605260206060f35b6351e0203881186117285760443610611c13576004358060a01c611c13576040526024358060a01c611c135760605234611c13576007604051602052600052604060002080606051602052600052604060002090505460805260206080f35b63cc1006bd81186117a65760643610611c13576004358060a01c611c13576040526024358060a01c611c13576060526044358060a01c611c135760805234611c135760086040516020526000526040600020806060516020526000526040600020905080608051602052600052604060002090505460a052602060a0f35b633500f91e81186117ca5760043610611c135734611c135760095460405260206040f35b6345d4eb9e811861180a5760243610611c13576004358060a01c611c135760405234611c1357600a60405160205260005260406000205460605260206060f35b63a07433e781186118695760443610611c13576004358060a01c611c13576040526024358060a01c611c135760605234611c1357600b604051602052600052604060002080606051602052600052604060002090505460805260206080f35b63d8bff5a581186118a95760243610611c13576004358060a01c611c135760405234611c1357600c60405160205260005260406000205460605260206060f35b633f915cd881186118db5760243610611c135734611c1357600435600d54811015611c1357600e015460405260206040f35b636bd5450a811861191b5760243610611c13576004358060a01c611c135760405234611c1357601360405160205260005260406000205460605260206060f35b6315c9591381186119995760643610611c13576004358060a01c611c13576040526024358060a01c611c13576060526044358060a01c611c135760805234611c135760146040516020526000526040600020806060516020526000526040600020905080608051602052600052604060002090505460a052602060a0f35b63c3cf27cd81186119bd5760043610611c135734611c135760155460405260206040f35b6351aacac581186119e15760043610611c135734611c135760165460405260206040f35b6314367a688118611a055760043610611c135734611c135760175460405260206040f35b63b12631d98118611a295760043610611c135734611c135760185460405260206040f35b639f67526f8118611a4d5760043610611c135734611c135760195460405260206040f35b636519bbe98118611a715760043610611c135734611c1357601a5460405260206040f35b632be436f88118611a955760043610611c135734611c1357601b5460405260206040f35b635e8a29328118611ab95760043610611c135734611c1357601c5460405260206040f35b633e14090b8118611add5760043610611c135734611c1357601d5460405260206040f35b505b33604052611aeb611aed565b005b3415611c1357601954421015611b04576000611b0a565b601a5442105b15611c1357601d5415611c135760045434808201828110611c13579050905060045560055434808201828110611c13579050905060055560066040516020526000526040600020805434808201828110611c1357905090508155506020611c256000396000516340c10f19606052306080523460a052803b15611c1357600060606044607c6000855af1611ba3573d600060003e3d6000fd5b506020611c4560003960005163b6b55f2560605234608052602060606024607c6000855af1611bd7573d600060003e3d6000fd5b60203d10611c135760605050604051337f5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f623460605260206060a3565b600080fda165767970657283000307000b005b600080fd0000000000000000000000001bed97cbc3c24a4fb5c069c6e311a967386131f70000000000000000000000008e5cbc6f470d064063341acef7c45172a3eef766000000000000000000000000feb4acf3df3cdea7399794d0869ef76a6efaff52000000000000000000000000929401e30aab6bd648def2d30ff44952bab04478

Deployed Bytecode

0x6003361161000c57611adf565b60003560e01c63c6b32f3481186100b15760243610611c13576004358060a01c611c1357604052670de0b6b3a76400003418611c1357601554421015610053576000610059565b60165442105b15611c13576003604051602052600052604060002054611c1357600160036040516020526000526040600020556040517f4df8adbd211698d1efc9a43d86d55cfd9ba7a2d6fd9e267a651707cc742602ab60006060a2005b63d0e30db081186100cd5760043610611c13573360c0526100ef565b63f340fa0181186100ff5760243610611c13576004358060a01c611c135760c0525b60c0516040526100fd611aed565b005b634069531e81186102905760643610611c13576004358060a01c611c13576040526024358060a01c611c135760605234611c135760443515611c135760175442101561014c576000610152565b60185442105b15611c13576002600360405160205260005260406000205418611c13576007604051602052600052604060002080606051602052600052604060002090508054604435808201828110611c1357905090508155506008604051602052600052604060002080606051602052600052604060002090508033602052600052604060002090508054604435808201828110611c1357905090508155506060516323b872dd6080523360a0523060c05260443560e052602060806064609c6000855af1610221573d600060003e3d6000fd5b3d61023857803b15611c1357600161010052610250565b60203d10611c13576080518060011c611c1357610100525b61010090505115611c1357336060516040517fdeea2603793c4aa3731636e2d2d95fae54fe1eef2ef010d8dae544e1e1f127b760443560805260206080a4005b63379607f581186102ac5760243610611c1357336040526102ce565b63ddd5e1b281186103c35760443610611c13576024358060a01c611c13576040525b34611c135760043515611c1357601d544210611c1357600554600435808203828111611c13579050905060055560063360205260005260406000208054600435808203828111611c1357905090508155506020611c4560003960005163a9059cbb60605260405160805260043560a052602060606044607c6000855af161035a573d600060003e3d6000fd5b3d61037057803b15611c1357600160c052610387565b60203d10611c13576060518060011c611c135760c0525b60c090505115611c1357604051337f70eb43c4a8ae8c40502dcf22436c509c28d6ff421cf07c491be56984bd98706860043560605260206060a3005b63fab5a02c811861044d5760243610611c13576004358060a01c611c135760405234611c1357601b5442106103fd57601c54421015610400565b60015b156104135760006060526020606061044b565b6006604051602052600052604060002054600a604051602052600052604060002054808203828111611c135790509050606052602060605bf35b636f816a2081186106995760843610611c13576004356004016020813511611c135780358060405260008160208111611c135780156104ad57905b8060051b6020850101358060a01c611c13578160051b60600152600101818118610488575b505050506024356004016020813511611c135780358061046052602082018160051b8082610480375050505034611c13576104605160405118611c1357601b544210156104fb576000610501565b601c5442105b15611c135760006108805260006020905b806108a0526040516108a051186105285761062d565b6108a051604051811015611c135760051b606001516108c0526108a05161046051811015611c135760051b61048001516108e052600260036108c05160205260005260406000205418611c1357610880516108e051808201828110611c13579050905061088052600c6108c051602052600052604060002080546108e051808201828110611c135790509050815550600b336020526000526040600020806108c0516020526000526040600020905080546108e051808201828110611c1357905090508155506108c051337f66a9138482c99e9baf08860110ef332cc0c23b4a199a53593d8db0fc8f96fbfc6108e051610900526020610900a3600101818118610512575b505060095461088051808201828110611c13579050905060095561088051600a33602052600052604060002054808201828110611c135790509050610880526006336020526000526040600020546108805111611c135761088051600a33602052600052604060002055005b63d372d04c81186106b55760243610611c1357336060526106d7565b63e6ee832281186107f45760443610611c13576024358060a01c611c13576060525b6004358060a01c611c135760405234611c1357601b544210156106fb576000610701565b601c5442105b15611c13576002600360405160205260005260406000205414611c1357336060511861072e576001610735565b6000543318155b15611c1357600b606051602052600052604060002080604051602052600052604060002090505460805260805115611c1357600954608051808203828111611c135790509050600955600c60405160205260005260406000208054608051808203828111611c135790509050815550600a60605160205260005260406000208054608051808203828111611c1357905090508155506000600b606051602052600052604060002080604051602052600052604060002090505560206080f35b63371fd8e6811861091b5760243610611c135734611c135760023360205260005260406000205415611c1357600454600435808203828111611c1357905090506004556020611c256000396000516323b872dd604052336060523060805260043560a052602060406064605c6000855af1610874573d600060003e3d6000fd5b3d61088a57803b15611c1357600160c0526108a1565b60203d10611c13576040518060011c611c135760c0525b60c090505115611c13576020611c25600039600051639dc29fac60405230606052600435608052803b15611c1357600060406044605c6000855af16108eb573d600060003e3d6000fd5b50337f5c16de4f8b59bd9caf0f49a545f25819a895ed223294290b408242e72a59423160043560405260206040a2005b63f76541768118610a145760043610611c135734611c13576000543318610943576001610952565b6020611c656000396000513318155b15611c13574760405260405115611c13577f734b7c838092bed0c73268b7a2cb67b07305321ec5c5610480c2c4c5d43d698e60405160605260206060a16000606052606050600060006060516080604051600a810490506020611c856000396000515af16109c5573d600060003e3d6000fd5b604051604051600a81049050808203828111611c13579050905060405260006060526060506000600060605160806040516020611c656000396000515af1610a12573d600060003e3d6000fd5b005b63afa3bdbe8118610b1a5760643610611c13576004358060a01c611c13576040526024358060a01c611c13576060526044358060a01c611c135760805234611c13576013604051602052600052604060002054610a72576001610aa6565b6014604051602052600052604060002080606051602052600052604060002090508060805160205260005260406000209050545b15610ab957600060a052602060a0610b18565b60076040516020526000526040600020806060516020526000526040600020905054600a608051602052600052604060002054808202811583838304141715611c1357905090506009548015611c13578082049050905060a052602060a05bf35b63eb89cf548118610b365760443610611c135733608052610b58565b63d8a6b2308118610d065760643610611c13576044358060a01c611c13576080525b6004358060a01c611c13576040526024358060a01c611c135760605234611c1357601360405160205260005260406000205415611c1357601460405160205260005260406000208060605160205260005260406000209050806080516020526000526040600020905054611c135760076040516020526000526040600020806060516020526000526040600020905054600a608051602052600052604060002054808202811583838304141715611c1357905090506009548015611c13578082049050905060a05260a05115611c1357600160146040516020526000526040600020806060516020526000526040600020905080608051602052600052604060002090505560605163a9059cbb60c05260805160e05260a05161010052602060c0604460dc6000855af1610c91573d600060003e3d6000fd5b3d610ca857803b15611c1357600161012052610cc0565b60203d10611c135760c0518060011c611c1357610120525b61012090505115611c13576080516060516040517fe6057108b7b8df1f4882cef77de8e7f837bec1003142c97738922e17db63949260a05160c052602060c0a4602060a0f35b638a48d1f58118610d225760443610611c135733608052610d44565b63d2c343c88118610e9e5760643610611c13576044358060a01c611c13576080525b6004358060a01c611c13576040526024358060a01c611c135760605234611c1357600d5415611c13576013604051602052600052604060002054611c135760086040516020526000526040600020806060516020526000526040600020905080608051602052600052604060002090505460a05260a05115611c1357600060086040516020526000526040600020806060516020526000526040600020905080608051602052600052604060002090505560605163a9059cbb60c05260805160e05260a05161010052602060c0604460dc6000855af1610e29573d600060003e3d6000fd5b3d610e4057803b15611c1357600161012052610e58565b60203d10611c135760c0518060011c611c1357610120525b61012090505115611c13576080516060516040517f74b6ba953ef3640dd7e74ce2bd0009413fa4482bdfb45b319aef5b50f7e6124c60a05160c052602060c0a4602060a0f35b630b6871f68118610ee05760243610611c13576004358060a01c611c135760405234611c13576003604051602052600052604060002054151560605260206060f35b63779ee6288118610f235760243610611c13576004358060a01c611c135760405234611c1357600260036040516020526000526040600020541460605260206060f35b636a3719828118610f475760043610611c135734611c1357600d5460405260206040f35b63adbb12158118610fb15760443610611c135734611c13576000543318611c13576004356024351115611c135760043560155560243560165560007fea9d2776e1379a049c99ffdef1512aeed8dd3416e12980c3731198cb418ac3c96040600460403760406040a2005b637e91bff081186110265760443610611c135734611c13576000543318611c135760155460043510611c13576004356024351115611c135760043560175560243560185560017fea9d2776e1379a049c99ffdef1512aeed8dd3416e12980c3731198cb418ac3c96040600460403760406040a2005b63b969d6a0811861109b5760443610611c135734611c13576000543318611c135760155460043510611c13576004356024351115611c1357600435601955602435601a5560027fea9d2776e1379a049c99ffdef1512aeed8dd3416e12980c3731198cb418ac3c96040600460403760406040a2005b63502fe079811861111b5760443610611c135734611c13576000543318611c135760195460043510611c13576004356024351115611c1357601d5460243511611c1357600435601b55602435601c5560037fea9d2776e1379a049c99ffdef1512aeed8dd3416e12980c3731198cb418ac3c96040600460403760406040a2005b63d499870181186111825760243610611c135734611c13576000543318611c1357601c5460043510611c1357600435601d5560047fea9d2776e1379a049c99ffdef1512aeed8dd3416e12980c3731198cb418ac3c9600060405260043560605260406040a2005b639b19251a81186112075760243610611c13576004358060a01c611c135760405234611c13576000543318611c13576001600360405160205260005260406000205418611c1357600260036040516020526000526040600020556040517feb73900b98b6a3e2b8b01708fe544760cf570d21e7fbe5225f24e48b5b2b432e60006060a2005b63c160273581186112635760243610611c13576004358060a01c611c135760405234611c13576000543318611c13576002600360405160205260005260406000205418611c135760016003604051602052600052604060002055005b630c4e112f81186114035760443610611c13576004356004016005813511611c135780358060405260008160058111611c135780156112c357905b8060051b6020850101358060a01c611c13578160051b6060015260010181811861129e575b5050505034611c13576000543318611c13576018544210611c1357601a544210611c1357601c544210611c1357600d54611c1357600060405160058111611c1357801561138257905b8060051b6060015161010052600260036101005160205260005260406000205418611c1357601361010051602052600052604060002054611c1357600d5460048111611c135760018101600d556101005181600e015550600160136101005160205260005260406000205560010181811861130c575b50507f269ee29ef3602a66e11783821e5f60cb92750b4c4c9294864c8c450b3bf6a43660208061010052806101000160006040518083528060051b60008260058111611c135780156113ed57905b8060051b606001518160051b6020880101526001018181186113d0575b50508201602001915050905081019050610100a1005b63c1c9141f81186114565760443610611c13576004358060a01c611c13576040526024358060011c611c135760605234611c13576000543318611c13576060516002604051602052600052604060002055005b63fd066ecc81186114b65760243610611c13576004358060a01c611c135760405234611c13576000543318611c13576040516001556040517fe7b5cc087e6e47e33e86bdfe4720b7e849891938b18ff6e0c3f92299de79e60c60006060a2005b63759be10c81186115095760043610611c135734611c13576001543318611c1357600060015533600055337fafe23f9e1f603b288748a507d5a993957e9f14313a5889d5a070851299939d5960006040a2005b63fc0c546a81186115355760043610611c135734611c13576020611c2560003960005160405260206040f35b634cf088d981186115615760043610611c135734611c13576020611c4560003960005160405260206040f35b6361d027b3811861158d5760043610611c135734611c13576020611c6560003960005160405260206040f35b63e46761c481186115b95760043610611c135734611c13576020611c8560003960005160405260206040f35b6388a8d60281186115dd5760043610611c135734611c135760005460405260206040f35b63770817ec81186116015760043610611c135734611c135760015460405260206040f35b6351a2cb7081186116415760243610611c13576004358060a01c611c135760405234611c1357600260405160205260005260406000205460605260206060f35b630dca59c181186116655760043610611c135734611c135760045460405260206040f35b63eef49ee381186116895760043610611c135734611c135760055460405260206040f35b63fc7e286d81186116c95760243610611c13576004358060a01c611c135760405234611c1357600660405160205260005260406000205460605260206060f35b6351e0203881186117285760443610611c13576004358060a01c611c13576040526024358060a01c611c135760605234611c13576007604051602052600052604060002080606051602052600052604060002090505460805260206080f35b63cc1006bd81186117a65760643610611c13576004358060a01c611c13576040526024358060a01c611c13576060526044358060a01c611c135760805234611c135760086040516020526000526040600020806060516020526000526040600020905080608051602052600052604060002090505460a052602060a0f35b633500f91e81186117ca5760043610611c135734611c135760095460405260206040f35b6345d4eb9e811861180a5760243610611c13576004358060a01c611c135760405234611c1357600a60405160205260005260406000205460605260206060f35b63a07433e781186118695760443610611c13576004358060a01c611c13576040526024358060a01c611c135760605234611c1357600b604051602052600052604060002080606051602052600052604060002090505460805260206080f35b63d8bff5a581186118a95760243610611c13576004358060a01c611c135760405234611c1357600c60405160205260005260406000205460605260206060f35b633f915cd881186118db5760243610611c135734611c1357600435600d54811015611c1357600e015460405260206040f35b636bd5450a811861191b5760243610611c13576004358060a01c611c135760405234611c1357601360405160205260005260406000205460605260206060f35b6315c9591381186119995760643610611c13576004358060a01c611c13576040526024358060a01c611c13576060526044358060a01c611c135760805234611c135760146040516020526000526040600020806060516020526000526040600020905080608051602052600052604060002090505460a052602060a0f35b63c3cf27cd81186119bd5760043610611c135734611c135760155460405260206040f35b6351aacac581186119e15760043610611c135734611c135760165460405260206040f35b6314367a688118611a055760043610611c135734611c135760175460405260206040f35b63b12631d98118611a295760043610611c135734611c135760185460405260206040f35b639f67526f8118611a4d5760043610611c135734611c135760195460405260206040f35b636519bbe98118611a715760043610611c135734611c1357601a5460405260206040f35b632be436f88118611a955760043610611c135734611c1357601b5460405260206040f35b635e8a29328118611ab95760043610611c135734611c1357601c5460405260206040f35b633e14090b8118611add5760043610611c135734611c1357601d5460405260206040f35b505b33604052611aeb611aed565b005b3415611c1357601954421015611b04576000611b0a565b601a5442105b15611c1357601d5415611c135760045434808201828110611c13579050905060045560055434808201828110611c13579050905060055560066040516020526000526040600020805434808201828110611c1357905090508155506020611c256000396000516340c10f19606052306080523460a052803b15611c1357600060606044607c6000855af1611ba3573d600060003e3d6000fd5b506020611c4560003960005163b6b55f2560605234608052602060606024607c6000855af1611bd7573d600060003e3d6000fd5b60203d10611c135760605050604051337f5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f623460605260206060a3565b600080fda165767970657283000307000b0000000000000000000000001bed97cbc3c24a4fb5c069c6e311a967386131f70000000000000000000000008e5cbc6f470d064063341acef7c45172a3eef766000000000000000000000000feb4acf3df3cdea7399794d0869ef76a6efaff52000000000000000000000000929401e30aab6bd648def2d30ff44952bab04478

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

0000000000000000000000001bed97cbc3c24a4fb5c069c6e311a967386131f70000000000000000000000008e5cbc6f470d064063341acef7c45172a3eef766000000000000000000000000feb4acf3df3cdea7399794d0869ef76a6efaff52000000000000000000000000929401e30aab6bd648def2d30ff44952bab04478

-----Decoded View---------------
Arg [0] : _token (address): 0x1BED97CBC3c24A4fb5C069C6E311a967386131f7
Arg [1] : _staking (address): 0x8E5CBc6f470d064063341aceF7c45172A3EEf766
Arg [2] : _treasury (address): 0xFEB4acf3df3cDEA7399794D0869ef76A6EfAff52
Arg [3] : _pol (address): 0x929401e30Aab6bd648dEf2d30FF44952BaB04478

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000001bed97cbc3c24a4fb5c069c6e311a967386131f7
Arg [1] : 0000000000000000000000008e5cbc6f470d064063341acef7c45172a3eef766
Arg [2] : 000000000000000000000000feb4acf3df3cdea7399794d0869ef76a6efaff52
Arg [3] : 000000000000000000000000929401e30aab6bd648def2d30ff44952bab04478


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ 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.