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
  • V0.3.3 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
  • Minimal system requirements
  • Minimal stake requirements
  • Supported token strategy
  • Operator setup
  • Joining MACH AVS
  • Mach AVS Setup
  • Running MACH AVS
  • Helm chart
  • Facing issues?
  • Frequently ask questions
  1. AltLayer-Facilitated Actively Validated Services
  2. GM Network MACH AVS for GM Network

Operator Guide

Last updated 1 month ago

This guide contains the steps needed to set up and register your node for GM Network MACH AVS.

Minimal system requirements

  • 4 CPU

  • 16GB Memory

  • 50GB SSD

  • Ubuntu 24.04 LTS

  • v24 and above

  • EigenLayer CLI

  • Full node with RPC service or managed RPC services for the target rollup

Minimal stake requirements

πŸ’‘ For smooth onboarding of operators, we will set the initial stake requirement to be 0.

Supported token strategy

Beacon Chain Ether and all LSTs supported by EigenLayer are supported by our AVS.

Operator setup

Key generation and wallet funding

  1. Generate ECDSA and BLS keypair using the following command

eigenlayer operator keys create --key-type ecdsa [keyname]
eigenlayer operator keys create --key-type bls [keyname]

πŸ’‘ Please ensure you backup your private keys to a safe location. By default, the encrypted keys will be stored in ~/.eigenlayer/operator_keys/

  1. Fund at least 0.3 ETH to the ECDSA address generated. It will be required for node registration in the later steps.

Register on EigenLayer as an operator

πŸ’‘ You may skip the following steps if you are already a registered operator on the EigenLayer mainnet.

  1. Create the configuration files needed for operator registration using the following commands. Follow the step-by-step prompt. Once completed, operator.yaml and metadata.json will be created.

eigenlayer operator config create
  1. Edit metadata.json and fill in your operator's details.

{
  "name": "Example Operator",
  "website": "<https://example.com/>",
  "description": "Example description",
  "logo": "<https://example.com/logo.png>",
  "twitter": "<https://twitter.com/example>"
}
  1. If this is your first time registering this operator, run the following command to register and update your operator

    eigenlayer operator register operator.yaml
    

    Upon successful registration, you should see βœ… Operator is registered successfully to EigenLayer

    If you need to edit the metadata in the future, simply update metadata.json and run the following command

    eigenlayer operator update operator.yaml

You can also check the operator registration status using the following command.

eigenlayer operator status operator.yaml

Joining MACH AVS

Mach AVS Setup

Clone the Mach AVS repository

git clone https://github.com/alt-research/mach-avs-operator-setup.git
cd mach-avs-operator-setup/ethereum/mach-avs/gmnetwork

Opt-in and out of MACH AVS

For opt-in and out, copy the following env

cp .env.opt-example .env.opt

Update the TODO sections in the .env.opt

###############################################################################
####### TODO: Operators please update below values for your node ##############
###############################################################################
# TODO: Set the metadata url for operator
METADATA_URI=https://path/to/metadata.json

# TODO: Operators need to update this to their own paths
USER_HOME=${HOME}
EIGENLAYER_HOME=${USER_HOME}/.eigenlayer

# TODO: Operators need to update this to their own keys
NODE_ECDSA_KEY_FILE_HOST=${EIGENLAYER_HOME}/operator_keys/opr.ecdsa.key.json
NODE_BLS_KEY_FILE_HOST=${EIGENLAYER_HOME}/operator_keys/opr.bls.key.json

# TODO: Operators need to add password to decrypt the above keys
# If your password contain space, / or $, please use single quote to 
# encapsulate your password e.g 'mypassword /$'
OPERATOR_BLS_KEY_PASSWORD=
OPERATOR_ECDSA_KEY_PASSWORD=

To opt-in

πŸ’‘ Before you opt-in to MACH AVS, please ensure that

  1. You have the right infrastructure (e.g., cloud hosting) to keep the operator up and running. Non-performing AVS operators may be subjected to ejection out of MACH AVS.

  2. You have already been whitelisted as an operator for MACH AVS.

./run.sh opt-in 

If you no longer want to run the AVS, you can opt out by running

./run.sh opt-out 

πŸ’‘ It may take a few minutes for the EigenLayer AVS and operator page to be updated. This is an automatic process.

Running MACH AVS

Create the environment file

cp .env.example .env

Configuring MACH AVS operator

Update the TODO sections in the .env

πŸ’‘ The default path where your generated keys are stored in ~/.eigenlayer/operator_keys/

###############################################################################
####### TODO: Operators please update below values for your node ##############
###############################################################################
# TODO: Operators need to update this to their own paths
USER_HOME=${HOME}
EIGENLAYER_HOME=${USER_HOME}/.eigenlayer

# TODO: Operators need to set it ecdsa address
# can got by `eigenlayer operator keys list`, the address is in `Key Type: ECDSA`
OPERATOR_ECDSA_ADDRESS=

# TODO: Operators need to update this to their own keys
NODE_BLS_KEY_FILE_HOST=${EIGENLAYER_HOME}/operator_keys/opr.bls.key.json

# TODO: Operators need to add password to decrypt the above keys
# If your password contain space, / or $, please use single quote to 
# encapsulate your password e.g 'mypassword /$'
OPERATOR_BLS_KEY_PASSWORD=

Configuring rollup endpoint

We have pre-configured ethereum/mach-avs/gmnetwork/configs/chain/gmnetwork/mach-config.tomlwith RPC hosted by AltLayer.

Running MACH AVS

To run MACH AVS, you may launch it using docker-compose.

docker compose pull
docker compose up -d 

Helm chart

To run MACH AVS within your Kubernetes cluster, you can use the reference Helm chart available in the MACH AVS Operator Setup repository. You can find the Helm chart at the following link:

Facing issues?

Please feel free to reach out to us via the Slack working group.

Frequently ask questions

  1. How do I know whether my operator is running?

First, check whether your operator docker container is running, by running docker compose ps.

docker compose ps    
NAME                         IMAGE                                          COMMAND                  SERVICE                  CREATED          STATUS          PORTS
mach-avs-operator-node       public.ecr.aws/altlayer/mach-operator:latest   "operator"               mach-operator-node       33 seconds ago   Up 32 seconds   0.0.0.0:9092->9092/tcp, :::9092->9092/tcp
mach-avs-operator-verifier   public.ecr.aws/altlayer/mach:latest            "/usr/local/bin/op-m…"   mach-operator-verifier   33 seconds ago   Up 32 seconds   0.0.0.0:9094->9094/tcp, :::9094->9094/tcp, 9715/tcp
mach-avs-reverse-proxy-1     nginx:latest                                   "/docker-entrypoint.…"   reverse-proxy            33 seconds ago   Up 32 seconds   80/tcp, 0.0.0.0:9091->9091/tcp, :::9091->9091/tcp

Next, you can check the logs to see whether the services has been started or not

2024-04-01T17:04:29.613Z        INFO    logging/zap_logger.go:49        Start operator  {"address": "0xAD6B95793DD4D2b8e184FB4666D1cfb14871A035"}
2024-04-01T17:04:29.956Z        INFO    logging/zap_logger.go:69        Starting operator.
2024-04-01T17:04:29.956Z        INFO    logging/zap_logger.go:69        Starting node api server at address 0.0.0.0:9091
2024-04-01T17:04:29.956Z        INFO    logging/zap_logger.go:69        Starting metrics server at port 0.0.0.0:9092
2024-04-01T17:04:29.956Z        INFO    logging/zap_logger.go:49        start rpc server for got alert
2024-04-01T17:04:29.957Z        INFO    logging/zap_logger.go:49        node api server running {"addr": "0.0.0.0:9091"}

Finally, to determine whether your AVS is actively validating the target rollup, you can look for logs of the verifier container to see whether there is block validation activities

docker logs <name of container> 

[2024-04-01T17:06:28Z INFO  actor::scheduler] Validate block #166853(0x7ddde84c28da088639bb699a8982e206ca4aea4031fe37b2aa9c69fd23bac940) passed
[2024-04-01T17:06:32Z INFO  actor::block-fetcher] Finalized block #166666(0x747828ae5886e1c254462ab586a32ac2fd69f93c06af8b339819160997de3879)
[2024-04-01T17:06:32Z INFO  actor::block-fetcher] Latest block #166853(0x7ddde84c28da088639bb699a8982e206ca4aea4031fe37b2aa9c69fd23bac940)
[2024-04-01T17:06:36Z INFO  actor::block-fetcher] Finalized block #166666(0x747828ae5886e1c254462ab586a32ac2fd69f93c06af8b339819160997de3879)
[2024-04-01T17:06:37Z INFO  actor::block-fetcher] Latest block #166854(0x6f3029b754134107c4e341e1d37a4be99709b1781ba281a7d8483b5dc63b1dbb)
[2024-04-01T17:06:37Z INFO  actor::scheduler] Pre validate block #166854(0x6f3029b754134107c4e341e1d37a4be99709b1781ba281a7d8483b5dc63b1dbb) passed
[2024-04-01T17:06:37Z INFO  actor::scheduler] There are 1 block validation tasks waiting for result
[2024-04-01T17:06:37Z INFO  actor::scheduler] Validate block #166854(0x6f3029b754134107c4e341e1d37a4be99709b1781ba281a7d8483b5dc63b1dbb) passed
[2024-04-01T17:06:41Z INFO  actor::block-fetcher] Finalized block #166666(0x747828ae5886e1c254462ab586a32ac2fd69f93c06af8b339819160997de3879)
[2024-04-01T17:06:41Z INFO  actor::block-fetcher] Latest block #166854(0x6f3029b754134107c4e341e1d37a4be99709b1781ba281a7d8483b5dc63b1dbb)
[2024-04-01T17:06:46Z INFO  actor::block-fetcher] Finalized block #166666(0x747828ae5886e1c254462ab586a32ac2fd69f93c06af8b339819160997de3879)
[2024-04-01T17:06:46Z INFO  actor::block-fetcher] Latest block #166855(0x07fbc09cf59e93b965c471153d4fabbff38ed0f72a7a2da43a141861b500fea1)
[2024-04-01T17:06:46Z INFO  actor::scheduler] Pre validate block #166855(0x07fbc09cf59e93b965c471153d4fabbff38ed0f72a7a2da43a141861b500fea1) passed
[2024-04-01T17:06:46Z INFO  actor::scheduler] There are 1 block validation tasks waiting for result
[2024-04-01T17:06:46Z INFO  actor::scheduler] Validate block #166855(0x07fbc09cf59e93b965c471153d4fabbff38ed0f72a7a2da43a141861b500fea1) passed
  1. Who is running the aggregator and doing the BLS signature aggregator?

AltLayer will provide an aggregator to which your MACH AVS can connect and submit the signatures for aggregation. The aggregator endpoint has been pre-configured in the configuration file.

  1. I am unable to opt in and encounter Unable to register operator with avs registry coordinator

Please check that your ECDSA address is sufficiently funded. We recommend maintaining at least 0.3 ETH to ensure you have sufficient gas tokens for AVS registering, opt-in and de-registering operation.

Follow and Install EigenLayer CLI

Please submit the ECDSA address via MACH AVS interest form (if your address is not yet whitelisted) .

Upload metadata.json to a public URL. Then update the operator.yaml file with the url (metadata_url). If you need hosting service to host the metadata, you can consider uploading the metadata and get the raw url.

After your operator has been registered, it will be reflected on the .

πŸ’‘ Training wheels GM Network Mach AVS will initially launch in operator allowlist mode. Interested operators can register their interest with us using this form:

Run the following command to clone the and change the directory to GM Network MACH AVS mainnet config.

♾️
Docker
EigenLayer guide
https://forms.gle/3A6xNWwRf9ip9CnN9
gist
EigenLayer operator page
https://forms.gle/LmPABTNQcwJhw4UB7
MACH AVS operator repository
Operator and operator proxy
GM Network verifier