Setup
Last updated
Last updated
While the opt-in process for NFFL is currently underway - see Registration - the testnet is not completely operational just yet, so it's currently not required that operators run a node. Keep an eye out for updates!
This guide will walk you through the steps required to set up your operator node on the NFFL testnet. The testnet serves as a sandbox environment for testing and development, allowing you to test both the AVS smart contracts and off-chain services. As the network is under active development, it's crucial to stay updated with the latest changes and keep your node in sync with the network.
A NFFL operator node consists of two main components: the AVS node software and a NEAR DA indexer. The AVS node software is a Go implementation of the AVS protocol, while the NEAR DA indexer is essentially a NEAR full node that indexes NEAR DA submissions on the NEAR blockchain.
Component | Specifications |
---|---|
Verify CPU feature support by running the following command on Linux:
At this initial testnet stage, operators need to be whitelisted. If you are interested and have not already been whitelisted, please contact the NFFL team!
Complete the EigenLayer CLI installation and registration here.
Install Docker Engine on Linux.
Clone the NFFL repository and execute the following.
.env
filesYou should have something similar to this in your near-sffl/setup/plugin/.env
:
Set your EigenLayer ECDSA and BLS key passwords in the ECDSA_KEY_PASSWORD
and BLS_KEY_PASSWORD
fields.
Then, for the node environment variables, you should have something similar to this in your near-sffl/setup/operator/.env
:
In general, you should set NEAR_HOME_DIR
and NEAR_KEYS_DIR
. Those are where your NEAR-related data will be stored. If you are using a block storage service, you should set especially NEAR_HOME_DIR
to the block storage mount point. Do note you should choose a directory that has enough space for your NEAR node's data, which should be around 1TB.
Then, set your EigenLayer BLS key password in the OPERATOR_BLS_KEY_PASSWORD
field.
In setup/plugin/config/operator.yaml
, set the your operator_address
:
Then, in setup/operator/config/operator.yaml
, set all the relevant fields mentioned below.
In general, you should first set your operator address in operator_address
, as well as your Ethereum Holesky RPC URLs in eth_rpc_url
and eth_ws_url
. Please double-check that the WS RPC allows event subscriptions. We recommend that you either use your own node's RPC or, in terms of providers, use Infura or Quicknode - Public Node unfortunately doesn't support it.
Finally, set the aggregator server address in aggregator_server_ip_port_address
. You should set this to the address that was sent to you during whitelisting.
It's also good to double-check all other configuration fields, such as the contract addresses.
Follow the command below in the operator setup directory:
You should run it until it starts syncing. You'll see a log similar to:
At this point, stop the execution with Ctrl+C
. We're going to use NEAR's data snapshots to speed up the syncing process.
In order to do that, follow the instructions in NEAR Nodes. Here we'll be using the testnet
and rpc
snapshot. Do remember that you'll need to download the snapshot to ${NEAR_HOME_DIR}/data
- based on your .env
file.
After that, run the following again:
You most likely want to keep this as a separate screen, so you can use tools such as screen
or tmux
to keep it running as a separate session.
Your indexer should now continue the syncing process on it's own! Keep it running until it’s time to run the operator, as it’ll keep synced with NEAR.
After registering, you're part of the network consensus. Run your operator node as soon as you've successfully registered so as to not impact any activity.
You can skip this step if you've already pre-registered.
Let us know your indexer is synced and we'll whitelist your operator address. After that, you can use the operator plugin in order to register your operator. Simply go to your operator plugin setup directory and run:
:::info
This step is only available once the testnet deployment is completely made.
:::
This is the final step!
Go back to the indexer execution, and stop it with Ctrl+C
. Then, update your repository state:
After that, double-check your .env
and config/operator.yaml
files, then simply run:
Your operator node should now be up and running!
CPU
x86_64 (Intel, AMD) processor with at least 8 physical cores
CPU Features
CMPXCHG16B, POPCNT, SSE4.1, SSE4.2, AVX
RAM
32GB DDR4
Storage
1.5TB SSD (NVMe SSD is recommended)
Operating System
Linux (tested on Ubuntu 22.04 LTS)