Testnet and Devnet Operations#
Use testnet for public compatibility testing. Use devnet/private fork when you need controlled mining, custom parameters, or repeatable contract scenarios.
Choose#
| Need | Use |
|---|---|
| Test wallet or API integration against public non-mainnet chain | Testnet |
| Sync full testnet history | Testnet full sync |
| Mine blocks for local tests | CPU mining |
| Run isolated custom chain | Fork your own chain |
| Run several nodes on one private chain (Scala and Rust) | Fixed-difficulty devnet |
| Check config shape | testnet.conf, devnet.conf |
Operator Notes#
- Keep testnet/devnet data directories separate from mainnet.
- Never reuse production wallet seeds.
- Pin config files in version control for repeatable devnet tests.
- For private chains, document genesis/config changes next to deployment scripts.
- Current
testnet.confsetsversion2ActivationHeight = 2147483647andversion2ActivationDifficultyHex = "20", effectively disabling the historical protocol-v2/client-4.0 hard fork on public testnet. Do not assume public testnet reproduces that mainnet activation boundary; use a controlled devnet when testing activation behavior.
Mempool Policy Differences#
Current mainnet defaults reject empty-proof storage-rent claims from the mempool (ergo.node.rejectStorageRentTxs = true), while public testnet defaults to false. Both can still validate rent claims inside blocks. Set this flag explicitly when reproducing admission or relay behavior on a controlled network; network consensus parameters alone do not reproduce mainnet mempool policy.
Network Regression Testing#
Peeryard is an experimental Linux network test bench for several real Ergo nodes in separate namespaces. It can inject delay, loss, partitions and crashes, then compare behavior across pinned versions or implementations. Its paired-run measurements cover declared scenarios rather than proving protocol correctness. Keep the topology, seeds, exact node revisions and executed-case evidence with a result. Host namespace setup needs elevated permissions; normal test runs use the prepared unprivileged environment.