Operator Guide
During Suzaku's testnet, we offer operators the ability to become validators of multiple permissionless Avalanche L1s and the first Suzaku-secured networks. This important step will allow us to set up workflows and communication channels with operators.
This guide walks you through the process of becoming a Suzaku operator: from Suzaku Core smart contract interaction to hardware setup.
Testnet phases overview
The Suzaku testnet is divided into 4 phases, each with its own set of goals and requirements. The testnet phases are as follows:
- Phase 1 - 🐉 Seiryu: Proof-of-Authority (PoA) L1 with
ValidatorManager
contract deployed on the L1 itself.
This is the most basic post-ACP-77 L1 deployment and will allow testing tooling and coordination end-to-end. - Phase 2 - 🐅 Byakko: PoA L1 with
ValidatorManager
on the C-Chain and message forwarding through relayers.
This is a setup closer to Suzaku v1, where the protocol contracts are hosted on the C-Chain, and validator set updates are automatically propagated to the P-Chain. - Phase 3 - 🐢 Genbu: Suzaku-secured PoS L1 (only using the L1 staking token for security).
All validator set management will go through the Suzaku protocol core, involving stakers, curators, and operators. - Phase 4 - 🦌 Kirin: Multiple Suzaku-secured L1s, using different security models: restaking, dual-staking, etc.
Current active phase: Phase 1 - 🐉 Seiryu
- Network ID:
fuji
- Chain name:
SuzakuSeiryu
- Subnet ID:
22XB5waRLucd7upLoKpJ1R8j5hUDnnTzGc9Z7giEKjPYdu5VDK
- Blockchain ID:
wNWCENGg1E8gYNtWQMv2V6ZoLraNamaw6qgEqx1mRmQ8kLi3S
- RPC: TODO
Suzaku Core Operator registration
AvalancheGo node setup
Being a Suzaku operator during the testnet phase boils down to running an AvalancheGo (opens in a new tab) node and tracking one or more Avalanche L1s that are part of the Suzaku protocol.
There are multple ways to run an AvalancheGo node:
- Using the Ash Console (opens in a new tab): recommended if you are creating a new AvalancheGo node and will be using AWS, Azure, or GCP
- Using the
ansible-avalanche-collection
(opens in a new tab) Ansible role: recommended if you are creating a new AvalancheGo node and are familiar with Ansible and/or you use a cloud provider not supported by the Ash Console - Manually: i.e., you are already running an AvalancheGo node
The Suzaku testnet heavily relies on the Etna upgrade of Avalanche, especially ACP-77 (opens in a new tab) which is only available on the Avalanche Fuji testnet (opens in a new tab) through the AvalancheGo v1.12.0 (opens in a new tab) release.
Node hardware requirements
- CPU: Equivalent of 2 AWS vCPU
- RAM: 4 GiB
- Storage: 50 GiB
- OS: Ubuntu 22.04 or 24.04
Those hardware requirements are minimum for the Suzaku testnet and will be different on mainnet based on each Suzaku-secured L1 profile.
The Ash Console is the one-stop shop for L1 development and operation on Avalanche. It allows you to manage your validators, create L1s, and monitor your network on your own infrastructure (AWS, GCP, and Azure are supported during the public beta).
To setup an AvalancheGo node on the Fuji testnet using the Ash Console, follow the instructions in the Avalanche Node on Fuji (opens in a new tab) guide.
During the "Avalanche Node Creation" (opens in a new tab) step, make sure to set the following configuration keys:
avalancheNodeConfig:
avalanchego_version: 1.12.0
avalanchego_track_subnets:
- 22XB5waRLucd7upLoKpJ1R8j5hUDnnTzGc9Z7giEKjPYdu5VDK
avalanchego_vms_install:
suaku-seiryu-vm: 0.6.12
avalanchego_vms_list:
suaku-seiryu-vm:
download_url: https://github.com/ava-labs/subnet-evm/releases/download
id: dkr3SJRCf2QfRUaepreGf2PtfEtpLHuPixeBMNrf1QQBxWLNN
ash_vm_type: SubnetEVM
binary_filename: subnet-evm
versions_comp:
0.6.12:
ge: 1.11.13
le: 1.12.0
Node registration
During Phase 1 of the Suzaku testnet, we invite participants to register their interest in becoming Suzaku operators by creating a new Operator Registration Issue (opens in a new tab).
Operators will need to provide the following information:
- Operator name
- Operator description
- NodeID
- BLS Public Key
- BLS Proof of Possession
To easily get the NodeID and BLS information of your node, you can use the info.getNodeID
JSON-RPC method, e.g.:
curl -s -X POST --data '{
"jsonrpc":"2.0",
"id" :1,
"method" :"info.getNodeID"
}' -H 'content-type:application/json;' X.X.X.X:9650/ext/info | jq
{
"jsonrpc": "2.0",
"result": {
"nodeID": "NodeID-A8rdxK5Yddh9kwbMkgkpb7oEN1GAxiBkz",
"nodePOP": {
"publicKey": "0xa2d8524afaa3954d6d030e372af6606e959cf62b5442be07d1113c75c67c4cf6742a3338180eec1a325e9010eaaa3656",
"proofOfPossession": "0xaeb3362dba19f937825f671c2a8395e91b5350909bff25918eb759f7c79bbd7beb86f67d36082f63a98504c1e6ef3bcf0980ea141e8a583373f4294f01401644c2386f39c47b53aa91a47ae90310c2c29e536de4d12f862f7d74c11f5ab2899a"
}
},
"id": 1
}
Once submitted, the Suzaku team will let you know in the issues when the node has been successfully registered to the insert-cool-testnet-name L1 validator set.
Upon successful registration, an operator can confirm that their node is part of the validator set by running the following commands:
curl --location --request POST https://api.avax-test.network/ext/bc/P \
--header 'Content-Type: application/json' \
--data-raw '{
"jsonrpc":"2.0",
"id" :1,
"method" :"platform.getValidatorsAt",
"params" :{
"height": "proposed",
"subnetID":"22XB5waRLucd7upLoKpJ1R8j5hUDnnTzGc9Z7giEKjPYdu5VDK"
}
}' | jq
Output:
{
"jsonrpc": "2.0",
"result": {
[...]
"NodeID-78ibWpjtZz5ZGT6EyTEdu8VKmboUHTuGT": {
"publicKey": "0x8327dbe1ba411c270637b080a8471fb41eeb8a9b3917af0727501ef8bdaa901d063780bd702f30f458a61f3d4297dc98",
"weight": "100"
},
[...]
},
"id": 1
}
If your validator's NodeID is in the list, you are successfully registered as a Suzaku operator and validating !