Repository navigation
Add Zcash forwarding via zecd - #2
Merged
Merged
Conversation
sethforprivacy
force-pushed
the
cake/zcash
branch
from
October 20, 2026 19:18
103160c to
632c202
Compare
zecd 0.8.2 (zecrocks; Zellic-audited, Ironwood-capable, bitcoind-dialect JSON-RPC) holds the seed and sweeps to Kraken's only ZEC deposit method, a t-address. Re-designed from MAGICGrants#51: - Sweep with z_mergetoaddress per pool (ANY_ORCHARD - Orchard + Ironwood - then ANY_SAPLING): inputs minus the ZIP-317 fee to one output, so no fixed fee buffer and no change; its note limits batch a backlog across passes. AllowRevealedRecipients explicitly for the t-address payout. An empty pool ('Could not find any funds to merge.') is skipped. The async operation is awaited in slices up to SEND_TIMEOUT and a failure raises. - Every pass requires zecd's /readyz (scanned to the tip): a wallet still scanning reports a partial balance. - No Dockerfile: zecd's image is distroless and run as published, with docker/zcash-wallet/zecd.toml mounted read-only (our own lightwalletd backend, sapling+orchard receivers, fetch_memos off, auto_unlock). A one-shot zcash-wallet-init (compose profile) restores from the seed and is the only container that ever sees it. No at-rest passphrase: an unattended forwarder would unlock it automatically anyway. - Dry run stops after readiness, balance and Kraken address validation: zecd has no way to build a send without broadcasting it. - Opt-in: zec is not in the AUTOFORWARD_COINS default. Tests: a ZEC dry run never merges (own address and Kraken); a wallet that is not ready is never swept; each pool is swept to the Kraken t-address with AllowRevealedRecipients and an empty pool is skipped. Each fails when its rule is removed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
sethforprivacy
force-pushed
the
cake/zcash
branch
from
October 20, 2026 19:46
632c202 to
5fd7020
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.
Zcash autoforwarding, redesigned from MAGICGrants#51 against the current codebase and zecd 0.8.2:
z_mergetoaddressper pool (ANY_ORCHARD, which covers Orchard and Ironwood, thenANY_SAPLING) to Kraken'sZcash (Transparent)address, withAllowRevealedRecipients. That sends the inputs minus the ZIP-317 fee, so there's no fixed buffer and no change, and a backlog batches across passes./readyz.zcash-wallet-initis the only container that ever sees the seed.zecis not in the default coin list.Tests are in
tests/test_dry_run.py(11 pass; each new guard is mutation-checked). Not yet run against a real wallet: that happens on btcpay-stg with the staging store's ZEC seed.🤖 Generated with Claude Code