LockHolderFactoryV1
Overview
LockHolderFactoryV1 This is an upgradeable contract that deploys new LockHolder contracts on the blockchain. It is integrated with the DelegationManager contract.
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.
ILockHolderFactoryV1: Defines core methods (e.g.,
createLockHolder
) and events for this contract.
Additional External References:
ERC1967Proxy (OpenZeppelin): A proxy implementation that stores the logic contract address in storage per EIP-1967.
LockHolderV1: LockHolder contract.
State Variables
s_escrowManager (address)
Address of the EscrowManager contract.s_escrowVoteManager (address)
Address of the EscrowVoteManager contract.s_delegationManager (address)
Address of the DelegationManager contract.s_incentiveRewardsAggregator (address)
Address of the IncentiveRewardsAggregator contract.
Constructor
Description: Disables contract initializers to prevent re-initialization in a UUPS proxy context.
External Functions (Defined by ILockHolderFactoryV1)
initialize(...)
initialize(...)
Description: Configures ownership, references, and initial state:
References the EYWA NFT, escrow manager, escrow vote manager and delegation manager.
Parameters:
owner_
: The address of the contract owner.escrowManager_
: The address of the escrow manager contract.escrowVoteManager_
: The address of the escrow vote manager contract.delegationManager_
: The address of the delegation manager contract.incentiveRewardsAggregator_
: The address of the incentive rewards aggregator contract.
createLockHolder()
createLockHolder()
Description: The function deploys and initializes an upgradable LockHolder contract. Returns the address of the LockHolder contract.
Checks:
sender must be a DelegationManager contract. Otherwise,
UnauthorizedCaller()
is thrown.
Events:
Emits
LockHolderCreated(m_lockHolder, m_implementation)
.
Events
LockHolderCreated(address indexed lockHolder, address indexed implementation))
Emitted when a new LockHolder is created.
Errors
UnauthorizedCaller()
Thrown when the caller is not the delegation manager.
Summary
LockHolderFactoryV1 contract is an important part of the lock delegation architecture. It deploys a new LockHolder contract for each delegator-delegate pair, which provides the ability to reliably track the movement of delegated locks, manage them, and receive and distribute rewards.
Last updated