E2004 — Manifest commit rejected (E_COMMIT_EXPIRES_EPOCH_WINDOW)
What happened
Manifest commit rejected (E_COMMIT_EXPIRES_EPOCH_WINDOW): {detail}. This is the receipt’swhat 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 withE2004 (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