Skip to content

YoneCode/zecscriptions-minter

Repository files navigation

zecscriptions-minter

Parallel ZRC-20 mint bot for Zcash. works for any ZRC-20 ticker.

What it does

  1. Reads UTXOs at your t1 address.
  2. If you don't have N cardinal UTXOs of the exact mint-funding size, runs one split tx and waits for it.
  3. Polls for the deploy tx of the target ticker — either via the launchpad's /api/zrc20/token/<TICKER> endpoint, or by scanning zebrad's mempool and last few blocks.
  4. The instant the deployer address is known, broadcasts N pre-built commit+reveal pairs in parallel.
  5. Writes per-pipeline results to results-<timestamp>.json and exits.

Why it's fast

  • All commit txs are pre-built and pre-signed before the trigger fires. Only the reveal's deployer-payout output is dynamic.
  • N independent cardinal UTXOs → no chain dependency between mints.
  • Direct sendrawtransaction to zebrad → no indexer round-trip, no rate limit. Falls back to the launchpad API when you don't have your own node.
  • Fast-path reveal broadcast (commit may still be in mempool) with a chained-mempool retry loop.
  • Pure ESM Node, no npm runtime deps. Crypto is vendored under vendor/.

Requirements

  • Node 20.x (.nvmrc is set).

  • A funded t1 address. Rough budget for N parallel mints:

    N × 0.002 ZEC + ~0.0001 ZEC for the split + change overhead
    

    N=1 → ~0.0025 ZEC. N=20 → ~0.045 ZEC.

  • Optional: your own zebrad / zcashd JSON-RPC. With one, the bot bypasses the launchpad's rate-limited indexer entirely. Without one, set mode: "indexer" and keep parallelism <= 25.

Setup

git clone https://github.com/YoneCode/zecscriptions-minter.git
cd zecscriptions-minter
nvm use                # node 20

node gen-wallet.mjs    # prints a fresh t1 + privHex. Back them up.
# Send ZEC to the printed address.

cp config.example.json config.json
$EDITOR config.json    # paste privHex, set ticker / parallelism / mode

config.json is in .gitignore. Never commit it. Anyone with the privHex can spend the funds at that address.

Key config fields

  • mode"zebrad" if you run a node, "indexer" otherwise.
  • privHex — 64 hex chars from gen-wallet.mjs.
  • zebrad.url — JSON-RPC endpoint (zebrad needs getaddressutxos enabled; zcashd needs addressindex=1).
  • target.ticker — e.g. ZECS.
  • target.lim — must match the deploy's lim exactly, or every mint is rejected by the scanner.
  • parallelism — start at 1, then scale.

Running

node index.mjs --check     # validate config + derive address. No network.
node index.mjs --dry-run   # build + decode N pipelines, broadcast nothing.
node index.mjs             # live run: waits for the deploy, then strikes.

Always --check and --dry-run first. A malformed reveal = miner fee burned with no balance credited.

What it does not do

  • No listing or selling. Use the launchpad UI after mint-out.
  • No IP rotation, no indexer sybilling. Broadcast bypasses the indexer anyway, so write rate-limits don't matter in zebrad mode.
  • No tx cancellation. Once a commit is broadcast, the miner fee is paid whether the reveal lands or not.

Files

index.mjs              entry point
gen-wallet.mjs         fresh t1 generator
test.mjs               offline self-tests
config.example.json    template (commit this; never commit config.json)
lib/
  log.mjs              structured logger
  zebrad-rpc.mjs       JSON-RPC client
  indexer-client.mjs   launchpad API client
  utxo-source.mjs      UTXO discovery + cardinal selection
  splitter.mjs         Phase 0
  trigger.mjs          Phase 1
  mint-pipeline.mjs    Phase 2
zcash-tx.mjs           V5 tx builder + ZIP-244 sighash
protocol-constants.js  ZRC-20 fee economics
vendor/                pinned ESM bundles of @noble/* and @scure/*

Risks

  • 5-day-old launchpad project, no third-party security audit.
  • Operator can set-visibility on tickers post-mint via admin API. Your mint can land on-chain and still be hidden from the UI.
  • 2.5% trade fee on resale. Marketplace opens after mint-out only.
  • Run on a machine you control. The privHex is the wallet — leak it once, funds are gone.

License

MIT. See LICENSE. Vendored crypto bundles keep their upstream MIT licenses. zcash-tx.mjs and protocol-constants.js originate from the zecscriptions launchpad project and are included under the same MIT terms.

Unofficial software. Not affiliated with or endorsed by the zecscriptions launchpad team. Use at your own risk.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors