diff --git a/.github/workflows/cont_integration.yml b/.github/workflows/cont_integration.yml index 891807e..1ae4293 100644 --- a/.github/workflows/cont_integration.yml +++ b/.github/workflows/cont_integration.yml @@ -10,8 +10,8 @@ jobs: strategy: matrix: rust: - - 1.65.0 # STABLE - - 1.57.0 # MSRV + - 1.75.0 # STABLE + - 1.63.0 # MSRV steps: - name: checkout uses: actions/checkout@v2 @@ -36,15 +36,9 @@ jobs: - name: Update Cargo.lock run: cargo update - name: Pin dependencies for MSRV - if: matrix.rust == '1.57.0' + if: matrix.rust == '1.63.0' run: | - cargo update -p log:0.4.20 --precise 0.4.18 - cargo update -p tempfile --precise 3.6.0 - cargo update -p webpki:0.22.4 --precise 0.22.0 - cargo update -p rustls:0.20.9 --precise 0.20.8 - cargo update -p sct:0.7.1 --precise 0.7.0 - cargo update -p tokio:1.35.0 --precise 1.29.1 - cargo update -p byteorder:1.5.0 --precise 1.4.3 + cargo update -p home:0.5.9 --precise 0.5.5 - name: Build run: cargo build - name: Clippy diff --git a/Cargo.toml b/Cargo.toml index 8efc58d..fbd87e2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -18,6 +18,4 @@ log = "^0.4" rstest = "^0.11" bdk-testutils = "^0.4" bdk = { version = "0.28", default-features = true } -electrsd = { version = "0.21", features = ["bitcoind_22_0", "electrs_0_9_1"] } -# base64ct versions at 1.6.0 and higher have MSRV 1.60.0 -base64ct = { version = "<1.6.0", features = ["alloc"] } +electrsd = { version = "0.23", features = ["bitcoind_22_0", "electrs_0_9_1"] } diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..b67262c --- /dev/null +++ b/Dockerfile @@ -0,0 +1,41 @@ +FROM rust:1.69-bookworm +ARG http_proxy +ENV http_proxy=$http_proxy +ENV https_proxy=$http_proxy +ENV HTTP_PROXY=$http_proxy +ENV HTTPS_PROXY=$http_proxy +RUN echo Acquire::http::Proxy "${http_proxy}"; > /etc/apt/apt.conf.d/70debconf + +RUN apt-get update \ + && apt-get install --no-install-recommends -y \ + eatmydata \ + && eatmydata apt-get -y dist-upgrade \ + && eatmydata apt-get install --no-install-recommends -y \ + build-essential \ + bash \ + ca-certificates \ + clang \ + curl \ + emscripten \ + hunspell \ + libclang-dev \ + libssl-dev \ + llvm \ + pkg-config \ + syslog-ng \ + sudo \ + && eatmydata apt -y autoremove \ + && eatmydata apt clean \ + && rm -rf /var/lib/apt/lists/* + +ARG UID +RUN useradd -m -u $UID satoshi +USER satoshi +WORKDIR /home/satoshi + +RUN rustup component add clippy-preview \ + && rustup component add rustfmt +RUN rustup target add wasm32-unknown-unknown +RUN rustup target add wasm32-wasi +RUN rustup target add wasm32-unknown-emscripten + diff --git a/Dockerfile_63 b/Dockerfile_63 new file mode 100644 index 0000000..854b1c7 --- /dev/null +++ b/Dockerfile_63 @@ -0,0 +1,39 @@ +FROM rust:1.63-buster +ARG http_proxy +ENV http_proxy=$http_proxy +ENV https_proxy=$http_proxy +ENV HTTP_PROXY=$http_proxy +ENV HTTPS_PROXY=$http_proxy +RUN echo Acquire::http::Proxy "${http_proxy}"; > /etc/apt/apt.conf.d/70debconf + +RUN apt-get update \ + && apt-get install --no-install-recommends -y \ + eatmydata \ + && eatmydata apt-get -y dist-upgrade \ + && eatmydata apt-get install --no-install-recommends -y \ + build-essential \ + bash \ + ca-certificates \ + clang \ + curl \ + hunspell \ + libclang-dev \ + libssl-dev \ + llvm \ + pkg-config \ + syslog-ng \ + sudo \ + && eatmydata apt -y autoremove \ + && eatmydata apt clean \ + && rm -rf /var/lib/apt/lists/* + +ARG UID +RUN useradd -m -u $UID satoshi +USER satoshi +WORKDIR /home/satoshi + +RUN rustup component add clippy-preview \ + && rustup component add rustfmt +RUN rustup target add wasm32-unknown-unknown +RUN rustup target add wasm32-wasi + diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..f6eb9a2 --- /dev/null +++ b/Makefile @@ -0,0 +1,81 @@ +TAG := bdk-reserves +TAG_57 := bdk-reserves-57 +TAG_63 := bdk-reserves-61 +http_proxy ?= http://172.17.0.1:3128 +DOCKER_RUN := docker run --interactive --rm \ + -v ${PWD}:/home/satoshi \ + +build: builder + $(DOCKER_RUN) --tty ${TAG} cargo build + +test: test_current test_63 + +test_current: builder + rm -f Cargo.lock + $(DOCKER_RUN) ${TAG} cargo test + +test_57: builder_57 + #rm -f Cargo.lock + #$(DOCKER_RUN) ${TAG_57} cargo update -p log:0.4.20 --precise 0.4.18 + #$(DOCKER_RUN) ${TAG_57} cargo update -p tempfile --precise 3.6.0 + #$(DOCKER_RUN) ${TAG_57} cargo update -p sct:0.7.1 --precise 0.7.0 + $(DOCKER_RUN) ${TAG_57} cargo update -p zip:0.6.6 --precise 0.6.3 || true + $(DOCKER_RUN) ${TAG_57} cargo update -p rustls:0.21.10 --precise 0.21.1 || true + $(DOCKER_RUN) ${TAG_57} cargo update -p rustls:0.21.7 --precise 0.21.1 || true + $(DOCKER_RUN) ${TAG_57} cargo update -p rustls:0.21.4 --precise 0.21.1 || true + $(DOCKER_RUN) ${TAG_57} cargo update -p rustls:0.21.2 --precise 0.21.1 || true + $(DOCKER_RUN) ${TAG_57} cargo update -p rustls:0.20.9 --precise 0.20.8 || true + $(DOCKER_RUN) ${TAG_57} cargo update -p rustls-webpki:0.100.3 --precise 0.100.1 || true + $(DOCKER_RUN) ${TAG_57} cargo update -p rustls-webpki:0.101.4 --precise 0.101.1 || true + $(DOCKER_RUN) ${TAG_57} cargo update -p rustls-webpki:0.101.7 --precise 0.101.1 || true + $(DOCKER_RUN) ${TAG_57} cargo update -p crossbeam-utils:0.8.18 --precise 0.8.16 || true + $(DOCKER_RUN) ${TAG_57} cargo update -p tokio:1.35.1 --precise 1.29.1 || true + $(DOCKER_RUN) ${TAG_57} cargo update -p rustix:0.38.9 --precise 0.38.3 || true + $(DOCKER_RUN) ${TAG_57} cargo update -p ring:0.17.7 --precise 0.16.20 || true + $(DOCKER_RUN) ${TAG_57} cargo update -p byteorder:1.5.0 --precise 0.4.3 || true + $(DOCKER_RUN) ${TAG_57} cargo update -p webpki:0.22.4 --precise 0.22.0 || true + $(DOCKER_RUN) ${TAG_57} cargo update -p crossbeam-epoch:0.9.17 --precise 0.9.15 || true + $(DOCKER_RUN) ${TAG_57} cargo update -p byteorder:1.5.0 --precise 0.4.3 || true + $(DOCKER_RUN) ${TAG_57} cargo test + +test_63: builder_63 + rm -f Cargo.lock + $(DOCKER_RUN) ${TAG_63} cargo test || true + $(DOCKER_RUN) ${TAG_63} cargo update -p home:0.5.9 --precise 0.5.5 || true + $(DOCKER_RUN) ${TAG_63} cargo test + +run: builder + $(DOCKER_RUN) --tty ${TAG} cargo run + +wasm-unknown: builder + $(DOCKER_RUN) --tty ${TAG} cargo check --target wasm32-unknown-unknown --no-default-features + +wasm-wasi: builder + $(DOCKER_RUN) --tty ${TAG} cargo check --target wasm32-wasi --no-default-features + +wasm-emscripten: builder + $(DOCKER_RUN) --tty ${TAG} cargo check --target wasm32-unknown-emscripten --no-default-features + +sh: builder + $(DOCKER_RUN) --tty ${TAG} sh + +builder: + docker build --tag ${TAG} \ + --build-arg http_proxy="${http_proxy}" \ + --build-arg UID="$(shell id -u)" \ + . + +builder_57: + docker build --tag ${TAG_57}\ + --build-arg http_proxy="${http_proxy}" \ + --build-arg UID="$(shell id -u)" \ + -f Dockerfile_57 \ + . + +builder_63: + docker build --tag ${TAG_63}\ + --build-arg http_proxy="${http_proxy}" \ + --build-arg UID="$(shell id -u)" \ + -f Dockerfile_63 \ + . + diff --git a/README.md b/README.md index 0cecf4d..1ee6ac6 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ - +
@@ -50,15 +50,12 @@ at your option. ## Minimum Supported Rust Version (MSRV) -This library should always compile with Rust **1.57.0**. +This library should always compile with Rust **1.63.0**. To build with the MSRV you will need to pin the below dependencies: ```shell -# log versions at 0.4.19+ have MSRV 1.60.0 -cargo update -p log:0.4.19 --precise 0.4.18 -# tempfile versions at 3.7.0+ have MSRV 1.63.0 -cargo update -p tempfile --precise 3.6.0 +cargo update -p home:0.5.9 --precise 0.5.5 ``` ## Contribution diff --git a/src/reserves.rs b/src/reserves.rs index c6f4a22..18a0d9d 100644 --- a/src/reserves.rs +++ b/src/reserves.rs @@ -24,9 +24,8 @@ use bdk::bitcoin::blockdata::transaction::{EcdsaSighashType, OutPoint, TxIn, TxO use bdk::bitcoin::consensus::encode::serialize; use bdk::bitcoin::hash_types::{PubkeyHash, Txid}; use bdk::bitcoin::hashes::{hash160, sha256d, Hash}; -use bdk::bitcoin::util::address::Payload; use bdk::bitcoin::util::psbt::{Input, PartiallySignedTransaction as PSBT}; -use bdk::bitcoin::{Address, Network, Sequence}; +use bdk::bitcoin::{Network, Sequence}; use bdk::database::BatchDatabase; use bdk::wallet::tx_builder::TxOrdering; use bdk::wallet::Wallet; @@ -119,11 +118,7 @@ where }; let pkh = PubkeyHash::from_hash(hash160::Hash::hash(&[0])); - let out_script_unspendable = Address { - payload: Payload::PubkeyHash(pkh), - network: self.network(), - } - .script_pubkey(); + let out_script_unspendable = Script::new_p2pkh(&pkh); let mut builder = self.build_tx(); builder @@ -192,7 +187,7 @@ pub fn verify_proof( psbt: &PSBT, message: &str, outpoints: Vec<(OutPoint, TxOut)>, - network: Network, + _network: Network, ) -> Result