From 678baf3938a541be0a5511c805202a2846c2a831 Mon Sep 17 00:00:00 2001 From: Purushotam Date: Tue, 17 Sep 2024 17:50:58 +0545 Subject: [PATCH 1/9] Signet network with 10 seconds block time - Used legacy wallet as descriptor wallets failed signing PSBT. - Created and example docker compose - Used -deprecatedrpc=create_bdb for wallet and signet client --- .env.example | 2 ++ .gitignore | 1 + Dockerfile | 8 ++++---- docker-compose.yml | 36 ++++++++++++++++++++++++++++++++++++ gen-signet-keys.sh | 2 +- setup-signet.sh | 4 ++-- 6 files changed, 46 insertions(+), 7 deletions(-) create mode 100644 .env.example create mode 100644 .gitignore create mode 100644 docker-compose.yml diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..12b974a --- /dev/null +++ b/.env.example @@ -0,0 +1,2 @@ +PRIVKEY=cUdVo9US5MwknUaHjSUu64iJD2DNtPv11Z8chgZHtLfydyaJqUsS +MINERENABLED=1 \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2eea525 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.env \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 2aedee5..06e9bd6 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,6 @@ FROM debian:buster-slim as builder -ARG BITCOIN_VERSION=${BITCOIN_VERSION:-27.0} +ARG BITCOIN_VERSION=${BITCOIN_VERSION:-c23afab47fbe} ARG TARGETPLATFORM @@ -14,7 +14,7 @@ WORKDIR /tmp linux/arm64) \ echo "arm64" && export TRIPLET="aarch64-linux-gnu";; \ esac && \ - BITCOIN_URL="https://bitcoincore.org/bin/bitcoin-core-${BITCOIN_VERSION}/bitcoin-${BITCOIN_VERSION}-${TRIPLET}.tar.gz" && \ + BITCOIN_URL="https://github.com/benthecarman/bitcoin/releases/download/mutinynet-cat-lnhance/bitcoin-${BITCOIN_VERSION}-${TRIPLET}.tar.gz" && \ BITCOIN_FILE="bitcoin-${BITCOIN_VERSION}-${TRIPLET}.tar.gz" && \ wget -qO "${BITCOIN_FILE}" "${BITCOIN_URL}" && \ mkdir -p bin && \ @@ -49,7 +49,7 @@ ENV RPCBIND=${RPCBIND:-"0.0.0.0:38332"} ENV RPCALLOWIP=${RPCALLOWIP:-"0.0.0.0/0"} ENV WHITELIST=${WHITELIST:-"0.0.0.0/0"} ENV ADDNODE=${ADDNODE:-""} -ENV BLOCKPRODUCTIONDELAY=${BLOCKPRODUCTIONDELAY:-""} +ENV BLOCKPRODUCTIONDELAY=${BLOCKPRODUCTIONDELAY:-"10"} ENV MINERENABLED=${MINERENABLED:-"1"} ENV MINETO=${MINETO:-""} ENV EXTERNAL_IP=${EXTERNAL_IP:-""} @@ -69,4 +69,4 @@ RUN pip3 install setuptools ENTRYPOINT ["/usr/local/bin/entrypoint.sh"] -CMD ["run.sh"] +CMD ["run.sh"] \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..dd19b01 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,36 @@ +services: + bitcoind-miner: + container_name: bitcoin-miner + image: alpen_signet:1.0 + env_file: + .env + environment: + BLOCKPRODUCTIONDELAY: 10 + RPCUSER: user + RPCPASSWORD: password + PRIVKEY: $PRIVKEY + SIGNETCHALLENGE: 512102a772f06f3860f4c1b803734db603f1c0cd86601a27670aadf5ff364a1d34f92551ae + MINERENABLED: $MINERENABLED + ports: + - "28332:28332" + - "28333:28333" + - "28334:28334" + - "38332:38332" + - "38333:38333" + - "38334:38334" + + bitcoind-fullnode: + container_name: bitcoin-fullnode + image: alpen_signet:1.0 + + environment: + BLOCKPRODUCTIONDELAY: 10 + RPCPASSWORD: password + SIGNETCHALLENGE: 512102a772f06f3860f4c1b803734db603f1c0cd86601a27670aadf5ff364a1d34f92551ae + MINERENABLED: 0 + ADDNODE: bitcoin-miner:38333 + + ports: + - "38335:38332" + - "38336:38333" + - "38337:38334" \ No newline at end of file diff --git a/gen-signet-keys.sh b/gen-signet-keys.sh index aaafd06..9e5444d 100755 --- a/gen-signet-keys.sh +++ b/gen-signet-keys.sh @@ -30,7 +30,7 @@ if [[ "$MINERENABLED" == "1" && ("$SIGNETCHALLENGE" == "" || "$PRIVKEY" == "") ] rpcpassword=bitcoin " >$DATADIR/bitcoin.conf #start daemon - $BITCOIND -wallet="temp" + $BITCOIND -wallet="temp" -deprecatedrpc=create_bdb #wait a bit for startup sleep 5s #create wallet diff --git a/setup-signet.sh b/setup-signet.sh index 5299320..aed5e6e 100755 --- a/setup-signet.sh +++ b/setup-signet.sh @@ -1,7 +1,7 @@ PRIVKEY=${PRIVKEY:-$(cat ~/.bitcoin/PRIVKEY.txt)} DATADIR=${DATADIR:-~/.bitcoin/} -bitcoind -datadir=$DATADIR --daemonwait -persistmempool -bitcoin-cli -datadir=$DATADIR -named createwallet wallet_name="custom_signet" load_on_startup=true descriptors=false +bitcoind -datadir=$DATADIR --daemonwait -persistmempool -deprecatedrpc=create_bdb +bitcoin-cli -datadir=$DATADIR -named createwallet wallet_name="alpen_wallet" load_on_startup=true descriptors=false #only used in case of mining node if [[ "$MINERENABLED" == "1" ]]; then From a6082434f0a162e68a7c72f6b4334d3bc28ded6f Mon Sep 17 00:00:00 2001 From: Purushotam Date: Tue, 17 Sep 2024 17:55:19 +0545 Subject: [PATCH 2/9] signagte challenge updated corresponding to unexposed private key --- .env.example | 3 ++- docker-compose.yml | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.env.example b/.env.example index 12b974a..d37378b 100644 --- a/.env.example +++ b/.env.example @@ -1,2 +1,3 @@ PRIVKEY=cUdVo9US5MwknUaHjSUu64iJD2DNtPv11Z8chgZHtLfydyaJqUsS -MINERENABLED=1 \ No newline at end of file +MINERENABLED=1 +SIGNETCHALLENGE=51210232cc77c0e1ac931c691d2bd5e413523e9a284e96b7056cc202f119634465e9c551ae \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index dd19b01..a79a379 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -9,7 +9,7 @@ services: RPCUSER: user RPCPASSWORD: password PRIVKEY: $PRIVKEY - SIGNETCHALLENGE: 512102a772f06f3860f4c1b803734db603f1c0cd86601a27670aadf5ff364a1d34f92551ae + SIGNETCHALLENGE: $SIGNETCHALLENGE MINERENABLED: $MINERENABLED ports: - "28332:28332" From 50e70bac35ed95ceda5a1ecfb87115fa3b3e93d9 Mon Sep 17 00:00:00 2001 From: Sapin Bajracharya Date: Fri, 25 Oct 2024 14:01:27 +0545 Subject: [PATCH 3/9] custom signet blocktime --- Dockerfile | 6 +++--- gen-bitcoind-conf.sh | 6 +++++- mine.sh | 8 ++++++-- run.sh | 2 +- setup-signet.sh | 2 +- 5 files changed, 16 insertions(+), 8 deletions(-) diff --git a/Dockerfile b/Dockerfile index 06e9bd6..c29bc31 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,6 @@ FROM debian:buster-slim as builder -ARG BITCOIN_VERSION=${BITCOIN_VERSION:-c23afab47fbe} +ARG BITCOIN_VERSION=${BITCOIN_VERSION:-d8434da3c14e} ARG TARGETPLATFORM @@ -14,7 +14,7 @@ WORKDIR /tmp linux/arm64) \ echo "arm64" && export TRIPLET="aarch64-linux-gnu";; \ esac && \ - BITCOIN_URL="https://github.com/benthecarman/bitcoin/releases/download/mutinynet-cat-lnhance/bitcoin-${BITCOIN_VERSION}-${TRIPLET}.tar.gz" && \ + BITCOIN_URL="https://github.com/benthecarman/bitcoin/releases/download/custom-signet-blocktime/bitcoin-${BITCOIN_VERSION}-${TRIPLET}.tar.gz" && \ BITCOIN_FILE="bitcoin-${BITCOIN_VERSION}-${TRIPLET}.tar.gz" && \ wget -qO "${BITCOIN_FILE}" "${BITCOIN_URL}" && \ mkdir -p bin && \ @@ -49,7 +49,7 @@ ENV RPCBIND=${RPCBIND:-"0.0.0.0:38332"} ENV RPCALLOWIP=${RPCALLOWIP:-"0.0.0.0/0"} ENV WHITELIST=${WHITELIST:-"0.0.0.0/0"} ENV ADDNODE=${ADDNODE:-""} -ENV BLOCKPRODUCTIONDELAY=${BLOCKPRODUCTIONDELAY:-"10"} +ENV BLOCKPRODUCTIONDELAY=${BLOCKPRODUCTIONDELAY:-"30"} ENV MINERENABLED=${MINERENABLED:-"1"} ENV MINETO=${MINETO:-""} ENV EXTERNAL_IP=${EXTERNAL_IP:-""} diff --git a/gen-bitcoind-conf.sh b/gen-bitcoind-conf.sh index 9432b50..f9d9ea6 100755 --- a/gen-bitcoind-conf.sh +++ b/gen-bitcoind-conf.sh @@ -27,10 +27,14 @@ if [[ "$EXTERNAL_IP" != "" ]]; then fi echo "[signet] +rest=1 daemon=1 listen=1 server=1 +acceptnonstdtxn=1 +v2transport=1 discover=1 +signetblocktime=$BLOCKPRODUCTIONDELAY signetchallenge=$SIGNETCHALLENGE zmqpubrawblock=$ZMQPUBRAWBLOCK zmqpubrawtx=$ZMQPUBRAWTX @@ -60,4 +64,4 @@ fi if [[ "$TORCONTROL" != "" ]]; then echo "torcontrol=$TORCONTROL" -fi +fi \ No newline at end of file diff --git a/mine.sh b/mine.sh index 8a975a2..1d4ee3a 100755 --- a/mine.sh +++ b/mine.sh @@ -2,7 +2,11 @@ NBITS=${NBITS:-"1e0377ae"} #minimum difficulty in signet while true; do - ADDR=${MINETO:-$(bitcoin-cli getnewaddress)} + if [[ -f "${BITCOIN_DIR}/MINE_ADDRESS.txt" ]]; then + ADDR=$(cat ~/.bitcoin/MINE_ADDRESS.txt) + else + ADDR=${MINETO:-$(bitcoin-cli getnewaddress)} + fi if [[ -f "${BITCOIN_DIR}/BLOCKPRODUCTIONDELAY.txt" ]]; then BLOCKPRODUCTIONDELAY_OVERRIDE=$(cat ~/.bitcoin/BLOCKPRODUCTIONDELAY.txt) echo "Delay OVERRIDE before next block" $BLOCKPRODUCTIONDELAY_OVERRIDE "seconds." @@ -16,4 +20,4 @@ while true; do fi echo "Mine To:" $ADDR miner --cli="bitcoin-cli" generate --grind-cmd="bitcoin-util grind" --address=$ADDR --nbits=$NBITS --set-block-time=$(date +%s) -done +done \ No newline at end of file diff --git a/run.sh b/run.sh index 44cf5c0..7b0d2ef 100755 --- a/run.sh +++ b/run.sh @@ -1,7 +1,7 @@ #!/bin/bash # run bitcoind -bitcoind --daemonwait +bitcoind --daemonwait -deprecatedrpc=create_bdb sleep 5 echo "get magic" magic=$(cat /root/.bitcoin/signet/debug.log | grep -m1 magic) diff --git a/setup-signet.sh b/setup-signet.sh index aed5e6e..bb4a64b 100755 --- a/setup-signet.sh +++ b/setup-signet.sh @@ -1,7 +1,7 @@ PRIVKEY=${PRIVKEY:-$(cat ~/.bitcoin/PRIVKEY.txt)} DATADIR=${DATADIR:-~/.bitcoin/} bitcoind -datadir=$DATADIR --daemonwait -persistmempool -deprecatedrpc=create_bdb -bitcoin-cli -datadir=$DATADIR -named createwallet wallet_name="alpen_wallet" load_on_startup=true descriptors=false +bitcoin-cli -datadir=$DATADIR -named createwallet wallet_name="custom_signet" load_on_startup=true descriptors=false #only used in case of mining node if [[ "$MINERENABLED" == "1" ]]; then From c8d8cdbefc85bc89defee9d9a2e7e93414540ea4 Mon Sep 17 00:00:00 2001 From: Purushotam Date: Thu, 7 Nov 2024 21:25:19 +0545 Subject: [PATCH 4/9] rpc parameters added in config --- Dockerfile | 5 +++++ gen-bitcoind-conf.sh | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/Dockerfile b/Dockerfile index c29bc31..b0969aa 100644 --- a/Dockerfile +++ b/Dockerfile @@ -45,6 +45,11 @@ ENV ZMQPUBRAWBLOCK=${ZMQPUBRAWBLOCK:-"tcp://0.0.0.0:28332"} ENV ZMQPUBRAWTX=${ZMQPUBRAWTX:-"tcp://0.0.0.0:28333"} ENV ZMQPUBHASHBLOCK=${ZMQPUBHASHBLOCK:-"tcp://0.0.0.0:28334"} +ENV RPCTHREADS=${RPCTHREADS:-"16"} +ENV RPCSERVERTIMEOUT=${RPCSERVERTIMEOUT:-"600"} +ENV RPCWORKQUEUE=${RPCWORKQUEUE:-"50"} + + ENV RPCBIND=${RPCBIND:-"0.0.0.0:38332"} ENV RPCALLOWIP=${RPCALLOWIP:-"0.0.0.0/0"} ENV WHITELIST=${WHITELIST:-"0.0.0.0/0"} diff --git a/gen-bitcoind-conf.sh b/gen-bitcoind-conf.sh index f9d9ea6..f2dfab9 100755 --- a/gen-bitcoind-conf.sh +++ b/gen-bitcoind-conf.sh @@ -26,6 +26,10 @@ if [[ "$EXTERNAL_IP" != "" ]]; then done fi +echo "rpcthreads=$RPCTHREADS +rpcservertimeout=$RPCSERVERTIMEOUT +rpcworkqueue=$RPCWORKQUEUE" + echo "[signet] rest=1 daemon=1 From d8a5e2fe352ae1e1780572978d960b34cc80e06e Mon Sep 17 00:00:00 2001 From: Purushotam Date: Fri, 7 Mar 2025 14:05:35 +0545 Subject: [PATCH 5/9] build context added in build context --- docker-compose.yml | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index a79a379..1fbad7a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,7 +1,10 @@ services: bitcoind-miner: container_name: bitcoin-miner - image: alpen_signet:1.0 + # image: alpen_signet:1.0 + build: + context: . + dockerfile: Dockerfile env_file: .env environment: @@ -21,7 +24,10 @@ services: bitcoind-fullnode: container_name: bitcoin-fullnode - image: alpen_signet:1.0 + # image: alpen_signet:1.0 + build: + context: . + dockerfile: Dockerfile environment: BLOCKPRODUCTIONDELAY: 10 From 358b2ac60ebce670e84fa9f1405c72f2511ceb85 Mon Sep 17 00:00:00 2001 From: Purushotam Date: Sun, 9 Mar 2025 15:47:27 +0545 Subject: [PATCH 6/9] premining of blocks if block-height<100 --- mine.sh | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/mine.sh b/mine.sh index 1d4ee3a..52f5a52 100755 --- a/mine.sh +++ b/mine.sh @@ -1,5 +1,19 @@ #!/bin/bash NBITS=${NBITS:-"1e0377ae"} #minimum difficulty in signet +ADDR=$(get_next_address) # It will get the first address from the wallet ie. cusomt_signet + +# Initial mining of 100 blocks if blocks count is less than 100 +BLOCKS_COUNT=$(bitcoin-cli -rpcwallet=custom_signet getblockcount) +if [[ $BLOCKS_COUNT -lt 100 ]]; then + echo "Mining initial 100 blocks" + for ((i = BLOCKS_COUNT; i <= 100; i++)); do + echo "Minining initial block $i" + miner --cli="bitcoin-cli -rpcwallet=custom_signet" generate --grind-cmd="bitcoin-util grind" --address=$ADDR --nbits=$NBITS --set-block-time=$(date +%s) + done +else + echo "Starting bitcoind mining from block $BLOCKS_COUNT" +fi + while true; do if [[ -f "${BITCOIN_DIR}/MINE_ADDRESS.txt" ]]; then From 6445929d3ac630e7f2675672781850beb51a5b75 Mon Sep 17 00:00:00 2001 From: Purushotam Date: Tue, 25 Mar 2025 16:23:15 +0800 Subject: [PATCH 7/9] Upgrades and other changes - bitcoin binary refecented from bitcoin core in the official.Dockerfile - premining of 101 blocks for needed funds at startup apiVersion: apps/v1 kind: StatefulSet metadata: annotations: kubectl.kubernetes.io/last-applied-configuration: | {"apiVersion":"apps/v1","kind":"StatefulSet","metadata":{"annotations":{},"name":"strata-client-fn-2","namespace":"bitcoin"},"spec":{"replicas":1,"selector":{"matchLabels":{"app":"strata-client-fn-2"}},"template":{"metadata":{"labels":{"app":"strata-client-fn-2"}},"spec":{"containers":[{"env":[{"name":"STRATA_OTLP_URL","value":"http://otel-collector-svc.monitoring.svc.cluster.local:4317"},{"name":"RUST_LOG","value":"trace,hyper=warn,soketto=warn,jsonrpsee-server=warn,mio=warn,strata_storage::cache=error"},{"name":"CONFIG_PATH","value":"configs/config.toml"},{"name":"PARAM_PATH","value":"configs/params.json"},{"name":"BITCOIND_PASSWORD","valueFrom":{"secretKeyRef":{"key":"RPC_PASSWORD","name":"node-secrets"}}},{"name":"SYNC_BATCH_SIZE","value":"50"},{"name":"SYNC_THROTTLE_MS","value":"125"},{"name":"CSM_QUEUE_SIZE","value":"250000"},{"name":"FCM_QUEUE_SIZE","value":"500000"}],"image":"public.ecr.aws/s6b4k6i9/strata_client:v0.1.10","imagePullPolicy":"Always","name":"strata-client-fn-2","ports":[{"containerPort":8432}],"volumeMounts":[{"mountPath":"/app/configs","name":"strata-client-fn-2-config"},{"mountPath":"/app/data","name":"data-strata-fn-2-client"}]}],"volumes":[{"name":"strata-client-fn-2-config","projected":{"sources":[{"secret":{"items":[{"key":"STRATA_FN_1_RETH_JWT_HEX","path":"jwt.hex"}],"name":"devnet-asm-secrets"}},{"configMap":{"name":"strata-client-fn-2-config"}}]}},{"name":"data-strata-fn-2-client","persistentVolumeClaim":{"claimName":"strata-client-fn-2-pvc"}}]}}}} creationTimestamp: "2025-01-22T17:45:21Z" generation: 1 name: strata-client-fn-2 namespace: bitcoin resourceVersion: "38431163" uid: 4569bb0e-ba0e-499a-aa61-918a014d6e7a spec: persistentVolumeClaimRetentionPolicy: whenDeleted: Retain whenScaled: Retain podManagementPolicy: OrderedReady replicas: 1 revisionHistoryLimit: 10 selector: matchLabels: app: strata-client-fn-2 serviceName: "" template: metadata: creationTimestamp: null labels: app: strata-client-fn-2 spec: containers: - env: - name: STRATA_OTLP_URL value: http://otel-collector-svc.monitoring.svc.cluster.local:4317 - name: RUST_LOG value: trace,hyper=warn,soketto=warn,jsonrpsee-server=warn,mio=warn,strata_storage::cache=error - name: CONFIG_PATH value: configs/config.toml - name: PARAM_PATH value: configs/params.json - name: BITCOIND_PASSWORD valueFrom: secretKeyRef: key: RPC_PASSWORD name: node-secrets - name: SYNC_BATCH_SIZE value: "50" --- docker-compose-28.1.yml | 26 ++++++++++++ gen-bitcoind-conf.sh | 5 ++- mine.sh | 26 ++++++------ official.Dockerfile | 87 +++++++++++++++++++++++++++++++++++++++++ 4 files changed, 131 insertions(+), 13 deletions(-) create mode 100644 docker-compose-28.1.yml create mode 100644 official.Dockerfile diff --git a/docker-compose-28.1.yml b/docker-compose-28.1.yml new file mode 100644 index 0000000..3fa400b --- /dev/null +++ b/docker-compose-28.1.yml @@ -0,0 +1,26 @@ +services: + bitcoind-miner: + build: + context: . + dockerfile: official.Dockerfile + args: + TARGETPLATFORM: linux/arm64 + container_name: bitcoin-miner-28.1 + env_file: + .env + environment: + BLOCKPRODUCTIONDELAY: 600 + RPCUSER: user + RPCPASSWORD: password + PRIVKEY: $PRIVKEY + SIGNETCHALLENGE: $SIGNETCHALLENGE + MINERENABLED: $MINERENABLED + OFFICIAL_MINING: true + + ports: + - "28332:28332" + - "28333:28333" + - "28334:28334" + - "38332:38332" + - "38333:38333" + - "38334:38334" \ No newline at end of file diff --git a/gen-bitcoind-conf.sh b/gen-bitcoind-conf.sh index f2dfab9..8660b8e 100755 --- a/gen-bitcoind-conf.sh +++ b/gen-bitcoind-conf.sh @@ -46,7 +46,10 @@ zmqpubhashblock=$ZMQPUBHASHBLOCK rpcbind=$RPCBIND rpcallowip=$RPCALLOWIP whitelist=$WHITELIST -fallbackfee=0.0002" +fallbackfee=0.0002 +minrelaytxfee=0.0 +blockmintxfee=0.0 +dustRelayFee=0.0" if [[ "$ADDNODE" != "" ]]; then echo $ADDNODE | tr ',' '\n' | while read node; do diff --git a/mine.sh b/mine.sh index 52f5a52..0c10617 100755 --- a/mine.sh +++ b/mine.sh @@ -1,14 +1,21 @@ #!/bin/bash NBITS=${NBITS:-"1e0377ae"} #minimum difficulty in signet -ADDR=$(get_next_address) # It will get the first address from the wallet ie. cusomt_signet +if [[ -f "${BITCOIN_DIR}/MINE_ADDRESS.txt" ]]; then + ADDR=$(cat ~/.bitcoin/MINE_ADDRESS.txt) +else + ADDR=${MINETO:-$(bitcoin-cli -rpcwallet=custom_signet getnewaddress)} +fi +echo "Mineto: $MINETO" +echo "Initial mining address: $ADDR" -# Initial mining of 100 blocks if blocks count is less than 100 +# Initial mining of 101 blocks if blocks count is less than 101 BLOCKS_COUNT=$(bitcoin-cli -rpcwallet=custom_signet getblockcount) -if [[ $BLOCKS_COUNT -lt 100 ]]; then - echo "Mining initial 100 blocks" - for ((i = BLOCKS_COUNT; i <= 100; i++)); do - echo "Minining initial block $i" - miner --cli="bitcoin-cli -rpcwallet=custom_signet" generate --grind-cmd="bitcoin-util grind" --address=$ADDR --nbits=$NBITS --set-block-time=$(date +%s) +if [[ $BLOCKS_COUNT -lt 101 ]]; then + echo "Mining initial blocks until 101" + while [[ $BLOCKS_COUNT -lt 101 ]]; do + echo "Mining initial block $BLOCKS_COUNT" + miner --cli="bitcoin-cli" generate --grind-cmd="bitcoin-util grind" --address=$ADDR --nbits=$NBITS --set-block-time=$(date +%s) + BLOCKS_COUNT=$(bitcoin-cli -rpcwallet=custom_signet getblockcount) done else echo "Starting bitcoind mining from block $BLOCKS_COUNT" @@ -16,11 +23,6 @@ fi while true; do - if [[ -f "${BITCOIN_DIR}/MINE_ADDRESS.txt" ]]; then - ADDR=$(cat ~/.bitcoin/MINE_ADDRESS.txt) - else - ADDR=${MINETO:-$(bitcoin-cli getnewaddress)} - fi if [[ -f "${BITCOIN_DIR}/BLOCKPRODUCTIONDELAY.txt" ]]; then BLOCKPRODUCTIONDELAY_OVERRIDE=$(cat ~/.bitcoin/BLOCKPRODUCTIONDELAY.txt) echo "Delay OVERRIDE before next block" $BLOCKPRODUCTIONDELAY_OVERRIDE "seconds." diff --git a/official.Dockerfile b/official.Dockerfile new file mode 100644 index 0000000..5cb29c2 --- /dev/null +++ b/official.Dockerfile @@ -0,0 +1,87 @@ +FROM debian:bookworm-slim as builder + +ARG BITCOIN_VERSION=${BITCOIN_VERSION:-28.1} + +ARG TARGETPLATFORM + +RUN apt-get update && \ + apt-get install -qq --no-install-recommends ca-certificates dirmngr gosu wget libc6 procps python3 +WORKDIR /tmp +# install bitcoin binaries +RUN case $TARGETPLATFORM in \ + linux/amd64) \ + echo "amd64" && export TRIPLET="x86_64-linux-gnu";; \ + linux/arm64) \ + echo "arm64" && export TRIPLET="aarch64-linux-gnu";; \ + esac && \ + BITCOIN_URL="https://bitcoincore.org/bin/bitcoin-core-28.1/bitcoin-${BITCOIN_VERSION}-${TRIPLET}.tar.gz" && \ + BITCOIN_FILE="bitcoin-${BITCOIN_VERSION}-${TRIPLET}.tar.gz" && \ + wget -qO "${BITCOIN_FILE}" "${BITCOIN_URL}" && \ + mkdir -p bin && \ + tar -xzvf "${BITCOIN_FILE}" -C /tmp/bin --strip-components=2 "bitcoin-${BITCOIN_VERSION}/bin/bitcoin-cli" "bitcoin-${BITCOIN_VERSION}/bin/bitcoind" "bitcoin-${BITCOIN_VERSION}/bin/bitcoin-wallet" "bitcoin-${BITCOIN_VERSION}/bin/bitcoin-util" + +# Download zipped sourced code for the tag and extract miner.py + +# FROM debian:buster-slim as custom-signet-bitcoin +FROM debian:bookworm-slim as custom-signet-bitcoin + + +LABEL org.opencontainers.image.authors="Alpenlabs" +LABEL org.opencontainers.image.licenses=MIT +LABEL org.opencontainers.image.source="https://github.com/alpenlabs/bitcoin_signet" + +ENV BITCOIN_DIR /root/.bitcoin + +# ENV NBITS=${NBITS} +ENV SIGNETCHALLENGE=${SIGNETCHALLENGE} +ENV PRIVKEY=${PRIVKEY} + +ENV RPCUSER=${RPCUSER:-"bitcoin"} +ENV RPCPASSWORD=${RPCPASSWORD:-"bitcoin"} +ENV COOKIEFILE=${COOKIEFILE:-"false"} +ENV ONIONPROXY=${ONIONPROXY:-""} +ENV TORPASSWORD=${TORPASSWORD:-""} +ENV TORCONTROL=${TORCONTROL:-""} +ENV I2PSAM=${I2PSAM:-""} + +ENV UACOMMENT=${UACOMMENT:-"CustomSignet"} +ENV ZMQPUBRAWBLOCK=${ZMQPUBRAWBLOCK:-"tcp://0.0.0.0:28332"} +ENV ZMQPUBRAWTX=${ZMQPUBRAWTX:-"tcp://0.0.0.0:28333"} +ENV ZMQPUBHASHBLOCK=${ZMQPUBHASHBLOCK:-"tcp://0.0.0.0:28334"} + +ENV RPCTHREADS=${RPCTHREADS:-"16"} +ENV RPCSERVERTIMEOUT=${RPCSERVERTIMEOUT:-"600"} +ENV RPCWORKQUEUE=${RPCWORKQUEUE:-"50"} + + +ENV RPCBIND=${RPCBIND:-"0.0.0.0:38332"} +ENV RPCALLOWIP=${RPCALLOWIP:-"0.0.0.0/0"} +ENV WHITELIST=${WHITELIST:-"0.0.0.0/0"} +ENV ADDNODE=${ADDNODE:-""} +ENV BLOCKPRODUCTIONDELAY=${BLOCKPRODUCTIONDELAY:-"30"} +ENV MINERENABLED=${MINERENABLED:-"1"} +ENV MINETO=${MINETO:-""} +ENV EXTERNAL_IP=${EXTERNAL_IP:-""} + +# Variable used to generate wallets used by bridge operators +# TODO: update this logic to match Testnet I requirement +ENV NUM_WALLETS=${NUM_WALLETS:-0} +VOLUME $BITCOIN_DIR +EXPOSE 28332 28333 28334 38332 38333 38334 +RUN apt-get update && \ + apt-get install -qq --no-install-recommends procps python3 python3-pip jq && \ + apt-get clean +COPY --from=builder "/tmp/bin" /usr/local/bin +COPY *.sh /usr/local/bin/ + +# TODO: figure out these imports for the miner script +COPY miner_imports /usr/local/bin +# FIXME: the miner script should be used from the tar file of the downloaded source code +COPY miner /usr/local/bin/miner +COPY rpcauth.py /usr/local/bin/rpcauth.py +# RUN pip3 install setuptools +RUN pip3 install --break-system-packages setuptools + +ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"] + +CMD ["run.sh"] \ No newline at end of file From 9cd2fefd2a5d9139b148163b5f4e803eea9961fb Mon Sep 17 00:00:00 2001 From: Purushotam Date: Wed, 26 Mar 2025 11:45:57 +0800 Subject: [PATCH 8/9] pr review comments fix --- docker-entrypoint.sh | 2 +- official.Dockerfile | 5 +---- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index cd0b011..47d5a0c 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -21,7 +21,7 @@ else fi $@ & -echo "Infinate loop" +echo "Infinite loop" while true do tail -f /dev/null & wait ${!} diff --git a/official.Dockerfile b/official.Dockerfile index 5cb29c2..b7f369a 100644 --- a/official.Dockerfile +++ b/official.Dockerfile @@ -14,7 +14,7 @@ RUN case $TARGETPLATFORM in \ linux/arm64) \ echo "arm64" && export TRIPLET="aarch64-linux-gnu";; \ esac && \ - BITCOIN_URL="https://bitcoincore.org/bin/bitcoin-core-28.1/bitcoin-${BITCOIN_VERSION}-${TRIPLET}.tar.gz" && \ + BITCOIN_URL="https://bitcoincore.org/bin/bitcoin-core-${BITCOIN_VERSION}/bitcoin-${BITCOIN_VERSION}-${TRIPLET}.tar.gz" && \ BITCOIN_FILE="bitcoin-${BITCOIN_VERSION}-${TRIPLET}.tar.gz" && \ wget -qO "${BITCOIN_FILE}" "${BITCOIN_URL}" && \ mkdir -p bin && \ @@ -32,9 +32,6 @@ LABEL org.opencontainers.image.source="https://github.com/alpenlabs/bitcoin_sign ENV BITCOIN_DIR /root/.bitcoin -# ENV NBITS=${NBITS} -ENV SIGNETCHALLENGE=${SIGNETCHALLENGE} -ENV PRIVKEY=${PRIVKEY} ENV RPCUSER=${RPCUSER:-"bitcoin"} ENV RPCPASSWORD=${RPCPASSWORD:-"bitcoin"} From 42eb515825adb5d0006f41914ea215479afdfd7e Mon Sep 17 00:00:00 2001 From: voidash Date: Sat, 10 May 2025 00:23:00 +0545 Subject: [PATCH 9/9] feat: add zmq support --- Dockerfile | 10 ++++++---- gen-bitcoind-conf.sh | 7 ++++++- official.Dockerfile | 11 +++++++---- 3 files changed, 19 insertions(+), 9 deletions(-) diff --git a/Dockerfile b/Dockerfile index b0969aa..c80863c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -41,9 +41,11 @@ ENV TORCONTROL=${TORCONTROL:-""} ENV I2PSAM=${I2PSAM:-""} ENV UACOMMENT=${UACOMMENT:-"CustomSignet"} -ENV ZMQPUBRAWBLOCK=${ZMQPUBRAWBLOCK:-"tcp://0.0.0.0:28332"} -ENV ZMQPUBRAWTX=${ZMQPUBRAWTX:-"tcp://0.0.0.0:28333"} -ENV ZMQPUBHASHBLOCK=${ZMQPUBHASHBLOCK:-"tcp://0.0.0.0:28334"} +ENV ZMQPUBHASHBLOCK=${ZMQPUBHASHBLOCK:-"tcp://0.0.0.0:28332"} +ENV ZMQPUBHASHTX=${ZMQPUBRAWTX:-"tcp://0.0.0.0:28333"} +ENV ZMQPUBRAWBLOCK=${ZMQPUBRAWBLOCK:-"tcp://0.0.0.0:28334"} +ENV ZMQPUBRAWTX=${ZMQPUBRAWTX:-"tcp://0.0.0.0:28335"} +ENV ZMQPUBSEQUENCE=${ZMQPUBSEQUENCE:-"tcp://0.0.0.0:28336"} ENV RPCTHREADS=${RPCTHREADS:-"16"} ENV RPCSERVERTIMEOUT=${RPCSERVERTIMEOUT:-"600"} @@ -74,4 +76,4 @@ RUN pip3 install setuptools ENTRYPOINT ["/usr/local/bin/entrypoint.sh"] -CMD ["run.sh"] \ No newline at end of file +CMD ["run.sh"] diff --git a/gen-bitcoind-conf.sh b/gen-bitcoind-conf.sh index 8660b8e..f7e0f4b 100755 --- a/gen-bitcoind-conf.sh +++ b/gen-bitcoind-conf.sh @@ -40,9 +40,14 @@ v2transport=1 discover=1 signetblocktime=$BLOCKPRODUCTIONDELAY signetchallenge=$SIGNETCHALLENGE + +zmqpubhashblock=$ZMQPUBHASHBLOCK zmqpubrawblock=$ZMQPUBRAWBLOCK zmqpubrawtx=$ZMQPUBRAWTX +zmqpubhashtx=$ZMQPUBHASHTX zmqpubhashblock=$ZMQPUBHASHBLOCK +zmqpubsequence=$ZMQPUBSEQUENCE + rpcbind=$RPCBIND rpcallowip=$RPCALLOWIP whitelist=$WHITELIST @@ -71,4 +76,4 @@ fi if [[ "$TORCONTROL" != "" ]]; then echo "torcontrol=$TORCONTROL" -fi \ No newline at end of file +fi diff --git a/official.Dockerfile b/official.Dockerfile index b7f369a..7d96669 100644 --- a/official.Dockerfile +++ b/official.Dockerfile @@ -42,9 +42,12 @@ ENV TORCONTROL=${TORCONTROL:-""} ENV I2PSAM=${I2PSAM:-""} ENV UACOMMENT=${UACOMMENT:-"CustomSignet"} -ENV ZMQPUBRAWBLOCK=${ZMQPUBRAWBLOCK:-"tcp://0.0.0.0:28332"} -ENV ZMQPUBRAWTX=${ZMQPUBRAWTX:-"tcp://0.0.0.0:28333"} -ENV ZMQPUBHASHBLOCK=${ZMQPUBHASHBLOCK:-"tcp://0.0.0.0:28334"} + +ENV ZMQPUBHASHBLOCK=${ZMQPUBHASHBLOCK:-"tcp://0.0.0.0:28332"} +ENV ZMQPUBHASHTX=${ZMQPUBRAWTX:-"tcp://0.0.0.0:28333"} +ENV ZMQPUBRAWBLOCK=${ZMQPUBRAWBLOCK:-"tcp://0.0.0.0:28334"} +ENV ZMQPUBRAWTX=${ZMQPUBRAWTX:-"tcp://0.0.0.0:28335"} +ENV ZMQPUBSEQUENCE=${ZMQPUBSEQUENCE:-"tcp://0.0.0.0:28336"} ENV RPCTHREADS=${RPCTHREADS:-"16"} ENV RPCSERVERTIMEOUT=${RPCSERVERTIMEOUT:-"600"} @@ -81,4 +84,4 @@ RUN pip3 install --break-system-packages setuptools ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"] -CMD ["run.sh"] \ No newline at end of file +CMD ["run.sh"]