EYWA
  • Eywa v2
    • πŸ’₯Eywa v2: new era of Web3 interoperability
  • Eywa token
    • πŸ’ŽTokenomics Eywa/CrossCurve
    • πŸ“ˆEywa token utility
    • ⚑Eywa NFT Collection
      • Eywa NFT Bridge from Aurora to Arbitrum
      • Merge interface in the Arbitrum chain
      • EYWA NFT Manager interface
      • Dashboard interface
    • 🏒Eywa DAO
      • Overview of EYWA DAO
      • Voting
      • Obtaining veEYWA and Calculating the Boost
      • Staking
  • EYWA Ecosystem
    • πŸ’‘Vision
    • πŸ—ΊοΈProduct & EYWA token Roadmap
    • πŸ—οΈProducts
      • Eywa v1
        • Cross-chain Liquidity Protocol
          • Cross-chain DEX v1
          • Eywa Token Bridge
          • Gasless transactions
        • Cross-chain Data Protocol
          • Eywa CDP Introduction
          • Eywa Oracle Network
          • Data transfer flow
      • Eywa v2
        • πŸŒ‰Consensus Bridge
        • ⚑CrossCurve
    • πŸ›‘οΈSecurity audits
    • 🧠Team
    • πŸ¦„Project History
    • πŸ”—External Links
    • ❓FAQ
  • User documentation
    • πŸ’ΈEywa DEX
      • About EYWA Cross-chain DEX
      • Interface Eywa WebApp
      • How to trade
      • Slippage settings
      • Routing
      • Operation Interruption
        • Slippage condition
        • Data transfer error
    • 🏒DAO
      • EYWA Locker Interface
      • Working with the EYWA Locker contract in Arbiscan.
      • EYWA Vote Interface
      • EYWA Incentives Interface
    • πŸ”—Contracts addresses
      • Cross-chain Liquidity Protocol
        • CLP smart-contracts
        • Supported stablecoins
        • Addresses of Eywa stableswap pools
        • Addresses of s-tokens
        • Addresses of e-tokens
      • Cross-chain Data Protocol
        • Governance of Eywa Oracle network
        • Cross-chain messaging
  • DEVELOPER DOCUMENTATION
    • πŸ’»Guide for Developers
      • Technical Documentation for EYWA DAO Smart Contracts
        • EmissionManagerV1
        • EscrowManager
        • EscrowVoteManagerV1
        • GaugeFactoryV1
        • GaugeV1
        • IncentiveRewardsDistributor
        • ProposalManager
        • RebaseRewardsDistributorV1
        • RewardsDistributorFactoryV1
        • CalldataHelperV1
        • Treasury
        • DelegationManagerV1
        • DelegationConditionValidatorV1
        • LockHolderFactoryV1
        • LockHolderV1
  • Eywa Oracle Network - will be ENDED in April 2024
    • πŸ₯‡Validators token distribution
    • Incentivised PoA mainnet
      • General information
      • Application for participation in PoA mainnet
      • Requirements for PoA mainnet validators
      • Rewards for PoA mainnet
      • Instruction for node operators
    • FAQ
  • βš–οΈLEGAL INFORMATION
    • Terms of Service
    • Protocol Disclaimer
    • Cookies Policy
    • Risk of using Eywa
Powered by GitBook
On this page
  • Overview
  • Inherited Contracts and Interfaces
  • State Variables
  • Constructor
  • External Functions (Defined by ILockHolderFactoryV1)
  • Events
  • Errors
  • Summary
  1. DEVELOPER DOCUMENTATION
  2. Guide for Developers
  3. Technical Documentation for EYWA DAO Smart Contracts

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

constructor() {
    _disableInitializers();
}
  • Description: Disables contract initializers to prevent re-initialization in a UUPS proxy context.


External Functions (Defined by ILockHolderFactoryV1)

initialize(...)

function initialize(
    address owner_, 
    address escrowManager_,
    address escrowVoteManager_,
    address delegationManager_,
    address incentiveRewardsAggregator_
) external initializer;

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

function createLockHolder() external returns (address);

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.

PreviousDelegationConditionValidatorV1NextLockHolderV1

Last updated 1 month ago

πŸ’»