Skip to content
Back to skills

Knots

ASecurity

Bitcoin 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 that uses Knots, understanding policy and consensus divergence between Core and Knots.

  • 31 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 8, 2026
ai-agentsrustgobashnodegit

Security analysis

A100/100

Scanned September 22, 2026

npx -y skills add claude-dev-suite/claude-dev-suite --skill knots --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Knots?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Knots
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/claude-dev-suite-knots/badge)](https://www.skillsdirectory.com/skills/claude-dev-suite-knots)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: bitcoin-knots
description: |
  Bitcoin 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 that uses Knots, understanding policy and consensus
  divergence between Core and Knots.
allowed-tools: Read, Grep, Glob
---

# Bitcoin Knots

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](#consensus-rules-policy-only-until-2026)
> before deploying anything.

## Key differences from Core

### Mempool policy

- **Stricter standardness** for what can be relayed:
  - `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](../operations/SKILL.md#relay-policy-since-300).
    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".
  - More aggressive filtering of inscriptions / non-standard tx
    patterns by default.
- **`-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.

### Additional options

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.

### Consensus rules: policy-only until 2026

**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:
- A tx accepted by Core's mempool may be rejected by Knots and vice
  versa.
- A miner using Knots may exclude txs Core would have included, and
  produce blocks Core nodes still accept.

That still describes the *policy* delta, but it is no longer the whole
picture. Two consensus changes landed in 2026:

- **BIP-110 "Reduced Data Temporary Softfork" (RDTS)** shipped in
  `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).
- **A BLAKE2b proof-of-work hardfork** shipped in
  `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-RDTS
> `v29.3.knots20260507`, still validates the same chain as Bitcoin Core.
> RDTS enforcement starts at `v29.3.knots20260508` and is unconditional
> from `v29.4.1.knots20260508`.

## When to consider Knots

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 |

## Compatibility

- RPC: near-identical to Core, with Knots-specific extensions.
  `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`.
- ZMQ: identical.
- File formats: identical (cookie, debug.log, wallet.dat, descriptors).
- P2P: same protocol and message types, but `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.

## Releases

- Tagged based on Core releases: `vX.Y.Z.knots20YYMMDD`.
- Released after each Core minor version, with a delay of weeks-months.
- Backports of Core bugfixes are applied along with Knots-specific
  patches.
- Current release as of 2026-09-15 is **`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).
- Knots is still on the 29.x base while Bitcoin Core's own line has
  reached `v31.1` (2026-07-08), so "based on the current Core release"
  no longer holds.
- Subversion strings append a separate `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.

## Verification

Like Core, Knots ships signed releases. Verification process is the
same:
```bash
gpg --verify SHA256SUMS.asc
sha256sum -c SHA256SUMS
```

Luke Dashjr's GPG fingerprint is the primary signer.

## Common bugs / gotchas

- **Mempool divergence** confusing operators: a tx broadcast to a
  Knots node may not propagate if other peers are Core (they accept
  it but Knots peer's first hop drops it). Or vice versa.
- **Build options differ**; Knots build instructions diverge from
  Core in some cases.
- **Some features lag Core** in Knots due to maintainer bandwidth.
- **Upgrading a Knots node across the 2026 releases changes which chain
  it follows.** Moving from a build up to `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.

## Network share

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:
- Node share is not hashrate and is not a measure of consensus support.
- Since the August 2026 split the crawlers bucket by user agent, so a
  Knots node on the BLAKE2b chain and a Core node on the SHA256d chain
  appear in the same total despite validating different chains.

## Status

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.

## See also

- [release-engineering/SKILL.md](../release-engineering/SKILL.md)
- [operations/SKILL.md](../operations/SKILL.md) — in particular
  [Relay policy since 30.0](../operations/SKILL.md#relay-policy-since-300),
  the Core defaults this fork diverges from
- [../../metaprotocols/inscriptions/SKILL.md](../../metaprotocols/inscriptions/SKILL.md)

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.