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
53 changes: 13 additions & 40 deletions .github/workflows/cont_integration.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,7 @@ jobs:
rust:
- version: ${{ needs.prepare.outputs.rust_version }}
clippy: true
- version: 1.63.0 # Overall MSRV
- version: 1.75.0 # Specific MSRV for `bdk_electrum`
- version: 1.85.0 # MSRV
features:
- --no-default-features --features miniscript/no-std,bdk_chain/hashbrown
- --all-features
Expand All @@ -39,38 +38,20 @@ jobs:
with:
persist-credentials: false
- name: Install Rust toolchain
uses: actions-rs/toolchain@v1
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
toolchain: ${{ matrix.rust.version }}
override: true
profile: minimal
- name: Rust Cache
uses: Swatinem/[email protected]
- name: Pin dependencies for 1.75
if: matrix.rust.version == '1.75.0'
run: |
cargo update -p home --precise "0.5.9"
cargo update -p native-tls --precise "0.2.13"
cargo update -p idna_adapter --precise "1.1.0"
cargo update -p base64ct --precise "1.6.0"
cargo update -p minreq --precise "2.13.2"
cargo update -p rayon --precise "1.10.0"
cargo update -p rayon-core --precise "1.12.1"
cargo update -p time --precise "0.3.41"
cache: true
- name: Pin dependencies for MSRV
if: matrix.rust.version == '1.63.0'
if: matrix.rust.version == '1.85.0'
run: ./ci/pin-msrv.sh
- name: Build + Test
env:
MATRIX_RUST_VERSION: ${{ matrix.rust.version }}
run: |
if [ $MATRIX_RUST_VERSION = '1.63.0' ]; then
cargo build --workspace --exclude 'example_*' --exclude 'bdk_electrum' ${{ matrix.features }}
cargo test --workspace --exclude 'example_*' --exclude 'bdk_electrum' ${{ matrix.features }}
else
cargo build --workspace --exclude 'example_*' ${{ matrix.features }}
cargo test --workspace --exclude 'example_*' ${{ matrix.features }}
fi

check-no-std:
needs: prepare
Expand All @@ -82,14 +63,12 @@ jobs:
with:
persist-credentials: false
- name: Install Rust toolchain
uses: actions-rs/toolchain@v1
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
toolchain: ${{ needs.prepare.outputs.rust_version }}
override: true
profile: minimal
cache: true
# target: "thumbv6m-none-eabi"
- name: Rust Cache
uses: Swatinem/[email protected]
- name: Check bdk_chain
working-directory: ./crates/chain
# TODO "--target thumbv6m-none-eabi" should work but currently does not
Expand All @@ -116,14 +95,12 @@ jobs:
- run: sudo apt-get update || exit 1
- run: sudo apt-get install -y libclang-common-14-dev clang-14 libc6-dev-i386 || exit 1
- name: Install Rust toolchain
uses: actions-rs/toolchain@v1
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
toolchain: ${{ needs.prepare.outputs.rust_version }}
override: true
profile: minimal
cache: true
target: "wasm32-unknown-unknown"
- name: Rust Cache
uses: Swatinem/[email protected]
- name: Check esplora
working-directory: ./crates/esplora
run: cargo check --target wasm32-unknown-unknown --no-default-features --features bdk_core/hashbrown,async
Expand All @@ -137,11 +114,10 @@ jobs:
with:
persist-credentials: false
- name: Install Rust toolchain
uses: actions-rs/toolchain@v1
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
toolchain: nightly
override: true
profile: minimal
components: rustfmt
- name: Check fmt
run: cargo fmt --all --check
Expand All @@ -156,13 +132,12 @@ jobs:
- uses: actions/checkout@v4
with:
persist-credentials: false
- uses: actions-rs/toolchain@v1
- uses: actions-rust-lang/setup-rust-toolchain@v1
with:
toolchain: ${{ needs.prepare.outputs.rust_version }}
components: clippy
override: true
- name: Rust Cache
uses: Swatinem/[email protected]
cache: true
- uses: actions-rs/clippy-check@v1
with:
token: ${{ secrets.GITHUB_TOKEN }}
Expand All @@ -186,13 +161,11 @@ jobs:
with:
persist-credentials: false
- name: Install Rust toolchain
uses: actions-rs/toolchain@v1
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
toolchain: ${{ needs.prepare.outputs.rust_version }}
override: true
profile: minimal
- name: Rust Cache
uses: Swatinem/[email protected]
cache: true
- name: Build
working-directory: examples/${{ matrix.example-dir }}
run: cargo build
8 changes: 8 additions & 0 deletions .github/zizmor.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# Zizmor config
rules:
unpinned-uses:
config:
policies:
# Allow pin by ref/tag
actions-rust-lang/setup-rust-toolchain: ref-pin
actions/*: ref-pin
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ Every new feature should be covered by functional tests where possible.
When refactoring, structure your PR to make it easy to review and don't
hesitate to split it into multiple small, focused PRs.

The Minimum Supported Rust Version is **1.63.0** (enforced by our CI).
The Minimum Supported Rust Version is **1.85.0** (enforced by our CI).

Commits should cover both the issue fixed and the solution's rationale.
These [guidelines](https://chris.beams.io/posts/git-commit/) should be kept in mind. Commit messages follow the ["Conventional Commits 1.0.0"](https://www.conventionalcommits.org/en/v1.0.0/) to make commit histories easier to read by humans and automated tools. All commits must be [GPG signed](https://docs.github.com/en/authentication/managing-commit-signature-verification/signing-commits).
Expand Down
7 changes: 3 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
<a href="https://github.com/bitcoindevkit/bdk/blob/master/LICENSE"><img alt="MIT or Apache-2.0 Licensed" src="https://img.shields.io/badge/license-MIT%2FApache--2.0-blue.svg"/></a>
<a href="https://github.com/bitcoindevkit/bdk/actions?query=workflow%3ACI"><img alt="CI Status" src="https://github.com/bitcoindevkit/bdk/workflows/CI/badge.svg"></a>
<a href="https://coveralls.io/github/bitcoindevkit/bdk?branch=master"><img src="https://coveralls.io/repos/github/bitcoindevkit/bdk/badge.svg?branch=master"/></a>
<a href="https://blog.rust-lang.org/2022/08/11/Rust-1.63.0.html"><img alt="Rustc Version 1.63.0+" src="https://img.shields.io/badge/rustc-1.63.0%2B-lightgrey.svg"/></a>
<a href="https://blog.rust-lang.org/2025/02/20/Rust-1.85.0/"><img alt="Rustc Version 1.85.0+" src="https://img.shields.io/badge/rustc-1.85.0%2B-lightgrey.svg"/></a>
<a href="https://discord.gg/d7NkDKm"><img alt="Chat on Discord" src="https://img.shields.io/discord/753336465005608961?logo=discord"></a>
</p>

Expand Down Expand Up @@ -58,15 +58,14 @@ Fully working examples of how to use these components are in `/examples`:

## Minimum Supported Rust Version (MSRV)

The following BDK crates maintains a MSRV of 1.63.0. To build these crates with the MSRV of 1.63.0 you will need to pin dependencies by running the [`pin-msrv.sh`](./ci/pin-msrv.sh) script.
The following BDK crates maintains a MSRV of 1.85.0. To build these crates with the MSRV of 1.85.0 you will need to pin dependencies by running the [`pin-msrv.sh`](./ci/pin-msrv.sh) script.

- `bdk_core`
- `bdk_chain`
- `bdk_bitcoind_rpc`
- `bdk_esplora`
- `bdk_file_store`

The MSRV of the `bdk_electrum` crate is 1.75.0.
- `bdk_electrum`

## Just

Expand Down
25 changes: 1 addition & 24 deletions ci/pin-msrv.sh
Original file line number Diff line number Diff line change
Expand Up @@ -8,27 +8,4 @@ set -euo pipefail
# To pin deps, switch toolchain to MSRV and execute the below updates

# cargo clean
# rustup override set 1.63.0

cargo update -p zstd-sys --precise "2.0.8+zstd.1.5.5"
cargo update -p time --precise "0.3.20"
cargo update -p home --precise "0.5.5"
cargo update -p proptest --precise "1.2.0"
cargo update -p url --precise "2.5.0"
cargo update -p tokio --precise "1.38.1"
cargo update -p reqwest --precise "0.12.4"
cargo update -p security-framework-sys --precise "2.11.1"
cargo update -p csv --precise "1.3.0"
cargo update -p unicode-width --precise "0.1.13"
cargo update -p native-tls --precise "0.2.13"
cargo update -p flate2 --precise "1.0.35"
cargo update -p bzip2-sys --precise "0.1.12"
cargo update -p ring --precise "0.17.12"
cargo update -p once_cell --precise "1.20.3"
cargo update -p base64ct --precise "1.6.0"
cargo update -p minreq --precise "2.13.2"
cargo update -p tracing-core --precise "0.1.33"
cargo update -p [email protected] --precise "1.0.1"
cargo update -p rayon --precise "1.10.0"
cargo update -p rayon-core --precise "1.12.1"
cargo update -p [email protected] --precise "0.5.10"
# rustup override set 1.85.0
2 changes: 1 addition & 1 deletion clippy.toml
Original file line number Diff line number Diff line change
@@ -1 +1 @@
msrv="1.63.0"
msrv="1.85.0"
2 changes: 1 addition & 1 deletion crates/bitcoind_rpc/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
name = "bdk_bitcoind_rpc"
version = "0.22.0"
edition = "2021"
rust-version = "1.63"
rust-version = "1.85.0"
homepage = "https://bitcoindevkit.org"
repository = "https://github.com/bitcoindevkit/bdk"
documentation = "https://docs.rs/bdk_bitcoind_rpc"
Expand Down
4 changes: 2 additions & 2 deletions crates/chain/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
name = "bdk_chain"
version = "0.23.2"
edition = "2021"
rust-version = "1.63"
rust-version = "1.85.0"
homepage = "https://bitcoindevkit.org"
repository = "https://github.com/bitcoindevkit/bdk"
documentation = "https://docs.rs/bdk_chain"
Expand All @@ -28,7 +28,7 @@ rusqlite = { version = "0.31.0", features = ["bundled"], optional = true }
rand = "0.8"
proptest = "1.2.0"
bdk_testenv = { path = "../testenv" }
criterion = { version = "0.2" }
criterion = { version = "0.7" }

[features]
default = ["std", "miniscript"]
Expand Down
8 changes: 4 additions & 4 deletions crates/chain/benches/canonicalization.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ use bitcoin::{
absolute, constants, hashes::Hash, key::Secp256k1, transaction, Amount, BlockHash, Network,
OutPoint, ScriptBuf, Transaction, TxIn, TxOut,
};
use criterion::{black_box, criterion_group, criterion_main, Criterion};
use criterion::{criterion_group, criterion_main, Criterion};
use miniscript::{Descriptor, DescriptorPublicKey};
use std::sync::Arc;

Expand Down Expand Up @@ -126,7 +126,7 @@ fn run_filter_chain_unspents(tx_graph: &KeychainTxGraph, chain: &LocalChain, exp

pub fn many_conflicting_unconfirmed(c: &mut Criterion) {
const CONFLICTING_TX_COUNT: u32 = 2100;
let (tx_graph, chain) = black_box(setup(|tx_graph, _chain| {
let (tx_graph, chain) = std::hint::black_box(setup(|tx_graph, _chain| {
let previous_output = add_ancestor_tx(tx_graph, tip_block_id(), 0);
// Create conflicting txs that spend from `previous_output`.
let spk_1 = spk_at_index(&tx_graph.index, 1);
Expand Down Expand Up @@ -164,7 +164,7 @@ pub fn many_conflicting_unconfirmed(c: &mut Criterion) {

pub fn many_chained_unconfirmed(c: &mut Criterion) {
const TX_CHAIN_COUNT: u32 = 2100;
let (tx_graph, chain) = black_box(setup(|tx_graph, _chain| {
let (tx_graph, chain) = std::hint::black_box(setup(|tx_graph, _chain| {
let mut previous_output = add_ancestor_tx(tx_graph, tip_block_id(), 0);
// Create a chain of unconfirmed txs where each subsequent tx spends the output of the
// previous one.
Expand Down Expand Up @@ -203,7 +203,7 @@ pub fn many_chained_unconfirmed(c: &mut Criterion) {
pub fn nested_conflicts(c: &mut Criterion) {
const CONFLICTS_PER_OUTPUT: usize = 3;
const GRAPH_DEPTH: usize = 7;
let (tx_graph, chain) = black_box(setup(|tx_graph, _chain| {
let (tx_graph, chain) = std::hint::black_box(setup(|tx_graph, _chain| {
let mut prev_ops = core::iter::once(add_ancestor_tx(tx_graph, tip_block_id(), 0))
.collect::<Vec<OutPoint>>();
for depth in 1..GRAPH_DEPTH {
Expand Down
4 changes: 2 additions & 2 deletions crates/chain/benches/indexer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ use bitcoin::{
absolute, constants, hashes::Hash, key::Secp256k1, transaction, Amount, BlockHash, Network,
Transaction, TxIn, TxOut,
};
use criterion::{black_box, criterion_group, criterion_main, Criterion};
use criterion::{criterion_group, criterion_main, Criterion};
use miniscript::Descriptor;
use std::sync::Arc;

Expand Down Expand Up @@ -91,7 +91,7 @@ fn do_bench(indexed_tx_graph: &KeychainTxGraph, chain: &LocalChain) {
}

pub fn reindex_tx_graph(c: &mut Criterion) {
let (graph, chain) = black_box(setup(|graph, _chain| {
let (graph, chain) = std::hint::black_box(setup(|graph, _chain| {
// Add relevant txs to graph
for i in 0..TX_CT {
let script_pubkey = graph.index.reveal_next_spk(()).unwrap().0 .1;
Expand Down
4 changes: 2 additions & 2 deletions crates/chain/src/canonical_view.rs
Original file line number Diff line number Diff line change
Expand Up @@ -93,8 +93,8 @@ impl<A: Anchor> CanonicalView<A> {
where
C: ChainOracle,
{
fn find_direct_anchor<'g, A: Anchor, C: ChainOracle>(
tx_node: &TxNode<'g, Arc<Transaction>, A>,
fn find_direct_anchor<A: Anchor, C: ChainOracle>(
tx_node: &TxNode<'_, Arc<Transaction>, A>,
chain: &C,
chain_tip: BlockId,
) -> Result<Option<A>, C::Error> {
Expand Down
2 changes: 1 addition & 1 deletion crates/chain/src/indexer/keychain_txout.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1058,7 +1058,7 @@ impl Merge for ChangeSet {
debug_assert!(
orig_spks
.iter()
.all(|(i, orig_spk)| spks.get(i).map_or(true, |spk| spk == orig_spk)),
.all(|(i, orig_spk)| spks.get(i).is_none_or(|spk| spk == orig_spk)),
"spk of the same descriptor-id and derivation index must not be different"
);
orig_spks.extend(spks);
Expand Down
2 changes: 1 addition & 1 deletion crates/core/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
name = "bdk_core"
version = "0.6.2"
edition = "2021"
rust-version = "1.63"
rust-version = "1.85.0"
homepage = "https://bitcoindevkit.org"
repository = "https://github.com/bitcoindevkit/bdk"
documentation = "https://docs.rs/bdk_core"
Expand Down
3 changes: 2 additions & 1 deletion crates/electrum/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
name = "bdk_electrum"
version = "0.23.2"
edition = "2021"
rust-version = "1.85.0"
homepage = "https://bitcoindevkit.org"
repository = "https://github.com/bitcoindevkit/bdk"
documentation = "https://docs.rs/bdk_electrum"
Expand All @@ -19,7 +20,7 @@ electrum-client = { version = "0.24.0", features = [ "proxy" ], default-features
[dev-dependencies]
bdk_testenv = { path = "../testenv" }
bdk_chain = { path = "../chain" }
criterion = { version = "0.2" }
criterion = { version = "0.7" }

[features]
default = ["use-rustls"]
Expand Down
1 change: 1 addition & 0 deletions crates/electrum/src/bdk_electrum_client.rs
Original file line number Diff line number Diff line change
Expand Up @@ -695,6 +695,7 @@ fn chain_update(

#[cfg(test)]
#[cfg_attr(coverage_nightly, coverage(off))]
#[allow(unused_imports)]
mod test {
use crate::{bdk_electrum_client::TxUpdate, electrum_client::ElectrumApi, BdkElectrumClient};
use bdk_chain::bitcoin::Amount;
Expand Down
1 change: 1 addition & 0 deletions crates/esplora/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
name = "bdk_esplora"
version = "0.22.1"
edition = "2021"
rust-version = "1.85.0"
homepage = "https://bitcoindevkit.org"
repository = "https://github.com/bitcoindevkit/bdk"
documentation = "https://docs.rs/bdk_esplora"
Expand Down
1 change: 1 addition & 0 deletions crates/file_store/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
name = "bdk_file_store"
version = "0.22.0"
edition = "2021"
rust-version = "1.85.0"
license = "MIT OR Apache-2.0"
repository = "https://github.com/bitcoindevkit/bdk"
documentation = "https://docs.rs/bdk_file_store"
Expand Down
2 changes: 1 addition & 1 deletion crates/testenv/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
name = "bdk_testenv"
version = "0.13.1"
edition = "2021"
rust-version = "1.63"
rust-version = "1.85.0"
homepage = "https://bitcoindevkit.org"
repository = "https://github.com/bitcoindevkit/bdk"
documentation = "https://docs.rs/bdk_testenv"
Expand Down
Loading