Common Error Codes
Here are the most frequent errors you might encounter and their solutions:Consensus Errors
When you encounter consensus errors, quick and appropriate action is essential:Network Errors
Network errors can prevent your node from participating in consensus:Database Errors
Database corruption can require immediate attention:Diagnostic Commands
These commands help you investigate issues and monitor your node:AppHash Mismatch Errors
If you encounter an AppHash mismatch, you’ll need to capture the state for comparison with a known good version:As with FlatKV, the memIAVL store has two possible locations: nodes created before the layout change keep the legacy
$HOME/.sei/data/committer.db shown above (it takes precedence when present), while new nodes use $HOME/.sei/data/state_commit/memiavl. Point -d at whichever exists on your node.dump-flatkv command to iterate and dump the physical (key, value) pairs into per-bucket files (formatted to match dump-iavl so the same diff tooling works on both):
Nodes created before the storage layout change keep the FlatKV store at the legacy path
$HOME/.sei/data/flatkv instead of $HOME/.sei/data/state_commit/flatkv. Pass whichever directory exists on your node to --db-dir.dump-flatkv command accepts the following flags:
--db-dir/-d: FlatKV database directory.--output-dir/-o: output directory; one file is written per bucket.--height: FlatKV target version;0(the default) selects the latest available version.--bucket/-b: restrict the dump to a single bucket (account,code,storage, orlegacy). Defaults to all buckets.
storage bucket at a specific version:
Comparing EVM State Between memIAVL and FlatKV
When debugging an AppHash mismatch that involves EVM state, a byte-for-byte physical dump can diverge between backends even when the underlying state is identical. This is because every FlatKV value embeds a per-key block-height stamp (the height the key was last written or migrated), which differs from the memIAVL leaf versions on a freshly migrated node. Theevm-logical-digest command works around this by computing a backend-independent digest of the EVM logical state — it strips the serialization-version and block-height header on both sides and digests only the logical payload (account balance/nonce/code hash, bytecode, and storage words). This lets a memIAVL node and a FlatKV node be compared at the same chain height:
bucket_digest values and a single FINAL_DIGEST line covering the account, code, storage, and legacy buckets. Compare the FINAL_DIGEST lines from both backends at the same height — they should match. Because FlatKV can contain a FlatKV-only migration-version marker that a memIAVL-only node never owns, that row is automatically omitted from the FlatKV final result so the comparison is apples-to-apples.
For targeted debugging, the command also supports inspecting a single normalized bucket instead of printing the global digest. The full flag reference (inspect mode, sharding, --find-hash) lives in the seidb tooling section of the technical reference. For example, to list the first 50 account rows with version metadata, or to shard the storage bucket under a key prefix by the next 2 bytes:
Identifying AppHash Errors
AppHash errors typically appear in logs as:- Using incorrect node version during sync (ensure you’re on the latest version)
- Corrupted or incorrectly applied snapshots
- Database inconsistencies from improper shutdowns
- Syncing with outdated or incompatible peers
- Stop the node immediately.
- Try a node rollback first:, see here
-
If rollback fails, restore from a fresh snapshot:
- Download a recent snapshot from trusted providers (Polkachu, PublicNode)
- Ensure you’re using the correct node version
- Verify peer configurations are up to date
- Restart the node and monitor logs for continued errors
Peer Connection Issues as AppHash Red Herrings
Important Note: Peer connection failures are often symptoms of underlying AppHash errors, not the root cause. When you see extensive peer connection errors like:- Scan your logs carefully for AppHash errors that may appear intermittently
- Look for the actual error pattern:
- Check if your node is stuck at a specific height despite peer connection attempts
- AppHash mismatches prevent proper block validation
- Node cannot advance to new blocks due to state inconsistency
- Peers may reject connections from nodes with corrupted state
- Network appears to be the problem when it’s actually a local state issue
- First, check for AppHash errors in your logs (search for “wrong Block.Header.AppHash”)
- If AppHash errors are found, treat this as the primary issue
- Only focus on peer connection fixes if no AppHash errors exist
Peer Connection and Handshake Issues
Identifying Peer Issues: Look for these error patterns in your logs:- Outdated peer configurations with mismatched node IDs
- Network infrastructure changes on peer side
- Firewall blocking connections on port 26656
- DNS resolution issues
- Update peer configurations with current node IDs:
-
Verify network connectivity:
-
Check current peer status:
Sync Performance Issues
Identifying Sync Problems: Monitor these indicators:-
Increase packet payload size for large block processing:
-
Optimize mempool settings in
config.toml: -
If node gets stuck at specific height:
- Try restarting the node
- If restart doesn’t help, perform rollback
- Consider taking a fresh snapshot
- Current height not increasing over time
- Increasing lag between current height and max peer height
- Repeated timeout errors in logs
- Mempool size consistently reaching limits
Crash and Panic Debugging
For crashes, panics, or nil pointer exceptions:- Capture at least 1,000 lines of logs leading up to the crash
- Or collect 15 minutes of log data, whichever provides more context
- Include the full stack trace if available
Logging Configuration
Proper logging configuration is essential for debugging and monitoring:Other common Issues and Fixes
-
Sync Problems
- Check available disk space (
df -h) - Ensure proper peer connections (
curl http://localhost:26657/net_info) - Verify firewall settings (port 26656 open)
- Check available disk space (
-
Performance Issues
- Monitor system resources (
htoporiotop) - Check disk I/O performance (
iostat) - Analyze network traffic (
iftop)
- Monitor system resources (
-
Database Issues
-
Run database integrity checks using:
If errors are detected, consider restoring from a recent backup.
-
Consider pruning excessive historical data by adjusting
ss-keep-recentinapp.tomlor running:Alternatively, manually remove old state snapshots to free up space:
-
Run database integrity checks using:
Node Rollback
To rollback a node from an AppHashed state, you need to stop the node first. Do this in your preferred way. Next, do a rollback with:seid process directly in that case. If this doesn’t help, restart your machine.
Then try the rollback steps again.