test: zebra zcashd compat tests#5
Merged
Merged
Conversation
Co-Authored-By: Claude <noreply@anthropic.com>
p0mvn
force-pushed
the
roman/zcashd-wrap-tests
branch
from
June 13, 2026 18:29
93aca42 to
b078eff
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds an opt-in zcashd-compat stack profile to the integration-test harness: each test "node" becomes a paired regtest stack of
zebrad+zcashd -zebra-compat(P2P disabled, ingesting blocks from zebrad over JSON-RPC).This lets the repo run zcashd RPC/wallet coverage against a stack where zebrad owns consensus, serving the
"benchmark for the replacement stack" intent for the parts that still depend on the zcashd wallet/RPC surface.
Motivation
Many migrated tests sit in
DISABLED_SCRIPTSbecause they exercise zcashd RPCs with no zallet equivalent yet (key export/import, legacy wallet history, HTTP basic auth, chainstate/reorg behavior). This profile runs the real zcashd wallet/RPC surface against zebrad-driven consensus, so that behavior can be validated and used as a completeness benchmark while the Z3 stack (zallet/zainod) converges.What this adds
Harness support (
qa/rpc-tests/test_framework/)zcashd_compat.py: proxy that routes P2P/topology RPCs andgenerateto zebrad and everything else to zcashd, paired startup, staticMINER_KEYSfunding,ZebraArgs.activation_heights↔ zcashd-nuparamstranslation, and a zebrad-datadir-only chain cache builder.util.py: process management utilitiestest_framework.py: custom edits/wiring to enable zcashd compatTests (
ZCASHD_COMPAT_SCRIPTS, run single-threaded) — 7 profile-native + 2 re-enabled:zcashd_compat_smoke.pysendtoaddress, forwarding into zebra's mempool, confirmation, tip equality (2 nodes)zcashd_compat_identity.pygetzebracompatinfohealth/identity: service/sync state, reachability, identity, genesis/tip agreementzcashd_compat_reorg.pyvalid-forkwith −1 confirmationszcashd_compat_reorg_wallet.pyzcashd_compat_persistence.py-zebra-compat-flush-interval=1flushes chainstate to the tip; survives aSIGKILL+ zcashd-only restartzcashd_compat_wallet.pygettransaction/listunspent/listtransactions,dumpprivkey)zcashd_compat_wallet_import.pydumpprivkey→importprivkeywith rescan reconstructs the UTXO set (2-node direct delivery)multi_rpc.pykeypool.pyencryptwallet/restart pathCI (
.github/workflows/ci.yml): downloads a SHA256-pinned zcashd release artifact and runs the tests.Docs:
qa/zcashd-compat/README.md(profile design, per-test coverage, scope & non-goals), plusqa/README.mdand the book's running-tests page.Test evidence
Full suite green locally, single-threaded (matching CI): 9/9 pass. New tests additionally stress-looped in isolation:
wallet10/10,wallet_import5/5,reorg_wallet5/5,persistence5/5. Without--zcashd-compat, the executed test list is unchanged.AI Disclosure
This contribution was prepared with assistance from Claude Code (Anthropic). The author is solely responsible for the change. Per AGENTS.md, the commit(s) carry a
Co-Authored-By:trailer identifying the AI agent.