Pure bitcoin. No spam tolerated.

Plumb is Bitcoin Knots plus the spam-policy filters its maintainers have reviewed and ACKed, whether they were opened against Knots or against Plumb, and whether or not Knots merges them.

  • Policy, not consensus. The filters change what your node relays and mines. They do not change which blocks are valid, so Plumb follows the same chain as the Knots release it is built on.
  • A drop-in for Knots. Same bitcoind and bitcoin-cli, same bitcoin.conf, same data directory. You can switch back to Knots at any time.
  • Every filter is its own option. All are on by default. -corepolicy turns all of them off along with the rest of the Knots policy.

Current release: v29.4.2.knots20260508.plumb5, built on Bitcoin Knots v29.4.2.knots20260508.

What Plumb ships

OptionWhat it counts or refusesFrom
-rejectfakeoutputsOutputs whose hash or key is data, counted as data carrier bytes.knots#389
-rejectdeadbranchesData in a conditional branch that constants make unreachable.knots#400
-rejectbareenvelopesA run of pushes ended by OP_DROP or OP_2DROP, counted as data carrier bytes.knots#319
-rejectfakemultisigMultisig keys that no signature in the spend proves, beyond 10 per script, counted as data carrier bytes.knots#422
-rejecttokenmessagesAn OP_RETURN that holds a JSON token message or an Omni Layer message.plumb#2

FILTERS.md says what each one rejects and leaves alone, with an example transaction and the line that turns it off. The node logs which filters are active at startup:

Plumb filter -rejectfakeoutputs=1 (knots#389)
Plumb filter -rejectdeadbranches=1 (knots#400)
Plumb filter -rejectbareenvelopes=1 (knots#319)
Plumb filter -rejectfakemultisig=1 (knots#422)
Plumb filter -rejecttokenmessages=1 (plumb#2)

Have a filter of your own? Plumb takes anti-spam policy filters as pull requests. If it is open against Knots, open it against Plumb too and link the two.

Get it

Plumb is distributed as source. Releases are signed git tags named after the Knots release they are built on.

git clone https://github.com/plumb-node/plumb
cd plumb
git checkout v29.4.2.knots20260508.plumb5
git verify-tag v29.4.2.knots20260508.plumb5
cmake -B build -DBUILD_GUI=OFF
cmake --build build -j"$(nproc)"

Tags are signed by Jason Sopko, 89F0 E41D 72CE 523F 4AA1 CDB6 92CD FFB7 C40C D1BA. Fetch the key from keys.openpgp.org or github.com/jasonsopko.gpg.

Build dependencies are the same as Knots. The binaries land in build/bin/. To switch from Knots 29.4.2, stop bitcoind, install the new binaries and start it again; the data directory and bitcoin.conf stay as they are.

To hear about new releases, use Watch, Custom, Releases on the repository.