Skip to main content

E2004 — Manifest commit rejected (E_COMMIT_EXPIRES_EPOCH_WINDOW)

What happened

Manifest commit rejected (E_COMMIT_EXPIRES_EPOCH_WINDOW): {detail}. This is the receipt’s what text, produced by the node’s ExecutionError::RasCommit. Placeholders in braces are filled from the failing transaction.

Why it happened

The node rejected the operation with E2004 (category storage, Storage). The receipt’s why field carries the specific cause and context carries structured details, such as the values that filled the placeholders above. The normative rule is in CIP-9.

How to fix

Derive expires_epoch as block_height / storage_epoch_blocks, using the length this chain’s /chain-info publishes for its chain_instance_id (never a compiled or cached copy), and keep it within [current_epoch, current_epoch + MAX_COMMIT_STAGE_TTL_EPOCHS]; the receipt’s detail carries both sides’ numbers so a client/chain epoch skew is visible without node-log access.

Receipt example


All Error Codes

View the complete error code reference