RB
← All projectsRust Bitcoin

rust-bitcoin

Rust library for Bitcoin data structures, serialization, consensus encoding, and scripts.

BitcoinCryptographic librariesNormal
Repository coverage

2289 commits in the local evidence base

Every captured commit receives deterministic security triage and a separate communication-quality score. Security candidates and broader second-pass signals receive full-patch Ollama analysis.

524security candidates506second-pass queue2193AI analyses
149commits · 30 days
304commits · 60 days
1150commits · 180 days
2055commits · 365 days
Backfill bands
Aug 5 → Feb 6787 seen32 candidatesComplete
Feb 6 → Jun 6878 seen53 candidatesComplete
Jun 6 → Jul 6211 seen15 candidatesComplete
Jul 6 → Aug 5184 seen2 candidatesComplete
Commit communication

Does the history explain itself?

Message quality measures whether a commit identifies its scope, purpose, rationale, testing, and supporting references. It does not change the security-severity score.

66/100 average clarity
489Strong · 80–100
1083Adequate · 60–79
566Thin · 40–59
151Opaque · 0–39
20security candidates with opaque commit messaging
Read the scoring rubric →
Developer activity

Who is changing the project?

Public Git author strings; identities are not independently verified.

DeveloperCommitsCandidatesAnalyzedHigh riskMessage avg.
Mitchell Bagot649193645068
Andrew Poelstra21072145089
Tobin C. Harding41566410063
jrakibi944994068
Nick Johnson19121190060
Jamil Lambert, PhD11919116061
satsfy (Renato Britto)381527066
Fmt Bot331431045
Trevor Arjeski111111069
Shing Him Ng31731056
Ismail Daif22622050
Martin Habovstiak28527069
Analysis record

Published AI watches

Last scanned 0 minutes ago

Informational 15 AI analysisMessage 96 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6909: build(deps): bump actions/labeler from 6.2.0 to 7.0.0

This commit updates a GitHub Actions automation tool (actions/labeler) used to automatically tag pull requests with labels. It is a routine dependency version bump from 6.2.0 to 7.0.0, with no indication of a security fix or vulnerability.…

4ed7c068by Andrew Poelstra+1−11 file
No security note in commit
Informational 15 AI analysisMessage 96 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6910: build(deps): bump actions/checkout from 7.0.0 to 7.0.1

This commit is a routine update to the GitHub Actions checkout tool used by the project's automated workflows. It only changes version numbers in configuration files and does not alter the actual Bitcoin library code that users run. There …

328c4ae9by Andrew Poelstra+37−3717 files
No security note in commit
Informational 15 AI analysisMessage 100 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6911: build(deps): bump astral-sh/setup-uv from 8.3.2 to 9.0.0

This commit updates a GitHub Actions helper used to install a Python tool called uv, which runs the zizmor security scanner. The change only bumps the pinned version of the helper from 8.3.2 to 9.0.0. The new version's release notes mentio…

No security-relevant signals in commit or upstream release notesDependency bump in CI only, not in library codeNo CVE or advisory referenced
67600795by Andrew Poelstra+2−22 files
No security note in commit
Informational 15 AI analysisMessage 96 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6912: build(deps): bump github/codeql-action/upload-sarif from 4.37.0 to 4.37.3

This is a routine Dependabot update that changes the pinned version of GitHub's official CodeQL upload-sarif action from 4.37.0 to 4.37.3 in a single CI workflow. The action only uploads static analysis results to GitHub; it does not touch…

b51cec63by Andrew Poelstra+1−11 file
No security note in commit
Informational 15 AI analysisMessage 91 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6913: build(deps): bump dtolnay/rust-toolchain from 6c977a6ca4077a0ceb28ffbe03f59d46e9ac8772 to 02cb101ec7c40f2c49e1d9714d64511d8e1b74de

This is a routine update to a GitHub Actions helper used to install Rust during automated testing. It only changes the pinned version of the dtolnay/rust-toolchain action in workflow files. There is no change to the actual rust-bitcoin lib…

90330d15by Andrew Poelstra+8−84 files
No security note in commit
Informational 20 AI analysisMessage 100 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6906: consensus_encoding, primitives: expose exact encoding size for block and transaction

This commit adds a way to ask, in advance, exactly how many bytes a Bitcoin block or transaction will take when serialized. It is a feature addition for the library's encoding system, not a fix for a vulnerability. There is no indication i…

No security-relevant signals in commit message or diffFeature addition: expose exact encoded sizeNo mention of vulnerability, CVE, bug bounty, or security report
1a365d53by Andrew Poelstra+129−1068 files
No security note in commit
Informational 15 AI analysisMessage 88 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

build(deps): bump dtolnay/rust-toolchain

This is a routine update by Dependabot that changes which version of a popular GitHub Action (dtolnay/rust-toolchain) is used to install Rust in automated CI workflows. The commit only updates pinned commit hashes in workflow files; it doe…

a31e0b0eby dependabot[bot]+8−84 files
No security note in commit
Informational 15 AI analysisMessage 93 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

build(deps): bump github/codeql-action/upload-sarif

This is a routine patch-version update of a GitHub-maintained action used only to upload static-analysis results (SARIF files) from a scheduled CI job. The change does not touch any project source code, cryptographic logic, or user-facing …

2cac6e38by dependabot[bot]+1−11 file
No security note in commit
Informational 15 AI analysisMessage 93 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

build(deps): bump astral-sh/setup-uv from 8.3.2 to 9.0.0

This is a routine automated update by Dependabot that changes the pinned version of a GitHub Action used to install a Python tool called 'uv' in two workflow files. The new version is a major release of the setup-uv action itself, but the …

7d7e7269by dependabot[bot]+2−22 files
No security note in commit
Informational 21 AI analysisMessage 100 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6894: Harden `Copy` policy and apply to all pre-1.0 crates

This commit removes the automatic `Copy` trait from several public error types in the rust-bitcoin library and updates the project's written policy to discourage `Copy` on error types. `Copy` is a Rust trait that lets values be duplicated …

API hardening: removes `Copy` from public error types to preserve future flexibilityPolicy update: docs/policy.md now explicitly discourages `Copy` on error typesNo vulnerability fix: change is defensive/preventive, not reactive to a disclosed issue
457cb9b5by Andrew Poelstra+14−146 files
No security note in commit
Informational 18 AI analysisMessage 96 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6787: Move `from_script` to `Address` and drop `AddressExt`

This change is a routine code cleanup, not a security fix. It moves a method that converts Bitcoin output scripts into human-readable addresses from a temporary 'extension trait' directly onto the main Address type. The actual conversion l…

ed42dabdby Andrew Poelstra+38−414 files
No security note in commit
Low 35 AI analysisMessage 91 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6061: Units improvements

This is a routine code-quality and API-expansion pull request for the rust-bitcoin library's 'units' crate. It widens some fee-rate constructors from 32-bit to 64-bit inputs, renames the old 32-bit versions, improves serde error messages, …

API surface change: new u64 fee-rate constructors return NumOpResult to prevent silent overflowRenaming of existing u32 constructors to *_u32 may break downstream callers at compile time (breaking API change)Removal of artificial restriction in from_per_vb allows larger valid inputs
f9460859by Andrew Poelstra+266−12211 files
No security note in commit
Low 49 AI analysisMessage 96 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6862: units: Preserve error in NumOpResult add and sub

This commit fixes a bug in how the library handles math errors. Previously, if you added or subtracted two values and one of them already had an error (for example, dividing by zero), the library would silently replace that original error …

Error-state information loss in arithmetic wrapper typeIncorrect error propagation could mask prior failures such as division by zeroDefensive correctness fix in numeric operation result handling
5324e59aby Andrew Poelstra+26−41 file
No security note in commit
Low 37 AI analysisMessage 91 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6896: Fix `cargo audit` findings

This is a routine dependency-maintenance merge that swaps out old, unmaintained helper libraries for newer, patched versions in the project's example embedded programs and benchmark harness. The changes are driven by automated security sca…

cargo audit advisory remediationdependency upgrade for known-vulnerable crate (rand 0.7 / jobserver)dependency upgrade for known-vulnerable crate (crossbeam-epoch)
5f5f666dby Andrew Poelstra+51−1849 files
Vendor flagged security relevance
Low 37 AI analysisMessage 91 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6897: consensus_encoding: fix overcounting bug in the composite encoders exact size len calculation

This commit fixes a counting bug in a Rust Bitcoin library. The library has combined encoders that bundle multiple pieces of data together. A method called len() is supposed to report how many bytes are left to encode, but it was incorrect…

Violation of documented API contract (ExactSizeEncoder::len)Potential incorrect buffer-size or progress decisions by downstream callersComposite encoder state not fully isolated in size reporting before fix
22bbc326by Andrew Poelstra+19−13 files
No security note in commit
Low 37 AI analysisMessage 73 · Adequate
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

consensus_encoding: fix bug in the composite encoder's exact size

This commit fixes a bookkeeping bug in a Rust Bitcoin library's composite encoder. The encoder is a tool that combines multiple pieces of data into a single byte stream, and it has a method that is supposed to report how many bytes are lef…

Incorrect implementation of a documented size/length contractPotential for callers to over-allocate buffers or miscompute transaction/witness sizesComposite encoder used in consensus-critical serialization paths
914365b4by Nick Johnson+19−13 files
No security note in commit
Informational 18 AI analysisMessage 91 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6809: addresses: Add `AddressParams` type and remove most uses of network types

This is a routine API refactoring in the rust-bitcoin library. It introduces a new AddressParams type and replaces most public uses of the older Network/NetworkKind types when creating or validating Bitcoin addresses. There is no security …

No memory-safety issues, cryptographic errors, or input-validation changes observedNo new unsafe blocks, no new dependencies, no new parsing of untrusted dataAPI surface change only: parameter types replaced with semantically equivalent AddressParams
81032b1aby Andrew Poelstra+208−16414 files
No security note in commit
Low 38 AI analysisMessage 100 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6886: units: preserve original err summing `NumOpResult`

This patch fixes a bug in how rust-bitcoin adds up a list of numeric operation results. Previously, if any item in the list already carried an error (for example, dividing by zero), the summing code would overwrite that error and falsely r…

Error-type confusion / misattribution in arithmetic result aggregationLoss of original failure context across iterator foldPotential for downstream logic to act on wrong `MathOp`/`MathErrorKind`
4af1ee1dby Andrew Poelstra+23−191 file
No security note in commit
Informational 15 AI analysisMessage 100 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6618: ci: disable fail-fast in weekly rustc update crons

This commit changes two GitHub Actions workflow files used for weekly automated Rust toolchain updates. It adds `fail-fast: false` so that if one branch's update job fails, the other branch jobs continue running instead of all being cancel…

c0a70548by Andrew Poelstra+2−02 files
No security note in commit
Moderate 62 AI analysisMessage 91 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6884: units: Fix div_by_fee_rate_floor precision

This commit fixes a precision bug in a Rust Bitcoin library function that calculates how much transaction weight a given amount of money can afford at a given fee rate. The old code rounded the fee rate up to a coarser unit (satoshis per k…

Incorrect fee-rate-to-weight conversion leading to understated affordable weightInteger rounding direction (ceil) used as divisor in floor division causing off-by-one or larger precision lossAddition of overflow handling for Weight::MAX
9caad2c1by Andrew Poelstra+23−52 files
Vendor flagged security relevance
Repository ledger

Explore captured commits

Expand any commit for its author, full message, clarity score, changed files, triage signals, analysis, and source link.

Security candidateMerge rust-bitcoin/rust-bitcoin#6897: consensus_encoding: fix overcounting bug in the composite encoders exact size len calculationby Andrew Poelstra · 22bbc326 · Sep 18, 2026 · 3 filesMessage 91 · StrongLow 37Details
Commit message · Andrew Poelstra

Merge rust-bitcoin/rust-bitcoin#6897: consensus_encoding: fix overcounting bug in the composite encoders exact size len calculation

914365b43c95aa63568da54acf12edc3fe7b8e9a consensus_encoding: fix bug in the composite encoder's exact size (Nick Johnson)

Pull request description:

The `ExactSizeEncoder::len` contract states that it should return the number of bytes *remaining* in the encoder. However, the composite encoders (e.g. `Encoder2`) return a static, total amount. This fix only returns amounts for non-finished sub-encoders.

nymius found this issue while hacking on rust-psbt.


ACKs for top commit:
tcharding:
ACK 914365b43c95aa63568da54acf12edc3fe7b8e9a
apoelstra:
ACK 914365b43c95aa63568da54acf12edc3fe7b8e9a; successfully ran local tests


Tree-SHA512: ee23300a5bc42210ba071766b389203ac353db326083383498144e670498831a308cb770a691a257230443214a3bd9af7e529073778db03b8b20959b2958ebcc

91/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
Why it was queued
signing boundaryconsensus or confidential-proof validationmerge-commit duplicate discount
AI analysis · Low 37/100

This commit fixes a counting bug in a Rust Bitcoin library. The library has combined encoders that bundle multiple pieces of data together. A method called len() is supposed to report how many bytes are left to encode, but it was incorrectly reporting the total size of all pieces even after some pieces were already processed. The fix makes it only count the pieces that have not yet been processed. The bug could cause callers that rely on len() for buffer sizing or progress checks to over-allocate or misjudge remaining work, but it is a correctness fix rather than a clear-cut security vulnerability.

Security candidateconsensus_encoding: fix bug in the composite encoder's exact sizeby Nick Johnson · 914365b4 · Sep 17, 2026 · 3 filesMessage 73 · AdequateLow 37Details
Commit message · Nick Johnson

consensus_encoding: fix bug in the composite encoder's exact size

The `ExactSizeEncoder::len` contract states that it should return the
number of bytes *remaining* in the encoder. However, the composite
encoders (e.g. `Encoder2`) return a static, total amount. This fix
only returns amounts for non-finished sub-encoders.

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
consensus or confidential-proof validation
AI analysis · Low 37/100

This commit fixes a bookkeeping bug in a Rust Bitcoin library's composite encoder. The encoder is a tool that combines multiple pieces of data into a single byte stream, and it has a method that is supposed to report how many bytes are left to write. The bug made this method report the total size of all pieces even after some pieces had already been written, which could mislead any code that relies on an accurate remaining-byte count. The fix makes the method only count bytes that have not yet been written.

Lower-priorityMerge rust-bitcoin/rust-bitcoin#6891: bitcoin: Remove secp-global-context featureby Andrew Poelstra · 75afbac8 · Sep 17, 2026 · 1 fileMessage 100 · StrongTriage 0Details
Commit message · Andrew Poelstra

Merge rust-bitcoin/rust-bitcoin#6891: bitcoin: Remove secp-global-context feature

cfcf14e283c2eb7c6ef68258a003d11ea91524e1 bitcoin: Remove secp-global-context feature (Tobin C. Harding)

Pull request description:

We just added this a while ago and released it in the latest beta release (I think).

`rust-secp256k1 v0.33.0` does not require the context to be passed around like it used to so no one really needs to enable the `global-context` feature (via `bitcoin` or otherwise).

Remove then `secp-global-context` feature all together.

Close: #6890


ACKs for top commit:
apoelstra:
ACK cfcf14e283c2eb7c6ef68258a003d11ea91524e1; successfully ran local tests


Tree-SHA512: 80fb9b6676e025820b17249bffdc13578504b079cec9c768d57b730b1e36e2a30a61d4a473bf8b056e7fcd6dcde893d159af7bbfcacdc2b37aa3befc2555399b

100/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
Why it was queued
merge-commit duplicate discount
Security candidateMerge rust-bitcoin/rust-bitcoin#6809: addresses: Add `AddressParams` type and remove most uses of network typesby Andrew Poelstra · 81032b1a · Sep 17, 2026 · 14 filesMessage 91 · StrongInformational 18Details
Commit message · Andrew Poelstra

Merge rust-bitcoin/rust-bitcoin#6809: addresses: Add `AddressParams` type and remove most uses of network types

d8146e8a2ccddef2c67dd78eb3141d9b8edc6d4f addresses: Remove From<Network> for AddressParams (Mitchell Bagot)
b82c9a5294d4f658bdbb4a4b779167e854d7d789 addresses: Remove From impls with KnownHrp and network types (Mitchell Bagot)
a3d4b10e0d0cf4f3421ed2dd6a5c1e22d7b30712 addresses: Replace uses of NetworkKind and Params with AddressParams (Mitchell Bagot)
6ee899e66c9f600187665f5e52c17ab5abb05156 addresses: Replace public uses of Network with AddressParams (Mitchell Bagot)
e556084cc77b14fcb456cbd82872dc88cd73c661 addresses: Add AddressParams type (Mitchell Bagot)

Pull request description:

The Network and NetworkKind types are currently used in the public API of the addresses crate. However, while the bitcoin-network-kind crate is 1.0, these types are not really stable the same way as other stable crate types are. Instead, we should aim to remove their use from the public API in favour of a to-be-stable AddressParams type.

Add AddressParams type with const values for current set of networks.
Replace all public uses of bitcoin-network-kind types, except for Address::network_kind(), with appropriate AddressParams replacements.


ACKs for top commit:
tcharding:
ACK d8146e8a2ccddef2c67dd78eb3141d9b8edc6d4f
apoelstra:
ACK d8146e8a2ccddef2c67dd78eb3141d9b8edc6d4f; successfully ran local tests; hopefully we don't get too many https://github.com/rust-bitcoin/rust-bitcoin/issues/3166 complaints over this


Tree-SHA512: 6f1600111266544c818a161cdd14244582b169990d4a20b7297e47fd3ce1210c19c0c1b25d08a9d5324f2970c3b0e7c7652fd549a53a6cb8aa0755d0f29a0d17

91/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
Why it was queued
cryptography-sensitive pathsigning or wallet pathmerge-commit duplicate discount
AI analysis · Informational 18/100

This is a routine API refactoring in the rust-bitcoin library. It introduces a new AddressParams type and replaces most public uses of the older Network/NetworkKind types when creating or validating Bitcoin addresses. There is no security vulnerability here; it is a design change to make the address crate's public API more stable.

Security candidateMerge rust-bitcoin/rust-bitcoin#6886: units: preserve original err summing `NumOpResult`by Andrew Poelstra · 4af1ee1d · Sep 17, 2026 · 1 fileMessage 100 · StrongLow 38Details
Commit message · Andrew Poelstra

Merge rust-bitcoin/rust-bitcoin#6886: units: preserve original err summing `NumOpResult`

d0d2f2ee23959e0a970a90ed6ec3f8d9632af8b1 units: test that Sum keeps the error it was given (satsfy (Renato Britto))
ebbeb23687e5170cf847cd53f3d208acaffdcfc4 units: preserve original err summing NumOpResult (satsfy (Renato Britto))

Pull request description:

Closes https://github.com/project-loupe/audit-rust-bitcoin/issues/201

The Sum impls replaced any error in the iterator with an addition overflow, so, say, a division by zero came out labelled MathOp::Add.

Also need to put `*amount` because a binding must have the same type in all alternatives, amount was a ref not owned while acc was, the compiler complained.


ACKs for top commit:
apoelstra:
ACK d0d2f2ee23959e0a970a90ed6ec3f8d9632af8b1; successfully ran local tests
tcharding:
ACK d0d2f2ee23959e0a970a90ed6ec3f8d9632af8b1
Kixunil:
ACK d0d2f2ee23959e0a970a90ed6ec3f8d9632af8b1


Tree-SHA512: dc4189b3279f468e42b97a1c9fe694873121edda3623192d5684076ddda33df967f18af603b21ed0e90cdbe836e2f946017c42eff1a7592a81233730a465791b

100/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference✓ Names security-relevant behavior explicitly
Why it was queued
memory safetymerge-commit duplicate discount
AI analysis · Low 38/100

This patch fixes a bug in how rust-bitcoin adds up a list of numeric operation results. Previously, if any item in the list already carried an error (for example, dividing by zero), the summing code would overwrite that error and falsely report it as an addition overflow. The fix preserves the original error so callers see the true cause of the failure. It is a correctness fix rather than a direct exploit, but misreported errors can mislead downstream code or users about what went wrong.

Security candidateMerge rust-bitcoin/rust-bitcoin#6618: ci: disable fail-fast in weekly rustc update cronsby Andrew Poelstra · c0a70548 · Sep 17, 2026 · 2 filesMessage 100 · StrongInformational 15Details
Commit message · Andrew Poelstra

Merge rust-bitcoin/rust-bitcoin#6618: ci: disable fail-fast in weekly rustc update crons

d9fef884e81f7686ce667352a1a97ad05826c482 ci: disable fail-fast in weekly toolchain update matrix (satsfy (Renato Britto))

Pull request description:

Note that nightly and stable rustc updates have broken:
- https://github.com/rust-bitcoin/rust-bitcoin/actions/workflows/cron-weekly-update-stable.yml
- https://github.com/rust-bitcoin/rust-bitcoin/actions/workflows/cron-weekly-update-nightly.yml

Because of `fail-fast`, a broken 0.32.xxx job takes the master and 0.32.xx updates down with it. This PR makes each branch succeed or fail on its own.

The cargo-rbmt install issue this PR originally also addressed was fixed on master by the shared setup-rbmt action, so that part is gone.


ACKs for top commit:
apoelstra:
ACK d9fef884e81f7686ce667352a1a97ad05826c482; successfully ran local tests
tcharding:
ACK d9fef884e81f7686ce667352a1a97ad05826c482


Tree-SHA512: 918c3c4bf66b3d4a987daace3d7cf93966ba197b2fb6141d544be3de8acc85e478f09506c24bd941592c77259dba9537d7c25cab104a89540d410733c1e792cd

100/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
Why it was queued
boot or update pathdocumentation-only discountmerge-commit duplicate discount
AI analysis · Informational 15/100

This commit changes two GitHub Actions workflow files used for weekly automated Rust toolchain updates. It adds `fail-fast: false` so that if one branch's update job fails, the other branch jobs continue running instead of all being cancelled. This is purely a CI reliability/configuration change and does not touch any library code, cryptography, network handling, or user-facing behavior.

Lower-prioritybenches: bump crossbeam-epoch to 0.9.21by satsfy (Renato Britto) · 6dc79c83 · Sep 16, 2026 · 1 fileMessage 60 · AdequateTriage 0Details
Commit message · satsfy (Renato Britto)

benches: bump crossbeam-epoch to 0.9.21

RUSTSEC-2026-0204 reports an invalid pointer dereference
in the fmt::Pointer before 0.9.20.

60/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Lower-prioritybenched: bump rand to 0.9.5by satsfy (Renato Britto) · 540ff32d · Sep 16, 2026 · 3 filesMessage 60 · AdequateTriage 0Details
Commit message · satsfy (Renato Britto)

benched: bump rand to 0.9.5

RUSTSEC-2026-0097 reports rand as unsound before 0.9.3

60/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Lower-priorityembedded: replace alloc-cortex-m with embedded-allocby satsfy (Renato Britto) · 23f7ab9e · Sep 16, 2026 · 6 filesMessage 73 · AdequateTriage 0Details
Commit message · satsfy (Renato Britto)

embedded: replace alloc-cortex-m with embedded-alloc

alloc-cortex-m was renamed to embedded-alloc and cargo audit
flags the old name as unmaintained. The new crate needs a
critical-section implementation, which cortex-m provides
through its critical-section-single-core feature.

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Lower-priorityMerge rust-bitcoin/rust-bitcoin#6888: hashes: Enable hex feature by defaultby Andrew Poelstra · 532d62d1 · Sep 16, 2026 · 1 fileMessage 91 · StrongTriage 0Details
Commit message · Andrew Poelstra

Merge rust-bitcoin/rust-bitcoin#6888: hashes: Enable hex feature by default

fdba2279e0939b25c0a19fc93986242f4620bd90 hashes: Enable hex feature by default (Tobin C. Harding)

Pull request description:

Users only get stringification functionality if `hex` is enabled. This is a pretty standard usecase, lets turn it on by default.

Close: #6315


ACKs for top commit:
Kixunil:
ACK fdba2279e0939b25c0a19fc93986242f4620bd90
apoelstra:
ACK fdba2279e0939b25c0a19fc93986242f4620bd90; successfully ran local tests


Tree-SHA512: 8c1c3cd8ebb2c3ed64dcad6050a3a0309da6be004e3e57247eb1489cecc5fb093b503d121331c7f5e8627fc14447204c7d6104e233073955f060848e16365b2b

91/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
Why it was queued
merge-commit duplicate discount
Lower-priorityMerge rust-bitcoin/rust-bitcoin#6885: p2p: use `write_err` in CommandStringDecoderErrorby Andrew Poelstra · 06f31efe · Sep 16, 2026 · 2 filesMessage 100 · StrongTriage 0Details
Commit message · Andrew Poelstra

Merge rust-bitcoin/rust-bitcoin#6885: p2p: use `write_err` in CommandStringDecoderError

b1ff0d1ea341dcaa8cd3b4478967621b24d0ba69 io: use `write_err` in ReadError (satsfy (Renato Britto))
d66e5d4da0ad876ccba62bb177af17b0bff01d69 p2p: use `write_err` in CommandStringDecoderError (satsfy (Renato Britto))

Pull request description:

I'm reviewing previous discussions on traits and API for units 1.0 and noticed that our [policy requires](https://github.com/rust-bitcoin/rust-bitcoin/blob/master/docs/policy.md#L208) write_err! instead of write! because Error::source() does not exist in no-std.

The PR refactors any error variant has an inner source but formats it with a plain write!.

There are no more violations in the codebase.


ACKs for top commit:
apoelstra:
ACK b1ff0d1ea341dcaa8cd3b4478967621b24d0ba69; successfully ran local tests; good finds!
tcharding:
ACK b1ff0d1ea341dcaa8cd3b4478967621b24d0ba69


Tree-SHA512: 6584b340a682e4d5df16c6505b59926fdbb3e87f5650fca9b1e58a370312c3eb1fd64e9a3638a4bd752e609f534275f3514d702994a766b8e5115e3bfd786878

100/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
Why it was queued
merge-commit duplicate discount
AI review queuedMerge rust-bitcoin/rust-bitcoin#6884: units: Fix div_by_fee_rate_floor precisionby Andrew Poelstra · 9caad2c1 · Sep 16, 2026 · 2 filesMessage 91 · StrongModerate 62Details
Commit message · Andrew Poelstra

Merge rust-bitcoin/rust-bitcoin#6884: units: Fix div_by_fee_rate_floor precision

1b067e90f3dad98d727edf2c709c96e25925e04b units: Test div_by_fee_rate_floor precision (Jamil Lambert, PhD)
5970d84abd8bac00f4e4c6398bb253b2a33e9dac units: Fix div_by_fee_rate_floor precision (Jamil Lambert, PhD)

Pull request description:

`div_by_fee_rate_floor` divided by the sat/kwu rate rounded up, understating the maximum affordable weight. Divide by the sat/MvB rate with a widened intermediate, as done for `div_by_weight_*` in #4675.

Closes project-loupe/audit-rust-bitcoin#81


ACKs for top commit:
apoelstra:
ACK 1b067e90f3dad98d727edf2c709c96e25925e04b; successfully ran local tests
tcharding:
ACK 1b067e90f3dad98d727edf2c709c96e25925e04b


Tree-SHA512: 6cc01c973f8a8cb8253e3e6c90ea5d17d47eaa01aee1683db312535715efc27c7da8561c7a9921a94689b1553e2e872a4f17d5006baa6c8a458d9ca71f05e596

91/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
Why it was queued
signing or wallet pathmerge-commit duplicate discountsecond-pass: security-sensitive path
AI analysis · Moderate 62/100

This commit fixes a precision bug in a Rust Bitcoin library function that calculates how much transaction weight a given amount of money can afford at a given fee rate. The old code rounded the fee rate up to a coarser unit (satoshis per kilo-weight-unit), which could make the result slightly too small, understating the affordable weight. The fix uses a wider intermediate calculation with satoshis per million virtual bytes, matching a previous fix for related functions. It also now properly reports overflow when the result exceeds the maximum representable weight.

AI review queuedMerge rust-bitcoin/rust-bitcoin#6880: primitives: Fix OutPoint serde vout endiannessby Andrew Poelstra · b784d516 · Sep 16, 2026 · 1 fileMessage 91 · StrongLow 38Details
Commit message · Andrew Poelstra

Merge rust-bitcoin/rust-bitcoin#6880: primitives: Fix OutPoint serde vout endianness

674198e595d8192eeb85703018153b24835957fe primitives: Test OutPoint serde endianness (Jamil Lambert, PhD)
40528b9741099b14684aea5cf9cfcd6c130dc4eb primitives: Fix OutPoint serde vout endianness (Jamil Lambert, PhD)

Pull request description:

The non-human-readable `OutPoint` serializer writes `vout` as `u32::to_le_bytes()`, but the sequence visitor deserialized the field directly as a `u32`. Under a serializer whose integer byte order or width differs from those fixed little-endian bytes (for example bincode's big-endian or varint modes) the roundtrip returns the wrong `vout`, or fails. The map visitor already reads `[u8; 4]` and calls `u32::from_le_bytes`.

Read the `vout` field as `[u8; 4]` and decode it with `u32::from_le_bytes` in the sequence visitor, matching the serializer and the map visitor.

Closes project-loupe/audit-rust-bitcoin#126


ACKs for top commit:
apoelstra:
ACK 674198e595d8192eeb85703018153b24835957fe; successfully ran local tests
tcharding:
ACK 674198e595d8192eeb85703018153b24835957fe


Tree-SHA512: f56bc45dc2d794ed1ed32421834487f35adeeaab06b717e30dec141c13a6c963ad563ca74b25153ca4351de1bd2f404ea258fb42aac6484ff8bca84d12e875ec

91/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
Why it was queued
signing or wallet pathmerge-commit duplicate discountsecond-pass: broader security terminologysecond-pass: security-sensitive path
AI analysis · Low 38/100

This commit fixes a serialization bug in how the `OutPoint` type (a Bitcoin transaction output identifier) handles its `vout` number when using non-human-readable serde formats. The code was writing `vout` as fixed little-endian bytes but reading it back as a generic integer, which could corrupt or fail deserialization under formats that use big-endian or variable-length integers. The fix makes the reader match the writer by always decoding four little-endian bytes. A regression test using bincode in big-endian mode was added.

Lower-priorityMerge rust-bitcoin/rust-bitcoin#6824: base58: Remove the no-alloc decode limit in `decode_check_to_array`by Andrew Poelstra · 2340a307 · Sep 16, 2026 · 3 filesMessage 100 · StrongTriage 0Details
Commit message · Andrew Poelstra

Merge rust-bitcoin/rust-bitcoin#6824: base58: Remove the no-alloc decode limit in `decode_check_to_array`

b2afff0c1fbd766bfc6e3cec9352736a1007bb68 base58: Adjust test cases (Mitchell Bagot)
e780826bfb364999bb85be20ec533abd3376e224 base58: Use unbounded u8 buf for decode_check_to_array (Mitchell Bagot)

Pull request description:

Due to the inability to use const generics in a const context, the decode_check_to_array function has been unable to use an arbitrary size ArrayVec as a buffer. This resulted in a 128 byte decode limit. By using a repr(C) struct and unsafe, we can provide a custom stack vector type of size N + 4, which allows arbitrarily large N for decode_check_to_array for no-alloc users.

Replace SHORT_OPT_BUFFER_LEN bounded stack buffer with ExtendedArrayVec buffer that permits unbounded decode size for decode_check_to_array.


ACKs for top commit:
apoelstra:
ACK b2afff0c1fbd766bfc6e3cec9352736a1007bb68; successfully ran local tests
tcharding:
ACK b2afff0c1fbd766bfc6e3cec9352736a1007bb68


Tree-SHA512: 957837ab70f705df1db2db6b35d5c360fd3f845c2ae246412962d7025b8331f419f25fd94ab582fb7b5502b3de3742fb74f85bcd7ccbfde2c751a8a4d67f602d

100/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
Why it was queued
merge-commit duplicate discount
Lower-priorityhashes: Enable hex feature by defaultby Tobin C. Harding · fdba2279 · Sep 16, 2026 · 1 fileMessage 68 · AdequateTriage 0Details
Commit message · Tobin C. Harding

hashes: Enable hex feature by default

Users only get stringification functionality if `hex` is enabled. This
is a pretty standard usecase, lets turn it on by default.

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Security candidateMerge rust-bitcoin/rust-bitcoin#6879: primitives: Fix Witness::get index overflowby Andrew Poelstra · 1cbf4bd6 · Sep 15, 2026 · 1 fileMessage 96 · StrongModerate 51Details
Commit message · Andrew Poelstra

Merge rust-bitcoin/rust-bitcoin#6879: primitives: Fix Witness::get index overflow

ca6bf03d0b41521327e9041104612aaf538ff703 primitives: Test Witness::get index overflow (Jamil Lambert, PhD)
fb0bbc1dd77da590f0ab94b166b41dd942a6410e primitives: Fix Witness::get index overflow (Jamil Lambert, PhD)

Pull request description:

`Witness::get` passes a caller-controlled index to `decode_cursor`, which computes `start_of_indices + index * 4` with unchecked arithmetic. A large index such as `usize::MAX / 4 + 1` overflows: with overflow checks off it wraps back to element 0's offset and returns the first element instead of `None`, and with them on it panics.

Use checked arithmetic so an out-of-range index returns `None`.

Closes project-loupe/audit-rust-bitcoin#159


ACKs for top commit:
apoelstra:
ACK ca6bf03d0b41521327e9041104612aaf538ff703; successfully ran local tests
tcharding:
ACK ca6bf03d0b41521327e9041104612aaf538ff703
satsfy:
tACK ca6bf03d0b41521327e9041104612aaf538ff703


Tree-SHA512: f6538c5d214b8fa935ce14896d31e33eab6e640160160e152a76be486b62971f042edfd83eb62f5d9ff6ce6ab59f516cef6c676ce7e39259ac5af72d4049ee51

96/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference✓ Names security-relevant behavior explicitly
Why it was queued
memory safetymerge-commit duplicate discount
AI analysis · Moderate 51/100

This commit fixes a bug in how the Bitcoin library reads items from a transaction witness. A function called Witness::get takes an index number from the caller and uses it to calculate a memory offset. With a very large index, the arithmetic could overflow, either returning the wrong witness item or causing the program to panic. The fix uses checked arithmetic so that any out-of-range index safely returns None. The bug was found during an external security audit.

Lower-priorityMerge rust-bitcoin/rust-bitcoin#6844: chacha20: Add RFC appendix test vectorby Andrew Poelstra · 1c868240 · Sep 15, 2026 · 1 fileMessage 91 · StrongTriage 0Details
Commit message · Andrew Poelstra

Merge rust-bitcoin/rust-bitcoin#6844: chacha20: Add RFC appendix test vector

dd5a38a8eb5832c6a7935e53207b012c9af15786 chacha20: Add RFC appendix test vector (rustaceanrob)

Pull request description:

This test vector mutates chacha blocks, which was previously untested. If we make changes to chacha20, we will want a sanity check over multiple blocks. This test vector is pulled directly from the RFC.

ref: https://datatracker.ietf.org/doc/html/rfc7539#appendix-A.2


ACKs for top commit:
tcharding:
ACK dd5a38a8eb5832c6a7935e53207b012c9af15786
apoelstra:
ACK dd5a38a8eb5832c6a7935e53207b012c9af15786; successfully ran local tests


Tree-SHA512: fa5ee3a8641467eeb0c241e7f7923903406bb6a3460232d8503d93b12d10789b899249d1f76c34c963f8fb74daaf859e88a9fdb5db1e54af14ac1cf9a9e0d1f9

91/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
Why it was queued
fuzzing or regression evidencemerge-commit duplicate discount
AI review queuedMerge rust-bitcoin/rust-bitcoin#6850: Use stacked attributes for feature conjunctionsby Andrew Poelstra · ab7652b3 · Sep 15, 2026 · 3 filesMessage 91 · StrongInformational 15Details
Commit message · Andrew Poelstra

Merge rust-bitcoin/rust-bitcoin#6850: Use stacked attributes for feature conjunctions

95395f17876e6ca7458a362ace0f71cb22e60649 primitives: stack feature gates in tx example (satsfy (Renato Britto))
25b5814a0ab20d27026827e432c0a723746eec95 encoding: stack the feature gates in tests (satsfy (Renato Britto))

Pull request description:

Reading `policy.md` I noticed it says to use stacked attributes rather than `cfg(all(...))` whenever possible [\[1\]](https://github.com/rust-bitcoin/rust-bitcoin/blob/master/docs/policy.md#attributes), but then grepped 7 places in code where this was not the case, including in primitives. One commit per crate.


ACKs for top commit:
tcharding:
ACK 95395f17876e6ca7458a362ace0f71cb22e60649
apoelstra:
ACK 95395f17876e6ca7458a362ace0f71cb22e60649; successfully ran local tests


Tree-SHA512: b24a490722c5887926d64450fd0f03660bc7493f98e02d23dc2fb24beffb205815fec308a48f6cb9c40db402ddd0951b6abf8537b87a616597f0127c452e2270

91/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
Why it was queued
signing or wallet pathparser or protocol pathmerge-commit duplicate discountsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit is a code-style cleanup with no security impact. It changes how Rust conditional-compilation attributes are written, replacing combined `#[cfg(all(...))]` checks with stacked `#[cfg(...)]` attributes, following the project's own documented style policy. No program behavior changes.

Security candidateMerge rust-bitcoin/rust-bitcoin#6881: build(deps): bump cargo-bins/cargo-binstall from 1.20.1 to 1.21.0by Andrew Poelstra · 12a14bdf · Sep 15, 2026 · 1 fileMessage 96 · StrongInformational 15Details
Commit message · Andrew Poelstra

Merge rust-bitcoin/rust-bitcoin#6881: build(deps): bump cargo-bins/cargo-binstall from 1.20.1 to 1.21.0

145ce18399b7b4b598953d13261e4201beeda3ef build(deps): bump cargo-bins/cargo-binstall from 1.20.1 to 1.21.0 (dependabot[bot])

Pull request description:

Bumps [cargo-bins/cargo-binstall](https://github.com/cargo-bins/cargo-binstall) from 1.20.1 to 1.21.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/cargo-bins/cargo-binstall/releases">cargo-bins/cargo-binstall's releases</a>.</em></p>
<blockquote>
<h2>v1.21.0</h2>
<p><em>Binstall is a tool to fetch and install Rust-based executables as binaries. It aims to be a drop-in replacement for <code>cargo install</code> in most cases. Install it today with <code>cargo install cargo-binstall</code>, from the binaries below, or if you already have it, upgrade with <code>cargo binstall cargo-binstall</code>.</em></p>
<h4>In this release:</h4>
<ul>
<li>bugfix: honour --version for git or local manifest (<a href="https://redirect.github.com/cargo-bins/cargo-binstall/issues/2165">#2165</a> <a href="https://redirect.github.com/cargo-bins/cargo-binstall/issues/2598">#2598</a></li>
<li>Prefer ipv6 for hickory-dns dns resolution (<a href="https://redirect.github.com/cargo-bins/cargo-binstall/issues/2595">#2595</a>%</li>
</ul>
<h4>Other changes:</h4>
<ul>
<li>Upgrade dependencies</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/cargo-bins/cargo-binstall/commit/ead08b90bd7b2e6d81963fb9cf0b7239f66d5db4"><code>ead08b9</code></a> release: cargo-binstall v1.21.0 (<a href="https://redirect.github.com/cargo-bins/cargo-binstall/issues/2605">#2605</a>)</li>
<li><a href="https://github.com/cargo-bins/cargo-binstall/commit/802977a265b5f8825ebef2176db5f5f3edc82280"><code>802977a</code></a> chore: release (<a href="https://redirect.github.com/cargo-bins/cargo-binstall/issues/2603">#2603</a>)</li>
<li><a href="https://github.com/cargo-bins/cargo-binstall/commit/45c74199ecd000df66e6831e4854e43e2210706b"><code>45c7419</code></a> Revert &quot;ci(release-packages): Disable x86_64-apple-darwin&quot; (<a href="https://redirect.github.com/cargo-bins/cargo-binstall/issues/2604">#2604</a>)</li>
<li><a href="https://github.com/cargo-bins/cargo-binstall/commit/1ed4c64e0e8fbfae6e9dabc91a36379fa7dc4916"><code>1ed4c64</code></a> dep: Upgrade transitive dependencies (<a href="https://redirect.github.com/cargo-bins/cargo-binstall/issues/2602">#2602</a>)</li>
<li><a href="https://github.com/cargo-bins/cargo-binstall/commit/3d9c602cf4a75690ce794b00d847819897b7766a"><code>3d9c602</code></a> fix: honour --version for git or local manifest (<a href="https://redirect.github.com/cargo-bins/cargo-binstall/issues/2598">#2598</a>)</li>
<li><a href="https://github.com/cargo-bins/cargo-binstall/commit/16386d7aec17cb0ec8457ab4df1ae7aac2e74492"><code>16386d7</code></a> ci(release-packages): Disable x86_64-apple-darwin (<a href="https://redirect.github.com/cargo-bins/cargo-binstall/issues/2597">#2597</a>)</li>
<li><a href="https://github.com/cargo-bins/cargo-binstall/commit/44018a4d9c280bea4bd3f908fabe5a0909f89f92"><code>44018a4</code></a> dep: Upgrade transitive dependencies (<a href="https://redirect.github.com/cargo-bins/cargo-binstall/issues/2596">#2596</a>)</li>
<li><a href="https://github.com/cargo-bins/cargo-binstall/commit/d9924acdd31c88b15c7a896bafd124fd4abcd1f0"><code>d9924ac</code></a> hickory-dns: Prefer ipv6 (<a href="https://redirect.github.com/cargo-bins/cargo-binstall/issues/2595">#2595</a>)</li>
<li><a href="https://github.com/cargo-bins/cargo-binstall/commit/910d9e4456ce4b039662d2a02a34ef1d23c3c50c"><code>910d9e4</code></a> build(deps): bump cargo_toml from 0.22.3 to 1.0.0 in the deps group (<a href="https://redirect.github.com/cargo-bins/cargo-binstall/issues/2592">#2592</a>)</li>
<li><a href="https://github.com/cargo-bins/cargo-binstall/commit/cc0ff5705d427f8ef3f3343098bb13d864a7f8e7"><code>cc0ff57</code></a> dep: Upgrade transitive dependencies (<a href="https://redirect.github.com/cargo-bins/cargo-binstall/issues/2591">#2591</a>)</li>
<li>See full diff in <a href="https://github.com/cargo-bins/cargo-binstall/compare/732870f031d2fb36309d0deaf36abcc704a7be65...ead08b90bd7b2e6d81963fb9cf0b7239f66d5db4">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=cargo-bins/cargo-binstall&package-manager=github_actions&previous-version=1.20.1&new-version=1.21.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)


</details>


ACKs for top commit:
apoelstra:
ACK 145ce18399b7b4b598953d13261e4201beeda3ef; successfully ran local tests


Tree-SHA512: d1a4f4444b325840ea15aa112eb94fe65ffd3cef2668aa1e434da124312a7b65f52487762fa4048dc7b6441a9fb1838477b57781d856e86e83115cfc3b31dc0c

96/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference✓ Names security-relevant behavior explicitly
Why it was queued
access controldocumentation-only discountautomated dependency-update discountmerge-commit duplicate discount
AI analysis · Informational 15/100

This is a routine automated update by Dependabot that changes one line in a GitHub Actions workflow. It bumps the version of cargo-binstall, a helper tool used only during CI checks for semantic versioning. There is no indication this fixes or introduces a security problem in the rust-bitcoin library itself.

Security candidateMerge rust-bitcoin/rust-bitcoin#6870: crypto: Flatten nested error constructorsby Andrew Poelstra · be98a391 · Sep 15, 2026 · 3 filesMessage 91 · StrongInformational 15Details
Commit message · Andrew Poelstra

Merge rust-bitcoin/rust-bitcoin#6870: crypto: Flatten nested error constructors

a1ba025ea356f2753f8d4e297f132ed4c41bf72e crypto: Flatten nested error constructors (Gaurav Chaudhary)

Pull request description:

Contributes to #6539

• Replaced 7 nested error constructions in key, WIF, ECDSA, and Taproot parsing with chained map_err calls. This makes each conversion easier to follow from the leaf error to the outer wrapper, while preserving exact error values, intentional source-error discarding, and public APIs.


ACKs for top commit:
Abeeujah:
ACK a1ba025ea356f2753f8d4e297f132ed4c41bf72e
apoelstra:
ACK a1ba025ea356f2753f8d4e297f132ed4c41bf72e; successfully ran local tests


Tree-SHA512: a11f99632dc7370804b93cf78e3a790e807f5246d480708ad2dd222206a554b2916e0b9ab28841b2147f9369ab2e55b005f30ff76318e7e712da13bcea787c73

91/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
Why it was queued
cryptography-sensitive pathmerge-commit duplicate discount
AI analysis · Informational 15/100

This commit is a code cleanup that rewrites how errors are wrapped in the Bitcoin crypto library. It changes nested error constructors into chained map_err calls but keeps the exact same error values and public behavior. There is no security-relevant change.

AI review queuedMerge rust-bitcoin/rust-bitcoin#6882: build(deps): bump taiki-e/install-action from 2.82.11 to 2.83.2by Andrew Poelstra · a18caa85 · Sep 14, 2026 · 2 filesMessage 96 · StrongInformational 15Details
Commit message · Andrew Poelstra

Merge rust-bitcoin/rust-bitcoin#6882: build(deps): bump taiki-e/install-action from 2.82.11 to 2.83.2

35095071907110087cceb7038264861b421e4adc build(deps): bump taiki-e/install-action from 2.82.11 to 2.83.2 (dependabot[bot])

Pull request description:

Bumps [taiki-e/install-action](https://github.com/taiki-e/install-action) from 2.82.11 to 2.83.2.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/taiki-e/install-action/releases">taiki-e/install-action's releases</a>.</em></p>
<blockquote>
<h2>2.83.2</h2>
<ul>
<li>
<p>Update <code>parse-dockerfile@latest</code> to 0.1.8.</p>
</li>
<li>
<p>Update <code>mise@latest</code> to 2026.7.5.</p>
</li>
<li>
<p>Update <code>just@latest</code> to 1.56.0.</p>
</li>
<li>
<p>Update <code>gungraun-runner@latest</code> to 0.19.4.</p>
</li>
<li>
<p>Update <code>cargo-neat@latest</code> to 0.4.1.</p>
</li>
</ul>
<h2>2.83.1</h2>
<ul>
<li>
<p>Update <code>rclone@latest</code> to 1.74.4.</p>
</li>
<li>
<p>Update <code>mise@latest</code> to 2026.7.4.</p>
</li>
<li>
<p>Update <code>cargo-deny@latest</code> to 0.20.2.</p>
</li>
</ul>
<h2>2.83.0</h2>
<ul>
<li>
<p>Support <code>cargo-about</code>. (<a href="https://redirect.github.com/taiki-e/install-action/pull/1924">#1924</a>, thanks <a href="https://github.com/ruffsl"><code>@​ruffsl</code></a>)</p>
</li>
<li>
<p>Update <code>uv@latest</code> to 0.11.28.</p>
</li>
<li>
<p>Update <code>martin@latest</code> to 1.12.0.</p>
</li>
<li>
<p>Update <code>kingfisher@latest</code> to 1.106.0.</p>
</li>
<li>
<p>Update <code>biome@latest</code> to 2.5.3.</p>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/taiki-e/install-action/blob/main/CHANGELOG.md">taiki-e/install-action's changelog</a>.</em></p>
<blockquote>
<h1>Changelog</h1>
<p>All notable changes to this project will be documented in this file.</p>
<p>This project adheres to <a href="https://semver.org">Semantic Versioning</a>.</p>
<!-- raw HTML omitted -->
<h2>[Unreleased]</h2>
<h2>[2.87.12] - 2026-09-12</h2>
<ul>
<li>
<p>Update <code>wasmtime@latest</code> to 48.0.2.</p>
</li>
<li>
<p>Update <code>wasm-tools@latest</code> to 1.259.0.</p>
</li>
<li>
<p>Update <code>uv@latest</code> to 0.12.13.</p>
</li>
<li>
<p>Update <code>release-plz@latest</code> to 0.3.165.</p>
</li>
<li>
<p>Update <code>protoc-gen-connect-openapi@latest</code> to 0.27.1.</p>
</li>
<li>
<p>Update <code>mise@latest</code> to 2026.9.5.</p>
</li>
<li>
<p>Update <code>cargo-nextest@latest</code> to 0.9.144.</p>
</li>
</ul>
<h2>[2.87.11] - 2026-09-11</h2>
<ul>
<li>
<p>Update <code>biome@latest</code> to 2.5.13.</p>
</li>
<li>
<p>Update <code>uv@latest</code> to 0.12.12.</p>
</li>
<li>
<p>Update <code>mise@latest</code> to 2026.9.4.</p>
</li>
<li>
<p>Update <code>kache@latest</code> to 0.19.0.</p>
</li>
</ul>
<h2>[2.87.10] - 2026-09-10</h2>
<ul>
<li>
<p>Update <code>zizmor@latest</code> to 1.30.1.</p>
</li>
<li>
<p>Update <code>uv@latest</code> to 0.12.11.</p>
</li>
<li>
<p>Update <code>tombi@latest</code> to 1.5.4.</p>
</li>
<li>
<p>Update <code>release-plz@latest</code> to 0.3.164.</p>
</li>
<li>
<p>Update <code>mise@latest</code> to 2026.9.3.</p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/taiki-e/install-action/commit/43aecc8d72668fbcfe75c31400bc4f890f1c5853"><code>43aecc8</code></a> Release 2.83.2</li>
<li><a href="https://github.com/taiki-e/install-action/commit/fca47892c74f4dffa1e86ad93eca31cf898c2541"><code>fca4789</code></a> Update prek manifest</li>
<li><a href="https://github.com/taiki-e/install-action/commit/b41cc1f9ab348b9db341d8597853df93b08652f0"><code>b41cc1f</code></a> Update <code>parse-dockerfile@latest</code> to 0.1.8</li>
<li><a href="https://github.com/taiki-e/install-action/commit/8d866f8ca86db77044d7d29639e24660d0b37b88"><code>8d866f8</code></a> Update <code>mise@latest</code> to 2026.7.5</li>
<li><a href="https://github.com/taiki-e/install-action/commit/7ebe462223a33af951eed3c3ab1f754ddf2992e2"><code>7ebe462</code></a> Update <code>just@latest</code> to 1.56.0</li>
<li><a href="https://github.com/taiki-e/install-action/commit/01ab5633b01b19988c158b5366d64947fd6cacce"><code>01ab563</code></a> Update <code>gungraun-runner@latest</code> to 0.19.4</li>
<li><a href="https://github.com/taiki-e/install-action/commit/f164a682e7e0033cf72f1d5722d079fe82275c1e"><code>f164a68</code></a> Update <code>cargo-neat@latest</code> to 0.4.1</li>
<li><a href="https://github.com/taiki-e/install-action/commit/2ca9b94c269419b7b0c711c09d0b21c4e1d51145"><code>2ca9b94</code></a> Release 2.83.1</li>
<li><a href="https://github.com/taiki-e/install-action/commit/8598f86981150fb7f6511798af658bbf80a8ea46"><code>8598f86</code></a> Update parse-dockerfile manifest</li>
<li><a href="https://github.com/taiki-e/install-action/commit/76cfe4de2d710e12bae93580164f20dff9fd96e9"><code>76cfe4d</code></a> Update <code>rclone@latest</code> to 1.74.4</li>
<li>Additional commits viewable in <a href="https://github.com/taiki-e/install-action/compare/5ebac0d9522d786674368e47e92963ba13f2c376...43aecc8d72668fbcfe75c31400bc4f890f1c5853">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=taiki-e/install-action&package-manager=github_actions&previous-version=2.82.11&new-version=2.83.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)


</details>


ACKs for top commit:
apoelstra:
ACK 35095071907110087cceb7038264861b421e4adc; successfully ran local tests
satsfy:
ACK 35095071907110087cceb7038264861b421e4adc


Tree-SHA512: 70f4da27a773a65a8bf99852311817d79ef38d4c3eb3cfb4288ef2646e02367a7dbaceac844f969cea2bb75a6535af431c7b17f628a53a9bd2f8d74ec3fbdd62

96/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference✓ Names security-relevant behavior explicitly
Why it was queued
documentation-only discountautomated dependency-update discountmerge-commit duplicate discountsecond-pass: broader security terminology
AI analysis · Informational 15/100

This is a routine update to a GitHub Actions helper used in automated testing workflows. It changes the pinned version of taiki-e/install-action (a tool installer) from 2.82.11 to 2.83.2 in two workflow files. There is no indication this fixes or introduces a security issue in the rust-bitcoin library itself.

AI review queuedMerge rust-bitcoin/rust-bitcoin#6878: Automated nightly rustfmt (2026-09-13)by Andrew Poelstra · c1af7e19 · Sep 14, 2026 · 4 filesMessage 91 · StrongInformational 15Details
Commit message · Andrew Poelstra

Merge rust-bitcoin/rust-bitcoin#6878: Automated nightly rustfmt (2026-09-13)

909e1f23f829afd9d5475c3744995e5229b05e04 2026-09-13 automated rustfmt nightly (Fmt Bot)

Pull request description:

Automated nightly `rustfmt` changes by [create-pull-request](https://github.com/peter-evans/create-pull-request) GitHub action


ACKs for top commit:
apoelstra:
ACK 909e1f23f829afd9d5475c3744995e5229b05e04; successfully ran local tests
satsfy:
ACK 909e1f23f829afd9d5475c3744995e5229b05e04


Tree-SHA512: 0237f0a909bab93b60bae3f1ace465d76c0084198bd4ef3bb4f1033276881260e7a7393ca94de6fb949c4a75d40f41e60a2616f99a8e3aa4e23b2f5a4ec9eae6

91/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
Why it was queued
signing or wallet pathmerge-commit duplicate discountsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit is an automated code-formatting run by a bot. It only changes whitespace, line breaks, and brace placement in four source files. No program logic, math, or security behavior was altered.

Lower-priorityMerge rust-bitcoin/rust-bitcoin#6869: addresses: Flatten nested error constructorby Andrew Poelstra · 04206849 · Sep 14, 2026 · 1 fileMessage 91 · StrongTriage 0Details
Commit message · Andrew Poelstra

Merge rust-bitcoin/rust-bitcoin#6869: addresses: Flatten nested error constructor

7fe57f1ab159dfc58a56d65b0fb1a9b6137fd539 addresses: Flatten nested error constructor (Gaurav Chaudhary)

Pull request description:

Contributes to #6539.

- Replaced the nested Bech32 error conversion in Address::from_bech32_str with chained map_err calls.
- This makes the error flow read from the original decoding error through ParseBech32Error to Bech32Error, while preserving the existing wrapper, behavior, and public API.


ACKs for top commit:
apoelstra:
ACK 7fe57f1ab159dfc58a56d65b0fb1a9b6137fd539; successfully ran local tests


Tree-SHA512: 44ed67a8ef153c2714ca4de630a0c3867c2627edd1a2b0dcb3f8c131bab9f2ec5e7e5760a365ed3cdb6f49faa701603b05dab276f92868fd1b39551a37b11758

91/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
Why it was queued
merge-commit duplicate discount
Lower-priorityMerge rust-bitcoin/rust-bitcoin#6868: p2p: Flatten nested error constructorsby Andrew Poelstra · e6e2cd40 · Sep 14, 2026 · 2 filesMessage 91 · StrongTriage 0Details
Commit message · Andrew Poelstra

Merge rust-bitcoin/rust-bitcoin#6868: p2p: Flatten nested error constructors

8f3c7a0fa11af853343e793a8fb6979b77545618 p2p: Flatten nested error constructors (Gaurav Chaudhary)

Pull request description:

Contributes to #6539.

- Replaced 3 nested error conversions in V1 message header decoding and BIP434 feature ID decoding with chained map_err calls.
- This makes the error flow easier to follow from the inner error to the outer wrapper, without changing behavior or public APIs.
- P2P tests, feature checks, formatting, repository lint, and the p2p-specific test matrix pass.


ACKs for top commit:
apoelstra:
ACK 8f3c7a0fa11af853343e793a8fb6979b77545618; successfully ran local tests


Tree-SHA512: d1d84eb9435ef2393e318ca45528b859090299a425d5c9b18db87072152d298574dc749a871cef408bdc32bf5f6971ec8036f9e446b01ade3eeb2176f1a6a9cd

91/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
Why it was queued
merge-commit duplicate discount
Security candidateMerge rust-bitcoin/rust-bitcoin#6867: consensus_encoding: Flatten remaining error constructorsby Andrew Poelstra · 4998e1c5 · Sep 14, 2026 · 3 filesMessage 91 · StrongInformational 15Details
Commit message · Andrew Poelstra

Merge rust-bitcoin/rust-bitcoin#6867: consensus_encoding: Flatten remaining error constructors

234f39fd8de288bd607a47ed34ee8377f31f0351 consensus_encoding: Flatten remaining error constructors (Gaurav Chaudhary)

Pull request description:

Contributes to #6539.

Follow up on #6546 by flattening 14 remaining nested error constructions in consensus_encoding. Chained map_err calls make each conversion read from the leaf error outward, improving readability while preserving behavior and public APIs.

Crate tests, feature checks, and repository lint pass.


ACKs for top commit:
apoelstra:
ACK 234f39fd8de288bd607a47ed34ee8377f31f0351; successfully ran local tests


Tree-SHA512: 54e2b0421412c07fe2a60a4557b790f3e010897bec9d0a878e1e8b48674b2525c6ceafdb2751e9d6f4d867f30ec9e4b1f7ded65e07bea5cc28074288ed6291c6

91/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
Why it was queued
consensus or confidential-proof validationparser or protocol pathmerge-commit duplicate discount
AI analysis · Informational 15/100

This commit is a pure code-style refactor. It rewrites how error values are constructed in the consensus encoding/decoding code, replacing direct nested constructor calls with chained `map_err` calls. The pull request explicitly states the goal is readability, and the behavior and public APIs are preserved. There is no security-relevant change.