DelegationConditionValidatorV1
Overview
DelegationConditionValidatorV1 This is an upgradeable contract that allows you to set additional conditions for delegating locks. It is integrated with EscrowManager, which allows you to know the current status of the lock when delegating it.
Key Roles and Features:
Access Control: Restricts setAssuranceLockParameters and setMinLockVeEywa calls to the owner of contract(
owner()
).Upgradeable via UUPS: Uses UUPSUpgradeable and OwnableUpgradeable patterns, restricting contract upgrades to the owner.
Inherited Contracts and Interfaces
UUPSUpgradeable (OpenZeppelin): Provides upgrade functionality under the UUPS proxy pattern, restricted to the contract owner.
OwnableUpgradeable (OpenZeppelin): Manages ownership, allowing only the owner to modify critical parameters and authorize upgrades.
IDelegationConditionValidatorV1: Defines core methods (e.g.,
validateDelegations
) and events for this contract.
Additional External References:
IDelegationManagerV1: Management of delegated locks
IEscrowManagerExtended: Holds locked token data and checks voting power and freeze logic.
State Variables
s_escrowManager (IEscrowManagerExtended)
IEscrowManager interface for the EscrowManager contract.s_delegationManager (IDelegationManagerV1)
IDelegationManagerV1 for the DelegationManager contract.
Constructor
Description: Disables contract initializers to prevent re-initialization in a UUPS proxy context.
External Functions (Defined by IDelegationConditionValidatorV1)
initialize(...)
initialize(...)
Description: Configures ownership, references, and initial state:
References the escrow manager and delegation manager.
Parameters:
owner_
: The address of the contract owner.escrowManager_
: The IEscrowManager interface for the EscrowManager contract.delegationManager_
: The IDelegationManagerV1 for the DelegationManager contract.
validateDelegations(address delegator_, address delegatee_, uint256[] calldata tokenIds_)
validateDelegations(address delegator_, address delegatee_, uint256[] calldata tokenIds_)
Description:
The function performs checks and determines whether delegation of tokenIds_
from delegator_
to delegatee_
is possible.
Parameters:
delegator_
: The address of the contract owner.delegatee_
: The IEscrowManager interface for the EscrowManager contract.tokenIds_
: The IDelegationManagerV1 for the DelegationManager contract.
Checks:
sender must be a DelegationManager contract. Otherwise,
UnauthorizedCaller()
is thrown
Errors
UnauthorizedCaller()
Thrown when the caller is not authorized to perform the action.
Summary
DelegationConditionValidatorV1 Being updatable in the long run can provide the opportunity for varied and flexible customization for delegated locks.
Last updated