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 BroadcastTx to 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

Merge request reports

Loading
Loading