Skip to content

Admin Controls

The CurveOwnershipAgent is the current admin of the VotingEscrow. As such, a change to these parameters would require a successfully passed DAO vote.

Changing SmartWalletChecker

commit_smart_wallet_checker

VotingEscrow.commit_smart_wallet_checker(addr: address):

Guarded Method

This function is only callable by the admin of the contract.

Function to commit a new smart wallet checker contract address to addr. Changes need to be applied via apply_smart_contract_wallet.

Input Type Description
addr address New SmartWalletChecker Contract
Source code
future_smart_wallet_checker: public(address)

@external
def commit_smart_wallet_checker(addr: address):
    """
    @notice Set an external contract to check for approved smart contract wallets
    @param addr Address of Smart contract checker
    """
    assert msg.sender == self.admin
    self.future_smart_wallet_checker = addr  
>>> VotingEscrow.commit_smart_wallet_checker("new SmartWalletChecker contract")

apply_smart_wallet_checker

VotingEscrow.apply_smart_wallet_checker():

Guarded Method

This function is only callable by the admin of the contract.

Function to apply the new SmartWalletChecker address.

Source code
future_smart_wallet_checker: public(address)
smart_wallet_checker: public(address)

@external
def apply_smart_wallet_checker():
    """
    @notice Apply setting external contract to check approved smart contract wallets
    """
    assert msg.sender == self.admin
    self.smart_wallet_checker = self.future_smart_wallet_checker
>>> VotingEscrow.apply_smart_wallet_checker():

Admin Ownership

commit_transfer_ownership

VotingEscrow.commit_transfer_ownership(addr: address):

Guarded Method

This function is only callable by the admin of the contract.

Function to commit the ownership of the contract to addr. Changes need to be applied via apply_transfer_ownership

Emits: CommitOwnership

Input Type Description
addr address address commit the transfer of ownership to
Source code
event CommitOwnership:
    admin: address

admin: public(address)  # Can and will be a smart contract
future_admin: public(address)

@external
def commit_transfer_ownership(addr: address):
    """
    @notice Transfer ownership of VotingEscrow contract to `addr`
    @param addr Address to have ownership transferred to
    """
    assert msg.sender == self.admin  # dev: admin only
    self.future_admin = addr
    log CommitOwnership(addr)   
>>> VotingEscrow.commit_transfer_ownership("0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"):

apply_transfer_ownership

VotingEscrow.apply_transfer_ownership():

Guarded Method

This function is only callable by the admin of the contract.

Function to apply the new ownership.

Emits: ApplyOwnership

Source code
event ApplyOwnership:
    admin: address

admin: public(address)  # Can and will be a smart contract
future_admin: public(address)

@external
def apply_transfer_ownership():
    """
    @notice Apply ownership transfer
    """
    assert msg.sender == self.admin  # dev: admin only
    _admin: address = self.future_admin
    assert _admin != ZERO_ADDRESS  # dev: admin not set
    self.admin = _admin
    log ApplyOwnership(_admin)  
>>> VotingEscrow.apply_transfer_ownership():