Goerli Testnet

Contract

0xd13AFc362F619b840C8f4AaC1D957cE219eF37Ca

Overview

ETH Balance

Multichain Info

N/A
Transaction Hash
Method
Block
From
To
Value
0x6020611b80883712022-12-06 23:41:00477 days ago1670370060IN
 Create: Vyper_contract
0 ETH0.000000060.00004048

Advanced mode:
Parent Txn Hash Block From To Value
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Vyper_contract

Compiler Version
vyper:0.3.3

Optimization Enabled:
N/A

Other Settings:
GNU GPLv3 license

Contract Source Code (Vyper language format)

# @version 0.3.3
"""
@title Boost Delegation V2
@author CurveFi
"""


event Approval:
    _owner: indexed(address)
    _spender: indexed(address)
    _value: uint256

event Transfer:
    _from: indexed(address)
    _to: indexed(address)
    _value: uint256

event Boost:
    _from: indexed(address)
    _to: indexed(address)
    _bias: uint256
    _slope: uint256
    _start: uint256

event Migrate:
    _token_id: indexed(uint256)


interface BoostV1:
    def ownerOf(_token_id: uint256) -> address: view
    def token_boost(_token_id: uint256) -> int256: view
    def token_expiry(_token_id: uint256) -> uint256: view

interface VotingEscrow:
    def balanceOf(_user: address) -> uint256: view
    def totalSupply() -> uint256: view
    def locked__end(_user: address) -> uint256: view

interface ERC1271:
    def isValidSignature(_hash: bytes32, _signature: Bytes[65]) -> bytes32: view

struct Point:
    bias: uint256
    slope: uint256
    ts: uint256


NAME: constant(String[32]) = "Vote-Escrowed Boost"
SYMBOL: constant(String[8]) = "veBoost"
VERSION: constant(String[8]) = "v2.0.0"

EIP712_TYPEHASH: constant(bytes32) = keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)")
PERMIT_TYPEHASH: constant(bytes32) = keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)")

# keccak256("isValidSignature(bytes32,bytes)")[:4] << 224
ERC1271_MAGIC_VAL: constant(bytes32) = 0x1626ba7e00000000000000000000000000000000000000000000000000000000


WEEK: constant(uint256) = 86400 * 7


BOOST_V1: immutable(address)
DOMAIN_SEPARATOR: immutable(bytes32)
VE: immutable(address)


allowance: public(HashMap[address, HashMap[address, uint256]])
nonces: public(HashMap[address, uint256])

delegated: public(HashMap[address, Point])
delegated_slope_changes: public(HashMap[address, HashMap[uint256, uint256]])

received: public(HashMap[address, Point])
received_slope_changes: public(HashMap[address, HashMap[uint256, uint256]])

migrated: public(HashMap[uint256, bool])


@external
def __init__(_boost_v1: address, _ve: address):
    BOOST_V1 = _boost_v1
    DOMAIN_SEPARATOR = keccak256(_abi_encode(EIP712_TYPEHASH, keccak256(NAME), keccak256(VERSION), chain.id, self))
    VE = _ve

    log Transfer(ZERO_ADDRESS, msg.sender, 0)


@view
@internal
def _checkpoint_read(_user: address, _delegated: bool) -> Point:
    point: Point = empty(Point)

    if _delegated:
        point = self.delegated[_user]
    else:
        point = self.received[_user]

    if point.ts == 0:
        point.ts = block.timestamp

    if point.ts == block.timestamp:
        return point

    ts: uint256 = (point.ts / WEEK) * WEEK
    for _ in range(255):
        ts += WEEK

        dslope: uint256 = 0
        if block.timestamp < ts:
            ts = block.timestamp
        else:
            if _delegated:
                dslope = self.delegated_slope_changes[_user][ts]
            else:
                dslope = self.received_slope_changes[_user][ts]

        point.bias -= point.slope * (ts - point.ts)
        point.slope -= dslope
        point.ts = ts

        if ts == block.timestamp:
            break

    return point


@internal
def _checkpoint_write(_user: address, _delegated: bool) -> Point:
    point: Point = empty(Point)

    if _delegated:
        point = self.delegated[_user]
    else:
        point = self.received[_user]

    if point.ts == 0:
        point.ts = block.timestamp

    if point.ts == block.timestamp:
        return point

    dbias: uint256 = 0
    ts: uint256 = (point.ts / WEEK) * WEEK
    for _ in range(255):
        ts += WEEK

        dslope: uint256 = 0
        if block.timestamp < ts:
            ts = block.timestamp
        else:
            if _delegated:
                dslope = self.delegated_slope_changes[_user][ts]
            else:
                dslope = self.received_slope_changes[_user][ts]

        amount: uint256 = point.slope * (ts - point.ts)

        dbias += amount
        point.bias -= amount
        point.slope -= dslope
        point.ts = ts

        if ts == block.timestamp:
            break

    if _delegated == False and dbias != 0:  # received boost
        log Transfer(_user, ZERO_ADDRESS, dbias)

    return point


@view
@internal
def _balance_of(_user: address) -> uint256:
    amount: uint256 = VotingEscrow(VE).balanceOf(_user)

    point: Point = self._checkpoint_read(_user, True)
    amount -= (point.bias - point.slope * (block.timestamp - point.ts))

    point = self._checkpoint_read(_user, False)
    amount += (point.bias - point.slope * (block.timestamp - point.ts))
    return amount


@internal
def _boost(_from: address, _to: address, _amount: uint256, _endtime: uint256):
    assert _to not in [_from, ZERO_ADDRESS]
    assert _amount != 0
    assert _endtime > block.timestamp
    assert _endtime % WEEK == 0
    assert _endtime <= VotingEscrow(VE).locked__end(_from)

    # checkpoint delegated point
    point: Point = self._checkpoint_write(_from, True)
    assert _amount <= VotingEscrow(VE).balanceOf(_from) - (point.bias - point.slope * (block.timestamp - point.ts))

    # calculate slope and bias being added
    slope: uint256 = _amount / (_endtime - block.timestamp)
    bias: uint256 = slope * (_endtime - block.timestamp)

    # update delegated point
    point.bias += bias
    point.slope += slope

    # store updated values
    self.delegated[_from] = point
    self.delegated_slope_changes[_from][_endtime] += slope

    # update received amount
    point = self._checkpoint_write(_to, False)
    point.bias += bias
    point.slope += slope

    # store updated values
    self.received[_to] = point
    self.received_slope_changes[_to][_endtime] += slope

    log Transfer(_from, _to, _amount)
    log Boost(_from, _to, bias, slope, block.timestamp)

    # also checkpoint received and delegated
    self.received[_from] = self._checkpoint_write(_from, False)
    self.delegated[_to] = self._checkpoint_write(_to, True)


@external
def boost(_to: address, _amount: uint256, _endtime: uint256, _from: address = msg.sender):
    # reduce approval if necessary
    if _from != msg.sender:
        allowance: uint256 = self.allowance[_from][msg.sender]
        if allowance != MAX_UINT256:
            self.allowance[_from][msg.sender] = allowance - _amount
            log Approval(_from, msg.sender, allowance - _amount)

    self._boost(_from, _to, _amount, _endtime)

@internal
def _migrate(_token_id: uint256):
    assert not self.migrated[_token_id]

    self._boost(
        convert(shift(_token_id, -96), address),  # from
        BoostV1(BOOST_V1).ownerOf(_token_id),  # to
        convert(BoostV1(BOOST_V1).token_boost(_token_id), uint256),  # amount
        BoostV1(BOOST_V1).token_expiry(_token_id),  # expiry
    )

    self.migrated[_token_id] = True
    log Migrate(_token_id)

@external
def migrate(_token_id: uint256):
    self._migrate(_token_id)

@external
def migrate_many(_token_ids: uint256[16]):
    for i in range(16):
        if _token_ids[i] == 0:
            break
        self._migrate(_token_ids[i])

@external
def checkpoint_user(_user: address):
    self.delegated[_user] = self._checkpoint_write(_user, True)
    self.received[_user] = self._checkpoint_write(_user, False)


@external
def approve(_spender: address, _value: uint256) -> bool:
    self.allowance[msg.sender][_spender] = _value

    log Approval(msg.sender, _spender, _value)
    return True


@external
def permit(_owner: address, _spender: address, _value: uint256, _deadline: uint256, _v: uint8, _r: bytes32, _s: bytes32) -> bool:
    assert block.timestamp <= _deadline, 'EXPIRED_SIGNATURE'

    nonce: uint256 = self.nonces[_owner]
    digest: bytes32 = keccak256(
        concat(
            b"\x19\x01",
            DOMAIN_SEPARATOR,
            keccak256(_abi_encode(PERMIT_TYPEHASH, _owner, _spender, _value, nonce, _deadline))
        )
    )

    if _owner.is_contract:
        sig: Bytes[65] = concat(_abi_encode(_r, _s), slice(convert(_v, bytes32), 31, 1))
        # reentrancy not a concern since this is a staticcall
        assert ERC1271(_owner).isValidSignature(digest, sig) == ERC1271_MAGIC_VAL, 'INVALID_SIGNATURE'
    else:
        assert ecrecover(digest, convert(_v, uint256), convert(_r, uint256), convert(_s, uint256)) == _owner and _owner != ZERO_ADDRESS, 'INVALID_SIGNATURE'

    self.allowance[_owner][_spender] = _value
    self.nonces[_owner] = nonce + 1

    log Approval(_owner, _spender, _value)
    return True


@external
def increaseAllowance(_spender: address, _added_value: uint256) -> bool:
    allowance: uint256 = self.allowance[msg.sender][_spender] + _added_value
    self.allowance[msg.sender][_spender] = allowance

    log Approval(msg.sender, _spender, allowance)
    return True


@external
def decreaseAllowance(_spender: address, _subtracted_value: uint256) -> bool:
    allowance: uint256 = self.allowance[msg.sender][_spender] - _subtracted_value
    self.allowance[msg.sender][_spender] = allowance

    log Approval(msg.sender, _spender, allowance)
    return True


@view
@external
def balanceOf(_user: address) -> uint256:
    return self._balance_of(_user)


@view
@external
def adjusted_balance_of(_user: address) -> uint256:
    return self._balance_of(_user)


@view
@external
def totalSupply() -> uint256:
    return VotingEscrow(VE).totalSupply()


@view
@external
def delegated_balance(_user: address) -> uint256:
    point: Point = self._checkpoint_read(_user, True)
    return point.bias - point.slope * (block.timestamp - point.ts)


@view
@external
def received_balance(_user: address) -> uint256:
    point: Point = self._checkpoint_read(_user, False)
    return point.bias - point.slope * (block.timestamp - point.ts)


@view
@external
def delegable_balance(_user: address) -> uint256:
    point: Point = self._checkpoint_read(_user, True)
    return VotingEscrow(VE).balanceOf(_user) - (point.bias - point.slope * (block.timestamp - point.ts))


@pure
@external
def name() -> String[32]:
    return NAME


@pure
@external
def symbol() -> String[8]:
    return SYMBOL


@pure
@external
def decimals() -> uint8:
    return 18


@pure
@external
def BOOST_V1() -> address:
    return BOOST_V1

@pure
@external
def version() -> String[8]:
    return VERSION

@pure
@external
def DOMAIN_SEPARATOR() -> bytes32:
    return DOMAIN_SEPARATOR


@pure
@external
def VE() -> address:
    return VE

Contract ABI

[{"name":"Approval","inputs":[{"name":"_owner","type":"address","indexed":true},{"name":"_spender","type":"address","indexed":true},{"name":"_value","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"Transfer","inputs":[{"name":"_from","type":"address","indexed":true},{"name":"_to","type":"address","indexed":true},{"name":"_value","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"Boost","inputs":[{"name":"_from","type":"address","indexed":true},{"name":"_to","type":"address","indexed":true},{"name":"_bias","type":"uint256","indexed":false},{"name":"_slope","type":"uint256","indexed":false},{"name":"_start","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"Migrate","inputs":[{"name":"_token_id","type":"uint256","indexed":true}],"anonymous":false,"type":"event"},{"stateMutability":"nonpayable","type":"constructor","inputs":[{"name":"_boost_v1","type":"address"},{"name":"_ve","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"boost","inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"},{"name":"_endtime","type":"uint256"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"boost","inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"},{"name":"_endtime","type":"uint256"},{"name":"_from","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"migrate","inputs":[{"name":"_token_id","type":"uint256"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"migrate_many","inputs":[{"name":"_token_ids","type":"uint256[16]"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"checkpoint_user","inputs":[{"name":"_user","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"approve","inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"nonpayable","type":"function","name":"permit","inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"},{"name":"_deadline","type":"uint256"},{"name":"_v","type":"uint8"},{"name":"_r","type":"bytes32"},{"name":"_s","type":"bytes32"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"nonpayable","type":"function","name":"increaseAllowance","inputs":[{"name":"_spender","type":"address"},{"name":"_added_value","type":"uint256"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"nonpayable","type":"function","name":"decreaseAllowance","inputs":[{"name":"_spender","type":"address"},{"name":"_subtracted_value","type":"uint256"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"view","type":"function","name":"balanceOf","inputs":[{"name":"_user","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"adjusted_balance_of","inputs":[{"name":"_user","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"delegated_balance","inputs":[{"name":"_user","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"received_balance","inputs":[{"name":"_user","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"delegable_balance","inputs":[{"name":"_user","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"pure","type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string"}]},{"stateMutability":"pure","type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string"}]},{"stateMutability":"pure","type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8"}]},{"stateMutability":"pure","type":"function","name":"BOOST_V1","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"pure","type":"function","name":"version","inputs":[],"outputs":[{"name":"","type":"string"}]},{"stateMutability":"pure","type":"function","name":"DOMAIN_SEPARATOR","inputs":[],"outputs":[{"name":"","type":"bytes32"}]},{"stateMutability":"pure","type":"function","name":"VE","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"allowance","inputs":[{"name":"arg0","type":"address"},{"name":"arg1","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"nonces","inputs":[{"name":"arg0","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"delegated","inputs":[{"name":"arg0","type":"address"}],"outputs":[{"name":"","type":"tuple","components":[{"name":"bias","type":"uint256"},{"name":"slope","type":"uint256"},{"name":"ts","type":"uint256"}]}]},{"stateMutability":"view","type":"function","name":"delegated_slope_changes","inputs":[{"name":"arg0","type":"address"},{"name":"arg1","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"received","inputs":[{"name":"arg0","type":"address"}],"outputs":[{"name":"","type":"tuple","components":[{"name":"bias","type":"uint256"},{"name":"slope","type":"uint256"},{"name":"ts","type":"uint256"}]}]},{"stateMutability":"view","type":"function","name":"received_slope_changes","inputs":[{"name":"arg0","type":"address"},{"name":"arg1","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"migrated","inputs":[{"name":"arg0","type":"uint256"}],"outputs":[{"name":"","type":"bool"}]}]

6020611bb26000396000518060a01c611bad576040526020611bd26000396000518060a01c611bad576060526040516300001a97527f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610160527f576a762e50ddf4c74071046cf7b508f5d87c41676ea1b6c8bf07aba60e5b6306610180527fd61c1033330c368dfc371f5b1e7133f4794e104642e5a3c87aba7a6a3441c8ff6101a052466101c052306101e05260a0610140526101408051602082012090506300001ab7526060516300001ad7523360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600060805260206080a3611a97610115630000000039611a976060016300000000f3600436101561000d57610f31565b60003560e01c34611a925763a2114cdb811861002d573361032052610048565b63b4b3c2498118610154576064358060a01c611a9257610320525b6004358060a01c611a92576103005233610320511461012c57600061032051602052600052604060002080336020526000526040600020905054610340527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610340511461012c5761034051602435808210611a92578082039050905060006103205160205260005260406000208033602052600052604060002090505533610320517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92561034051602435808210611a925780820390509050610360526020610360a35b6103205161018052610300516101a0526024356101c0526044356101e0526101526114d4565b005b63454b06088118610170576004356103005261016e611930565b005b638ce8dd9781186101d25760006010905b80610400526020610400516010811015611a925702600401356101a3576101ce565b6020610400516010811015611a92570260040135610300526101c3611930565b600101818118610181575b5050005b637de680618118610278576004358060a01c611a92576101805260026101805160205260005260406000206101805160405260016060526102146101a0611116565b6101a0805182556020810151600183015560408101516002830155505060046101805160205260005260406000206101805160405260006060526102596101a0611116565b6101a08051825560208101516001830155604081015160028301555050005b63095ea7b381186102ef576004358060a01c611a92576040526024356000336020526000526040600020806040516020526000526040600020905055604051337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560243560605260206060a3600160605260206060f35b63d505accf811861076b576004358060a01c611a92576040526024358060a01c611a92576060526084358060081c611a925760805260643542111561038b57601160a0527f455850495245445f5349474e415455524500000000000000000000000000000060c05260a05060a0518060c00181600003601f1636823750506308c379a06060526020608052601f19601f60a0510116604401607cfd5b600160405160205260005260406000205460a05260006002610360527f1901000000000000000000000000000000000000000000000000000000000000610380526103608051602082018361058001815181525050808301925050506020611ab76000396000518161058001526020810190507f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c96104a0526040516104c0526060516104e0526044356105005260a051610520526064356105405260c0610480526104808051602082012090508161058001526020810190508061056052610560905080516020820120905060c05260006040513b116105375760405160c051610180526080516101a05260a4356101c05260c4356101e05260206000608061018060015afa50600051186104c657600060405114156104c9565b60005b6106e3576011610220527f494e56414c49445f5349474e4154555245000000000000000000000000000000610240526102205061022051806102400181600003601f1636823750506308c379a06101e052602061020052601f19601f6102205101166044016101fcfd6106e3565b600060a4356101805260c4356101a05260406101605261016080516020820183610240018281848460045afa90505050808301925050506080516101c0526101c06020602011611a9257601f81018051610200525060016101e0526101e090508051602082018361024001815181525050808301925050508061022052610220905080518060e0526020820181610100838360045afa9050905050507f1626ba7e00000000000000000000000000000000000000000000000000000000631626ba7e61016052604060c05161018052806101a052806101800160e0518082526020820181818361010060045afa90505050805180602083010181600003601f163682375050601f19601f82516020010116905081015050602061016060c461017c6040515afa61066c573d600060003e3d6000fd5b60203d10611a925761016051146106e3576011610240527f494e56414c49445f5349474e4154555245000000000000000000000000000000610260526102405061024051806102600181600003601f1636823750506308c379a061020052602061022052601f19601f61024051011660440161021cfd5b6044356000604051602052600052604060002080606051602052600052604060002090505560a05160018181830110611a92578082019050905060016040516020526000526040600020556060516040517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560443560e052602060e0a3600160e052602060e0f35b63395093518118610818576004358060a01c611a925760405260003360205260005260406000208060405160205260005260406000209050546024358181830110611a9257808201905090506060526060516000336020526000526040600020806040516020526000526040600020905055604051337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560605160805260206080a3600160805260206080f35b63a457c2d781186108c3576004358060a01c611a92576040526000336020526000526040600020806040516020526000526040600020905054602435808210611a9257808203905090506060526060516000336020526000526040600020806040516020526000526040600020905055604051337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560605160805260206080a3600160805260206080f35b6370a0823181186108f7576004358060a01c611a925761024052602061024051610140526108f2610260611376565b610260f35b63bbf7408a811861092b576004358060a01c611a92576102405260206102405161014052610926610260611376565b610260f35b6318160ddd81186109705760206318160ddd604052602060406004605c6020611ad76000396000515afa610964573d600060003e3d6000fd5b60203d10611a92576040f35b630a767cc68118610a05576004358060a01c611a9257610140526101405160405260016060526109a16101c0610f37565b6101c080516101605260208101516101805260408101516101a052506101605161018051426101a051808210611a925780820390509050808202821582848304141715611a925790509050808210611a9257808203905090506101c05260206101c0f35b6322c18bb68118610a9a576004358060a01c611a925761014052610140516040526000606052610a366101c0610f37565b6101c080516101605260208101516101805260408101516101a052506101605161018051426101a051808210611a925780820390509050808202821582848304141715611a925790509050808210611a9257808203905090506101c05260206101c0f35b63ca8309468118610b80576004358060a01c611a925761014052610140516040526001606052610acb6101c0610f37565b6101c080516101605260208101516101805260408101516101a052506370a082316101c052610140516101e05260206101c060246101dc6020611ad76000396000515afa610b1e573d600060003e3d6000fd5b60203d10611a92576101c0516101605161018051426101a051808210611a925780820390509050808202821582848304141715611a925790509050808210611a925780820390509050808210611a925780820390509050610200526020610200f35b6306fdde038118610c005760208060805260136040527f566f74652d457363726f77656420426f6f7374000000000000000000000000006060526040816080018151808252602083016020830181518152505050805180602083010181600003601f163682375050601f19601f8251602001011690509050810190506080f35b6395d89b418118610c805760208060805260076040527f7665426f6f7374000000000000000000000000000000000000000000000000006060526040816080018151808252602083016020830181518152505050805180602083010181600003601f163682375050601f19601f8251602001011690509050810190506080f35b63313ce5678118610c9657601260405260206040f35b635d14140a8118610cb5576020611a9760003960005160405260206040f35b6354fd4d508118610d355760208060805260066040527f76322e302e3000000000000000000000000000000000000000000000000000006060526040816080018151808252602083016020830181518152505050805180602083010181600003601f163682375050601f19601f8251602001011690509050810190506080f35b633644e5158118610d54576020611ab760003960005160405260206040f35b63c863657d8118610d73576020611ad760003960005160405260206040f35b63dd62ed3e8118610dc5576004358060a01c611a92576040526024358060a01c611a92576060526000604051602052600052604060002080606051602052600052604060002090505460805260206080f35b637ecebe008118610df8576004358060a01c611a9257604052600160405160205260005260406000205460605260206060f35b63f3598ad98118610e3d576004358060a01c611a92576040526002604051602052600052604060002080546060526001810154608052600281015460a0525060606060f35b63356a46808118610e81576004358060a01c611a92576040526003604051602052600052604060002080602435602052600052604060002090505460605260206060f35b63df0cb9348118610ec6576004358060a01c611a92576040526004604051602052600052604060002080546060526001810154608052600281015460a0525060606060f35b635ad600c98118610f0a576004358060a01c611a92576040526005604051602052600052604060002080602435602052600052604060002090505460605260206060f35b630e359f168118610f2f57600660043560205260005260406000205460405260206040f35b505b60006000fd5b606036608037606051610f6f57600460405160205260005260406000208054608052600181015460a052600281015460c05250610f96565b600260405160205260005260406000208054608052600181015460a052600281015460c052505b60c051610fa2574260c0525b4260c05118610fc657608051815260a051602082015260c051604082015250611114565b60c05162093a808082049050905062093a80808202821582848304141715611a92579050905060e052600060ff905b806101005260e05162093a808181830110611a92578082019050905060e05260006101205260e05142106110805760605161105557600560405160205260005260406000208060e051602052600052604060002090505461012052611085565b600360405160205260005260406000208060e051602052600052604060002090505461012052611085565b4260e0525b60805160a05160e05160c051808210611a925780820390509050808202821582848304141715611a925790509050808210611a92578082039050905060805260a05161012051808210611a92578082039050905060a05260e05160c0524260e051186110f0576110fb565b600101818118610ff5575b5050608051815260a051602082015260c0516040820152505b565b60603660803760605161114e57600460405160205260005260406000208054608052600181015460a052600281015460c05250611175565b600260405160205260005260406000208054608052600181015460a052600281015460c052505b60c051611181574260c0525b4260c051186111a557608051815260a051602082015260c051604082015250611374565b600060e05260c05162093a808082049050905062093a80808202821582848304141715611a92579050905061010052600060ff905b80610120526101005162093a808181830110611a9257808201905090506101005260006101405261010051421061126a5760605161123e57600560405160205260005260406000208061010051602052600052604060002090505461014052611270565b600360405160205260005260406000208061010051602052600052604060002090505461014052611270565b42610100525b60a0516101005160c051808210611a925780820390509050808202821582848304141715611a9257905090506101605260e051610160518181830110611a92578082019050905060e05260805161016051808210611a92578082039050905060805260a05161014051808210611a92578082039050905060a0526101005160c0524261010051186113005761130b565b6001018181186111da575b50506060511561131c576000611324565b600060e05114155b1561135d5760006040517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60e051610120526020610120a35b608051815260a051602082015260c0516040820152505b565b6370a0823161018052610140516101a0526020610180602461019c6020611ad76000396000515afa6113ad573d600060003e3d6000fd5b60203d10611a925761018051610160526101405160405260016060526113d46101e0610f37565b6101e080516101805260208101516101a05260408101516101c0525061016051610180516101a051426101c051808210611a925780820390509050808202821582848304141715611a925790509050808210611a925780820390509050808210611a9257808203905090506101605261014051604052600060605261145a6101e0610f37565b6101e080516101805260208101516101a05260408101516101c0525061016051610180516101a051426101c051808210611a925780820390509050808202821582848304141715611a925790509050808210611a9257808203905090508181830110611a9257808201905090506101605261016051815250565b6101a051610180516102205260006102405260016102005260006002905b602081026102200151831861150c57600061020052611517565b6001018181186114f2575b505061020051905015611a925760006101c05114611a9257426101e0511115611a92576101e05162093a8080820690509050611a925763adc635896102005261018051610220526020610200602461021c6020611ad76000396000515afa611584573d600060003e3d6000fd5b60203d10611a9257610200516101e05111611a92576101805160405260016060526115b0610260611116565b610260805161020052602081015161022052604081015161024052506370a082316102605261018051610280526020610260602461027c6020611ad76000396000515afa611603573d600060003e3d6000fd5b60203d10611a92576102605161020051610220514261024051808210611a925780820390509050808202821582848304141715611a925790509050808210611a925780820390509050808210611a9257808203905090506101c05111611a92576101c0516101e05142808210611a925780820390509050808015611a925782049050905061026052610260516101e05142808210611a925780820390509050808202821582848304141715611a9257905090506102805261020051610280518181830110611a9257808201905090506102005261022051610260518181830110611a925780820190509050610220526002610180516020526000526040600020610200518155610220516001820155610240516002820155506003610180516020526000526040600020806101e051602052600052604060002090508054610260518181830110611a9257808201905090508155506101a051604052600060605261176f6102a0611116565b6102a08051610200526020810151610220526040810151610240525061020051610280518181830110611a9257808201905090506102005261022051610260518181830110611a9257808201905090506102205260046101a05160205260005260406000206102005181556102205160018201556102405160028201555060056101a0516020526000526040600020806101e051602052600052604060002090508054610260518181830110611a9257808201905090508155506101a051610180517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6101c0516102a05260206102a0a36101a051610180517f9c0aa947e19ab1e2400ff167e2cb40414b570fdaf31ab646a16749ca3c4301ad610280516102a052610260516102c052426102e05260606102a0a360046101805160205260005260406000206101805160405260006060526118cc6102a0611116565b6102a0805182556020810151600183015560408101516002830155505060026101a05160205260005260406000206101a05160405260016060526119116102a0611116565b6102a08051825560208101516001830155604081015160028301555050565b600661030051602052600052604060002054611a92576103005160601c8060a01c611a925761018052636352211e6103205261030051610340526020610320602461033c6020611a976000396000515afa611990573d600060003e3d6000fd5b60203d10611a9257610320518060a01c611a925761036052610360516101a05263f01e4f0b61038052610300516103a0526020610380602461039c6020611a976000396000515afa6119e7573d600060003e3d6000fd5b60203d10611a9257610380518060008112611a925790506101c052636d1ac9b56103c052610300516103e05260206103c060246103dc6020611a976000396000515afa611a39573d600060003e3d6000fd5b60203d10611a92576103c0516101e052611a516114d4565b6001600661030051602052600052604060002055610300517fd5837b673ffaac69230366d3f7eb7cb2ba2b9fd8f2d4e9d0f5e92d3756b1d5466000610320a2565b600080fd005b600080fd0000000000000000000000007af980bdbc36d21ce228efabcca35707566a2be500000000000000000000000033a99dcc4c85c014cf12626959111d5898bbcabf

Deployed Bytecode

0x600436101561000d57610f31565b60003560e01c34611a925763a2114cdb811861002d573361032052610048565b63b4b3c2498118610154576064358060a01c611a9257610320525b6004358060a01c611a92576103005233610320511461012c57600061032051602052600052604060002080336020526000526040600020905054610340527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610340511461012c5761034051602435808210611a92578082039050905060006103205160205260005260406000208033602052600052604060002090505533610320517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92561034051602435808210611a925780820390509050610360526020610360a35b6103205161018052610300516101a0526024356101c0526044356101e0526101526114d4565b005b63454b06088118610170576004356103005261016e611930565b005b638ce8dd9781186101d25760006010905b80610400526020610400516010811015611a925702600401356101a3576101ce565b6020610400516010811015611a92570260040135610300526101c3611930565b600101818118610181575b5050005b637de680618118610278576004358060a01c611a92576101805260026101805160205260005260406000206101805160405260016060526102146101a0611116565b6101a0805182556020810151600183015560408101516002830155505060046101805160205260005260406000206101805160405260006060526102596101a0611116565b6101a08051825560208101516001830155604081015160028301555050005b63095ea7b381186102ef576004358060a01c611a92576040526024356000336020526000526040600020806040516020526000526040600020905055604051337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560243560605260206060a3600160605260206060f35b63d505accf811861076b576004358060a01c611a92576040526024358060a01c611a92576060526084358060081c611a925760805260643542111561038b57601160a0527f455850495245445f5349474e415455524500000000000000000000000000000060c05260a05060a0518060c00181600003601f1636823750506308c379a06060526020608052601f19601f60a0510116604401607cfd5b600160405160205260005260406000205460a05260006002610360527f1901000000000000000000000000000000000000000000000000000000000000610380526103608051602082018361058001815181525050808301925050506020611ab76000396000518161058001526020810190507f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c96104a0526040516104c0526060516104e0526044356105005260a051610520526064356105405260c0610480526104808051602082012090508161058001526020810190508061056052610560905080516020820120905060c05260006040513b116105375760405160c051610180526080516101a05260a4356101c05260c4356101e05260206000608061018060015afa50600051186104c657600060405114156104c9565b60005b6106e3576011610220527f494e56414c49445f5349474e4154555245000000000000000000000000000000610240526102205061022051806102400181600003601f1636823750506308c379a06101e052602061020052601f19601f6102205101166044016101fcfd6106e3565b600060a4356101805260c4356101a05260406101605261016080516020820183610240018281848460045afa90505050808301925050506080516101c0526101c06020602011611a9257601f81018051610200525060016101e0526101e090508051602082018361024001815181525050808301925050508061022052610220905080518060e0526020820181610100838360045afa9050905050507f1626ba7e00000000000000000000000000000000000000000000000000000000631626ba7e61016052604060c05161018052806101a052806101800160e0518082526020820181818361010060045afa90505050805180602083010181600003601f163682375050601f19601f82516020010116905081015050602061016060c461017c6040515afa61066c573d600060003e3d6000fd5b60203d10611a925761016051146106e3576011610240527f494e56414c49445f5349474e4154555245000000000000000000000000000000610260526102405061024051806102600181600003601f1636823750506308c379a061020052602061022052601f19601f61024051011660440161021cfd5b6044356000604051602052600052604060002080606051602052600052604060002090505560a05160018181830110611a92578082019050905060016040516020526000526040600020556060516040517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560443560e052602060e0a3600160e052602060e0f35b63395093518118610818576004358060a01c611a925760405260003360205260005260406000208060405160205260005260406000209050546024358181830110611a9257808201905090506060526060516000336020526000526040600020806040516020526000526040600020905055604051337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560605160805260206080a3600160805260206080f35b63a457c2d781186108c3576004358060a01c611a92576040526000336020526000526040600020806040516020526000526040600020905054602435808210611a9257808203905090506060526060516000336020526000526040600020806040516020526000526040600020905055604051337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560605160805260206080a3600160805260206080f35b6370a0823181186108f7576004358060a01c611a925761024052602061024051610140526108f2610260611376565b610260f35b63bbf7408a811861092b576004358060a01c611a92576102405260206102405161014052610926610260611376565b610260f35b6318160ddd81186109705760206318160ddd604052602060406004605c6020611ad76000396000515afa610964573d600060003e3d6000fd5b60203d10611a92576040f35b630a767cc68118610a05576004358060a01c611a9257610140526101405160405260016060526109a16101c0610f37565b6101c080516101605260208101516101805260408101516101a052506101605161018051426101a051808210611a925780820390509050808202821582848304141715611a925790509050808210611a9257808203905090506101c05260206101c0f35b6322c18bb68118610a9a576004358060a01c611a925761014052610140516040526000606052610a366101c0610f37565b6101c080516101605260208101516101805260408101516101a052506101605161018051426101a051808210611a925780820390509050808202821582848304141715611a925790509050808210611a9257808203905090506101c05260206101c0f35b63ca8309468118610b80576004358060a01c611a925761014052610140516040526001606052610acb6101c0610f37565b6101c080516101605260208101516101805260408101516101a052506370a082316101c052610140516101e05260206101c060246101dc6020611ad76000396000515afa610b1e573d600060003e3d6000fd5b60203d10611a92576101c0516101605161018051426101a051808210611a925780820390509050808202821582848304141715611a925790509050808210611a925780820390509050808210611a925780820390509050610200526020610200f35b6306fdde038118610c005760208060805260136040527f566f74652d457363726f77656420426f6f7374000000000000000000000000006060526040816080018151808252602083016020830181518152505050805180602083010181600003601f163682375050601f19601f8251602001011690509050810190506080f35b6395d89b418118610c805760208060805260076040527f7665426f6f7374000000000000000000000000000000000000000000000000006060526040816080018151808252602083016020830181518152505050805180602083010181600003601f163682375050601f19601f8251602001011690509050810190506080f35b63313ce5678118610c9657601260405260206040f35b635d14140a8118610cb5576020611a9760003960005160405260206040f35b6354fd4d508118610d355760208060805260066040527f76322e302e3000000000000000000000000000000000000000000000000000006060526040816080018151808252602083016020830181518152505050805180602083010181600003601f163682375050601f19601f8251602001011690509050810190506080f35b633644e5158118610d54576020611ab760003960005160405260206040f35b63c863657d8118610d73576020611ad760003960005160405260206040f35b63dd62ed3e8118610dc5576004358060a01c611a92576040526024358060a01c611a92576060526000604051602052600052604060002080606051602052600052604060002090505460805260206080f35b637ecebe008118610df8576004358060a01c611a9257604052600160405160205260005260406000205460605260206060f35b63f3598ad98118610e3d576004358060a01c611a92576040526002604051602052600052604060002080546060526001810154608052600281015460a0525060606060f35b63356a46808118610e81576004358060a01c611a92576040526003604051602052600052604060002080602435602052600052604060002090505460605260206060f35b63df0cb9348118610ec6576004358060a01c611a92576040526004604051602052600052604060002080546060526001810154608052600281015460a0525060606060f35b635ad600c98118610f0a576004358060a01c611a92576040526005604051602052600052604060002080602435602052600052604060002090505460605260206060f35b630e359f168118610f2f57600660043560205260005260406000205460405260206040f35b505b60006000fd5b606036608037606051610f6f57600460405160205260005260406000208054608052600181015460a052600281015460c05250610f96565b600260405160205260005260406000208054608052600181015460a052600281015460c052505b60c051610fa2574260c0525b4260c05118610fc657608051815260a051602082015260c051604082015250611114565b60c05162093a808082049050905062093a80808202821582848304141715611a92579050905060e052600060ff905b806101005260e05162093a808181830110611a92578082019050905060e05260006101205260e05142106110805760605161105557600560405160205260005260406000208060e051602052600052604060002090505461012052611085565b600360405160205260005260406000208060e051602052600052604060002090505461012052611085565b4260e0525b60805160a05160e05160c051808210611a925780820390509050808202821582848304141715611a925790509050808210611a92578082039050905060805260a05161012051808210611a92578082039050905060a05260e05160c0524260e051186110f0576110fb565b600101818118610ff5575b5050608051815260a051602082015260c0516040820152505b565b60603660803760605161114e57600460405160205260005260406000208054608052600181015460a052600281015460c05250611175565b600260405160205260005260406000208054608052600181015460a052600281015460c052505b60c051611181574260c0525b4260c051186111a557608051815260a051602082015260c051604082015250611374565b600060e05260c05162093a808082049050905062093a80808202821582848304141715611a92579050905061010052600060ff905b80610120526101005162093a808181830110611a9257808201905090506101005260006101405261010051421061126a5760605161123e57600560405160205260005260406000208061010051602052600052604060002090505461014052611270565b600360405160205260005260406000208061010051602052600052604060002090505461014052611270565b42610100525b60a0516101005160c051808210611a925780820390509050808202821582848304141715611a9257905090506101605260e051610160518181830110611a92578082019050905060e05260805161016051808210611a92578082039050905060805260a05161014051808210611a92578082039050905060a0526101005160c0524261010051186113005761130b565b6001018181186111da575b50506060511561131c576000611324565b600060e05114155b1561135d5760006040517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60e051610120526020610120a35b608051815260a051602082015260c0516040820152505b565b6370a0823161018052610140516101a0526020610180602461019c6020611ad76000396000515afa6113ad573d600060003e3d6000fd5b60203d10611a925761018051610160526101405160405260016060526113d46101e0610f37565b6101e080516101805260208101516101a05260408101516101c0525061016051610180516101a051426101c051808210611a925780820390509050808202821582848304141715611a925790509050808210611a925780820390509050808210611a9257808203905090506101605261014051604052600060605261145a6101e0610f37565b6101e080516101805260208101516101a05260408101516101c0525061016051610180516101a051426101c051808210611a925780820390509050808202821582848304141715611a925790509050808210611a9257808203905090508181830110611a9257808201905090506101605261016051815250565b6101a051610180516102205260006102405260016102005260006002905b602081026102200151831861150c57600061020052611517565b6001018181186114f2575b505061020051905015611a925760006101c05114611a9257426101e0511115611a92576101e05162093a8080820690509050611a925763adc635896102005261018051610220526020610200602461021c6020611ad76000396000515afa611584573d600060003e3d6000fd5b60203d10611a9257610200516101e05111611a92576101805160405260016060526115b0610260611116565b610260805161020052602081015161022052604081015161024052506370a082316102605261018051610280526020610260602461027c6020611ad76000396000515afa611603573d600060003e3d6000fd5b60203d10611a92576102605161020051610220514261024051808210611a925780820390509050808202821582848304141715611a925790509050808210611a925780820390509050808210611a9257808203905090506101c05111611a92576101c0516101e05142808210611a925780820390509050808015611a925782049050905061026052610260516101e05142808210611a925780820390509050808202821582848304141715611a9257905090506102805261020051610280518181830110611a9257808201905090506102005261022051610260518181830110611a925780820190509050610220526002610180516020526000526040600020610200518155610220516001820155610240516002820155506003610180516020526000526040600020806101e051602052600052604060002090508054610260518181830110611a9257808201905090508155506101a051604052600060605261176f6102a0611116565b6102a08051610200526020810151610220526040810151610240525061020051610280518181830110611a9257808201905090506102005261022051610260518181830110611a9257808201905090506102205260046101a05160205260005260406000206102005181556102205160018201556102405160028201555060056101a0516020526000526040600020806101e051602052600052604060002090508054610260518181830110611a9257808201905090508155506101a051610180517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6101c0516102a05260206102a0a36101a051610180517f9c0aa947e19ab1e2400ff167e2cb40414b570fdaf31ab646a16749ca3c4301ad610280516102a052610260516102c052426102e05260606102a0a360046101805160205260005260406000206101805160405260006060526118cc6102a0611116565b6102a0805182556020810151600183015560408101516002830155505060026101a05160205260005260406000206101a05160405260016060526119116102a0611116565b6102a08051825560208101516001830155604081015160028301555050565b600661030051602052600052604060002054611a92576103005160601c8060a01c611a925761018052636352211e6103205261030051610340526020610320602461033c6020611a976000396000515afa611990573d600060003e3d6000fd5b60203d10611a9257610320518060a01c611a925761036052610360516101a05263f01e4f0b61038052610300516103a0526020610380602461039c6020611a976000396000515afa6119e7573d600060003e3d6000fd5b60203d10611a9257610380518060008112611a925790506101c052636d1ac9b56103c052610300516103e05260206103c060246103dc6020611a976000396000515afa611a39573d600060003e3d6000fd5b60203d10611a92576103c0516101e052611a516114d4565b6001600661030051602052600052604060002055610300517fd5837b673ffaac69230366d3f7eb7cb2ba2b9fd8f2d4e9d0f5e92d3756b1d5466000610320a2565b600080fd0000000000000000000000007af980bdbc36d21ce228efabcca35707566a2be54b00fdb09ace3c737853170c0ae96bb09ed9d9bd1cd61ea38b6191e58a874e4100000000000000000000000033a99dcc4c85c014cf12626959111d5898bbcabf

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

0000000000000000000000007af980bdbc36d21ce228efabcca35707566a2be500000000000000000000000033a99dcc4c85c014cf12626959111d5898bbcabf

-----Decoded View---------------
Arg [0] : _boost_v1 (address): 0x7AF980bDBc36D21CE228EfABCCA35707566A2be5
Arg [1] : _ve (address): 0x33A99Dcc4C85C014cf12626959111D5898bbCAbF

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000007af980bdbc36d21ce228efabcca35707566a2be5
Arg [1] : 00000000000000000000000033a99dcc4c85c014cf12626959111d5898bbcabf


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

Txn Hash Block Value Eth2 PubKey Valid
View All Deposits
[ 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.