Skip to content

An API and test-app that exposes zcash functionality for app consumption

License

Notifications You must be signed in to change notification settings

dorianvp/zingolib

This branch is up to date with zingolabs/zingolib:dev.

Folders and files

NameName
Last commit message
Last commit date
Oct 27, 2023
Sep 18, 2023
Feb 11, 2025
Sep 8, 2023
Apr 16, 2024
Nov 28, 2023
Dec 25, 2024
Sep 18, 2023
Apr 1, 2024
May 31, 2024
Nov 17, 2023
Feb 3, 2025
Feb 5, 2024
Dec 20, 2024
Apr 25, 2023
Nov 13, 2024
Dec 10, 2024
Dec 25, 2024
Dec 25, 2024
Aug 9, 2024
Dec 25, 2024
Sep 3, 2024
Mar 8, 2025
Sep 8, 2023
Sep 8, 2023
May 27, 2024
Feb 3, 2025
Feb 17, 2025
Jun 20, 2022
Jul 9, 2024
Jan 5, 2024
Jun 25, 2021
Jun 25, 2021
Jun 20, 2022
Nov 28, 2024
Jun 23, 2022

Repository files navigation

Zingolib

license codecov This repo provides both a library for zingo-mobile, as well as an included cli application to interact with zcashd via lightwalletd.

Security Vulnerability Disclosure

If you believe you have discovered a security issue, please contact us at:

zingodisclosure@proton.me

Zingo CLI

zingo-cli is a command line lightwalletd-proxy client. To use it, see "compiling from source" below. Releases are currently only provisional, we will update the README as releases come out.

Privacy

  • While all the keys and transaction detection happens on the client, the server can learn what blocks contain your shielded transactions.
  • The server also learns other metadata about you like your ip address etc...
  • Also remember that t-addresses are publicly visible on the blockchain.
  • Price information is retrieved from Gemini exchange.

Note Management

Zingo-CLI does automatic note and utxo management, which means it doesn't allow you to manually select which address to send outgoing transactions from. It follows these principles:

  • Defaults to sending shielded transactions, even if you're sending to a transparent address
  • Can select funds from multiple shielded addresses in the same transaction
  • Will automatically shield your sapling funds at the first opportunity
    • When sending an outgoing transaction to a shielded address, Zingo-CLI can decide to use the transaction to additionally shield your sapling funds (i.e., send your sapling funds to your own orchard address in the same transaction)
  • Transparent funds are only spent via explicit shield operations

Compiling from source

Pre-requisites

  • Rust v1.79 or higher.
    • Run rustup update to get the latest version of Rust if you already have it installed
  • Rustfmt
    • Run rustup component add rustfmt to add rustfmt
  • Build Tools
    • Please install the build tools for your platform. On Ubuntu sudo apt install build-essential gcc
  • Protobuf Compiler
    • Please install the protobuf compiler for your platform. On Ubuntu sudo apt install protobuf-compiler
  • OpenSSL Dev
    • Please install development packages of openssl. On Ubuntu sudo apt install libssl-dev
git clone https://github.com/zingolabs/zingolib.git
cd zingolib
cargo build --release --package zingo-cli
./target/release/zingo-cli --data-dir /path/to/data_directory/

This will launch the interactive prompt. Type help to get a list of commands.

Notes:

  • If you want to run your own server, please see zingo lightwalletd, and then run ./zingo-cli --server http://127.0.0.1:9067
  • The default log file is in ~/.zcash/zingo-wallet.debug.log. A default wallet is stored in ~/.zcash/zingo-wallet.dat
  • Currently, the default, hard-coded lightwalletd server is https://mainnet.lightwalletd.com:9067/. To change this, you can modify the DEFAULT_SERVER const in config/src/lib.rs

Running in non-interactive mode:

You can also run zingo-cli in non-interactive mode by passing the command you want to run as an argument. For example, zingo-cli addresses will list all wallet addresses and exit. Run zingo-cli help to see a list of all commands.

Options

Here are some CLI arguments you can pass to zingo-cli. Please run zingo-cli --help for the full list.

  • --data-dir: uses the specified path as data directory. This is required when not using the --regtest option.
    • Example: ./zingo-cli --data-dir /path/to/data_directory/ will use the provided directory to store zingo-wallet.dat and logs. If the provided directory does not exist, it will create it.
  • --server: Connect to a custom zcash lightwalletd server.
    • Example: ./zingo-cli --data-dir /path/to/data_directory/ --server 127.0.0.1:9067
  • --seed: Restore a wallet from a seed phrase. Note that this will fail if there is an existing wallet. Delete (or move) any existing wallet to restore from the 24-word seed phrase
  • --birthday: Specify wallet birthday when restoring from seed. This is the earliest block height where the wallet has a transaction.
    • Example: ./zingo-cli --data-dir /path/to/data_directory/ --seed "twenty four words seed phrase" --birthday 1234567
  • --recover: Attempt to recover the seed phrase from a corrupted wallet

Regtest

There is an experimental feature flag available with zingo-cli, in which the cli works in regtest mode, by also locally running zcashd and lightwalletd.

For a relatively recent user experience please see: https://free2z.cash/zingo-cli-in-regtest-mode

Please see docs/TEST_REGTEST.md for a detailed explanation.

About

An API and test-app that exposes zcash functionality for app consumption

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Rust 99.1%
  • Other 0.9%