Installation¶
Option A — Community extension (recommended)¶
DuckDB version must match exactly
duckton is built against a specific DuckDB version (currently
v1.5.4). DuckDB's loadable-extension ABI requires an exact match, so the
installing DuckDB must be on the matching version. If INSTALL reports a
version mismatch, upgrade DuckDB first, then retry.
The community registry rebuilds the extension for each supported platform; see the duckdb/community-extensions listing.
Option B — Build the loadable extension from source¶
Requires a stable Rust toolchain, the duckdb CLI, and python3 on
PATH. On macOS, set SDKROOT for the bundled-DuckDB build.
The -unsigned flag is required to load a locally-built (unsigned) extension.
Platform support¶
Duckton builds and runs on Linux, macOS, and Windows (native glibc / MSVC).
A CI matrix runs build/test/clippy/fmt plus the loadable-extension LOAD smoke
test on all three.
Excluded targets (the QUIC/TLS stack — quinn + rustls + ring — and the async runtime aren't supported there): WebAssembly, musl, and the MinGW/RTools Windows toolchains.
Optional build features¶
| Feature | What it adds | Cost |
|---|---|---|
| (default) | The mock engine + full protocol/scheduler/trust stack. | No native deps. |
duckdb-engine |
The bundled, locked-down real DuckDB engine (off by default). | Compiles DuckDB from source → needs a C/C++ toolchain. |
ton-live |
The live on-chain settlement path. | Shells out to curl at runtime; off by default. |
Verify the build (for contributors)¶
cargo build --workspace
cargo test --workspace # fast suite, mock engine
export SDKROOT=$(xcrun --show-sdk-path) # macOS only
cargo test -p p2p-node --features duckdb-engine # real-engine e2e
See Contributing for the full developer workflow.