From 2fab13e2cc2418b440e1bd9c08b35132eb2dad55 Mon Sep 17 00:00:00 2001 From: Josh Siegel Date: Mon, 14 Nov 2022 21:08:44 +0000 Subject: [PATCH] WH-1903: snapshot of btc node work @ Closes #1903 --- Tiltfile | 21 +++++++++ bitcoin/Dockerfile | 27 ++++++++++++ bitcoin/NOTES | 8 ++++ bitcoin/scripts/.btcwallet/btcwallet.conf | 0 bitcoin/scripts/.btcwallet/simnet/wallet.db | Bin 0 -> 49152 bytes bitcoin/scripts/start_node.sh | 18 ++++++++ devnet/btc-localnet.yaml | 45 ++++++++++++++++++++ 7 files changed, 119 insertions(+) create mode 100644 bitcoin/Dockerfile create mode 100644 bitcoin/NOTES create mode 100644 bitcoin/scripts/.btcwallet/btcwallet.conf create mode 100644 bitcoin/scripts/.btcwallet/simnet/wallet.db create mode 100755 bitcoin/scripts/start_node.sh create mode 100644 devnet/btc-localnet.yaml diff --git a/Tiltfile b/Tiltfile index b1826bb011..9c7f6c0049 100644 --- a/Tiltfile +++ b/Tiltfile @@ -39,6 +39,7 @@ config.define_string("webHost", False, "Public hostname for port forwards") # Components config.define_bool("near", False, "Enable Near component") +config.define_bool("btc", False, "Enable BTC component") config.define_bool("aptos", False, "Enable Aptos component") config.define_bool("algorand", False, "Enable Algorand component") config.define_bool("evm2", False, "Enable second Eth component") @@ -74,6 +75,7 @@ guardiand_debug = cfg.get("guardiand_debug", False) node_metrics = cfg.get("node_metrics", False) guardiand_governor = cfg.get("guardiand_governor", False) secondWormchain = cfg.get("secondWormchain", False) +btc = cfg.get("btc", False) if cfg.get("manual", False): trigger_mode = TRIGGER_MODE_MANUAL @@ -709,6 +711,25 @@ if wormchain: trigger_mode = trigger_mode, ) +if btc: + k8s_yaml_with_ns("devnet/btc-localnet.yaml") + + docker_build( + ref = "btc-node", + context = "bitcoin", + dockerfile = "bitcoin/Dockerfile", + target = "bitcoin-build", + ) + + k8s_resource( + "btc", + port_forwards = [ + port_forward(18556, name = "RPC [:18556]", host = webHost), + ], + labels = ["btc"], + trigger_mode = trigger_mode, + ) + if aptos: k8s_yaml_with_ns("devnet/aptos-localnet.yaml") diff --git a/bitcoin/Dockerfile b/bitcoin/Dockerfile new file mode 100644 index 0000000000..69fca5f1c5 --- /dev/null +++ b/bitcoin/Dockerfile @@ -0,0 +1,27 @@ +FROM --platform=linux/amd64 docker.io/golang:1.17.5@sha256:90d1ab81f3d157ca649a9ff8d251691b810d95ea6023a03cdca139df58bca599 AS bitcoin-build + +ARG ARCH=amd64 + +ENV GO111MODULE=on + +WORKDIR /app + +RUN apt-get update && apt-get install git netcat + +RUN git clone https://github.com/btcsuite/btcd.git + +WORKDIR /app/btcd + +RUN go install -v . ./cmd/... + +WORKDIR /app + +RUN git clone https://github.com/btcsuite/btcwallet.git +WORKDIR /app/btcwallet + +RUN go install -v . ./cmd/... + +WORKDIR /root +COPY scripts/.btcwallet .btcwallet +COPY scripts/start_node.sh . + diff --git a/bitcoin/NOTES b/bitcoin/NOTES new file mode 100644 index 0000000000..4e6fd28a4d --- /dev/null +++ b/bitcoin/NOTES @@ -0,0 +1,8 @@ + +use this node https://github.com/btcsuite/btcd and run with the --addrindex option +https://gist.github.com/davecgh/2992ed85d41307e794f6 + +# DOCKER_BUILDKIT=1 docker build --progress plain -f Dockerfile -t foo . +% docker run -it -v `pwd`:`pwd` -w `pwd` foo bash + +kubectl exec -it btc-0 -c btc-node -- /bin/bash diff --git a/bitcoin/scripts/.btcwallet/btcwallet.conf b/bitcoin/scripts/.btcwallet/btcwallet.conf new file mode 100644 index 0000000000..e69de29bb2 diff --git a/bitcoin/scripts/.btcwallet/simnet/wallet.db b/bitcoin/scripts/.btcwallet/simnet/wallet.db new file mode 100644 index 0000000000000000000000000000000000000000..44f7ac9328807e27158288cc5913f4d7497d5e67 GIT binary patch literal 49152 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 literal 0 HcmV?d00001 diff --git a/bitcoin/scripts/start_node.sh b/bitcoin/scripts/start_node.sh new file mode 100755 index 0000000000..e7602c0b5a --- /dev/null +++ b/bitcoin/scripts/start_node.sh @@ -0,0 +1,18 @@ +#!/bin/bash -f + +# 18554 --wallet +# 18555 --btc server +# 18556 --RPC server + +set -x + +/go/bin/btcd --addrindex --simnet --rpcuser=wormhole --rpcpass=w0rmh013 --miningaddr=ShadQfLbaRSnU5c1XrLknkLyWCkVV8rGMy --rpclisten 0.0.0.0:18556 & +sleep 1 +/go/bin/btcwallet --simnet --username wormhole --password=w0rmh013 --rpclisten 0.0.0.0:18554 & +sleep 1 +/go/bin/btcctl --simnet --wallet --rpcuser=wormhole --rpcpass=w0rmh013 walletpassphrase foo 9999 +/go/bin/btcctl --simnet --wallet --rpcuser=wormhole --rpcpass=w0rmh013 importprivkey Frd9p1JbyHgmcRrEzixN4LAAhK7forzdw65A9j6CTXRGiwawqKkg +/go/bin/btcctl --simnet --rpcuser=wormhole --rpcpass=w0rmh013 generate 100 +jobs +#sleep infinity +nc -lk 0.0.0.0 18557 diff --git a/devnet/btc-localnet.yaml b/devnet/btc-localnet.yaml new file mode 100644 index 0000000000..f9fe982406 --- /dev/null +++ b/devnet/btc-localnet.yaml @@ -0,0 +1,45 @@ +apiVersion: v1 +kind: Service +metadata: + labels: + app: btc + name: btc +spec: + ports: + - name: node + port: 18556 + targetPort: 18556 + selector: + app: btc +--- +apiVersion: apps/v1 +kind: StatefulSet +metadata: + labels: + app: btc + name: btc +spec: + replicas: 1 + selector: + matchLabels: + app: btc + serviceName: btc + template: + metadata: + labels: + app: btc + spec: + containers: + - name: btc-node + image: btc-node + command: + - /bin/sh + - -c + - /root/start_node.sh + ports: + - containerPort: 18556 + name: node + protocol: TCP + readinessProbe: + tcpSocket: + port: 18557