diff --git a/.github/workflows/audit.yml b/.github/workflows/audit.yml index 3c61162df..8a41b8846 100644 --- a/.github/workflows/audit.yml +++ b/.github/workflows/audit.yml @@ -16,7 +16,7 @@ jobs: security_audit: runs-on: ubuntu-20.04 steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - uses: actions-rs/audit-check@v1 with: token: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file diff --git a/.github/workflows/code_coverage.yml b/.github/workflows/code_coverage.yml index 9ec5965c0..2836cd0b4 100644 --- a/.github/workflows/code_coverage.yml +++ b/.github/workflows/code_coverage.yml @@ -21,7 +21,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Install lcov tools run: sudo apt-get install lcov -y - name: Install rustup @@ -63,7 +63,7 @@ jobs: with: github-token: ${{ secrets.GITHUB_TOKEN }} - name: Upload artifact - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v4 with: name: coverage-report path: coverage-report.html diff --git a/.github/workflows/cont_integration.yml b/.github/workflows/cont_integration.yml index bc2c88442..4c9de1eff 100644 --- a/.github/workflows/cont_integration.yml +++ b/.github/workflows/cont_integration.yml @@ -18,9 +18,9 @@ jobs: strategy: matrix: rust: - - version: 1.65.0 # STABLE + - version: 1.82.0 # STABLE clippy: true - - version: 1.57.0 # MSRV + - version: 1.63.0 # MSRV features: - default - minimal @@ -39,11 +39,11 @@ jobs: - sqlite-bundled steps: - name: checkout - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Generate cache key run: echo "${{ matrix.rust.version }} ${{ matrix.features }}" | tee .cache_key - name: cache - uses: actions/cache@v2 + uses: actions/cache@v4 with: path: | ~/.cargo/registry @@ -60,26 +60,11 @@ jobs: - name: Update toolchain run: rustup update - name: Pin dependencies for MSRV - if: matrix.rust.version == '1.57.0' + if: matrix.rust.version == '1.63.0' run: | - cargo update -p log --precise "0.4.18" - cargo update -p tempfile --precise "3.6.0" - cargo update -p hashlink --precise "0.8.1" cargo update -p regex --precise "1.7.3" - cargo update -p zip:0.6.6 --precise "0.6.3" - cargo update -p rustix --precise "0.37.23" - cargo update -p tokio --precise "1.29.1" - cargo update -p tokio-util --precise "0.7.8" - cargo update -p cc --precise "1.0.81" - cargo update -p rustls:0.20.9 --precise "0.20.8" - cargo update -p rustls:0.21.7 --precise "0.21.1" - cargo update -p flate2:1.0.27 --precise "1.0.26" - cargo update -p reqwest --precise "0.11.18" - cargo update -p h2 --precise "0.3.20" - cargo update -p rustls-webpki:0.100.3 --precise "0.100.1" - cargo update -p rustls-webpki:0.101.6 --precise "0.101.1" - cargo update -p byteorder --precise "1.4.3" - cargo update -p webpki --precise "0.22.2" + cargo update -p home --precise "0.5.5" + cargo update -p tokio --precise "1.38.1" - name: Build run: cargo build --features ${{ matrix.features }} --no-default-features - name: Clippy @@ -93,9 +78,9 @@ jobs: runs-on: ubuntu-latest steps: - name: checkout - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: cache - uses: actions/cache@v2 + uses: actions/cache@v4 with: path: | ~/.cargo/registry @@ -135,9 +120,9 @@ jobs: features: test-esplora,use-esplora-blocking,verify steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Cache - uses: actions/cache@v2 + uses: actions/cache@v4 with: path: | ~/.cargo/registry @@ -160,9 +145,9 @@ jobs: CFLAGS: -I/usr/include steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Cache - uses: actions/cache@v2 + uses: actions/cache@v4 with: path: | ~/.cargo/registry @@ -175,7 +160,7 @@ jobs: - run: sudo apt-get update || exit 1 - run: sudo apt-get install -y libclang-common-10-dev clang-10 libc6-dev-i386 || exit 1 - name: Set default toolchain - run: rustup default 1.65.0 # STABLE + run: rustup default 1.82.0 # STABLE - name: Set profile run: rustup set profile minimal - name: Add target wasm32 @@ -190,7 +175,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Set default toolchain run: rustup default nightly - name: Set profile @@ -207,8 +192,8 @@ jobs: strategy: matrix: rust: - - version: 1.65.0 # STABLE - - version: 1.57.0 # MSRV + - version: 1.82.0 # STABLE + - version: 1.63.0 # MSRV steps: - name: Checkout uses: actions/checkout@v3 @@ -229,25 +214,10 @@ jobs: - name: Update toolchain run: rustup update - name: Pin dependencies for MSRV - if: matrix.rust.version == '1.57.0' + if: matrix.rust.version == '1.63.0' run: | - cargo update -p log --precise "0.4.18" - cargo update -p tempfile --precise "3.6.0" - cargo update -p hashlink --precise "0.8.1" - cargo update -p regex --precise "1.7.3" - cargo update -p zip:0.6.6 --precise "0.6.3" - cargo update -p rustix --precise "0.37.23" - cargo update -p tokio --precise "1.29.1" - cargo update -p tokio-util --precise "0.7.8" - cargo update -p cc --precise "1.0.81" - cargo update -p rustls:0.20.9 --precise "0.20.8" - cargo update -p rustls:0.21.7 --precise "0.21.1" - cargo update -p flate2:1.0.27 --precise "1.0.26" - cargo update -p reqwest --precise "0.11.18" - cargo update -p h2 --precise "0.3.20" - cargo update -p rustls-webpki:0.100.3 --precise "0.100.1" - cargo update -p rustls-webpki:0.101.6 --precise "0.101.1" - cargo update -p byteorder --precise "1.4.3" - cargo update -p webpki --precise "0.22.2" + cargo update -p regex --precise "1.7.3" + cargo update -p home --precise "0.5.5" + cargo update -p tokio --precise "1.38.1" - name: Test run: cargo test --features test-hardware-signer diff --git a/.github/workflows/nightly_docs.yml b/.github/workflows/nightly_docs.yml index f122d068f..70cb8d6bf 100644 --- a/.github/workflows/nightly_docs.yml +++ b/.github/workflows/nightly_docs.yml @@ -16,9 +16,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout sources - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Setup cache - uses: actions/cache@v2 + uses: actions/cache@v4 with: path: | ~/.cargo/registry @@ -26,7 +26,7 @@ jobs: target key: nightly-docs-${{ hashFiles('**/Cargo.toml','**/Cargo.lock') }} - name: Set default toolchain - run: rustup default nightly-2022-12-14 + run: rustup default 1.82.0 - name: Set profile run: rustup set profile minimal - name: Update toolchain @@ -34,7 +34,7 @@ jobs: - name: Build docs run: cargo rustdoc --verbose --features=compiler,electrum,esplora,use-esplora-blocking,compact_filters,rpc,key-value-db,sqlite,all-keys,verify,hardware-signer -- --cfg docsrs -Dwarnings - name: Upload artifact - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v4 with: name: built-docs path: ./target/doc/* @@ -46,7 +46,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout `bitcoindevkit.org` - uses: actions/checkout@v2 + uses: actions/checkout@v4 with: ssh-key: ${{ secrets.DOCS_PUSH_SSH_KEY }} repository: bitcoindevkit/bitcoindevkit.org diff --git a/Cargo.toml b/Cargo.toml index 2e8b02cf9..e1425b7ec 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -94,10 +94,10 @@ reqwest-default-tls = ["esplora-client/async-https"] # Debug/Test features test-blockchains = ["bitcoincore-rpc", "electrum-client"] -test-electrum = ["electrum", "electrsd/electrs_0_8_10", "electrsd/bitcoind_22_0", "test-blockchains"] -test-rpc = ["rpc", "electrsd/electrs_0_8_10", "electrsd/bitcoind_22_0", "test-blockchains"] -test-rpc-legacy = ["rpc", "electrsd/electrs_0_8_10", "electrsd/bitcoind_0_20_0", "test-blockchains"] -test-esplora = ["electrsd/legacy", "electrsd/esplora_a33e97e1", "electrsd/bitcoind_22_0", "test-blockchains"] +test-electrum = ["electrum", "electrsd/electrs_0_8_10", "electrsd/bitcoind_22_1", "test-blockchains"] +test-rpc = ["rpc", "electrsd/electrs_0_8_10", "electrsd/bitcoind_22_1", "test-blockchains"] +test-rpc-legacy = ["rpc", "electrsd/electrs_0_8_10", "electrsd/bitcoind_0_20_2", "test-blockchains"] +test-esplora = ["electrsd/legacy", "electrsd/esplora_a33e97e1", "electrsd/bitcoind_22_1", "test-blockchains"] test-md-docs = ["electrum"] test-hardware-signer = ["hardware-signer"] @@ -111,7 +111,7 @@ miniscript = { version = "10.0", features = ["std"] } bitcoin = { version = "0.30", features = ["std"] } lazy_static = "1.4" env_logger = { version = "0.7", default-features = false } -electrsd = "0.24" +electrsd = "0.25" assert_matches = "1.5.0" [[example]] diff --git a/README.md b/README.md index 42eee2795..bc577e574 100644 --- a/README.md +++ b/README.md @@ -204,45 +204,12 @@ dual licensed as above, without any additional terms or conditions. ## Minimum Supported Rust Version (MSRV) -This library should compile with any combination of features with Rust 1.57.0. +This library should compile with any combination of features with Rust 1.63.0. To build with the MSRV you will need to pin dependencies as follows: ```shell -# log 0.4.19 has MSRV 1.60.0 -cargo update -p log --precise "0.4.18" -# tempfile 3.7.0 has MSRV 1.63.0 -cargo update -p tempfile --precise "3.6.0" -# required for sqlite feature, hashlink 0.8.2 has MSRV 1.61.0 -cargo update -p hashlink --precise "0.8.1" -# required for compact_filters feature, regex after 1.7.3 has MSRV 1.60.0 cargo update -p regex --precise "1.7.3" -# zip 0.6.3 has MSRV 1.59.0 but still works -cargo update -p zip:0.6.6 --precise "0.6.3" -# rustix 0.38.0 has MSRV 1.65.0 -cargo update -p rustix --precise "0.37.23" -# tokio 1.30 has MSRV 1.63.0+ -cargo update -p tokio --precise "1.29.1" -# tokio-util 0.7.9 doesn't build with MSRV 1.57.0 -cargo update -p tokio-util --precise "0.7.8" -# cc 1.0.82 is throwing error with rust 1.57.0, "error[E0599]: no method named `retain_mut`..." -cargo update -p cc --precise "1.0.81" -# rustls 0.20.9 has MSRV 1.60.0+ -cargo update -p rustls:0.20.9 --precise "0.20.8" -# rustls 0.21.2 has MSRV 1.60.0+ -cargo update -p rustls:0.21.7 --precise "0.21.1" -# flate2 1.0.27 has MSRV 1.63.0+ -cargo update -p flate2:1.0.27 --precise "1.0.26" -# reqwest 0.11.19 has MSRV 1.63.0+ -cargo update -p reqwest --precise "0.11.18" -# h2 0.3.21 has MSRV 1.63.0+ -cargo update -p h2 --precise "0.3.20" -# rustls-webpki 0.100.2 has MSRV 1.60+ -cargo update -p rustls-webpki:0.100.3 --precise "0.100.1" -# rustls-webpki 0.101.6 has MSRV 1.60+ -cargo update -p rustls-webpki:0.101.6 --precise "0.101.1" -# byteorder 1.5.0 has MSRV 1.60.0+ -cargo update -p byteorder --precise "1.4.3" -# webpki 0.22.4 requires `ring:0.17.2` which has MSRV 1.61.0+ -cargo update -p webpki --precise "0.22.2" +cargo update -p home --precise "0.5.5" +cargo update -p tokio --precise "1.38.1" ``` diff --git a/src/database/mod.rs b/src/database/mod.rs index fd835300d..caab9b943 100644 --- a/src/database/mod.rs +++ b/src/database/mod.rs @@ -188,6 +188,7 @@ pub(crate) trait DatabaseUtils: Database { .map(|o| o.is_some()) } + #[allow(dead_code)] fn get_raw_tx_or(&self, txid: &Txid, default: D) -> Result, Error> where D: FnOnce() -> Result, Error>, diff --git a/src/lib.rs b/src/lib.rs index 084314552..fd13c5fb4 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -206,17 +206,17 @@ extern crate serde_json; #[cfg(feature = "hardware-signer")] pub extern crate hwi; -#[cfg(all(feature = "reqwest", feature = "ureq"))] -compile_error!("Features reqwest and ureq are mutually exclusive and cannot be enabled together"); +#[cfg(all(feature = "use-esplora-async", feature = "use-esplora-blocking"))] +compile_error!("Features use-esplora-async and use-esplora-blocking are mutually exclusive and cannot be enabled together"); #[cfg(all(feature = "async-interface", feature = "electrum"))] compile_error!( "Features async-interface and electrum are mutually exclusive and cannot be enabled together" ); -#[cfg(all(feature = "async-interface", feature = "ureq"))] +#[cfg(all(feature = "async-interface", feature = "use-esplora-blocking"))] compile_error!( - "Features async-interface and ureq are mutually exclusive and cannot be enabled together" + "Features async-interface and use-esplora-blocking are mutually exclusive and cannot be enabled together" ); #[cfg(all(feature = "async-interface", feature = "compact_filters"))]