feat:Create a script for Easepay custom signet network
This commit is contained in:
parent
7e4788879a
commit
68e812aac5
14
Dockerfile
14
Dockerfile
@ -6,7 +6,7 @@ RUN apt-get update && apt-get install -y \
|
|||||||
pkg-config bsdmainutils python3 libssl-dev \
|
pkg-config bsdmainutils python3 libssl-dev \
|
||||||
libevent-dev libboost-system-dev libboost-filesystem-dev \
|
libevent-dev libboost-system-dev libboost-filesystem-dev \
|
||||||
libboost-chrono-dev libboost-test-dev libboost-thread-dev \
|
libboost-chrono-dev libboost-test-dev libboost-thread-dev \
|
||||||
libdb-dev libdb++-dev
|
libdb-dev libdb++-dev python3-pip jq
|
||||||
|
|
||||||
# Clone Bitcoin Core
|
# Clone Bitcoin Core
|
||||||
RUN apt-get install -y git
|
RUN apt-get install -y git
|
||||||
@ -18,12 +18,16 @@ RUN ./autogen.sh
|
|||||||
RUN ./configure
|
RUN ./configure
|
||||||
RUN make
|
RUN make
|
||||||
|
|
||||||
# Prepare Signet configuration
|
# Copy, Prepare Signet configuration and run signet script
|
||||||
RUN mkdir /root/.bitcoin
|
COPY generate_signet.sh .
|
||||||
COPY bitcoin.conf /root/.bitcoin/
|
RUN chmod +x generate_signet.sh
|
||||||
|
|
||||||
|
# Copy the generate.py script from the Bitcoin core source
|
||||||
|
COPY --from=0 /bitcoin/contrib/signet/generate.py /usr/local/bin/
|
||||||
|
RUN chmod +x /usr/local/bin/generate.py
|
||||||
|
|
||||||
# Expose necessary ports
|
# Expose necessary ports
|
||||||
EXPOSE 38333 38332
|
EXPOSE 38333 38332
|
||||||
|
|
||||||
# Start Bitcoin Core
|
# Start Bitcoin Core
|
||||||
CMD ["/bitcoin/src/bitcoind"]
|
CMD ["./generate_signet.sh"]
|
||||||
|
|||||||
86
generate_signet.sh
Normal file
86
generate_signet.sh
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Start Bitcoind in regtest mode
|
||||||
|
./src/bitcoind -regtest -daemon -wallet="test" #change wallet name
|
||||||
|
echo "wating for regtest bitcoind to start..."
|
||||||
|
while ! ./src/bitcoin-cli -regtest getconnectioncount 2>/dev/null 1>&2; do
|
||||||
|
echo -n ".";
|
||||||
|
sleep 1;
|
||||||
|
done
|
||||||
|
echo "started"
|
||||||
|
|
||||||
|
# Generate mew address and keys
|
||||||
|
ADDR=$(./src/bitcoin-cli -regtest getnewaddress '' bech32)
|
||||||
|
PRIVKEY=$(./src/bitcoin-cli -regtest dumpprivkey $ADDR)
|
||||||
|
PUBKEY=$(./src/bitcoin-cli -regtest getaddressinfo $ADDR | jq -r .pubkey)
|
||||||
|
|
||||||
|
# Calculate script length and keys
|
||||||
|
LENX2=$(printf $PUBKEY | wc -c)
|
||||||
|
LEN=$((LENX2/2))
|
||||||
|
LENHEX=$(printf '%x\n' $LEN)
|
||||||
|
SCRIPT="51${LENHEX}${PUBKEY}51ae"
|
||||||
|
|
||||||
|
# Output the generated values
|
||||||
|
cat <<EOF
|
||||||
|
ADDR=$ADDR
|
||||||
|
PRIVKEY=$PRIVKEY
|
||||||
|
PUBKEY=$PUBKEY
|
||||||
|
SCRIPT=$SCRIPT
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# Stop the regtest node
|
||||||
|
./src/bitcoin-cli -regtest stop
|
||||||
|
|
||||||
|
# Create a new directory for the custom signet
|
||||||
|
datadir=/root/signet-custom
|
||||||
|
mkdir $datadir
|
||||||
|
|
||||||
|
# Write the custom signet configuration
|
||||||
|
cat > $datadir/bitcoin.conf <<EOF
|
||||||
|
signet=1
|
||||||
|
[signet]
|
||||||
|
daemon=1
|
||||||
|
signetchallenge=$SCRIPT
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# Start bitcoind with the custom signet configuration
|
||||||
|
./src/bitcoind -datadir=$datadir -wallet="test"
|
||||||
|
|
||||||
|
# Wait for the custom signet to start
|
||||||
|
echo "Waiting for custom Signet bitcoind to start"
|
||||||
|
while ! ./src/bitcoin-cli -datadir=$datadir getconnectioncount 2>/dev/null 1>&2; do
|
||||||
|
echo -n ".";
|
||||||
|
sleep 1;
|
||||||
|
done
|
||||||
|
echo "Started"
|
||||||
|
|
||||||
|
# Import the private key to the custom signet node
|
||||||
|
./src/bitcoin-cli -datadir=$datadir importprivkey "$PRIVKEY"
|
||||||
|
|
||||||
|
# Generate a new address for mining
|
||||||
|
NADDR=$(./src/bitcoin-cli -datadir=$datadir getnewaddress)
|
||||||
|
|
||||||
|
# Examples from
|
||||||
|
# https://github.com/bitcoin/bitcoin/pull/19937#issuecomment-696419619
|
||||||
|
|
||||||
|
|
||||||
|
# Start mining blocks
|
||||||
|
# Include generate.py script into docker
|
||||||
|
# Generate the first block to your Address using a specific block time
|
||||||
|
./contrib/signet/generate.py --cli="./src/bitcoin-cli -datadir=$datadir" generate 1 --block-time=1 --address="$NADDR" --grind-cmd='./src/bitcoin-util grind'
|
||||||
|
|
||||||
|
# (WIP)
|
||||||
|
#../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
|
||||||
|
|
||||||
|
|
||||||
|
# Generate and create a block template. this generate a PBST, process it, and submit the block to the signet network
|
||||||
|
./src/bitcoin-cli -datadir=$datadir getblocktemplate '{"rules": ["signet","segwit"]}' \
|
||||||
|
| ./contrib/signet/generate.py --cli="./src/bitcoin-cli -datadir=$datadir" genpsbt --address="$NADDR" \
|
||||||
|
| ./src/bitcoin-cli -datadir=$datadir -stdin walletprocesspsbt
|
||||||
|
|
||||||
|
# Solve and submit a PBST
|
||||||
|
./contrib/signet/generate.py solvepsbt --grind-cmd='./src/bitcoin-util grind' | ./src/bitcoin-cli -datadir=$datadir submitblock
|
||||||
|
|
||||||
|
# Stop the custom Signet node
|
||||||
|
./bitcoin-cli -datadir=$datadir stop
|
||||||
61
signet.sh
61
signet.sh
@ -1,61 +0,0 @@
|
|||||||
#!/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 <<EOF
|
|
||||||
ADDR=$ADDR
|
|
||||||
PRIVKEY=$PRIVKEY
|
|
||||||
PUBKEY=$PUBKEY
|
|
||||||
SCRIPT=$SCRIPT
|
|
||||||
EOF
|
|
||||||
|
|
||||||
./bitcoin-cli -regtest stop 2>&1
|
|
||||||
|
|
||||||
datadir=$HOME/signet-custom-$$
|
|
||||||
mkdir $datadir
|
|
||||||
cat > $datadir/bitcoin.conf <<EOF
|
|
||||||
signet=1
|
|
||||||
[signet]
|
|
||||||
daemon=1
|
|
||||||
signetchallenge=$SCRIPT
|
|
||||||
EOF
|
|
||||||
|
|
||||||
./bitcoind -datadir=$datadir -wallet="test"
|
|
||||||
|
|
||||||
printf "Waiting for custom Signet bitcoind to start"
|
|
||||||
while ! ./bitcoin-cli -datadir=$datadir getconnectioncount 2>/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
|
|
||||||
Loading…
x
Reference in New Issue
Block a user