From 6db769a61aa160730333d8cf22a1605f75561dc8 Mon Sep 17 00:00:00 2001 From: "@RandyMcMillan" Date: Wed, 22 Nov 2023 11:50:42 -0500 Subject: [PATCH 1/9] .gitmodules:bdk-cli --- .gitmodules | 3 +++ bdk-cli | 1 + 2 files changed, 4 insertions(+) create mode 100644 .gitmodules create mode 160000 bdk-cli diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..3418fbe --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "bdk-cli"] + path = bdk-cli + url = https://www.github.com/bitcoindevkit/bdk-cli diff --git a/bdk-cli b/bdk-cli new file mode 160000 index 0000000..6f61d2e --- /dev/null +++ b/bdk-cli @@ -0,0 +1 @@ +Subproject commit 6f61d2eb82d1427d337c3e437340a7c14e067eb4 From 46e3383efd9208618f469e597294c97d73607ac0 Mon Sep 17 00:00:00 2001 From: "@RandyMcMillan" Date: Thu, 18 Jan 2024 12:56:20 -0500 Subject: [PATCH 2/9] Dockerfile --- Dockerfile | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/Dockerfile b/Dockerfile index b65bc3e..9168e80 100755 --- a/Dockerfile +++ b/Dockerfile @@ -6,16 +6,15 @@ RUN echo $(date +%s) > updated RUN apt-get update RUN echo $(date +%s) > updated FROM base as systemd -RUN apt-get install systemd bash jq -y -RUN echo $(date +%s) > updated +RUN apt-get install systemd -y RUN chmod +x /usr/bin/systemctl RUN echo $(date +%s) > updated FROM systemd as clone -RUN rm -rf /src -RUN git clone --branch v0.0.10 --depth 1 https://github.com/bitcoincore-dev/miniscript-docker /src +WORKDIR /tmp +RUN git clone --recurse-submodules -j2 --branch v0.0.10 --depth 1 https://github.com/bitcoincore-dev/miniscript-docker RUN echo $(date +%s) > updated FROM clone as make -WORKDIR /src +WORKDIR /tmp/miniscript-docker RUN make miniscript RUN echo $(date +%s) > updated RUN install miniscript /usr/local/bin @@ -31,6 +30,12 @@ RUN echo $(date +%s) > updated WORKDIR /src FROM install as miniscript COPY --from=clone /src /src +FROM miniscript as bdk_cli +RUN apt-get install cargo -y +RUN apt-get clean autoclean +RUN apt-get autoremove --yes +RUN rm -rf /var/lib/{apt,dpkg,cache,log}/ +RUN cargo install --git https://github.com/bitcoindevkit/bdk-cli --features="compiler" ENV PATH=$PATH:/usr/bin/systemctl RUN ps -p 1 -o comm= EXPOSE 80 443 6102 8080 8081 From 25f2b4a06e11dad731b5b18b1a9bd9822e1836a2 Mon Sep 17 00:00:00 2001 From: "@RandyMcMillan" Date: Thu, 18 Jan 2024 12:59:54 -0500 Subject: [PATCH 3/9] GNUmakefile --- GNUmakefile | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/GNUmakefile b/GNUmakefile index 7de33a4..33f68d0 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -15,10 +15,21 @@ export DOCKER PWD=$(shell echo `pwd`) export PWD +ifneq ($(port),) +PORT :=$(port) +else +PORT :=8080 +endif +export PORT + -: @awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?##/ {printf "\033[36m%-15s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST) + -include Makefile +submodules:## submodules + git submodule update --init --recursive + .PHONY:install install: @rm ./miniscript || true @@ -45,15 +56,19 @@ docker-buildx:## docker buildx build sequence @$(DOCKER) buildx build -t miniscript --platform linux/$(TARGET) . --load docker-miniscript:docker-build## docker-miniscript @[[ -z "$(shell file ./miniscript | grep inux)" ]] && echo "not linux" && rm ./miniscript || echo "miniscript is built for linux" - @$(DOCKER) run --rm -v $(PWD):/src --publish 80:8080 miniscript sh -c "make install" + @$(DOCKER) run --rm -v $(PWD):/src --publish 8080:$(PORT) miniscript sh -c "make install" .PHONY:miniscript-tests -miniscript-tests:## miniscript-tests +miniscript-tests:## miniscript-tests @bash $< $@ 2>/dev/null || true example-commands: + @printf "$(DOCKER) run --rm -v $(PWD):/src --publish 8080:$(PORT) miniscript sh -c \"make miniscript\"\n" + @printf "$(DOCKER) run --rm -v $(PWD):/src --publish 8080:$(PORT) miniscript sh -c \"make install\"\n" + @printf "$(DOCKER) run --rm -v $(PWD):/src --publish 8080:$(PORT) miniscript sh -c \"which miniscript\"\n" + @printf "$(DOCKER) run --rm -v $(PWD):/src --publish 8080:$(PORT) miniscript sh -c \"make miniscript.js\"\n" @printf "\n" - @printf "./docker-miniscript \"make miniscript >/dev/null && ls\"" + @printf "./miniscript-docker \"make miniscript >/dev/null && ls\"" @printf "\n" @printf "./docker-miniscript \"make miniscript >/dev/null && cat 1.miniscript | ./miniscript\"" @printf "\n" From 73871193a9bb49483eed3ce6ba665478e30361e9 Mon Sep 17 00:00:00 2001 From: "@RandyMcMillan" Date: Thu, 18 Jan 2024 13:06:04 -0500 Subject: [PATCH 4/9] miniscript-docker:help: PORT=80 miniscript-docker serve --- miniscript-docker | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/miniscript-docker b/miniscript-docker index a1138ce..8b8a6de 100755 --- a/miniscript-docker +++ b/miniscript-docker @@ -132,10 +132,10 @@ function help { printf "\n" printf " miniscript-docker shell\n" printf "\n" - printf " PORT=6102 miniscript-docker serve\n" - printf "\n" printf " miniscript-docker run ''" printf "\n" + printf " PORT=80 miniscript-docker serve\n" + printf "\n" exit; } From f279f33c2fb8f8941407746cf5f56e9592226f73 Mon Sep 17 00:00:00 2001 From: "@RandyMcMillan" Date: Thu, 18 Jan 2024 13:35:10 -0500 Subject: [PATCH 5/9] miniscript-tests:-j --json --- miniscript-tests | 32 +++++++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/miniscript-tests b/miniscript-tests index a7e3a15..231ee5b 100755 --- a/miniscript-tests +++ b/miniscript-tests @@ -1,13 +1,39 @@ #!/usr/bin/env bash +# +JQ=$(which jq) +MINISCRIPT_JSON=$(which miniscript.json) +export MINISCRIPT_JSON [[ -z "$(command -v miniscript-tests)" ]] && \ install $0 /usr/local/bin || true -## add your won tests + +## add your own tests ## miniscript-test-0 -## miniscript-test-1000 +## miniscript-test-100 ## etc.. -TESTS=$(echo miniscript-test-{0..1000}*) +TESTS=$(echo miniscript-test-{0..100}*) + +## echo $JQ + +if [[ ! -z $JQ ]];then + + ## echo $JQ + + if [[ "$1" == "--json" ]] || [[ "$1" == "-j" ]]; then + + JSON_TESTS=$(echo miniscript.json-test-{0..100}*) + + ## echo $JSON_TESTS; + for ms in $JSON_TESTS + do + . $ms 2>/dev/null || true + done + exit; + + fi +fi + for ms in $TESTS do . $ms 2>/dev/null From 73712acfc3c31b0c5a0a59ba23635d791c1d7d80 Mon Sep 17 00:00:00 2001 From: "@RandyMcMillan" Date: Thu, 18 Jan 2024 14:39:09 -0500 Subject: [PATCH 6/9] miniscript-test-loop.sh --- example1.miniscript | 1 + example2.miniscript | 1 + example3.miniscript | 1 + miniscript-test-loop.sh | 18 ++++++++++++++++++ 4 files changed, 21 insertions(+) create mode 100644 example1.miniscript create mode 100644 example2.miniscript create mode 100644 example3.miniscript create mode 100755 miniscript-test-loop.sh diff --git a/example1.miniscript b/example1.miniscript new file mode 100644 index 0000000..3d37ab3 --- /dev/null +++ b/example1.miniscript @@ -0,0 +1 @@ +and_v(v:pk(PUB_KEY0),pk_k(PUB_KEY1)) diff --git a/example2.miniscript b/example2.miniscript new file mode 100644 index 0000000..e7518c1 --- /dev/null +++ b/example2.miniscript @@ -0,0 +1 @@ +thresh(3,pk(PUB_KEY0),pk(PUB_KEY1),pk(PUB_KEY2)) diff --git a/example3.miniscript b/example3.miniscript new file mode 100644 index 0000000..8dec01a --- /dev/null +++ b/example3.miniscript @@ -0,0 +1 @@ +and_v(pk(PUB_KEY0),and_v(pk(PUB_KEY1),pk(PUB_KEY3))) diff --git a/miniscript-test-loop.sh b/miniscript-test-loop.sh new file mode 100755 index 0000000..cac3968 --- /dev/null +++ b/miniscript-test-loop.sh @@ -0,0 +1,18 @@ +#!/usr/bin/env bash +for i in {1..999999}; do + #echo $i + echo "thresh(2,pk(PUBKEY0),pk(PUBKEY1),after($i))" | miniscript + for j in {0..9}; do + #echo $j + echo "thresh(3,pk(PUBKEY0),pk(PUBKEY1),pk(PUBKEY2),after($i$j))" | miniscript + for k in {0..9}; do + #echo $k + echo "thresh(4,pk(PUBKEY0),pk(PUBKEY1),pk(PUBKEY2),pk(PUBKEY3),after($i$j$k))" | miniscript.json + echo "thresh(4,pk(PUBKEY0),pk(PUBKEY1),pk(PUBKEY2),pk(PUBKEY3),older($i$j$k))" | miniscript.json + ##echo "thresh(2,after(1$i$j$k),after($i$j),pk(PUBKEY0))" | miniscript + done + done +done + + +echo "thresh(2,ltv:after(1000000000),altv:after(100),a:pk(PUBKEY0))" | ./miniscript From 807a1ce0d79222d1d4a155affb940734b8a41612 Mon Sep 17 00:00:00 2001 From: "@RandyMcMillan" Date: Thu, 18 Jan 2024 15:00:58 -0500 Subject: [PATCH 7/9] miniscript-test-block/utc-loop.sh miniscript-test-utc-loop.sh --- ...t-test-loop.sh => miniscript-test-block-loop.sh | 0 miniscript-test-utc-loop.sh | 14 ++++++++++++++ 2 files changed, 14 insertions(+) rename miniscript-test-loop.sh => miniscript-test-block-loop.sh (100%) create mode 100755 miniscript-test-utc-loop.sh diff --git a/miniscript-test-loop.sh b/miniscript-test-block-loop.sh similarity index 100% rename from miniscript-test-loop.sh rename to miniscript-test-block-loop.sh diff --git a/miniscript-test-utc-loop.sh b/miniscript-test-utc-loop.sh new file mode 100755 index 0000000..9cd3fa6 --- /dev/null +++ b/miniscript-test-utc-loop.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env bash +for i in {0..9}; do + echo $i + [ $i -gt 0 ] && echo "thresh(2,ltv:after($i),altv:after(1$i),a:pk(0))" | miniscript + for j in {0..9}; do + echo $i $j + [ $i -gt 0 ] && [ $j -gt 0 ] && echo "thresh(2,ltv:after($i$j),altv:after(1$i$j),a:pk(0))" | miniscript + for k in {0..9}; do + echo $i $j $k + echo "thresh(2,ltv:after(1$i$j$k$i$j$k$i$j$k),altv:after($j$k),a:pk(0))" | miniscript + done + done +done +echo "thresh(2,ltv:after(1000000000),altv:after(100),a:pk(0))" | miniscript From 30e4737f0589dd237274b08551d37c02009b239e Mon Sep 17 00:00:00 2001 From: "@RandyMcMillan" Date: Thu, 18 Jan 2024 15:01:56 -0500 Subject: [PATCH 8/9] miniscript-tests --- miniscript-tests | 1 + 1 file changed, 1 insertion(+) diff --git a/miniscript-tests b/miniscript-tests index 231ee5b..5f35260 100755 --- a/miniscript-tests +++ b/miniscript-tests @@ -13,6 +13,7 @@ export MINISCRIPT_JSON ## etc.. TESTS=$(echo miniscript-test-{0..100}*) +#echo $TESTS ## echo $JQ From 9e263a2097b0b2beb2de2c4b401f67163034acb9 Mon Sep 17 00:00:00 2001 From: "@RandyMcMillan" Date: Fri, 19 Jan 2024 09:03:38 -0500 Subject: [PATCH 9/9] make:example-tests:example-json-tests --- GNUmakefile | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/GNUmakefile b/GNUmakefile index 33f68d0..5a0d5b5 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -62,6 +62,17 @@ docker-miniscript:docker-build## docker-miniscript miniscript-tests:## miniscript-tests @bash $< $@ 2>/dev/null || true +example-tests:## example-tests + @echo + @cat example1.miniscript | miniscript && echo + @cat example2.miniscript | miniscript && echo + +example-json-tests:## example-json-tests + @echo "{\"test\":\"test\"}" jq >/dev/null | jq || echo "install jq" + @echo "{\"test\": 0}" | jq >/dev/null || echo "install jq" + @cat example1.miniscript | miniscript.json #| jq .miniscript | sed 's/\"//g' | miniscript + @cat example1.miniscript | miniscript.json #| jq .miniscript | sed 's/\"//g' | miniscript + example-commands: @printf "$(DOCKER) run --rm -v $(PWD):/src --publish 8080:$(PORT) miniscript sh -c \"make miniscript\"\n" @printf "$(DOCKER) run --rm -v $(PWD):/src --publish 8080:$(PORT) miniscript sh -c \"make install\"\n"