AltLayer Documentation
  • 👋Welcome
    • Overview
  • Restaked Rollups
    • VITAL for Decentralised Verification
      • Tier-1 Finality
      • Tier-2 Finality
      • Tier-3 Finality
    • MACH for Faster Finality
      • Interoperability via MACH
    • SQUAD for Decentralised Sequencing
    • Staking of dApp Token
  • Wizard
    • Introduction
    • Technical overview
    • Create AVS
    • Manage AVS
    • Operator management
    • Hosted operator API (BLS based)
    • Custom AVS specification
      • Constructor specification requirements
      • Import Externally-Deployed AVS
    • Report bug or submit a feature request
  • Autonome
    • Deploy AI Agent
    • Autonome API guide
    • Uploading your own agent framework
    • Twitter/X login troubleshooting guide
  • ♾️AltLayer-Facilitated Actively Validated Services
    • Overview
    • AltLayer MACH AVS
      • Operator Guide
      • User Delegation Guide
    • Cyber MACH AVS for Cyber L2
      • Operator Guide
      • User Delegation Guide
    • DODOchain MACH AVS for DODO Chain
      • Operator Guide
      • User Delegation Guide
    • Fast Finality Layer for Soneium
      • Operator Guide
      • User Delegation Guide
    • Xterio MACH AVS for Xterio Chain
      • Operator Guide
      • User Delegation Guide
  • Upgrade Guide
  • 🥩ALT Restaking
    • Staking Info & Parameters
    • Restake ALT
    • Delegating reALT
    • Check and Claim Staking Rewards
    • Unstake ALT
    • Migration from Xterio (Legacy) ALT Pool to Xterio Restaked ALT Pool
    • Testnet reALT faucet
  • Rollup-as-a-Service
    • What is Rollup-as-a-Service (RaaS)?
    • AltLayer's RaaS Offering
    • RaaS Onboarding Guide
      • Optimism Rollup FAQ
      • Arbitrum Rollup FAQ
    • AltLayer Ecosystem
    • Clients in the Spotlight
    • Pricing Model
  • External Integrations
    • Account Abstraction using Biconomy
    • Enabling permissionless interoperability on AltLayer Rollup with Hyperlane
      • Deplying Hyperlane Warp Routes for ERC20 Token Bridging
      • Running Off-chain Agents
      • Setting up the bridging UI
    • Cross-chain Interoperability using Celer
      • Fungible Token Bridging
      • Non-fungible Token Bridging
      • Generic Message Passing
      • cBridge SDK
  • AltLayer's In-House Rollup Stack in Depth
    • How does AltLayer's in-house rollup stack work?
    • Decentralized Sequencer Set
    • Security via Fraud Proof
  • Rollup Types
    • Flash Layer Rollups
      • Example Use cases
        • NFT Mint Events
        • Games
        • Event Ticketing
    • Persistent Rollups
  • Core Features of AltLayer's In-House Rollup Stack
    • Modular
    • Elastic
    • Multi-VM Support
    • Fraud Proofs
    • Decentralized Sequencers
    • Tiered-Finality
  • FlashLayer Showcase
    • AltLayer's POAP NFTs Collection Mint
      • Performance Test in the Wild
    • Dark Forest Community Round
    • Oh Ottie! NFT Collection Mint
    • Dark Forest Community Round for Jump Crypto's Pit Event
    • Ottie 2048
    • Other demos
      • Fraud Proof Demo
      • Flash Layer Demo
      • Rollup Launchpad Demo
      • FlashGPT Demo
  • Implementation Status
    • Roadmap
    • Development Status
  • Community & Support
    • Community
    • Support
Powered by GitBook
On this page
  • ECDSA based AVS
  • BLS based AVS
  1. Wizard
  2. Custom AVS specification

Constructor specification requirements

PreviousCustom AVS specificationNextImport Externally-Deployed AVS

Last updated 7 months ago

To use WIZARD to deploy your custom contract code, the following convention must be met for WIZARD to support it.

ECDSA based AVS

The ECDSAServiceManagerBase constructor is responsible for initializing key contract addresses and disabling initializers. The mandatory arguments are:

  • AVS Directory (_avsDirectory): Manages AVS-related data for registered operators.

  • Stake Registry (_stakeRegistry): Records registration and staking details.

  • Rewards Coordinator (_rewardsCoordinator): Handles reward distributions.

  • Delegation Manager (_delegationManager): Manages staker delegations to operators.

The code snippet below shows how these parameters are set:

constructor(
    address _avsDirectory,
    address _stakeRegistry,
    address _rewardsCoordinator,
    address _delegationManager
) {
    avsDirectory = _avsDirectory;
    stakeRegistry = _stakeRegistry;
    rewardsCoordinator = _rewardsCoordinator;
    delegationManager = _delegationManager;
    _disableInitializers();
}

BLS based AVS

The ServiceManagerBase constructor sets various immutable addresses. The mandatory arguments are:

  • AVS Directory (__avsDirectory)

  • Rewards Coordinator (__rewardsCoordinator)

  • Registry Coordinator (__registryCoordinator)

  • Stake Registry (__stakeRegistry)

The constructor calls the base storage initializer and then disables further initializers.

constructor(
    IAVSDirectory __avsDirectory,
    IRewardsCoordinator __rewardsCoordinator,
    IRegistryCoordinator __registryCoordinator,
    IStakeRegistry __stakeRegistry
)
    ServiceManagerBaseStorage(
        __avsDirectory,
        __rewardsCoordinator,
        __registryCoordinator,
        __stakeRegistry
    )
{
    _disableInitializers();
}

eigenlayer-middleware/src/unaudited/ECDSAServiceManagerBase.sol
eigenlayer-middleware/src/ServiceManagerBase.sol