Skip to content

Releases: firecash/zkas-rusty

ZKas Mainnet v1

Choose a tag to compare

@firecash firecash released this 26 Jul 15:47

ZKas Mainnet v1

First mainnet release. Shielded-by-default (Orchard/Halo2), merge-mined with Kaspa (kHeavyHash), 1 BPS.

Genesis: b63f7fe8e50402af34790265e299bb1ba63e943b91a59a670e5971b7a9e84e6f
Fair-launch anchor: Bitcoin block 959713 (00000000000000000001ef962f5604c074751cc75671e798d8b71e592a965a1f) committed in the genesis coinbase — the chain provably did not exist before that block.

Highlights

  • Audit-hardened consensus: reorg-safe shielded nullifier reverts (F-01), PoW-bound shielded IBD import (F-02/F-03), fail-closed anchor age window (F-04/F-05), remote-DoS hardening (F-07/F-08/F-17), self-heal on bad shielded seed (F-09).
  • Normal-launch difficulty: pure KIP-0004 DAA from genesis (no low-difficulty bootstrap window).
  • 5% per-block dev fee to a shielded address; Toccata (seq-commit + canonical-R) active from genesis.
  • KAS<->ZKAS bridge seam present but deactivated in consensus (peg-out behind master switch).

Assets (built by CI)

zkas-v1.0.0-linux-amd64.zip, zkas-v1.0.0-win64.zip, zkas-v1.0.0-osx-arm64.zip — each contains
kaspad, zkas-miner, zkas-walletd, zkas-api, shielded-pay, stratum-bridge.

Run a node: kaspad --utxoindex --archival

ZKas v0.6.0 — coinbase fix + submit-route

Choose a tag to compare

@firecash firecash released this 26 Jul 04:05

ZKas v0.6.0 — coinbase dev-fee fix (block disqualification) + submit-route widen

Live on zkas-mainnet (node binary df8f1da1, deployed to all nodes).

Fixes

  • Coinbase / block disqualification (major): modify_block_template rewrote the last coinbase output as the red-blocks reward, but ZKas appends a 5% dev-fee note after the red reward. On every cache-reused template the dev fee was hijacked to the requesting miner and the red reward left on the cached miner, so the coinbase no longer matched expected_coinbase_transactionBadCoinbaseTransaction. Under a merge-mining fleet this disqualified the majority of blocks (found but unpaid). Fixed by repointing the red reward via a reverse scan for the cached miner's script and preserving the trailing dev-fee note. Verified live: block-disqualification rate 5099/10min → 0. Adds regression test.
  • SubmitBlock RPC route: upstream sized the route at tasks = bps, queue = 10.max(bps*2) = 1 worker / 10-slot queue on a 1-bps chain, dropping valid target-clearing blocks as RouteIsFull under fleet bursts. Widened to tasks ≥ 8, queue ≥ 256.

Binaries (kaspad, zkas-miner, shielded-pay, zkas-walletd, zkas-api, stratum-bridge) are built and attached per-platform by CI.

ZKas v0.5.0 — Bridge reset (peg-out seam + peg-in + new genesis)

Choose a tag to compare

@firecash firecash released this 25 Jul 14:16

ZKas v0.5.0 — Bridge reset (peg-out seam + peg-in primitives + new genesis)

Consensus-breaking chain reset. Nodes on this build run the fresh zkas-mainnet genesis
d15a799d… (launch anchor 2026-07-25); prior-chain nodes cannot join.

Consensus (bundled into the reset)

  • Peg-out burn-exit seamdeclare_burn → exit receipt {V, recipient, nullifier}
    burn accumulator → burn_root folded into the shielded state root (reorg/IBD-safe). The
    ZKas side of the trustless KAS⇄ZKAS bridge.
  • Peg-in Layer-1 primitives (keyless consensus mint)KaspaBurnProof (verify a mirror-ZKAS
    burn tx Merkle-included under a buried-PoW Kaspa header) + general any-index Merkle inclusion
    • turnstile pegged_in accounting (pool = coinbase + pegged_in − fees − burns ≥ 0).
  • Canonical-R live from genesis (Toccata=always / KIP-21 seq-commit) — a shielded state root is
    provably PoW-committed; verified against real Kaspa mainnet.
  • Dev fee — 5% per-block to the new shielded recipient.

Binaries per archive: kaspad, zkas-miner, zkas-walletd, zkas-api, shielded-pay, stratum-bridge.
Built from main @ b1c8360.

ZKas v0.4.0 — trustless-bridge primitive, shielded IBD

Choose a tag to compare

@firecash firecash released this 25 Jul 06:45

ZKas v0.4.0 — trustless-bridge primitive, shielded IBD

Private-by-default Kaspa fork (shielded-by-default via Orchard). This release bundles the consensus work since v0.3.0 and matches the current live zkas-mainnet.

Consensus

  • Full ZKas wire identity: merged-mining magic ZKMM, 16-byte hash personalizations, genesis re-cut. Nodes on this build only interoperate with the reset zkas-mainnet chain.
  • Canonical-R trustless-bridge primitive: a shielded state root is provably PoW-committed via the KIP-21 seq_commit (Toccata active from genesis); OpChainblockSeqCommit reads a buried block's seq-commit on-chain.
  • Pruning + shielded-state IBD over p2p v10 (request_pruning_point_shielded_state) — fast/pruned nodes import the full shielded state (note-commitment tree, nullifier accumulator, turnstile totals, burn root) with cross-check on import.
  • Reorg nullifier crash-consistency: shielded nullifier revert/apply across a reorg now commit in a single atomic WriteBatch.

Binaries in each archive

kaspad, zkas-miner, zkas-walletd, zkas-api, shielded-pay, stratum-bridge.

Assets

  • zkas-v0.4.0-linux-amd64.zip (static musl)
  • zkas-v0.4.0-win64.zip
  • zkas-v0.4.0-osx-arm64.zip (Apple Silicon)
  • zkas-v0.4.0-osx-x86_64.zip (Intel Mac)
  • kaspa-wasm32-sdk-v0.4.0.zip

Built from main @ 603afce.

ZKas v0.3.0 — rebrand + merged mining + wallet fixes

Choose a tag to compare

@firecash firecash released this 15 Jul 08:43

ZKas v0.3.0 — ZKas rebrand, merged mining (tested live), wallet fixes, Windows binaries, and a bootstrap datadir for new nodes.

Setting up a new node — start from the bootstrap datadir

A fresh node syncs from a bundled snapshot (zkas-node-bootstrap-v0.3.0.tar.gz), then catches up to the tip on its own. Steps:

# 1. fresh appdir
rm -rf ./fc-node && mkdir -p ./fc-node

# 2. download the bootstrap snapshot from this release
wget https://github.com/firecash/zkas-rusty/releases/download/v0.3.0/zkas-node-bootstrap-v0.3.0.tar.gz

# 3. extract it into the appdir
tar xzf zkas-node-bootstrap-v0.3.0.tar.gz -C ./fc-node

# 4. start the node
./kaspad --appdir=./fc-node --rpclisten=127.0.0.1:16110 --utxoindex \
  --connect=185.147.157.125:16111 --connect=160.187.211.153:16111

On success the log shows current sink is … / syncing ahead from current pruning point, then a short header IBD to the tip. Use this file — zkas-node-bootstrap-v0.3.0.tar.gz — not any older bootstrap.

What's new

  • Rebrand FireCash → ZKas: address HRP now emits zkas: (legacy firecash: still decodes).
  • Merged mining (AuxPoW) with Kaspa wired end-to-end and tested against a live upstream kaspad. Pool accepts both zkas: and firecash: miner addresses.
  • Wallet net-balance fix: sender change is no longer shown as incoming income; mempool 0-conf visibility; birthday fast-sync; per-RPC timeouts.
  • Consensus hardening: is_shielded_anchor_final no longer panics on a pruned anchor source.

Downloads

Linux x86-64zkas-linux-x86_64-v0.3.0.tar.gz
kaspad, zkas-miner, zkas-walletd, zkas-api, shielded-pay

Windows x86-64zkas-windows-x86_64-v0.3.0.zip
kaspad.exe, stratum-bridge.exe, zkas-miner.exe, zkas-walletd.exe, zkas-api.exe, shielded-pay.exe
(Full node + pool bridge + miner + wallet — everything needed to run the stack on Windows.)

Bootstrap datadirzkas-node-bootstrap-v0.3.0.tar.gz (required for new nodes, see above).

Mine

  • Pool (ASICs): point your miner at mining-pool.zkas.info — port 5566 for small rigs, 5555 for big ASICs. Both zkas: and firecash: payout addresses work.
  • Solo: ./zkas-miner -s 127.0.0.1:16110 -a zkas:<your-address> -t 4

FireCash v0.2.1 — critical wallet update

Choose a tag to compare

@firecash firecash released this 12 Jul 13:16

Critical wallet-correctness and performance update. All users should upgrade. The chain itself is unaffected (no fork; consensus unchanged). Wallets rescan automatically on first start and then show correct balances.

Fixed

  • Wallet balances could differ between devices / miss coins. Wallets scanned raw DAG blocks; consensus applies shielded state per chain block. The node now serves the exact per-chain-block shielded stream (new GetShieldedBlocks RPC); firecash-walletd and shielded-pay sync from it. Old scan state is auto-invalidated and rebuilt.
  • A payment could show up twice in the recipient's wallet (and silently corrupt later spend witnesses) when the same transaction was carried by two parallel DAG blocks: wallets now apply the same nullifier drop rule as consensus. Found by live testing on mainnet.
  • Sends of many notes took hours and were then rejected on transaction mass. Sends are planned against the standard mass cap before proving (max 6 spent notes per tx); walletd splits large payments across several transactions automatically. New POST /api/wallet/consolidate merges small mining-reward notes.
  • Payments no longer rebuild the Halo 2 proving key each time and prove multi-core — a real mainnet payment proof now takes ~7 seconds (measured; previously reported up to 106 minutes).
  • Node: a holed local database could crash-loop the node via the get_blocks RPC. It now returns an RPC error and stays up.
  • Wallet tools work against pruned nodes: the shielded signature domain comes from network parameters, and full scans anchor at the pruning-point frontier. Older wallet builds stop working as pruning advances; upgrading is required.
  • Hosted wallet: sends are always signed on-device (the server never holds spend authority), the seed is remembered per device, and multi-wallet sync shares one chain stream. Explorer: deduplicated feed, honest block-rate stat, public "Network nodes" stat.

⚠ New nodes: bootstrap datadir currently required

Pruning has advanced past genesis, and shielded-state import at the pruning point is not yet part of sync — a brand-new node cannot yet validate the chain from the network alone. Until that ships in the next release, start new nodes from the firecash-bootstrap-datadir.tar.gz asset below: extract it into your --appdir before first start. Existing synced nodes are unaffected.

Upgrade

Stop your node + wallet daemon, replace the binaries, restart the node first, then the wallet daemon. First wallet start performs one automatic rescan.

FireCash v0.2.0

Choose a tag to compare

@firecash firecash released this 10 Jul 18:34

⚠️ TESTNET — coins have no value; the chain may be reset; consensus params can still change.

This build carries a consensus change (1 BPS) and requires a fresh chain — it is not compatible with the v0.1.0 network.

Changes

  • 1 BPS block rate (was 10 BPS); perpetual tail made BPS-aware so wall-clock emission is unchanged. Launch difficulty-ramp windows rescaled. (Consensus break — fresh relaunch required.)
  • walletd send no longer replays the whole chain on every call — it reuses the maintained wallet state and roots the spend at a matured anchor. (Multi-input sends still pending a bridgetree witness-batching optimization.)
  • macOS Intel (x86_64) release build added — Intel Macs now get a working binary.

Assets (all platforms)

  • firecash-*-linux-amd64.zip, -win64.zip, -osx-arm64.zip, -osx-x86_64.zip, WASM SDK
  • Binaries: kaspad, firecash-miner, firecash-walletd, shielded-pay, stratum-bridge

FireCash v0.1.0

Choose a tag to compare

@firecash firecash released this 10 Jul 10:55

⚠️ TESTNET — this is a live test network. Coins have no value, the chain may be reset without notice, and consensus parameters can still change. Do not treat FC as money.

First tagged FireCash release.

Private-by-default money at Kaspa speed — every balance and amount lives in the shielded (Orchard / Halo 2) pool. kHeavyHash PoW (byte-identical to Kaspa), 10 BPS.

Binaries (linux-amd64)

  • kaspad — node (gRPC :16110, p2p :16111)
  • firecash-miner — kHeavyHash miner (native + --merged AuxPoW)
  • firecash-walletd — shielded wallet daemon (REST :8501)
  • shielded-pay — shielded wallet CLI (address / balance / send / sign)
  • stratum-bridge — stratum bridge for ASIC pool mining

Highlights

  • Shielded-by-default wallet (get an address: shielded-pay address --seed-byte 1 --network mainnet)
  • AuxPoW merged mining with Kaspa (dual-acceptance; see the pool's help.txt)
  • Post-easy-window minimum-difficulty floor (no more difficulty collapse)
  • Hardened firecash-walletd (locked CORS, required wallet token, at-rest seed encryption)

Verify downloads against SHA256SUMS. Docs: README.md and OPERATIONS.md.

FireCash v0.1.0-test

FireCash v0.1.0-test Pre-release
Pre-release

Choose a tag to compare

@firecash firecash released this 08 Jul 14:40

Requirements: the .tar.gz binaries need glibc ≥ 2.38 (Ubuntu 24.04+). On older systems (Ubuntu 22.04, Debian 12, …) you'll get GLIBC_2.38 not found — use the kaspad-static (musl) asset, which runs on any Linux, or build from source.

FireCash — run a node & join the network

Prebuilt Linux x86-64 binaries (Ubuntu 24.04). Bundle contains kaspad, firecash-miner, firecash-walletd, firecash-api, stratum-bridge, firecash-bridge.yaml, LAUNCH.md.

Download & unpack

Download firecash-node-linux-x86_64.tar.gz below, then:

tar xzf firecash-node-linux-x86_64.tar.gz
cd firecash
chmod +x kaspad firecash-miner firecash-walletd firecash-api stratum-bridge

1. Run a node (syncs from the FireCash network)

./kaspad --appdir=./fc-node --rpclisten=127.0.0.1:16110 --utxoindex \
  --connect=185.147.157.125:16111 --connect=160.187.211.153:16111

Your node downloads the chain from the seed nodes, then follows the tip. Only the seed nodes' p2p port 16111 needs outbound access; your RPC (16110) stays local.

2. Mine

  • Pool (recommended, works with ASICs): point your miner / KS-series ASIC at mining-pool.firecash.info. No node needed.
  • Solo (with your synced node running):
./firecash-miner -s 127.0.0.1:16110 -a firecash:<your-address> -t 4

3. Wallet

./firecash-walletd --network mainnet --rpc-server 127.0.0.1:16110 --wallet-dir ./fc-wallets --listen 127.0.0.1:8501

4. Explorer

https://explorer.firecash.info


Tokenomics: 6 FC start, halving every 3 months, two-step perpetual tail (0.6 → 0.3 FC/block).