Appearance
Operator guide
An operator runs verity-node. It watches the coordinator for requests made to its key, proves them, and submits the proofs. It earns the gas cost back plus a premium for every fulfilment.
Requirements
- A small Linux VM (1 vCPU, 1 GB RAM is enough at testnet volume) or Docker anywhere
- At least two independent RPC providers for the chain
- Native coin in the transaction account (fulfilments cost about 85–200k gas each)
1. Keys
sh
verity keygen --dir keys --name vrf # VRF proving key (prints its public key for registration)
verity txkey --dir keys --name tx # account that pays for fulfilment transactions- The VRF key decides your results. Back it up (keystore and password) offline. Losing it means registering a new key; leaking it lets others fulfil for your key (but never change results).
- The transaction key only pays gas. Keep it funded but not over-funded.
- Never use the VRF key to sign transactions, and never share one transaction account between two running nodes.
2. Registration
The coordinator owner registers your public key as a gas lane, with an operator address that receives your earnings (through the timelock in production):
sh
verity owner register-key --vrf-keystore keys/vrf --operator <earnings address> --max-gas-price-gwei 1003. Configure and run
toml
database = "/data/verity.db"
health_listen = "0.0.0.0:9090"
alert_webhook_url = "https://api.telegram.org/bot<token>/sendMessage?chat_id=<group>&message_thread_id=<topic>" # optional; Slack/Discord URLs work too
node_name = "aws-primary" # shown in alerts
node_role = "primary" # primary or backup: the badge in alerts
[keys]
vrf_keystore = "/keys/vrf"
tx_keystore = "/keys/tx"
[[chains]]
name = "pulsechain-testnet"
chain_id = 943
rpc_url = "https://rpc.v4.testnet.pulsechain.com"
fallback_rpc_urls = ["https://pulsechain-testnet-rpc.publicnode.com", "https://rpc-testnet-pulsechain.g4mm4.io"]
coordinator = "0xF3cBd70d61a8F5c8522d1377D9208844C3e1f0D7"
start_block = 25826198
explorer_url = "https://scan.v4.testnet.pulsechain.com" # links in alerts
min_priority_fee_gwei = 1.0
low_balance_threshold = 5.0With Docker (node, Prometheus and Grafana):
sh
cd verity-node/deploy
cp config/verity.example.toml config/verity.toml && cp .env.example .env # edit both
mkdir keys && cp ../keys/vrf ../keys/tx keys/
docker compose up -dOr run the binary: VERITY_VRF_KEY_PASSWORD=… VERITY_TX_KEY_PASSWORD=… verity-node --config verity.toml.
4. Earnings
sh
verity operator balance <operator address>
verity operator withdraw --keystore <operator keystore> --to <address>What the node does for you
- Restart-safe: all state is in SQLite; it resumes after a crash at any point without double-sending.
- Simulates before sending: it never pays for a transaction that would revert.
- Fees: never offers more per gas than your lane reimburses, and never offers a tip below 1 gwei.
- Stuck and dropped transactions: replaces stuck ones with higher fees (up to the lane cap) and resends dropped ones with the same nonce.
- Old requests: stores block hashes for requests still waiting at 128 blocks.
- RPC failures: retries transient errors and fails over between providers.
Next: Redundancy and failover and Monitoring and runbooks.