For the complete documentation index, see llms.txt. This page is also available as Markdown.

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:

  1. Access Control: Restricts setAssuranceLockParameters and setMinLockVeEywa calls to the owner of contract(owner()).

  2. 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(...)

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

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