Node Operator FAQ
Find answers to common questions about running a node on the Supra network, including setup, configuration, troubleshooting, and best practices for maintaining node performance and uptime.
Onboarding & Setup
Should the onboarding script be run directly on the machine that will act as the validator?
Yes, you should run all the steps of Round onboarding for Public Testnet on the machine that will act as the validator.
What are the hardware requirements for running a Supra node?
Below are the hardware requirements:
Cores: 16 to 32
RAM: 64GB
CPU: Intel Xeon @ 2.8GHz or higher
Architecture: x86/64
Disk Type: SSD
Minimum Disk Size: 2TB
Network Bandwidth: 1Gbps
My testnet RPC nodes are experiencing increasing disk usage. Are there any pruning options?
Yes, it’s expected for now. We'll release an update that enables pruning in the near future.
It's not currently possible.
There is no derived pool address in the latest_validator_info.json file. What should I do?
In your latest_validator_info.json
file, your derived pool address is the value of account_address
.
How do I move my node to a different server (RPC & Validator Testnet)?
Validator Testnet: Relocating a Supra Validator
RPC Testnet: Move Node to New Server - RPC Testnet
Staking & Rewards
How do I view my current stake balance?
You can view your current stake balance using the following script:
supra move tool view --function-id 0x1::pbo_delegation_pool::get_stake --args address:"$POOL_ADDRESS" address:"$DELEGATOR_ADDRESS" --url "$RPC_URL
Example Response:
{"result":["5854055647855","0","0"]}
The first value (5854055647855) represents your active stake
The second value represents your inactive stake.
The third value represents your pending inactive stake.
How do I claim rewards?
To claim rewards, you need to first unlock your stake and then withdraw your inactive stake.
Here are the steps:
Step 1: Unlock Stake Amount: You need to first check your active stake using the provided script. Once you know your active stake, you can unlock an amount less than or equal to your active stake. Please make sure the AMOUNT_TO_UNLOCK is at least 100000000 (1 SUPRA).
#!/bin/bash
RPC_URL="https://rpc-mainnet.supra.com/"
POOL_ADDRESS="0xdbd2155f2f5aee0e75bcf08b4aaab6f8332baf125623b839c3a3f2280099f27b" # Replace with your pool address
AMOUNT_TO_UNLOCK="100000000" # Replace with the amount you want to unlock
supra move tool run --function-id 0x1::pbo_delegation_pool::unlock --args address:"$POOL_ADDRESS" u64:"$AMOUNT_TO_UNLOCK" --url "$RPC_URL
Step 2: Withdraw Inactive Stake Amount
Note: This step can only be executed during the next lockup cycle.
#!/bin/bash
RPC_URL="https://rpc-mainnet.supra.com/"
POOL_ADDRESS="0xdbd2155f2f5aee0e75bcf08b4aaab6f8332baf125623b839c3a3f2280099f27b" # Replace with your pool address
AMOUNT_TO_WITHDRAW="100000000" # Replace with the amount you want to withdraw
supra move tool run --function-id 0x1::pbo_delegation_pool::withdraw --args address:"$POOL_ADDRESS" u64:"$AMOUNT_TO_WITHDRAW" --url "$RPC_URL
Important Notes:
You can only unlock an amount equal to or less than your active stake.
You can only withdraw an amount equal to or less than your inactive stake.
Once you unlock your stake, you must wait for the next lockup cycle before you can withdraw the inactive stake.
What is the smallest unit of SUPRA?
The smallest unit of SUPRA is Quants, where 1 SUPRA = 100,000,000 Quants.
Can I withdraw rewards to a different address than the validator’s?
You can do this by calling set_beneficiary_for_operator
to set a beneficiary address for your operator commission.
!/bin/bash
BEN_ADDR=0xabcdef # Replace with the address of the beneficiary
RPC_URL = "https://rpc-mainnet.supra.com"
supra move tool run --function-id 0x1::pbo_delegation_pool::set_beneficiary_for_operator --args address:$BEN_ADDR --url $RPC_URL
Replace $BEN_ADDR
, with the address of the beneficiary in the command above. After executing the command above, while the operator
would still be the address connected to the network as a validator, $BEN_ADDR
would receive the stake commensurate with the commission earned by the operator
. Use the steps provided in Q.2, above from the $BEN_ADDR
profile (with the private key of $BEN_ADDR
) to unlock/withdraw the stake that was earned as commission.
Troubleshooting & Issues
What should I do if blocks are frozen and my validator node is stuck?
[2024-10-17T01:51:50.607720Z+00:00] WARN moonshot::core: Timeout reached for View { epoch_id: EpochId { chain_id: 6, epoch: 195 }, round: 2306 }
[2024-10-17T01:51:55.608661Z+00:00] WARN moonshot::core: Timeout reached for View { epoch_id: EpochId { chain_id: 6, epoch: 195 }, round: 2306 }
[2024-10-17T01:52:00.610197Z+00:00] WARN moonshot::core: Timeout reached for View { epoch_id: EpochId { chain_id: 6, epoch: 195 }, round: 2306 }
A: If the epoch and round are stuck, you will need to restart the network using a snapshot:
Please follow the instructions provided in the ‘To Update Your RPC Node’ section in this document: RPC Operator Manual (General)
What should I do if I encounter an "IO Error" or database corruption?
thread 'main' panicked at /home/ubuntu/smr-moonshot/consensus/node/src/bftnode.rs:57:14: fail to create rocksdb: DBError(Error { message: "Corruption: Corruption: IO error: No such file or directory: While open a file for random read: configs/smr_storage/000364.ldb: No such file or directory in file configs/smr_storage/MANIFEST-000369" }) note: run with RUST_BACKTRACE=1 environment variable to display a backtrace
A: If you see the "Corruption: IO error," restart the network using the snapshot as mentioned in the previous solution. If the issue persists, ensure your environment is properly set up and your data paths are correct.
What should I do if there is an RPC error on startup?
Step 1: Open ports 26000 and 27000.
Step 2: Restart the container using docker restart container-id
.
How can I resolve a "Grafana setup IP not whitelisted" error?
If your IP is not whitelisted, please provide your IPv4 to the Supra team on Discord to get access to the Grafana script.
How do I resolve the "API key is missing" error?
Export the API key with:
export api_key=AIzaSyD2Byf2_yWYngvHnv6Ib7V6C2EpHY3LL0E
Run the installation script for your distribution:
sudo -E ./nodeops-monitoring-telegraf-centos.sh
# For CentOS
or
sudo -E ./nodeops-monitoring-telegraf.sh
# For other distributions
How do I resolve the "RPC node out of sync" error?
INFO rpc_node::listener: RPC node out of sync!
A: To resolve the "RPC node out of sync" error, restart the node from the latest snapshot using the instructions provided for snapshots.
What should I do if I encounter a "Subscription execution failed" error?
[2024-11-06T08:20:47.531043Z+00:00] ERROR sop2p::behaviour: Subscription execution failed: "Closed(..)"
[2024-11-06T08:20:47.531922Z+00:00] ERROR sop2p::behaviour: Subscription execution failed: "Closed(..)"
[2024-11-06T08:20:47.531961Z+00:00] ERROR sop2p::behaviour: Subscription execution failed: "Closed(..)"
A: This issue can be resolved by increasing the system ulimit
for the number of open files. Follow the steps below:
Increase the shell file descriptor limit:
ulimit -n 65535
Increase the limit for the user by editing
/etc/security/limits.conf:
soft nofile 65535
hard nofile 65535
Update system limits in
/etc/sysctl.conf:
net.core.somaxconn=65535
sudo sysctl -p
General Information & Frequently Asked Questions
Why do the values of stakes differ among operators?
The differences in stake values could be due to various factors:
All operators received 55M SUPRA from the Foundation at Genesis.
Additional rewards generated since then are added directly into each operator’s delegation pool.
If an operator has withdrawn some of their rewards, their stake may be lower.
If another entity besides the Foundation has delegated a stake to an operator, that could also account for the differences.
Why can we only unlock active stake, and what is the Foundation’s role?
The Foundation keeps 55M SUPRA locked to ensure that validators continue to function properly. The rest of the stake, which is earned as a reward, can be unlocked or unstaked. However, you cannot unlock the 55M SUPRA delegated by the Foundation.
How long should I wait after unstaking before I can withdraw?
After unstaking, you must wait for the next lockup cycle, which is set to 48 hours, before you can withdraw your inactive stake.
How are earnings per node determined? Is it performance-based or random?
Earnings per node are based on performance. However, since we do not currently record failed proposals, the reward calculations are based on the number of successful proposals. We plan to track performance metrics in the future, which will affect rewards.
Where can I find my delegator address private key to import into the StarKey wallet?
You can find your delegator address private key by running the following command:
./supra profile list --reveal-secrets
The output ed25519_secret_key
is the key to your operator's Move account.
How does stake, including inactive and pending inactive, work in Supra?
The function 0x1::pbo_delegation_pool::get_stake
returns a tuple with three values: active, inactive, and pending_inactive stakes.
Active stake: This is your current active stake.
Inactive stake: This is the stake that has been unlocked but is not withdrawn yet.
Pending inactive stake: This is the stake that has been unlocked and is awaiting the end of the lockup period before it becomes inactive.
The lockup duration is 48 hours, which is configurable via governance.
Can I unlock more than my active stake?
No, you can only unlock an amount equal to or less than your active stake. Please report any issues if you find you can unlock more than your active stake.
Important: Please make sure you read and understand Terms of Use before start using Supra products and services.
Last updated