ETH Price: $2,921.77 (+2.84%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
0x60206105142850962022-02-27 0:52:10985 days ago1645923130IN
 Contract Creation
0 ETH0.0101329527.77407842

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0xB250A90D...ddF220BD6
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
Vyper_contract

Compiler Version
vyper:0.3.1

Optimization Enabled:
N/A

Other Settings:
MIT license

Contract Source Code (Vyper language format)

# @version 0.3.1
"""
@title Voting Escrow Delegation Proxy
@author Curve Finance
@license MIT
"""

from vyper.interfaces import ERC20


interface VeDelegation:
    def adjusted_balance_of(_account: address) -> uint256: view


event CommitAdmins:
    ownership_admin: address
    emergency_admin: address

event ApplyAdmins:
    ownership_admin: address
    emergency_admin: address

event DelegationSet:
    delegation: address

delegation: public(address)
voting_escrow: public(address)

emergency_admin: public(address)
ownership_admin: public(address)
future_emergency_admin: public(address)
future_ownership_admin: public(address)


@external
def __init__(_delegation: address, _voting_escrow: address, _o_admin: address, _e_admin: address):
    self.delegation = _delegation
    self.voting_escrow = _voting_escrow

    self.ownership_admin = _o_admin
    self.emergency_admin = _e_admin

    log DelegationSet(_delegation)


@view
@external
def adjusted_balance_of(_account: address) -> uint256:
    """
    @notice Get the adjusted veCRV balance from the active boost delegation contract
    @param _account The account to query the adjusted veCRV balance of
    @return veCRV balance
    """
    _delegation: address = self.delegation
    if _delegation == ZERO_ADDRESS:
        return ERC20(self.voting_escrow).balanceOf(_account)
    return VeDelegation(_delegation).adjusted_balance_of(_account)


@external
def kill_delegation():
    """
    @notice Set delegation contract to 0x00, disabling boost delegation
    @dev Callable by the emergency admin in case of an issue with the delegation logic
    """
    assert msg.sender in [self.ownership_admin, self.emergency_admin]

    self.delegation = ZERO_ADDRESS
    log DelegationSet(ZERO_ADDRESS)


@external
def set_delegation(_delegation: address):
    """
    @notice Set the delegation contract
    @dev Only callable by the ownership admin
    @param _delegation `VotingEscrowDelegation` deployment address
    """
    assert msg.sender == self.ownership_admin

    # call `adjusted_balance_of` to make sure it works
    VeDelegation(_delegation).adjusted_balance_of(msg.sender)

    self.delegation = _delegation
    log DelegationSet(_delegation)


@external
def commit_set_admins(_o_admin: address, _e_admin: address):
    """
    @notice Set ownership admin to `_o_admin` and emergency admin to `_e_admin`
    @param _o_admin Ownership admin
    @param _e_admin Emergency admin
    """
    assert msg.sender == self.ownership_admin, "Access denied"

    self.future_ownership_admin = _o_admin
    self.future_emergency_admin = _e_admin

    log CommitAdmins(_o_admin, _e_admin)


@external
def apply_set_admins():
    """
    @notice Apply the effects of `commit_set_admins`
    """
    assert msg.sender == self.ownership_admin, "Access denied"

    _o_admin: address = self.future_ownership_admin
    _e_admin: address = self.future_emergency_admin
    self.ownership_admin = _o_admin
    self.emergency_admin = _e_admin

    log ApplyAdmins(_o_admin, _e_admin)

Contract Security Audit

Contract ABI

[{"name":"CommitAdmins","inputs":[{"name":"ownership_admin","type":"address","indexed":false},{"name":"emergency_admin","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"name":"ApplyAdmins","inputs":[{"name":"ownership_admin","type":"address","indexed":false},{"name":"emergency_admin","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"name":"DelegationSet","inputs":[{"name":"delegation","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"stateMutability":"nonpayable","type":"constructor","inputs":[{"name":"_delegation","type":"address"},{"name":"_voting_escrow","type":"address"},{"name":"_o_admin","type":"address"},{"name":"_e_admin","type":"address"}],"outputs":[]},{"stateMutability":"view","type":"function","name":"adjusted_balance_of","inputs":[{"name":"_account","type":"address"}],"outputs":[{"name":"","type":"uint256"}],"gas":9686},{"stateMutability":"nonpayable","type":"function","name":"kill_delegation","inputs":[],"outputs":[],"gas":26863},{"stateMutability":"nonpayable","type":"function","name":"set_delegation","inputs":[{"name":"_delegation","type":"address"}],"outputs":[],"gas":41901},{"stateMutability":"nonpayable","type":"function","name":"commit_set_admins","inputs":[{"name":"_o_admin","type":"address"},{"name":"_e_admin","type":"address"}],"outputs":[],"gas":78289},{"stateMutability":"nonpayable","type":"function","name":"apply_set_admins","inputs":[],"outputs":[],"gas":82241},{"stateMutability":"view","type":"function","name":"delegation","inputs":[],"outputs":[{"name":"","type":"address"}],"gas":2610},{"stateMutability":"view","type":"function","name":"voting_escrow","inputs":[],"outputs":[{"name":"","type":"address"}],"gas":2640},{"stateMutability":"view","type":"function","name":"emergency_admin","inputs":[],"outputs":[{"name":"","type":"address"}],"gas":2670},{"stateMutability":"view","type":"function","name":"ownership_admin","inputs":[],"outputs":[{"name":"","type":"address"}],"gas":2700},{"stateMutability":"view","type":"function","name":"future_emergency_admin","inputs":[],"outputs":[{"name":"","type":"address"}],"gas":2730},{"stateMutability":"view","type":"function","name":"future_ownership_admin","inputs":[],"outputs":[{"name":"","type":"address"}],"gas":2760}]

Deployed Bytecode

0x600436101561000d57610445565b60046000601c376000513461044b5763bbf7408a81186100d5576004358060a01c61044b5760e052600054610100526101005161008d576370a082316101205260e051610140526020610120602461013c6001545afa610072573d600060003e3d6000fd5b601f3d111561044b57610120516101605260206101606100d3565b63bbf7408a6101205260e051610140526020610120602461013c610100515afa6100bc573d600060003e3d6000fd5b601f3d111561044b57610120516101605260206101605bf35b634b74efb78118610167576003546101005260025461012052600060e05260e060c060006002818352015b60c0516020026101000151331861011a576001835261012a565b8151600101808352811415610100575b50505060e0511561044b5760006000557f963001cf3a0c5cdcfc26b2710abe2fe859b3565482158b7cb34f59b6eaff5212600060e052602060e0a1005b63f4b446a381186101f8576004358060a01c61044b5760e052600354331861044b5763bbf7408a6101005233610120526020610100602461011c60e0515afa6101b5573d600060003e3d6000fd5b601f3d111561044b576101005060e0516000557f963001cf3a0c5cdcfc26b2710abe2fe859b3565482158b7cb34f59b6eaff521260e051610100526020610100a1005b63e3a8d3ab81186102e3576004358060a01c61044b5760e0526024358060a01c61044b5761010052600354331461029e57600d610120527f4163636573732064656e696564000000000000000000000000000000000000006101405261012050610120518061014001818260206001820306601f82010390500336823750506308c379a060e0526020610100526101205160206001820306601f820103905060440160fcfd5b60e051600555610100516004557f8f5425b30e6270c1011973f0ccf6d7795cc10623631523e4c45d2837d337d57460e0516101205261010051610140526040610120a1005b636189392181186103b957600354331461036757600d60e0527f4163636573732064656e696564000000000000000000000000000000000000006101005260e05060e0518061010001818260206001820306601f82010390500336823750506308c379a060a052602060c05260e05160206001820306601f820103905060440160bcfd5b60055460e0526004546101005260e051600355610100516002557fe8d7597c306457cd1fa4eb0e165a1a4c3aea9808e274ea97c6b5d9f73a3c477f60e0516101205261010051610140526040610120a1005b63df5cf72381186103d05760005460e052602060e0f35b63dfe0503181186103e75760015460e052602060e0f35b63680c778381186103fe5760025460e052602060e0f35b6347c8715f81186104155760035460e052602060e0f35b635866507a811861042c5760045460e052602060e0f35b633c2fcbf481186104435760055460e052602060e0f35b505b60006000fd5b600080fd

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  ]

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.