Build from Source
Bitcoin Core v25.0.0 with two patches: BIP-8 timelocked activation and OP_RETURN consensus enforcement. Full GUI wallet, daemon, and RPC. Everything you need to build and run.
Source-only release — build from the roots/dev branch
Step 1
Same requirements as Bitcoin Core v25.0. Below are the most common setups.
sudo apt install autoconf libtool libboost-all-dev \
libevent-dev libssl-dev libzmq3-dev \
libdb-dev libdb++-dev pkg-config \
build-essential g++ make
brew install autoconf libtool boost \
libevent openssl libzmq berkeley-db \
pkg-config
Use the cross-compilation guide in the Bitcoin Core docs: doc/build-windows.md. Build inside a Linux VM or WSL2.
Step 2
Clone directly to the roots/dev branch.
git clone -b roots/dev https://github.com/15Greps/bitcoin-roots.git
cd bitcoin-roots
Generate the build system. Full GUI build recommended — headless daemon only if you prefer.
# With Qt GUI wallet (recommended)
./autogen.sh
./configure --disable-tests --disable-bench
# Headless daemon only
./autogen.sh
./configure --without-gui --disable-tests --disable-bench
GUI requires Qt5 dependencies. On Debian/Ubuntu: sudo apt install libqt5gui5 libqt5core5a libqt5dbus5 qtbase5-dev
Build using all available cores. Expect ~5–15 minutes on modern hardware.
make -j$(nproc)
Step 3
Start the daemon or GUI wallet. The patches are compiled into the binary — no flags required.
# Headless daemon
src/bitcoind -daemon
# Or Qt GUI wallet
src/qt/bitcoin-qt
The node will begin syncing the mainnet blockchain. Initial sync takes several days depending on disk and connection speed.
src/bitcoin-cli getblockchaininfo
Look for "blocks" in the output — it will climb as your node syncs. When it matches the current block height, you're synced.
Check that the BIP-8 deployment is configured:
src/bitcoin-cli getdeploymentinfo
You should see DEPLOYMENT_BIP8 listed with a timelock height. This confirms the activation patch is loaded.
What's different
Bitcoin Roots modifies exactly 9 files in the Bitcoin Core v25.0.0 source tree. Everything else is upstream.
validation.cpp). Blocks with larger OP_RETURN outputs are rejected — not just un-relayed. This is a soft fork, backward-compatible with standard nodes until activation height.Confirm the changes match expectations:
git diff v25.0..roots/dev --stat
Expected output — 9 files, ~381 line changes:
README.md | 110 +++++++++++++--------------
src/consensus/params.h | 9 +++
src/deploymentinfo.cpp | 8 ++
src/kernel/chainparams.cpp | 58 +++++++++++++++
src/script/standard.h | 2 +-
src/validation.cpp | 17 +++++
src/versionbits.cpp | 7 +++++++
src/versionbits.h | 1 +
test/functional/p2p_no_pak.py | 169 ++++++++++++++++++++++++++++++++++++++++++
9 files changed, 323 insertions(+), 58 deletions(-)