Skip to content

Releases: RunOnFlux/kaspa-core

Release list

v1.0.0

Choose a tag to compare

@TheTrunk TheTrunk released this 25 Sep 14:10

Pure-TypeScript Kaspa transaction library for SSP and ZelCore. No WASM; two runtime dependencies (@noble/curves, @noble/hashes).

yarn add @runonflux/kaspa-core

npm: https://www.npmjs.com/package/@runonflux/kaspa-core

1.0.0 — 2026-09-25

First stable release. The API is unchanged from 0.3.0.

  • Funded mainnet verification (AUDIT.md §6.1). Every flow was run on mainnet and accepted, with node-reported mass identical to ours: single-sig; SSP 2-of-2 through the full co-signer flow; enterprise 2-of-3, 4-of-7, 6-of-10 and 10-of-15 with random signer subsets; consolidation; a message payload; KRC-20 commit/reveal; an Igra bridge entry.
  • publishConfig.provenance removed for the first, local publish; provenance returns with trusted publishing from CI.

0.3.0 — 2026-09-24

ZelCore parity (the WASM can be removed) and a second independent security review (AUDIT.md §4.2).

Added

  • @runonflux/kaspa-core/wrpc: a pure-TypeScript JSON-wRPC client, replacing the WASM RpcClient.
    • Resolver or fixed URLs; every node is checked for network, sync state and UTXO index before any request.
    • Failover, keepalive that detects dead nodes, reconnect with re-subscription.
    • UTXOs, balances, fee estimates, mempool, and submission of every transaction kind (v1, payload, lanes).
    • UTXO and DAA-score subscriptions.
    • The protocol is documented with live captures in docs/WRPC_PROTOCOL.md.
  • KRC-20: krc20Transfer, krc20Mint, krc20Inscription (ZelCore's exact script and JSON, validated).
  • Igra entries: igraEntryPayload, planIgraEntry, mineIgraEntry (binds the payload to the locked amount), parseIgraEntryPayload.
  • Amount sources and the ledger: SignOptions.signedAmounts (ledger), SignOptions.maxFee, OpenBundleOptions.fundingTransactions, entriesFromFundingTransactions, and REST getFundingTransaction (proven by transaction ID).
  • SubmitOutcomeUnknownError for REST and wRPC submissions.
  • REST: getHistoryByOffset and the prefix option. Also LocalSigner.destroy(), validateReceivingSpend, and a covenant-output warning.

Security

  • Breaking: openSigningBundle refuses to open without an independent amount source. Pass trustBundleEntries: true to opt out explicitly.
  • Transactions without outputs are refused everywhere.
  • Signing enforces a fee ceiling (default 5 KAS).
  • v1 compute budgets have a floor, the spend's minimum, everywhere.
  • Change scripts must be valid and canonical.
  • Covenant UTXOs are never selected, and covenant outputs are denied by default.
  • Only library-created signers may skip re-verification (a signer's selfVerifying flag is no longer trusted).
  • Digest signers only accept 32-byte digests.
  • Key errors never echo the key.
  • REST and wRPC UTXOs must match the script of the address they are reported for, and only requested addresses are accepted.
  • stringifyWithBigInt uses a unique marker and accepts only u64 values.
  • REST query parameters are allowlisted.

Fixed

  • Coinbase maturity is 1,000 DAA, not 200.
  • Small change is no longer folded into the fee when keeping it is cheaper.
  • parseScript rejects a truncated PUSHDATA length.