Operations
Staking & Identity
- Approve SYL to the
NodeRegistryand callregisterAndStake(amount, payout, metadata)from your node EOA. - Optionally stake more, update
payout(setPayout) or metadata (setMetadata). - To stop:
requestUnstake(amount), wait unbondingPeriod, thenfinalizeUnstake()to receive tokens atpayout.
Keep your node EOA minimal in privileges. Consider a distinct payout address.
Monitoring
- Liveness: scrape
/healthz; alert if down for >N minutes. - Consensus lag: track time from
RequestRegisteredto firstsubmitSnapshot. - Miss rate: % of requests without a submitted snapshot.
- RPC health: latency and error rate.
- Gas usage: tx failures, revert reasons.
Alerting
- Missed snapshot > X/min
- Consecutive submit failures/backoffs
- Finalize attempts failing repeatedly
Security Hardening
- Use a dedicated EOA and store
PRIVATE_KEYin a secrets manager; never commit.envto git. - Keep the host patched. Restrict egress/ingress except RPC + Provider Gateway + IPFS.
- Rotate provider signer keys via the provider’s owner when needed; respect any timelock windows (see AccessRegistry docs).
Upgrades & Compatibility
- The node is a small stateless service. Recreate containers or processes for upgrades.
- Contracts are UUPS‑upgradeable; always consult Deploy → Addresses & ABIs and release notes before network changes.
Troubleshooting
bad provider signature→ Provider gateway is signing the wrong domain/chain or using the old signer. VerifyproviderSignerand EIP‑712 domain.api not active→ Provider disabled the API listing.- Frequent backoffs → Increase provider rate limits or reduce your node count.
expires in pastat create → The consumer’s expiry exceededmaxRequestExpiryMsor clock skew was large.
Example Provider Snapshot (JSON)
{
"apiId": "0x…",
"seqNo": "123",
"providerTs": "1724700000000",
"ttl": "60000",
"contentHash": "0x…",
"providerSig": "0x…",
"pointerURI": "ipfs://…"
}Appendix: Field & Endpoint Reference
- Provider Gateway:
GET /snapshot?apiId=<bytes32>&requestId=<bytes32>returns aProviderSnapshot(see above) - Health:
GET /healthz→{ ok: true } - Key Contracts: AccessRegistry, APIConsensus, APIEscrow, NodeRegistry (see “Contracts” section)
When in doubt, test on Polygon Amoy first, then upgrade config for mainnet.
Last updated on