Get Started

Run a Ladder Script node or try the engine in your browser

NO INSTALL
Try the Engine
Build, simulate, and broadcast Ladder Script transactions in your browser. Connects to live signet.
DEVELOPER
Run a Node
Download the binary, connect to signet, create transactions from the command line.
Download
Bitcoin Core + Ladder Script
Pre-built bitcoind + tools — Linux x86_64, macOS arm64, Windows x86_64 — based on Bitcoin Core v30.0
BLOCK_TYPES=65 UNIT_TESTS=665 FUNC_TESTS=143 PATCH_LINES=~1,600 LIBRARY_LINES=~21,900
Releases View on GitHub
Reviewer / playground binaries only — not for production. Linux x86_64, macOS arm64, and Windows x86_64. Reproducible Guix builds are not yet wired in. The ~1,600 lines of integration code are in 32 modified Core files; the ~21,900-line library lives in 39 new files (38 under src/rung/ plus the src/rung_shims.h boundary header).
Verify the Download

Each release ships a SHA256SUMS file plus a detached PGP signature SHA256SUMS.asc. Verify the signature first, then check the binary against the SHA file.

# 1. Import the release-signing key (one-time setup). gpg --keyserver keys.openpgp.org --recv-keys 777FE81F8CC077FD3D08055E852C2B3190F5B928 # 2. Verify SHA256SUMS was signed by the release key. gpg --verify SHA256SUMS.asc SHA256SUMS gpg: Good signature from "defenwycke <defenwycke@icloud.com>" # 3. Verify the binary archive matches. sha256sum -c SHA256SUMS --ignore-missing bitcoin-core-ladder-v30.0-ladder-0.23-x86_64-linux-gnu.tar.gz: OK
Release-signing key fingerprint: 777FE81F8CC077FD3D08055E852C2B3190F5B928 — this page is the canonical publication. If gpg --verify reports any other key, do not trust the binary. Cross-check against the same fingerprint in the repo's README.md.
Quick Start

The release tarball ships with a pre-configured bitcoin.conf for the Ladder Script signet. Extract, copy the conf into place, and start the daemon:

tar xzf bitcoin-core-ladder-*-x86_64-linux-gnu.tar.gz cd bitcoin-core-ladder-*-x86_64-linux-gnu # Drop the bundled signet config into your bitcoin datadir. mkdir -p ~/.bitcoin cp share/examples/bitcoin-ladder.conf ~/.bitcoin/bitcoin.conf # Start the node. The bundled liboqs.so is found via the binary's # own RUNPATH ($ORIGIN/../lib), so no LD_LIBRARY_PATH needed. ./bin/bitcoind -daemon Bitcoin Core starting # Wait for sync (~30 seconds on the Ladder Script signet). ./bin/bitcoin-cli getblockcount 1216

Create a wallet:

./bin/bitcoin-cli createwallet test ./bin/bitcoin-cli -rpcwallet=test getnewaddress tb1q...

Generate a post-quantum keypair and a Ladder Script descriptor:

./bin/bitcoin-cli generatepqkeypair FALCON512 { "scheme": "FALCON512", "pubkey": "09a6753b11f72acd2bf11fa3676... (897 bytes)", "privkey": "590bef41276ef3efa07cf7b18107... (1281 bytes)" } # parse a descriptor (substitute your own pubkey hex) ./bin/bitcoin-cli parseladder "ladder(sig(@a))" '{"a":"<pubkey-hex>"}' { "conditions_hex": "01010001010101000000", "conditions_root": "443a7849..." }
Signet Configuration

The bundled share/examples/bitcoin-ladder.conf contains:

# Ladder Script Signet signet=1 [signet] server=1 txindex=1 fallbackfee=0.0001 # Ladder Script signet challenge — `51` is OP_TRUE: anyone can mine, # no key required. The seed node is the canonical miner; other nodes # are free to extend the chain too. signetchallenge=51 # Seed node (Amsterdam). addnode=85.9.213.194 # RPC credentials — replace the placeholder password before exposing the node. rpcuser=ladder rpcpassword=CHANGE_ME_BEFORE_USING # Don't customise `rpcport` to one of {38332, 38333, 38334} — those are # bitcoind's default signet RPC, p2p, and Tor onion-bind ports respectively. # Setting `rpcport=38334` looks like it should work but fails at startup # (collides with the auto-bound onion listener). Default rpcport (38332) is # unaffected; if you must change it, pick something outside that range. # Force v1 p2p transport (current seed only speaks v1). v2transport=0

If you'd rather use a different datadir, pass -datadir=/path/to/dd to bitcoind and put the conf there instead.

Building

The repository is a Bitcoin Core v30.0 fork on the ladder-script branch — clone, install liboqs, and build with CMake:

git clone https://github.com/defenwycke/bitcoin-core-ladder-script.git cd bitcoin-core-ladder-script # liboqs is a HARD dependency — PQ schemes are part of the consensus surface, # so a node built without liboqs would silently disagree with PQ-enabled nodes. # On Debian/Ubuntu: build from source per https://github.com/open-quantum-safe/liboqs cmake -B build -DCMAKE_BUILD_TYPE=Release cmake --build build -j$(nproc) # Optional: -DENABLE_QABIO=OFF for the base block set without the QABIO extension
Forked from upstream Bitcoin Core v30.0. The ~1,600-line patch lives across 32 modified files in src/; the ~21,900-line library in 39 new files (38 under src/rung/ plus the src/rung_shims.h boundary header). A single boundary header (src/rung_shims.h) is the only place Core types meet library types. See Annotated Patch for the per-file walkthrough.
RPC Commands
# transaction building createrungtx build an unsigned v4 RUNG_TX (shared conditions tree) signladder one-call sign using descriptor notation signrungtx raw per-input signing path createrung build a single LadderWitness from JSON # descriptor language parseladder parse descriptor to conditions hex + MLSC root + pubkeys_hex + merkle_pubkeys_hex formatladder format conditions hex as descriptor string (key-aware via pubkeys_hex + keys + merkle_pubkeys_hex args) # inspection / validation decoderung decode a ladder witness from hex validateladder validate every witness on a raw v4 RUNG_TX serialiseconditions serialise conditions for P2SH/P2WSH/P2TR_SCRIPT inner-script use computectvhash compute BIP-119 CTV template hash computemutation compute mutated conditions for RECURSE_MODIFIED / RECURSE_DECAY computesighash compute the v4 sighash for a single input (LadderSighash/v1 or LadderKeyPathSighash/v1) — preview before signing # PQ helpers generatepqkeypair FALCON-512 / FALCON-1024 / Dilithium3 / SPHINCS+ pqpubkeycommit SHA256(pubkey) commitment for PQ_BATCH # adaptor signatures (PTLC) extractadaptorsecret recover adaptor secret from sig pair verifyadaptorpresig verify a Schnorr adaptor pre-signature # QABIO suite qabi_buildblock build a qabi_block from participants + outputs qabi_blockinfo decode a qabi_block to JSON qabi_authchain generate an auth hash chain qabi_signqabo coordinator-side FALCON-512 sign over SIGHASH_QABO qabi_sighash compute SIGHASH_QABO for a QABIO tx

Full reference with args / returns / examples for every RPC: RPC Reference.

Links

Ladder Engine — visual builder with live signet connection

Tools — Engine + PQ Batch playground + QABIO playground

Block Reference — documentation for all 65 block types

Docs — specs, FAQ, RPC reference, annotated patch + library

Patch Overview — what changes and how much code

GitHub — full repository