A(n eventual) rust implemented, nym enhanced, indexer and lightwallet service for Zcash.
Zaino is intended to provide all necessary funtionality for clients, including "standalone" (formerly "light") clients/wallets and integrated (formerly "full") client/wallets to access both the finalized chain and non-finalized best chain and the mempool, held by a Zebrad full validator.
*A note to developers/consumers/contributers: The end goal is not an exact one-to-one port of all existing lwd functionality. We currently plan to hold the Service and Darkside RPC implementations, along with a Nym counterpart to the service RPCs for sending and recieving currency over the Nym Mixnet.
If you believe you have discovered a security issue, please contact us at:
The Zaino Indexer service.
Under the "nym_poc" feature flag ZainoD can also act as a Nym powered proxy, running between zcash wallets and Zingo-IndexerD, capable of sending zcash transactions over the Nym Mixnet. Note: The wallet-side nym service RPC implementations are moving to CompactTxStreamerClient for easier consumption by wallets. Functionality under the "nym_poc" feature flag will be removed once a working example has been implemented directly in zingolib.
This is the POC and initial work on enabling zcash infrastructure to use the nym mixnet.
Holds a gRPC server capable of servicing clients over both https and the nym mixnet.
Also holds the rust implementations of the LightWallet Service (CompactTxStreamerServer) and (eventually) Darkside RPCs (DarksideTxStremerServer).
- Currently only send_transaction and get_lightd_info are implemented over nym.
Holds the nym-enhanced, wallet-side rust implementations of the LightWallet Service RPCs (NymTxStreamerClient).
- Currently only send_transaction and get_lightd_info are implemented over nym.
A mempool and chain-fetching service built on top of zebra's ReadStateService and TrustedChainSync, exosed as a library for direct consumption by full node wallets.
A mempool-fetching, chain-fetching and transaction submission service that uses zebra's RPC interface. Used primarily as a backup and legacy option for backwards compatibility.
Holds backend nym functionality used by Zaino.
Holds tonic generated code for the lightwallet service RPCs and compact formats.
- We plan to eventually rely on LibRustZcash's versions but hold our our here for development purposes.
- zebrad https://github.com/ZcashFoundation/zebra.git
- lightwalletd https://github.com/zcash/lightwalletd.git [require for testing]
- zingolib https://github.com/zingolabs/zingolib.git [if running zingo-cli]
- zcashd, zcash-cli https://github.com/zcash/zcash [required until switch to zebras regtest mode]
- To run tests:
- Simlink or copy compiled
zcashd
,zcash-cli
andlightwalletd
binaries to$ zingo-indexer/zingo-testutils/test_binaries/bins/*
- Run
$ cargo nextest run
or$ cargo test
- To run zingo-cli through Zaino, connecting to zebrad locally: [in seperate terminals]
- Run
$ zebrad --config #PATH_TO_ZINGO_PROXY/zebrad.toml start
- Run
$ cargo run
From #PATH_TO/zingolib:
4) Run $ cargo run --release --package zingo-cli -- --chain "testnet" --server "127.0.0.1:8080" --data-dir ~/wallets/test_wallet
The walletside Nym implementations are moving to ease wallet integration but the POC walletside nym server is still available under the "nym_poc" feature flag.
- To run the POC [in seperate terminals]:
- Run
$ zebrad --config #PATH_TO_ZINGO_PROXY/zebrad.toml start
- Run
$ cargo run
- Copy nym address displayed
- Run
$ cargo run --features "nym_poc" -- <nym address copied>
From #PATH_TO/zingolib: [send_transaction commands sent with this build will be sent over the mixnet]
6) Run $ cargo run --release --package zingo-cli -- --chain "testnet" --server "127.0.0.1:8088" --data-dir ~/wallets/testnet_wallet
Note: Configuration data can be set using a .toml file (an example zindexer.toml is given in zingo-indexer/zindexer.toml) and can be set at runtime using the --config arg:
- Run
$ cargo run --config zingo-indexerd/zindexer.toml