Testnet Resets
Pilier testnet may be reset periodically to maintain performance and test new features.
This document explains when resets happen, how to prepare, and what to do when a reset occurs.
What is a Testnet Reset?
Overview
A testnet reset wipes all blockchain state and starts fresh from a new genesis block.
What gets deleted:
├─ All blocks (history wiped)
├─ All account balances (except genesis allocations)
├─ All on-chain data (DPPs, governance proposals, etc.)
├─ All validator registrations
└─ Transaction history (no trace of previous testnet)
What survives:
├─ Validator session keys (reusable, stored on server)
├─ Account keys (seed phrases still valid)
├─ Node binary (same software, new chain)
├─ Node configuration (systemd service, config files)
└─ Documentation, guides (external to chain)
Analogy:
Reset = Factory reset your phone
├─ Operating system stays (node binary)
├─ Apps reinstalled from scratch (runtime)
├─ All user data deleted (blockchain state)
└─ Fresh start (new genesis block)
Mainnet vs Testnet
| Aspect | Testnet | Mainnet |
|---|---|---|
| Resets | Yes (periodic) | NEVER |
| Data preservation | None (wiped) | Permanent (immutable) |
| Token value | Zero (test PIL) | Real value (PIL) |
| Purpose | Testing, development | Production |
Mainnet Never Resets
Mainnet will NEVER be reset. All data is permanent. This is a fundamental property of production blockchains.
Testnet resets are ONLY for testing purposes.
Why Reset Testnet?
Valid Reasons
1. Breaking changes requiring new genesis
Examples:
├─ New consensus algorithm (AURA → BABE hypothetical)
├─ Fundamental pallet changes (incompatible storage)
├─ Chain ID change (testnet_v1 → testnet_v2)
└─ Genesis parameters update (validator set, token allocation)
Why necessary:
├─ Runtime upgrade cannot handle migration
├─ Too complex to migrate (risk of bugs)
└─ Cleaner to start fresh
2. State bloat (database too large)
Symptoms:
├─ Testnet database >100 GB (excessive for test network)
├─ Sync time >6 hours (slow for new validators)
├─ Node performance degraded (slow queries)
└─ Storage costs high (unnecessary for testnet)
Solution:
├─ Reset → fresh genesis (database starts at ~1 GB)
├─ Sync time <10 minutes (only new blocks)
└─ Performance restored
3. Scheduled maintenance (regular cleanup)
Pilier testnet policy:
├─ Major reset: Every 6 months (planned)
├─ Minor reset: As needed (for breaking changes)
└─ Emergency reset: Rare (critical bugs only)
Benefits:
├─ Validators practice reset procedures (prepares for mainnet issues)
├─ Fresh start allows testing new genesis parameters
└─ Removes accumulated "test junk" (spam transactions, etc.)
4. Critical bug requiring restart
Examples:
├─ Consensus failure (chain halted, cannot recover)
├─ State corruption (validators disagree on state root)
├─ Security vulnerability (requires immediate mitigation)
└─ Genesis parameter error (e.g., wrong validator set)
Response:
├─ Attempt runtime upgrade fix first (if possible)
├─ If unfixable → emergency reset
└─ Document issue → prevent in mainnet
Invalid Reasons (Won't Trigger Reset)
❌ Minor bugs (fix via runtime upgrade)
❌ Individual validator issues (local problem, not network-wide)
❌ Governance disagreements (resolve via on-chain voting)
❌ "Clean slate" requests (not a valid reason alone)
❌ Cosmetic changes (can be done via upgrade)
Reset Schedule
Planned Resets
Pilier testnet schedule:
Regular resets:
├─ Frequency: Every 6 months
├─ Advance notice: 30 days minimum
├─ Timing: Low-activity periods (avoid major testing campaigns)
└─ Coordination: Announced via all channels
Example schedule (2026):
├─ February 1: Testnet launch (genesis)
├─ August 1: First scheduled reset (6 months)
└─ February 1, 2027: Second scheduled reset (12 months)
Reset windows (typical times):
Preferred days:
├─ Monday-Wednesday (avoids weekends)
├─ First week of month (predictable)
└─ Not during holidays (validator availability)
Preferred times (UTC):