Bläddra i källkod

WH-1903: snapshot of btc node work @ Closes #1903

Josh Siegel 3 år sedan
förälder
incheckning
2fab13e2cc

+ 21 - 0
Tiltfile

@@ -39,6 +39,7 @@ config.define_string("webHost", False, "Public hostname for port forwards")
 
 
 # Components
 # Components
 config.define_bool("near", False, "Enable Near component")
 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("aptos", False, "Enable Aptos component")
 config.define_bool("algorand", False, "Enable Algorand component")
 config.define_bool("algorand", False, "Enable Algorand component")
 config.define_bool("evm2", False, "Enable second Eth 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)
 node_metrics = cfg.get("node_metrics", False)
 guardiand_governor = cfg.get("guardiand_governor", False)
 guardiand_governor = cfg.get("guardiand_governor", False)
 secondWormchain = cfg.get("secondWormchain", False)
 secondWormchain = cfg.get("secondWormchain", False)
+btc = cfg.get("btc", False)
 
 
 if cfg.get("manual", False):
 if cfg.get("manual", False):
     trigger_mode = TRIGGER_MODE_MANUAL
     trigger_mode = TRIGGER_MODE_MANUAL
@@ -709,6 +711,25 @@ if wormchain:
             trigger_mode = trigger_mode,
             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:
 if aptos:
     k8s_yaml_with_ns("devnet/aptos-localnet.yaml")
     k8s_yaml_with_ns("devnet/aptos-localnet.yaml")
 
 

+ 27 - 0
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 .
+

+ 8 - 0
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

+ 0 - 0
bitcoin/scripts/.btcwallet/btcwallet.conf


BIN
bitcoin/scripts/.btcwallet/simnet/wallet.db


+ 18 - 0
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

+ 45 - 0
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