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  
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
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)   
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)