zcash-walletd is a shielded-only (Sapling, Orchard, Ironwood, UA) REST wallet
for zcash.
Primary intended to work with the BTCPayServer payment gateway, it offers a REST interface that can be useful in other scenarios.
For instance, it implements a subset of the monero-wallet API,
which allows it to be used interchangeably in some cases.
Create diversified addresses on demand and map them to account # and sub account #. BTCPay associates each store to an account and each invoice into a sub account.
Millions of accounts and sub accounts are supported without significant performance loss.
When a customer pays an invoice, zcash-walletd sees the received
notes and makes a REST/POST request to notify the payment gateway.
Partial payments are supported.
Wallet is view only and does not contain the main account seed or secret key.
# cargo build --release
zcash-walletdlooks for an environment variableVKthat must contains the viewing key of the wallet- Optionally, if a
BIRTH_HEIGHTvariable is present it will indicate the starting scan height BIRTH_HEIGHTis only used for the initial sync
- Passing
--rescanwill instructzcash-walletdto resync from the birth height or the sapling activation height
To build a docker image: Run from the project directory
# ./docker/build.sh
The latest image is available on DockerHub under hhanh00/zcash-walletd:latest
Support for Orchard and UA was added in 1.1.2. You MUST delete the database file because the previous schema is not compatible.
Ironwood scanning requires lightwallet protocol v0.5.0 or newer. On first start, the wallet automatically migrates existing note positions to be unique within each shielded pool. The migration preserves existing notes and remains readable by version 1.1.9 for rollback.