Loading
ZEC: stop sign retry loop by accepting Zebra duplicate/committed sendrawtransaction errors
Problem
ZEC outbounds were retried continuously because BroadcastTx only accepted zcashd’s "already in block chain" as non-fatal. Zebra returns different duplicate/already-processed messages, so successful broadcasts were treated as failures.
Changes
- Added
isRetryableDuplicateBroadcastError - Updated
BroadcastTxto accept these non-fatal messages:- "already in block chain" (zcashd)
- "transaction already exists in mempool" (Zebra)
- "transaction was committed to the best chain" (Zebra)
Impact
- Stops unnecessary ZEC retry loops in signer flow.
- Keeps real broadcast failures unchanged.
Summary by CodeRabbit
- Bug Fixes
- Enhanced error detection for Zcash transaction broadcasts to more reliably recognize duplicate broadcast attempts across different node implementations.
Edited by Ghost User