From 7e4788879ac42d5972e36b57b9f54ff27efddbe9 Mon Sep 17 00:00:00 2001 From: Elyan Date: Fri, 16 Feb 2024 09:43:04 -0800 Subject: [PATCH] setup script --- Dockerfile | 29 +++++++++++++++++++++++++ bitcoin.conf | 4 ++++ signet.sh | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 94 insertions(+) create mode 100644 Dockerfile create mode 100644 bitcoin.conf create mode 100644 signet.sh diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..051eb1a --- /dev/null +++ b/Dockerfile @@ -0,0 +1,29 @@ +FROM ubuntu:20.04 + +# Install dependencies +RUN apt-get update && apt-get install -y \ + build-essential libtool autotools-dev automake \ + pkg-config bsdmainutils python3 libssl-dev \ + libevent-dev libboost-system-dev libboost-filesystem-dev \ + libboost-chrono-dev libboost-test-dev libboost-thread-dev \ + libdb-dev libdb++-dev + +# Clone Bitcoin Core +RUN apt-get install -y git +RUN git clone https://github.com/bitcoin/bitcoin.git + +# Build Bitcoin Core +WORKDIR /bitcoin +RUN ./autogen.sh +RUN ./configure +RUN make + +# Prepare Signet configuration +RUN mkdir /root/.bitcoin +COPY bitcoin.conf /root/.bitcoin/ + +# Expose necessary ports +EXPOSE 38333 38332 + +# Start Bitcoin Core +CMD ["/bitcoin/src/bitcoind"] diff --git a/bitcoin.conf b/bitcoin.conf new file mode 100644 index 0000000..70af028 --- /dev/null +++ b/bitcoin.conf @@ -0,0 +1,4 @@ +signet=1 +[signet] +daemon=1 +# we would add our custom signet parameters here \ No newline at end of file diff --git a/signet.sh b/signet.sh new file mode 100644 index 0000000..37daa6a --- /dev/null +++ b/signet.sh @@ -0,0 +1,61 @@ +#!/bin/sh + +cd ~/src/bitcoin/src + +./bitcoind -regtest -daemon=1 -wallet="test" +printf "Waiting for regtest bitcoind to start" +while ! ./bitcoin-cli -regtest getconnectioncount 2>/dev/null 1>&2 +do printf .; sleep 1 +done; echo + +ADDR=$(./bitcoin-cli -regtest getnewaddress '' bech32) +PRIVKEY=$(./bitcoin-cli -regtest dumpprivkey $ADDR) +PUBKEY=$(./bitcoin-cli -regtest getaddressinfo $ADDR | jq -r .pubkey) + +LENX2=$(printf $PUBKEY | wc -c) +LEN=$((LENX2/2)) +LENHEX=$(echo "obase=16; $LEN" | bc) +SCRIPT=$(echo 51${LENHEX}${PUBKEY}51ae) + +cat <&1 + +datadir=$HOME/signet-custom-$$ +mkdir $datadir +cat > $datadir/bitcoin.conf </dev/null 1>&2 +do printf .; sleep 1 +done; echo + +./bitcoin-cli -datadir=$datadir importprivkey "$PRIVKEY" +NADDR=$(./bitcoin-cli -datadir=$datadir getnewaddress) + +# Examples from +# https://github.com/bitcoin/bitcoin/pull/19937#issuecomment-696419619 + +../contrib/signet/generate.py --cli="./bitcoin-cli -datadir=$datadir" generate 1 --block-time=1 --address="$NADDR" --grind-cmd='./bitcoin-util grind' +#../contrib/signet/generate.py --cli="./bitcoin-cli -datadir=$datadir" generate 1 --block-time=1 --address="$NADDR" --backdate 0 +#../contrib/signet/generate.py --cli="./bitcoin-cli -datadir=$datadir" generate 1 --block-time=1 --descriptor="wpkh(...)#..." --secondary + +./bitcoin-cli -datadir=$datadir getblocktemplate '{"rules": ["signet","segwit"]}' \ + | ../contrib/signet/generate.py --cli="./bitcoin-cli -datadir=$datadir" genpsbt --address="$NADDR" \ + | ./bitcoin-cli -datadir=$datadir -stdin walletprocesspsbt + +#../contrib/signet/generate.py solvepsbt --grind-cmd='./bitcoin-util grind' | ./bitcoin-cli -datadir=$datadir submitblock + +./bitcoin-cli -datadir=$datadir stop