├── .gitignore ├── README.md └── eigenlayer ├── README.md └── testnet ├── .env.example ├── README.md └── docker-compose.yaml /.gitignore: -------------------------------------------------------------------------------- 1 | .env 2 | .DS_Store 3 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Atlas Network Operator 2 | 3 | ## Operator Setup Guide 4 | 5 | **Before you start following the instructions, make sure that you are whitelisted as an operator.** You can get whitelisted by completing [the onboarding form](https://forms.gle/2RKzzprRbTscpPc67). 6 | 7 | If you are a whitelisted operator and have any questions about the setup process, please reach out to the support team on [Telegram](https://t.me/nodeopsxyz) or [Discord](https://discord.com/invite/HftrtmSsyW). 8 | 9 | ### Running an Operator for MACH AVS 10 | 11 | - [For Eigenlayer](./eigenlayer) 12 | - [Testnet](./eigenlayer/testnet/README.md) 13 | - *[Mainnet](./eigenlayer/mainnet/) (coming soon)* 14 | - *[Solayer](./solayer) (coming soon)* 15 | - *[Symbiotic](./symbiotic) (coming soon)* 16 | -------------------------------------------------------------------------------- /eigenlayer/README.md: -------------------------------------------------------------------------------- 1 | # Atlas Network Eigenlayer AVS Operator 2 | 3 | - [Testnet](./testnet/README.md) 4 | - *[Mainnet](./mainnet/) coming soon* 5 | -------------------------------------------------------------------------------- /eigenlayer/testnet/.env.example: -------------------------------------------------------------------------------- 1 | ## TODO 2 | OPERATOR_ADDRESS= 3 | PRIVATE_KEY= 4 | 5 | L1_RPC= 6 | L2_RPC= 7 | L2_WS= 8 | 9 | ## DO NOT TOUCH 10 | L2_CHAIN=421614 11 | AGGREGATOR_RPC=/dns/testnet-aggregator.atlasnetwork.xyz/tcp/9876/p2p/12D3KooWQFY56SZZiK5bQog1z6SbBdbbdXV5TXLmtT6DjTjy4DNU 12 | JSON_RPC_URL=https://testnet-json-rpc.nodeops.xyz 13 | OPERATOR_PORT=4002 14 | OPERATOR_RECEIVER_FACTORY=0x52f440DC68dE89F870cbdc568A90dDEf50344F2c 15 | AVS_GOVERNANCE_ADDRESS=0x590dDF9A1a475bF46F10627A49051036d5286a61 16 | ATTESTATION_CENTER_ADDRESS=0x8CA77Be5f18f7490d4F7371F3103F34b672e35ca 17 | MACHINE_REGISTRY_ADDRESS=0xcACC8a501Cee14ffE7a7B1805356C23c9c347df7 18 | WAREHOUSE_URL=https://mainnet-api.atlasnetwork.dev 19 | AVS_NAME=Atlas_Network 20 | -------------------------------------------------------------------------------- /eigenlayer/testnet/README.md: -------------------------------------------------------------------------------- 1 | # Atlas Network Eigenlayer Testnet AVS Operator 2 | 3 | ## Prerequisites 4 | 5 | - Linux `amd64/x86` based instance 6 | - Recommended Hardware specifications 7 | - 2 vCPUs 8 | - 4GB RAM 9 | - 40GB Disk 10 | - 100 Mbps 11 | - Docker >27.x.x 12 | 13 | ```shell 14 | ## Install latest docker, use `sudo bash` in case of non-root user 15 | curl -sL get.docker.com | bash 16 | ``` 17 | 18 | - Othentic CLI 19 | 20 | ```shell 21 | ## Node version LTS 22 | npm i -g @othentic/othentic-cli 23 | ``` 24 | 25 | - Make sure you some eth on Ethereum `holesky` and on Arbitrum `Sepolia` for operator registration tx 26 | 27 | - Register as operator on EigenLayer if you're not using [EigenLayer CLI](https://github.com/Layr-Labs/eigenlayer-cli/blob/master/README.md) and stake holesky ETH 28 | 29 | - Staked atleast `0.1stETH` or any strategy that is supported by AVS, more info [here](https://docs.othentic.xyz/main/avs-framework/quick-start#activate-your-operator-by-depositing-into-eigenlayer). **After depositing** wait for around **5-10 min** till it'll get synced across l1/l2 by synceR 30 | 31 | ```shell 32 | ## Stake 0.1stETH 33 | othentic-cli operator deposit --strategy stETH --shares 0.1 34 | ``` 35 | 36 | If you don't have stETH, Convert ETH to stETH and stake using below command, change the amount as per your convenience 37 | 38 | ```shell 39 | ## Convert 0.0101ETH to stETH and stake 0.01stETH 40 | othentic-cli operator deposit --strategy stETH --convert 0.0101 --shares 0.01 41 | ``` 42 | 43 | > NOTE: For any Docker based commands, if you have installed as root then you might have to append `sudo` in front of the command. 44 | 45 | ## Setup Instructions 46 | 47 | - Use othentic cli to register your operator on Atlas Network EigenLayer AVS Testnet. If you're not operator on eigenlayer then it'll prompt you for the details. You can use private key as signer key as well [follow this for more](https://docs.othentic.xyz/main/avs-framework/othentic-cli/private-key-management). Add `0x590dDF9A1a475bF46F10627A49051036d5286a61` for Governance address 48 | 49 | ```shell 50 | ## AVS Governance address: 0x590dDF9A1a475bF46F10627A49051036d5286a61 51 | othentic-cli operator register --l1-chain holesky --l2-chain arbitrum-one-sepolia 52 | ``` 53 | 54 | - 55 | Clone this repo and execute the following commands: 56 | 57 | ```shell 58 | git clone https://github.com/nodeops-app/atlas-operator.git 59 | cd atlas-operator/eigenlayer/testnet 60 | cp .env.example .env 61 | ``` 62 | 63 | - 64 | Update the `TODO` sections in the `.env` file given in the root directory of the repository with your own details. 65 | 66 | ```bash 67 | ## TODO: Signer key 68 | ... 69 | ``` 70 | 71 | - 72 | Run an Operator 73 | 74 | Execute the following command to start the operator: 75 | 76 | ```shell 77 | docker compose up -d 78 | ``` 79 | 80 | - Upgrade: By default auto operator upgrade is enable using autopilot. you can disable it by commenting out autopilot service in `docker-compose.yaml` and manual upgrade using below command 81 | 82 | ```shell 83 | docker compose pull 84 | docker compose up -d 85 | ``` 86 | 87 | - 88 | Tear down operator 89 | 90 | ```bash 91 | docker compose down 92 | ``` 93 | -------------------------------------------------------------------------------- /eigenlayer/testnet/docker-compose.yaml: -------------------------------------------------------------------------------- 1 | x-oprator: &oprator 2 | image: nodeops/atlas-operator:testnet-eigenlayer 3 | restart: no 4 | env_file: 5 | - .env 6 | cap_drop: 7 | - ALL 8 | labels: 9 | - com.centurylinklabs.watchtower.enable=true 10 | - &autopilot com.centurylinklabs.watchtower.scope=atlaseigenlayertestnet 11 | 12 | services: 13 | atlas-avs-eigenlayer-testnet-verifier: 14 | <<: *oprator 15 | container_name: atlas-avs-eigenlayer-testnet-verifier 16 | entrypoint: [sh, -cx] 17 | command: 18 | - | 19 | exec othentic-cli node attester $${AGGREGATOR_RPC} --avs-webapi http://atlas-avs-eigenlayer-testnet-operator 20 | 21 | atlas-avs-eigenlayer-testnet-operator: 22 | <<: *oprator 23 | entrypoint: [atlas-avs-eigenlayer-operator] 24 | container_name: atlas-avs-eigenlayer-testnet-operator 25 | 26 | atlas-avs-eigenlayer-testnet-autopilot: 27 | image: containrrr/watchtower:1.7.1 28 | container_name: atlas-avs-eigenlayer-testnet-autopilot 29 | volumes: 30 | - /var/run/docker.sock:/var/run/docker.sock 31 | environment: 32 | WATCHTOWER_POLL_INTERVAL: 3600 33 | WATCHTOWER_LABEL_ENABLE: true 34 | ## Can enable notifications as well for the updates for more https://containrrr.dev/shoutrrr/v0.8/services/overview/#services_overview 35 | # WATCHTOWER_NOTIFICATION_URL: "discord://token@channel slack://watchtower@token-a/token-b/token-c" 36 | # WATCHTOWER_NOTIFICATION_TEMPLATE: "{{range .}}{{.Time.Format \"2006-01-02 15:04:05\"}} ({{.Level}}): {{.Message}}{{println}}{{end}}" 37 | labels: 38 | - *autopilot 39 | --------------------------------------------------------------------------------