{"record":{"id":"e10e4f3c0628c555","repo":"linera-io/linera-protocol","slug":"no-depositinitiated-event-found-in-receipt-for-tx","errorCode":null,"errorMessage":"no DepositInitiated event found in receipt for tx {tx_hash}","messagePattern":"no DepositInitiated event found in receipt for tx (.+?)","errorType":"exception","errorClass":"ProofError","httpStatus":null,"severity":"error","filePath":"linera-bridge/src/proof/gen.rs","lineNumber":188,"sourceCode":"\n        let (receipts_root, proof_nodes) =\n            crate::proof::build_receipt_proof(&canonical_receipts, tx_index);\n\n        // Sanity check: computed receipts root matches block header\n        if receipts_root != block.header.inner.receipts_root {\n            return Err(ProofError::Permanent(anyhow::anyhow!(\n                \"receipts root mismatch: computed {receipts_root}, \\\n                 header says {}. Receipt encoding may be incorrect.\",\n                block.header.inner.receipts_root\n            )));\n        }\n\n        // Find all DepositInitiated log indices from the canonical receipt\n        let logs =\n            crate::proof::decode_receipt_logs(&receipt_rlp).map_err(ProofError::Permanent)?;\n        let log_indices = crate::proof::find_deposit_log_indices(&logs);\n        if log_indices.is_empty() {\n            return Err(ProofError::Permanent(anyhow::anyhow!(\n                \"no DepositInitiated event found in receipt for tx {tx_hash}\"\n            )));\n        }\n\n        Ok(DepositProof {\n            block_header_rlp,\n            receipt_rlp,\n            proof_nodes,\n            tx_index,\n            log_indices,\n        })\n    }\n}\n\n#[cfg(test)]\nmod tests {\n    #![allow(clippy::cast_possible_truncation)]\n","sourceCodeStart":170,"sourceCodeEnd":206,"githubUrl":"https://github.com/linera-io/linera-protocol/blob/6c226ddcb332ef55118dc8d0aafbd093d5420899/linera-bridge/src/proof/gen.rs#L170-L206","documentation":"After decoding the canonical receipt, no log has a first topic matching the DepositInitiated event signature. Classified ProofError::Permanent. The proof generator only works for transactions that actually emitted a bridge deposit event, so this transaction is not a provable deposit.","triggerScenarios":"Calling generate_deposit_proof with a transaction hash that is unrelated to the bridge; a deposit sent to a different bridge contract deployment; the receipt's logs empty (plain ETH transfer or failed tx); event signature drift between the deployed contract and this crate's expected signature.","commonSituations":"Copy-pasting the wrong tx hash from an explorer; multiple bridge deployments (testnet vs mainnet) confused; contract upgrade changing the event; user initiated the deposit but it reverted without logs.","solutions":["Open the transaction on an explorer and confirm it emits a DepositInitiated event from the bridge contract","Use the hash of the actual deposit transaction, not the approval or another tx in the same block","Verify the bridge contract address deployed on this network matches what the proof client targets","If the event shape changed, update the expected signature in the proof code"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"// Preflight: confirm the receipt contains a DepositInitiated log before proving.\nlet receipt = provider.get_transaction_receipt(tx_hash).await?.expect(\"mined\");\nlet has_deposit = receipt.inner.logs().iter().any(|l| {\n    l.topics().first().map(|t| *t == deposit_event_signature()).unwrap_or(false)\n});","typeGuard":null,"tryCatchPattern":"Err(ProofError::Permanent(e)) if e.to_string().contains(\"no DepositInitiated event\") => {\n    // wrong tx: mark this tx_hash as not-a-deposit and drop it from the queue permanently\n}","preventionTips":["Filter the deposit monitor to only enqueue txs whose logs match the DepositInitiated signature","Verify the bridge contract address matches the deployment emitting the events","Keep the event signature constant in sync with the deployed contract ABI"],"tags":["evm","bridge","deposit","event-log","permanent"],"backgroundTag":"event-log-not-found","analyzedSha":"6c226ddcb332ef55118dc8d0aafbd093d5420899","analyzedAt":"2026-08-22T22:49:09.787Z","schemaVersion":2},"datasetVersion":"2026-08-23T01:17:44.959Z"}