Skip to content

AURA-during-sync causes permanent peer banning when validator syncs from genesis #1490

@erik-axeljakobsson

Description

@erik-axeljakobsson

Summary

When a validator syncs from genesis (e.g., after a chain data wipe), it encounters historical blocks where it held AURA slots. The partner_chains_aura_import_queue import logic does not distinguish between "importing old blocks" and "actively authoring," causing the node to send duplicate block requests for already-existing blocks. Peers interpret this as misbehavior and apply INT32_MIN reputation penalty (Substrate sc-network crate), permanently banning the syncing validator.

Impact

  • Any validator that needs to sync from genesis (after data wipe, EBS replacement, PVC deletion) will be permanently banned by peers and fork
  • Observed on qanet (May 2026): EC2 validators syncing through ~800k blocks hit AURA slots repeatedly, generating 18,000+ ban events in 3 days
  • Current workaround is the unban monitor (polls network_peerReputations, auto-calls network_unbanPeer), but this is a band-aid — the duplicate block requests still occur

Expected Behavior

A syncing validator should not trigger AURA block production logic when importing historical blocks. The node should detect it is in sync mode and skip AURA slot handling for blocks that already exist on the chain.

Reproduction

  1. Deploy a validator on an established chain (e.g., qanet with ~800k blocks)
  2. Wipe its chain data (rm -rf /var/lib/midnight/)
  3. Restart the node — it syncs from block 0
  4. Observe peer banning logs on other validators: Same block request multiple times from <peer_id>
  5. Syncing validator loses all peers and forks

Relevant Code

  • partner_chains_aura_import_queue — where AURA slot verification happens during import
  • Substrate sc-network crate — where the INT32_MIN reputation penalty is applied

Workaround

Unban monitor running on peers (K8s chart midnight.unbanMonitor.enabled: true). This auto-unbans the syncing validator so it can make progress, but does not prevent the duplicate block requests.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions