Relay policy, not consensus. This client cannot fork the chain.
DOG Mode is Bitcoin Core + Libre Relay + two relay-policy changes. It validates exactly the same blocks and transactions as Bitcoin Core — a transaction that is valid in a block is valid here and vice versa, byte for byte. What changes is only which unconfirmed transactions this node is willing to accept into its mempool and pass along to peers. Nodes running different relay policies coexist on the same network today (Core, Knots, Libre Relay); DOG Mode is one more.
This is a reference implementation of the DOG Mode client proposed by Leonidas in July 2026, built on Peter Todd's Libre Relay branch (libre-relay-v30.2), which already solves preferential peering — permissive nodes find each other via a service bit so relaxed-policy transactions have an unbroken relay path to the miners that accept them.
| Policy | Bitcoin Core default | DOG Mode | Where |
|---|---|---|---|
| Max standard transaction weight | 400,000 WU | 3,900,000 WU (just under the 4M WU consensus block limit) | src/policy/policy.h MAX_STANDARD_TX_WEIGHT |
| Dust relay feerate | 3,000 sat/kvB (546-sat floor on a P2PKH output) | 5 sat/kvB → 1-sat floor (CFeeRate::GetFee rounds up, so the threshold computes to exactly 1 sat for every standard output type) |
src/policy/policy.h DUST_RELAY_TX_FEE |
Both values were already runtime-tunable or compile-time constants in Core; the point of shipping a client is defaults. The dust change means the "padding" sats locked inside inscription UTXOs — measured at ~$23.8M holder-extractable — can be split off and spent.
Everything else — Libre Relay's full-RBF, datacarrier policy, and NODE_LIBRE_RELAY preferential peering — is inherited unchanged from upstream.
- Service bit: advertises
NODE_DOG_MODE(bit 28, experimental range) in addition toNODE_LIBRE_RELAY(bit 29). Peering rides the existing Libre Relay network day one; the DOG bit exists so DOG Mode nodes are independently countable. Bit 28 was chosen after checking a live mainnet address sample (6,967 gossiped addresses, 2026-07-28): bits 26 and 27 are already in use by other experiments (756 and 1,005 nodes), bit 28 by nobody, and bit 29 by 101 real Libre Relay nodes. - User agent:
/DOGMode:30.2.0/— anyone crawling the network can count DOG Mode nodes by user agent without trusting a dashboard. Note thatbitnodes.io, long the default public crawler, no longer resolves (NXDOMAIN as of 2026-07-28), so there is currently no widely-used third-party node census to point at. - DNS seed: placeholder in
src/kernel/chainparams.cpp; a dedicated seeder is part of the release checklist below. Until then, bootstrap with-addnodeagainst known DOG Mode / Libre Relay nodes.
Consensus rules (what makes a block valid) are untouched — same code paths as Bitcoin Core v30.2. A DOG Mode node accepts every block a Core node accepts and rejects every block a Core node rejects. If every DOG Mode node vanished tomorrow, no transaction history would change. The only effect of running one is that large-but-consensus-valid transactions and 1-sat outputs get a relay path to miners instead of relying on out-of-band submission.
The verification matrix lives at contrib/dogmode/test-matrix.sh: a private regtest network of 2× DOG Mode + 1× official Bitcoin Core 30.2 release binary as the control node.
- A ~3.6M WU consensus-valid transaction is accepted by DOG Mode and propagates DOG → DOG. ✅
- The same transaction is rejected by the vanilla Core mempool (
tx-size), confirming it needs the DOG relay path — and vanilla accepts the block containing it once mined. ✅ - A 1-sat P2TR output relays DOG → DOG and is rejected as dust by vanilla Core. ✅
- All nodes remain on an identical best block hash throughout — consensus intact, by construction. ✅
- Both service bits (28 + 29) advertised; the vanilla peer sees
/DOGMode:30.2.0/. ✅
Last local run: 14/14 checks pass (2026-07-28, Linux x86_64, control = release binary bitcoin-30.2-x86_64-linux-gnu). Not yet in CI; no benchmarks claimed. Reproduce with:
cmake -B build -DENABLE_IPC=OFF && cmake --build build -j$(nproc) -t bitcoind bitcoin-cli
VANBIN=/path/to/bitcoin-30.2/bin ./contrib/dogmode/test-matrix.sh
Identical to Bitcoin Core — see doc/build-*.md. Nothing about the build system was touched.
- Regtest matrix passing locally (see above)
- Same matrix running in CI (+ a Knots node added to the net)
- Reproducible (Guix) builds + signed binaries — nobody should trust an unsigned mempool-policy binary from the internet
- DNS seeder +
chainparamsentry - 2–3 public mainnet nodes (pruned) advertising both bits
- Umbrel / Start9 packaging
- Public node counter keyed off the
NODE_DOG_MODEbit, cross-checkable against bitnodes user-agent counts
This is a reference implementation seeking maintainers. The diff against Libre Relay is deliberately tiny (two constants, one service bit, one user-agent string, comments) so that rebasing onto each upstream release is mechanical and so anyone can audit the entire delta in minutes: git diff libre-relay-v30.2..dogmode. If you want to maintain, package, or seed this — open an issue.
- Peter Todd — Libre Relay, the base this stands on, including the preferential-peering design that makes a permissive-relay client viable at all.
- Bitcoin Core contributors — everything else.
- Leonidas — the DOG Mode proposal.
MIT, same as upstream — see COPYING.