Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[submodule "bdk-cli"]
path = bdk-cli
url = https://www.github.com/bitcoindevkit/bdk-cli
15 changes: 10 additions & 5 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand Down
32 changes: 29 additions & 3 deletions GNUmakefile
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -45,15 +56,30 @@ 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-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"
@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"
Expand Down
1 change: 1 addition & 0 deletions bdk-cli
Submodule bdk-cli added at 6f61d2
1 change: 1 addition & 0 deletions example1.miniscript
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
and_v(v:pk(PUB_KEY0),pk_k(PUB_KEY1))
1 change: 1 addition & 0 deletions example2.miniscript
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
thresh(3,pk(PUB_KEY0),pk(PUB_KEY1),pk(PUB_KEY2))
1 change: 1 addition & 0 deletions example3.miniscript
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
and_v(pk(PUB_KEY0),and_v(pk(PUB_KEY1),pk(PUB_KEY3)))
4 changes: 2 additions & 2 deletions miniscript-docker
Original file line number Diff line number Diff line change
Expand Up @@ -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 '<miniscript>'"
printf "\n"
printf " PORT=80 miniscript-docker serve\n"
printf "\n"
exit;
}

Expand Down
18 changes: 18 additions & 0 deletions miniscript-test-block-loop.sh
Original file line number Diff line number Diff line change
@@ -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
14 changes: 14 additions & 0 deletions miniscript-test-utc-loop.sh
Original file line number Diff line number Diff line change
@@ -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
33 changes: 30 additions & 3 deletions miniscript-tests
Original file line number Diff line number Diff line change
@@ -1,13 +1,40 @@
#!/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 $TESTS

## 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
Expand Down