Skip to main content
Understanding common errors and their solutions helps maintain a healthy node operation.

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.
On Giga Storage nodes, EVM state lives in a FlatKV store rather than in the memIAVL trees, so an AppHash comparison there requires dumping the FlatKV state as well. Use the 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.
The 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, or legacy). Defaults to all buckets.
For example, to dump only the 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. The evm-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:
Each run prints per-bucket 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:
The legacy IAVL backend has been fully removed and SeiDB State Commit (SC) is now mandatory. SC must be enabled via sc-enable = true in the [state-commit] section of app.toml. If SC is not enabled, the node no longer falls back to IAVL — it panics at startup with:
The seid debug dump-iavl command has also been removed along with the IAVL backend. To inspect state, use the seidb dump-iavl tool shown above.
Always include the app hash, commit hash, and block height from your logs when reporting issues.

Identifying AppHash Errors

AppHash errors typically appear in logs as:
Common Causes:
  • 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
Resolution Steps:
  1. Stop the node immediately.
  2. Try a node rollback first:, see here
  3. 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
  4. 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:
Don’t focus solely on fixing peer connections first. Instead:
  1. Scan your logs carefully for AppHash errors that may appear intermittently
  2. Look for the actual error pattern:
  3. Check if your node is stuck at a specific height despite peer connection attempts
Why This Happens:
  • 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
Debugging Approach:
  1. First, check for AppHash errors in your logs (search for “wrong Block.Header.AppHash”)
  2. If AppHash errors are found, treat this as the primary issue
  3. Only focus on peer connection fixes if no AppHash errors exist
This approach can save hours of debugging time by addressing the root cause rather than symptoms.

Peer Connection and Handshake Issues

Identifying Peer Issues: Look for these error patterns in your logs:
Common Causes:
  • Outdated peer configurations with mismatched node IDs
  • Network infrastructure changes on peer side
  • Firewall blocking connections on port 26656
  • DNS resolution issues
Resolution Steps:
  1. Update peer configurations with current node IDs:
  2. Verify network connectivity:
  3. Check current peer status:

Sync Performance Issues

Identifying Sync Problems: Monitor these indicators:
Common Solutions:
  1. Increase packet payload size for large block processing:
  2. Optimize mempool settings in config.toml:
  3. If node gets stuck at specific height:
    • Try restarting the node
    • If restart doesn’t help, perform rollback
    • Consider taking a fresh snapshot
Warning Signs to Watch For:
  • 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:
Configure log rotation to manage storage effectively:
Enable core dumps for crash analysis:

Other common Issues and Fixes

  1. Sync Problems
    • Check available disk space (df -h)
    • Ensure proper peer connections (curl http://localhost:26657/net_info)
    • Verify firewall settings (port 26656 open)
  2. Performance Issues
    • Monitor system resources (htop or iotop)
    • Check disk I/O performance (iostat)
    • Analyze network traffic (iftop)
  3. 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-recent in app.toml or running:
      Alternatively, manually remove old state snapshots to free up space:

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:
Then, restart the node. In case you see the following error while trying to rollback:
This means that you did not shutdown the node properly. Try to shutdown or kill the seid process directly in that case. If this doesn’t help, restart your machine. Then try the rollback steps again.