Setting up Drivechain Environment from Scratch on Console

This is a naive setup of Drivechain, which includes:

  1. Bitcoin Patched – Adds OP_DRIVECHAIN, makes Drivechain transactions standard, removes OP_RETURN standards, allows configurable Signet block time, and changes the default data directory.
  2. BIP300 and BIP301 Enforcer
  3. Thunder
Note: I use screen to create a virtual terminal, but it's totally optional.

🔗 Links

⚙️ Bitcoin Config

mkdir ~/.drivechain
echo "
signet=1
server=1
signetblocktime=60
signetchallenge=00141551188e5153533b4fdd555449e640d9cc129456
acceptnonstdtxn=1
listen=1
rpcallowip=0.0.0.0/0
txindex=1
fallbackfee=0.00021
zmqpubsequence=tcp://0.0.0.0:29000
rpcuser=user
rpcpassword=password
rest=1

[signet]
rpcbind=0.0.0.0
rpcport=38332
addnode=172.105.148.135:38333
" > ~/.drivechain/bitcoin.conf

📦 Download and Extract

wget https://releases.drivechain.info/L1-bitcoin-patched-latest-x86_64-unknown-linux-gnu.zip
unzip -x L1-bitcoin-patched-latest-x86_64-unknown-linux-gnu.zip
mv L1-bitcoin-patched-latest-x86_64-unknown-linux-gnu bitcoin

wget https://releases.drivechain.info/bip300301-enforcer-latest-x86_64-unknown-linux-gnu.zip
unzip -x bip300301-enforcer-latest-x86_64-unknown-linux-gnu.zip
mv bip300301-enforcer-latest-x86_64-unknown-linux-gnu enforcer

wget https://releases.drivechain.info/L2-S9-Thunder-latest-x86_64-unknown-linux-gnu.zip
unzip -x L2-S9-Thunder-latest-x86_64-unknown-linux-gnu.zip
mkdir thunder
mv thunder-latest-x86_64-unknown-linux-gnu thunder/thunder_app

🚀 Start Bitcoin Patched

cd bitcoin
./bitcoind -daemon

🛠️ Create Start Scripts

Start Enforcer

echo '#!/usr/bin/env bash
echo "Starting BIP300 and BIP301 Enforcer"
./bip300301-enforcer-latest-x86_64-unknown-linux-gnu \
  --node-rpc-addr=127.0.0.1:38332 \
  --node-rpc-user=user \
  --node-rpc-pass=password \
  --node-zmq-addr-sequence=tcp://0.0.0.0:29000
' > enforcer/start_enforcer.sh

chmod +x enforcer/start_enforcer.sh

Start Thunder

echo '#!/usr/bin/env bash
echo "Starting Thunder"
./thunder_app \
  --headless \
  --mainchain-grpc-url=http://127.0.0.1:50051 \
  --rpc-addr=0.0.0.0:6009 \
  --log-level=info \
  --log-level-file=info \
  --log-dir=/home/app/logs/thunder
' > thunder/start_thunder.sh

chmod +x thunder/start_thunder.sh