writing-skills
writing-skills
Use when creating new skills, editing existing skills, or verifying skills work before deployment
bitcoin-knotsBitcoin Knots: Luke Dashjr's Bitcoin Core fork with stricter mempool policy and additional configuration. Since the 2026 BIP-110 and BLAKE2b hardforks it is also a separate consensus network, not only a policy downstream. Differences vs Core, when to consider, compatibility. USE WHEN: evaluating Knots for stricter mempool policy, reviewing a node deployment…
Independent GitHub snapshot · Automated classification · Original documentation governs
Bitcoin Knots is a fork of Bitcoin Core maintained primarily by Luke Dashjr. It applies a series of patches on top of each Core release, historically focused on mempool / standardness policy, additional options, and stricter defaults.
As of September 2026 this is no longer only a policy fork. Current Knots releases carry consensus changes — BIP-110 (RDTS) and a BLAKE2b proof-of-work hardfork — and follow a different chain from Bitcoin Core. See Consensus rules before deploying anything.
OP_RETURN / datacarrier: -datacarriersize defaults to 83
bytes of scriptPubKey (MAX_OP_RETURN_RELAY in
src/policy/policy.h at v29.4.1.knots20260508), and only one
nulldata output per tx is relayed (multi-op-return reject).
Bitcoin Core 30.0 (October 2025) raised its own default to
100,000 and relays multiple nulldata outputs, so this is now the
widest policy gap — see
Relay policy since 30.0.
Knots' own 83 is a raise from 42, made in v29.2.knots20251110
(2025-11-10) and described in those release notes as temporary,
to be "reverted back to 42 in a future version".-rejectparasites and similar flags to refuse to relay txs
Luke considers spam (in particular Ordinals/inscriptions in some
configurations). These are on by default in current releases, not
opt-in: src/policy/policy.h at v29.4.1.knots20260508 has
DEFAULT_REJECT_PARASITES{true}, DEFAULT_REJECT_TOKENS{true},
DEFAULT_PERMIT_BAREMULTISIG{false} and
DEFAULT_PERMITBAREDATACARRIER{false}. -rejecttokens was flipped to
default-on in v29.4.1 and also detects Counterparty transactions.Some options exist in Knots but not Core (e.g., specific spam-filter heuristics, more granular feature toggles). Always cross-reference the Knots docs for the version in use.
Historically (through v29.3.knots20260210, 2026-02-10) Knots did
not modify consensus. A Knots node validated the same blockchain as a
Core node, and the two diverged only at the mempool / relay layer:
That still describes the policy delta, but it is no longer the whole picture. Two consensus changes landed in 2026:
v29.3.knots20260508 (2026-05-09). Enforcement was opt-in in that
release — it required consensusrules=rdts in bitcoin.conf or a
GUI confirmation — and a non-RDTS build of the same version was
published as v29.3.knots20260507 (2026-05-08). BIP-110 signals on
version bit 4 with a 1109/2016 (55%) threshold, and makes blocks that
do not signal bit 4 invalid across blocks 961632-963647. The RDTS
consent requirement was removed again in v29.4.1 (knots#362).v29.4.1.knots20260508 (2026-09-02). Its release notes state that
mitigating the situation "requires a backward-incompatible protocol
change", and list a BLAKE2b PoW algorithm, a temporary 800 kWU block
weight limit (~300 kB), RDTS activation at the PoW-change flag day,
and fixes for CVE-2013-2292 / CVE-2020-14199 / CVE-2017-12842.What happened in practice: at block 961,632 (2026-08-08) AntPool mined the first non-signaling block. The main network accepted it; BIP-110 nodes rejected it and followed a minority chain that produced two blocks in roughly eight hours while the main chain advanced 48, then stalled — only 2.53% of blocks had signaled bit 4 over the preceding two weeks, against the 55% threshold. BIP-110 was marked Closed in the BIPs repo on 2026-08-09. Per bitcoinknots.org, BLAKE2b then activated as a flag day at block 961,640 of the Knots chain (2026-08-30), with the RDTS data limits running to 2027-09-01.
Running a current Knots release means following a different chain, under a different proof-of-work algorithm. As of September 2026 that is a hard fork, not a configuration preference. Builds are identified by their date suffix, not their base version: everything up to and including
v29.3.knots20260210(2026-02-10), plus the non-RDTSv29.3.knots20260507, still validates the same chain as Bitcoin Core. RDTS enforcement starts atv29.3.knots20260508and is unconditional fromv29.4.1.knots20260508.
Rows below are for the current release line (v29.4.x, which is
consensus-incompatible with Core as of September 2026):
| Use case | Knots? |
|---|---|
| Default Bitcoin node | No (use Core; ~83% of public nodes do, Sept 2026) |
| Strict spam filter at the relay layer | Only on an RDTS-free build (up to v29.3.knots20260210, or v29.3.knots20260507); current releases change consensus too |
| Mining with custom policy | No — current Knots mines a BLAKE2b chain that Core rejects |
| Lightning service | No (Core is the standard, better support) |
| Block explorer / indexer | No (Core has better tooling support) |
| Deliberately following the Knots/BLAKE2b chain | Yes — that is what the current line is for; treat it as a separate network |
v29.4.1 added block header fields to getblockheader / getblock:
txcount (replacing the deprecated nTx), header_version,
nonce2, nonce3, extranonce, time_offset, header_flags,
xor_key, xor_key_mask_clear_bits and mm_rhs.v29.4.1 added a
NODE_BLAKE2B service bit and prefers those peers over
NODE_REDUCED_DATA (knots#368), and bases DNS-seed cadence on the
NODE_BLAKE2B peer count (knots#386).An RDTS-free Knots node (up to v29.3.knots20260210, or
v29.3.knots20260507) in your network is indistinguishable from a
Core node to peers — only the mempool admission decisions differ. A
v29.4.x node is not: it validates a different chain, so blocks are not
interchangeable in either direction.
vX.Y.Z.knots20YYMMDD.v29.4.1.knots20260508
(published 2026-09-02), preceded by v29.4.knots20260508
(2026-08-07), the v29.3.knots20260508 / v29.3.knots20260507 pair
(2026-05-09 / 2026-05-08) and v29.3.knots20260210 (2026-02-10).v31.1 (2026-07-08), so "based on the current Core release"
no longer holds.Knots:<date>/ segment after
the base-version field: current builds report
/Satoshi:29.4.1/Knots:20260508/, 2024-era builds reported
/Satoshi:27.1.0/Knots:20240801/, and the suffix is emitted by
FormatSubVersion() as far back as v21.2.knots20210629. Detect
Knots by matching the Knots: segment, not the base version.Like Core, Knots ships signed releases. Verification process is the same:
gpg --verify SHA256SUMS.asc
sha256sum -c SHA256SUMS
Luke Dashjr's GPG fingerprint is the primary signer.
v29.3.knots20260210 (or the
non-RDTS v29.3.knots20260507) to v29.4.1.knots20260508 moves the
node onto the BLAKE2b chain. The v29.4.1 release notes warn that a
node that was "old, pruned, and followed invalid blocks" may need a
full resync. Audit the exact build string
(getnetworkinfo.subversion) before assuming a deployment is still on
the Core-compatible chain.As of 2026-09-15, Coin Dance reports Knots on 4,399 of 25,864 public nodes (~17.0%) against Bitcoin Core's 21,431 (~82.8%). A Bitnodes snapshot the same day independently counts 4,420 Knots user agents out of 26,478 reachable nodes (~16.7%). Knots is a double-digit minority of public nodes, on both counts.
The figure is volatile — check a live tracker (coin.dance/nodes/share, bitnodes.io) rather than trusting a number written here. Two caveats when reading it:
Knots is a maintained, active Bitcoin implementation, not
abandonware — v29.4.1.knots20260508 shipped 2026-09-02. Since that
release it is best understood as a separate network rather than a
niche configuration of the same one. The mainstream chain is still the
Core one, by node count (~83%, Sept 2026) and by the fact that the
BIP-110 chain managed two blocks in the eight hours after the split
while the Core chain advanced 48.