Mainnet Setup

Watchtower Client Setup for an EigenLayer node operator

Currently on MAINNET

We have our pre-built binaries in form of container images hosted on docker hub. The following is a quick start guide on running the same for a node operator who is interested to setup a diligence watchtower on the Ethereum Mainnet chain

Stages of Mainnet

Stage 1

  • Operator Whitelisting

  • Operator Registration on L1

  • Start with Operator Watchtower Client Setup

From Apr 11 onwards

Stage 2

  • Operator Proof Submissions

Tentative date : 2 weeks from Stage 1

Stage 3

  • Aggregator Settlement

Tentative date : 1 week from Stage 2 completion

Prerequisites

  • Read the Node Requirements, if you haven't

  • Access

    • Watchtower Node Operator should be a registered EigenLayer Node Operator.

    • Registered EL Operator needs to be whitelisted on Witness Chain Network. Whitelisting will be done with the help of the Witness Chain team through a whitelisting process. If you are not sure how, Steps for setup will guide you through it.

  • Software

  • Hardware

    • Hardware requirements for the watchtower node can accessed here

    • One of the node configurations as described in the Node Types section below. Don't worry about how to configure right now ! As long as you have access to one of the configurations, we are good. We have you covered in the Steps for setup section !

Node Types

The node operator is expected to deploy the watchtower container alongside both L1 and L2 Archived nodes in the ideal scenario. But, we offer a few more configurations if you would like to re-use some of your existing infrastructure or setup. The configuration parameters for the L1 and L2 Archived nodes may belong to one of the following distinct categories.

Configuration TypeL1 NodeL2 Node

Use a Hosted L1 Node RPC Provider

Use Witness Chain provided L2 Node snapshot to bootstrap the node

Medium

Use a Hosted L1 Node RPC Provider

Run an L2 Archive Node synced from a public checkpoint

Full

Run an L1 full Node

Run an L2 Archive Node synced from a public checkpoint

Steps for setup

Note: Make sure there aren't any older version of watchtower images or containers. Use the below command to remove older/stale images

docker rm <stale_container_id>

docker rmi -f <stale_image_name>

Step 1: Register with EigenLayer as an Operator

ONLY If you aren't yet an EigenLayer Operator yet, HOW TO can be found here

Step 2: Get whitelisted on the Watchtower Network.

The Witness Chain watchtower network is a permissioned network currently. Please connect with us on our Discord, if you want to become a watchtower operator

Step 3: Register the operator on the Witness Chain Watchtower Network

Register your EL operator address on the WitnessChain OperatorRegistry contract. You can do so with the help of our CLI utility.

Prerequisites

The CLI tool expects Ubuntu 22.04 (if you are running on linux) or if you are running on Ubuntu 20.04, ensure the glibc version is 2.34+

# Run ldd --version to get the GLIBC version
ldd --version

Step 3.1 : Installation and Running the CLI

  1. Installation:

    curl -sSfL https://witnesschain-com.github.io/install-operator-cli | bash

  2. Running:

    export PATH="$PATH:~/.witnesschain/cli/"
    watchtower-operator --version

If you are facing the following error, please upgrade to Ubuntu 22.04

$ watchtower-operator --version

watchtower-operator: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found (required by watchtower-operator)

watchtower-operator: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by watchtower-operator)

Step 3.2 : Registering the operator and the watchtowers on Ethereum Mainnet (L1)

Once you've ensured the tool is installed correctly, run the below 3 commands (2 L1 & 1 L2 transactions) to register the operator with our AVS and associate the watchtowers to the operator.

Note: Refer to our FAQs to understand the difference between watchtower addresses and operator addresses

Setup the configuration files for the OPERATOR CLI

l1-operator-config.json

# Set of watchtower private keys that will sign the Diligence Proofs. 
# If you are setting up only 1, remove the extra lines 
# This is used for registration purposes
{
  "watchtower_private_keys": [
    "<Watchtower Private Key 1>",
    "<Watchtower Private Key 2>"
  ],
  "operator_private_key": "<Operator Private Key>",
  "operator_registry_address": "0xEf1a89841fd189ba28e780A977ca70eb1A5e985D",
  "witnesshub_address": "0xD25c2c5802198CB8541987b73A8db4c9BCaE5cC7",
  "avs_directory_address": "0x135dda560e946695d6f155dacafc6f1f25c1f5af",
  "eth_rpc_url": "<Mainnet RPC URL>",
  "chain_id": 1,
  "gas_limit": 500000
}
# Registers the Operator to WitnessHub AVS on EigenLayer 
# This is required for the Operator to be listed on EigenLayer's App

# Witnesschain Txns can be monitored via Blockscout at 

$ watchtower-operator registerOperatorToAVS --config-file <path to L1 config file>
# Registers the Operator's watchtower to WitnessHub AVS on Layer 1
# This registration is required for operators to be associated with the 
# points awarded as a result of diligently watching the chains.
# To understand what are watchtowers, please read the FAQs

watchtower-operator registerWatchtower --config-file <path to L1 config file>

Step 3.3 : Registering the watchtowers on WitnessChain Mainnet (L2)

Not available yet. This setup is part of Stage 2 of our Mainnet release, which is expected to be 2-3 weeks from the Stage 1 release

Expected Dates : Between 22-Apr to 29-Apr-2024

l2-operator-config.json

# Set of watchtower private keys that will sign the Diligence Proofs. 
# If you are setting up only 1, remove the extra lines 
# This is used for signing the diligence proofs
{
  "watchtower_private_keys": [
    "<WatchTower-1-private-key>"
  ],
  "operator_private_key": "<Operator-private-key>",
  "operator_registry_address": "<Will be released as part of Phase 2>",
  "eth_rpc_url": "<Will be released as part of Phase 2>",
  "chain_id": 0,
  "gas_limit": 0
}
# Registers the Operator's watchtower to WitnessHub AVS on 
# WitnessChain's Layer 2 Chain 
# 
# This registration is required for valid watchtowers to submit PoD/PoI bounties

watchtower-operator registerWatchtower --config-file <path to L2 config file>

Mask the operator-private-keys or remove it from the l1-config and l2-config (used by the CLI tool) files once the registration process is complete. We don't require it for submitting the bounties

Step 4: Submitting the bounties

Not available yet. This setup is part of Stage 2 of our Mainnet release, which is expected to be 2-3 weeks from the Stage 1 release

Expected Dates : Between 22-Apr to 29-Apr-2024

  1. Post the registrations are complete, install the watchtower client, by running the following command.

curl https://witnesschain-com.github.io/install-watchtower | sh

The above command will guide you through the rest of installation process.

Last updated