ZSA Testnet

Introducing the ZSA Testnet

The ZSA testnet is a distinct public network dedicated to testing ZSA. It is not the regular Zcash testnet. It runs a ZSA-enabled version of Zebra and lightwalletd, with NU 6.2 activated (but not Ironwood). Anyone can issue custom assets, transfer them between shielded addresses, and finalize them, using test funds that have no real value. Addresses use the regtest prefix uregtest1, not the mainnet u1.

The ZSA testnet exists so application developers can build on ZSA and experiment.

19 Likes

Awesome! Can you link the repositories with custom zebra and lwd? Thanks!

2 Likes

Hey! If I’m not wrong, it’s ZCASH_NODE_ADDRESS=dev.zebra-swaps.zsa-test.net right?

(Forgive me if I’m wrong)

But then, I’m getting “block rejected” when running a test via GitHub - QED-it/zcash_tx_tool: A testing tool for Zcash transaction generation · GitHub

1 Like

That’s the qedit “testnet”. I don’t think it is maintained anymore. Moreover the cli tool was only performing specific transactions (mostly for testing and demos).

Still… where is the testnet mentioned in this post?

Cool! Which code are you running for Zebra? The one from feat: add Zcash Shielded Assets (ZSA) support (draft) by oxarbitrage · Pull Request #10628 · ZcashFoundation/zebra · GitHub ?

5 Likes

Documentation is up online now.

5 Likes

still work-in-progress, but the version at QEDIT repo now points to the latest ironwood, in prep for merging (under feature-flag).

SEPERATELY, and for the curious you can checkout this experimental wallet derived from tx_tool.

This isn’t a QEDIT release, rather it was a fully implemented experiment, somewhat tested by Fable, to check the ergonomics of a regular wallet cli doing ZSA.

From the README:

Wallet Usage

Once the node is running and the tool is built (see Getting Started), the wallet is operated through subcommands:

# See node connection and wallet state
zcash_tx_tool status

# Show your shielded receiving addresses (unified + raw hex)
zcash_tx_tool addresses

# Issue 1,000,000 units of a new shielded asset to account 0
zcash_tx_tool issue "MY-TOKEN" 1000000

# Send 250,000 units to another wallet's unified address
zcash_tx_tool transfer "MY-TOKEN" 250000 --to uregtest1...

# Burn 50,000 units (provably reduce supply)
zcash_tx_tool burn "MY-TOKEN" 50000

# Permanently close the asset's supply
zcash_tx_tool finalize "MY-TOKEN"

# Balances, notes and known assets
zcash_tx_tool balance
zcash_tx_tool notes
zcash_tx_tool assets
(When running from the repository, prefix with cargo run --release -- or use ./target/release/zcash_tx_tool.)

Wallet Commands

Command Description
status Node connection, chain tip, wallet sync height, note/asset counts
sync Scan new blocks for the wallet’s notes and balances
addresses [--accounts N] Unified + raw Orchard receiving addresses per account
balance [--no-sync] Balance table: every known asset × every account
notes [--all] The wallet’s notes (unspent by default)
assets [--label <base> --name <text>] List known ZSA assets, or label a discovered one
issue <desc> <amount> [--to R] Issue a new asset, or more of an existing one
transfer <asset> <amount> --to R [--from-account N] Send asset units (or zec) shielded
burn <asset> <amount> [--from-account N] Provably destroy asset units
finalize <asset> Permanently stop issuance of an own asset
mine [--blocks N] Produce regtest block(s), including mempool txs
shield [--to-account N] Mine + shield a coinbase reward (regtest ZEC faucet)
clean Reset the local state of the wallet selected by --config (rescans on next sync)

All state-changing commands accept --mempool to submit via sendrawtransaction instead of self-mining (see fees).

4 Likes