Skip to content

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 100

3. 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.0

With 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 -d

Or 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.

Testnet: PulseChain testnet v4. Unaudited software; do not use on mainnet yet.