From d5c66cbcc40d8c26eea068ad7a9d40046c56526d Mon Sep 17 00:00:00 2001 From: codeman <44291130+codeman-crypto@users.noreply.github.com> Date: Mon, 16 Feb 2026 18:57:38 +0530 Subject: [PATCH] Beldex Plugin Integration (#1042) * created yml file for the beldex daemon and wallet * beldex integration in btcpay-server * build script for beldex image * Update Docker image name for beldex * Update Docker images to official registries * Auto-load wallet with BDX plugin intead of wallet RPC --------- Co-authored-by: victor-tucci Co-authored-by: victor-tucci <80321576+victor-tucci@users.noreply.github.com> --- beldex-wallet-cli.ps1 | 1 + beldex-wallet-cli.sh | 3 ++ btcpay-backup.sh | 1 + contrib/DockerFileBuildHelper/build-all.sh | 20 +++++++++++ contrib/build-all-images.sh | 20 +++++++++++ .../crypto-definitions.json | 8 +++++ .../docker-fragments/beldex.yml | 33 +++++++++++++++++++ .../docker-fragments/opt-beldex-expose.yml | 11 +++++++ helpers.sh | 1 + 9 files changed, 98 insertions(+) create mode 100644 beldex-wallet-cli.ps1 create mode 100644 beldex-wallet-cli.sh create mode 100644 docker-compose-generator/docker-fragments/beldex.yml create mode 100644 docker-compose-generator/docker-fragments/opt-beldex-expose.yml diff --git a/beldex-wallet-cli.ps1 b/beldex-wallet-cli.ps1 new file mode 100644 index 00000000..1ae869b2 --- /dev/null +++ b/beldex-wallet-cli.ps1 @@ -0,0 +1 @@ +docker exec -it btcpayserver_beldexd beldex-wallet-cli $args \ No newline at end of file diff --git a/beldex-wallet-cli.sh b/beldex-wallet-cli.sh new file mode 100644 index 00000000..faf25043 --- /dev/null +++ b/beldex-wallet-cli.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +docker exec -it btcpayserver_beldexd beldex-wallet-cli "$@" diff --git a/btcpay-backup.sh b/btcpay-backup.sh index 4ab24574..aca07668 100755 --- a/btcpay-backup.sh +++ b/btcpay-backup.sh @@ -102,6 +102,7 @@ echo "ℹ️ Archiving files in $(pwd)…" --exclude="volumes/generated_mwebd_datadir" \ --exclude="volumes/generated_elements_datadir/_data" \ --exclude="volumes/generated_xmr_data/_data" \ + --exclude="volumes/generated_bdx_data/_data" \ --exclude="volumes/generated_dogecoin_datadir/_data/blocks" \ --exclude="volumes/generated_dogecoin_datadir/_data/chainstate" \ --exclude="volumes/generated_dash_datadir/_data/blocks" \ diff --git a/contrib/DockerFileBuildHelper/build-all.sh b/contrib/DockerFileBuildHelper/build-all.sh index 5a05f250..adbfeeb8 100644 --- a/contrib/DockerFileBuildHelper/build-all.sh +++ b/contrib/DockerFileBuildHelper/build-all.sh @@ -354,6 +354,26 @@ cd "$(dirname $DOCKERFILE)" docker build -f "$DOCKERFILE" -t "btcpayserver/monero:0.18.4.3" . cd - && cd .. +# Build beldex +# Default Dockerfile (amd64) +DOCKERFILE="Beldex/7.0.0/Dockerfile" +IMAGE_NAME="beldex/beldex:7.0.0" + +ARCH="$(uname -m)" + +# ARM architectures fallback (if you later add ARM Dockerfiles) +if [[ "$ARCH" == "armv7l" || "$ARCH" == "aarch64" ]]; then + echo "ARM architecture detected ($ARCH) – no Beldex ARM Dockerfile available" + exit 1 +fi +echo "Building ${IMAGE_NAME}" +git clone https://github.com/btcpayserver/dockerfile-deps beldex +cd beldex +git checkout master +cd "$(dirname $DOCKERFILE)" +# Build image +docker build -f Dockerfile -t "${IMAGE_NAME}" . +cd - && cd .. # Build nbxplorer # https://raw.githubusercontent.com/dgarage/nbxplorer/v2.5.30-1/Dockerfile diff --git a/contrib/build-all-images.sh b/contrib/build-all-images.sh index 96523b0e..bcc03de0 100644 --- a/contrib/build-all-images.sh +++ b/contrib/build-all-images.sh @@ -354,6 +354,26 @@ cd "$(dirname $DOCKERFILE)" docker build -f "$DOCKERFILE" -t "btcpayserver/monero:0.18.4.3" . cd - && cd .. +# Build beldex +# Default Dockerfile (amd64) +DOCKERFILE="Beldex/7.0.0/Dockerfile" +IMAGE_NAME="beldex/beldex:7.0.0" + +ARCH="$(uname -m)" + +# ARM architectures fallback (if you later add ARM Dockerfiles) +if [[ "$ARCH" == "armv7l" || "$ARCH" == "aarch64" ]]; then + echo "ARM architecture detected ($ARCH) – no Beldex ARM Dockerfile available" + exit 1 +fi +echo "Building ${IMAGE_NAME}" +git clone https://github.com/btcpayserver/dockerfile-deps beldex +cd beldex +git checkout master +cd "$(dirname $DOCKERFILE)" +# Build image +docker build -f Dockerfile -t "${IMAGE_NAME}" . +cd - && cd .. # Build nbxplorer # https://raw.githubusercontent.com/dgarage/nbxplorer/v2.5.30-1/Dockerfile diff --git a/docker-compose-generator/crypto-definitions.json b/docker-compose-generator/crypto-definitions.json index e6af9523..a16ca144 100644 --- a/docker-compose-generator/crypto-definitions.json +++ b/docker-compose-generator/crypto-definitions.json @@ -87,6 +87,14 @@ "EclairFragment": null, "PhoenixdFragment": null }, + { + "Crypto": "bdx", + "CryptoFragment": "beldex", + "CLightningFragment": null, + "LNDFragment": null, + "EclairFragment": null, + "PhoenixdFragment": null + }, { "Crypto": "lbtc", "CryptoFragment": "liquid", diff --git a/docker-compose-generator/docker-fragments/beldex.yml b/docker-compose-generator/docker-fragments/beldex.yml new file mode 100644 index 00000000..b4822ba5 --- /dev/null +++ b/docker-compose-generator/docker-fragments/beldex.yml @@ -0,0 +1,33 @@ +version: "3" + +services: + beldexd: + restart: unless-stopped + container_name: btcpayserver_beldexd + image: beldex/beldex:7.0.0 + command: beldexd --rpc-bind-ip=0.0.0.0 --confirm-external-bind --rpc-bind-port=19091 --non-interactive --block-notify="/bin/sh ./scripts/notifier.sh -X GET http://btcpayserver:49392/beldexlikedaemoncallback/block?cryptoCode=bdx&hash=%s" --hide-my-port + expose: + - "19091" + volumes: + - "bdx_data:/data" + beldexd_wallet: + restart: unless-stopped + container_name: btcpayserver_beldex_wallet + image: beldex/beldex:7.0.0 + command: beldex-wallet-rpc --rpc-bind-ip=0.0.0.0 --disable-rpc-login --confirm-external-bind --rpc-bind-port=19092 --non-interactive --trusted-daemon --daemon-address=beldexd:19091 --wallet-dir=/wallet --tx-notify="/bin/sh ./scripts/notifier.sh -X GET http://btcpayserver:49392/beldexlikedaemoncallback/tx?cryptoCode=bdx&hash=%s" + expose: + - "19092" + volumes: + - "bdx_wallet:/wallet" + depends_on: + - beldexd + btcpayserver: + environment: + BTCPAY_BDX_DAEMON_URI: http://beldexd:19091 + BTCPAY_BDX_WALLET_DAEMON_URI: http://beldexd_wallet:19092 + BTCPAY_BDX_WALLET_DAEMON_WALLETDIR: /root/bdx_wallet + volumes: + - "bdx_wallet:/root/bdx_wallet" +volumes: + bdx_wallet: + bdx_data: diff --git a/docker-compose-generator/docker-fragments/opt-beldex-expose.yml b/docker-compose-generator/docker-fragments/opt-beldex-expose.yml new file mode 100644 index 00000000..e5f83d10 --- /dev/null +++ b/docker-compose-generator/docker-fragments/opt-beldex-expose.yml @@ -0,0 +1,11 @@ +version: "3" + +services: + beldexd: + ports: + - "127.0.0.1:19091:19091" + beldex_wallet: + ports: + - "127.0.0.1:19092:19092" +required: + - "beldex" diff --git a/helpers.sh b/helpers.sh index d7c14dda..c6b427e3 100755 --- a/helpers.sh +++ b/helpers.sh @@ -19,6 +19,7 @@ install_tooling() { "btcpayserver_viacoind" "viacoin-cli.sh" "Command line for your Viacoin instance" \ "btcpayserver_elementsd" "elements-cli.sh" "Command line for your Elements/Liquid instance" \ "btcpayserver_monerod" "monero-wallet-cli.sh" "Command line for your Monero instance" \ + "btcpayserver_beldexd" "beldex-wallet-cli.sh" "Command line for your Beldex instance" \ "joinmarket" "jm.sh" "Command line for your joinmarket instance" \ "ndlci_cli" "ndlc-cli.sh" "Command line for NDLC-CLI" \ "pihole" "pihole.sh" "Command line for running pihole commands" \