RB
← All projectsRust Bitcoin

rust-bitcoin

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

BitcoinCryptographic librariesNormal
Repository coverage

2310 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.

531security candidates510second-pass queue2204AI analyses
136commits · 30 days
269commits · 60 days
1108commits · 180 days
2034commits · 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
507Strong · 80–100
1085Adequate · 60–79
567Thin · 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.
Andrew Poelstra22878155290
Mitchell Bagot649193645068
Tobin C. Harding41566410063
jrakibi944994068
Nick Johnson19121190060
Jamil Lambert, PhD11919116061
satsfy (Renato Britto)381527066
Fmt Bot331431045
Trevor Arjeski111111069
Shing Him Ng31731056
Martin Habovstiak30628068
Ismail Daif22622050
Analysis record

Published AI watches

Last scanned 58 minutes ago

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

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

This commit updates the version of a helper tool (cargo-binstall) used only inside GitHub Actions automation. It is a routine dependency bump by Dependabot and does not change any code that ships to users. There is no indication of a secur…

c1be49cbby Andrew Poelstra+2−22 files
No security note in commit
High 70 AI analysisMessage 100 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6919: Sanitize serde size hints before allocating

This commit fixes a denial-of-service weakness in how the library deserializes lists of Bitcoin data (witnesses, amounts, fee rates) from untrusted input. Before the fix, a few bytes of attacker-controlled data could claim a list would con…

Untrusted serde size hint fed directly into Vec::with_capacityPotential memory exhaustion / OOM kill from small malicious inputDenial-of-service vector in deserialization paths
55ddbc0cby Andrew Poelstra+88−105 files
Vendor flagged security relevance
Moderate 60 AI analysisMessage 91 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6945: bitcoin: handle OP_CODESEPARATOR in legacy

This commit fixes how the Rust Bitcoin library calculates old-style (legacy) transaction signatures when the spending script contains a special opcode called OP_CODESEPARATOR. Previously the library did not handle this opcode at all, which…

Protocol correctness fix for legacy sighash serializationOP_CODESEPARATOR handling added to match Bitcoin Core consensus behaviorPreviously omitted test vectors restored, indicating prior non-compliance
5b815281by Andrew Poelstra+600−3093 files
No security note in commit
Informational 15 AI analysisMessage 96 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

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

This is a routine update by Dependabot to the version of a third-party GitHub Action used in the project's automated testing workflows. The change only affects internal continuous integration (CI) scripts, not the actual Bitcoin library co…

d1431904by Andrew Poelstra+2−22 files
No security note in commit
Low 33 AI analysisMessage 100 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6946: Fix integer overflow in `get_array`

This commit fixes a small but real bug in a Rust helper that reads fixed-size chunks from a data slice. The helper was supposed to safely return 'nothing' when asked to read past the end of the data, but it accidentally added two numbers t…

Integer overflow in bounds-checking helperContract violation: method documented to return None on out-of-bounds access could panic insteadDebug-build panic (denial of service) possible
c6e80843by Andrew Poelstra+2−11 file
Vendor flagged security relevance
Moderate 62 AI analysisMessage 73 · Adequate
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Fix integer overflow in `get_array`

This commit fixes a bug in a Rust helper method called `get_array`, which is meant to safely read a fixed-size chunk from a slice and return nothing if the requested range is out of bounds. The bug was that the code added the caller's offs…

Integer overflow in bounds calculationPotential panic due to violated internal length expectationCaller-controlled arithmetic used for memory access bounds
56fb1287by Martin Habovstiak+2−11 file
Vendor flagged security relevance
High 71 AI analysisMessage 91 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6915: primitives: Fix `Witness` handling of oversized items

This commit fixes a bug in how the Rust Bitcoin library counts and compares transaction witness data when a witness contains an oversized item. Previously, several functions relied on an iterator that silently skips oversized items, causin…

Inconsistent serialization/iterator behavior for oversized witness itemswtxid collision risk between transactions differing only in oversized witness bytesIncorrect witness equality for oversized single-item stacks
e1ed5884by Andrew Poelstra+106−273 files
Vendor flagged security relevance
Informational 19 AI analysisMessage 100 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6922: Use `try_fold` instead of `fold` in `Sum` impl

This is a code-quality and performance improvement, not a security fix. It changes how the library adds up lists of Bitcoin amounts so that it stops early once an overflow is detected, rather than continuing to process the rest of the list…

No security-relevant signal in commit message or diffRefactor preserves overflow-checking behavior (short-circuits instead of continuing)New API method `NumOpResult::from_result` is a pure inverse of existing `into_result`
86e4d5daby Andrew Poelstra+60−562 files
No security note in commit
Moderate 52 AI analysisMessage 91 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6893: units: Reject malformed amount strings

This update fixes a bug in how the library reads Bitcoin amount strings like '1.5 BTC'. Previously, certain malformed inputs such as '.', '._', '1_', '1_.0', and '1._0' were incorrectly accepted and treated as valid amounts (often zero), i…

Input validation bypass in amount parserMalformed strings silently parsed as zero or ordinary amountsUnderscore separator placement not enforced
fcb14622by Andrew Poelstra+88−343 files
Vendor flagged security relevance
Low 48 AI analysisMessage 91 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6921: units: fix div_by_fee_rate_ceil precision

This commit fixes a rounding bug in how the rust-bitcoin library calculates the minimum transaction weight needed to pay a given fee at a given fee rate. The old code rounded the fee rate up too early, which could produce a weight slightly…

Incorrect fee-weight calculation due to premature integer roundingPotential transaction fee shortfall when using div_by_fee_rate_ceilOverflow protection added for Amount::MAX * 4_000_000 intermediate value
b31212e0by Andrew Poelstra+38−82 files
No security note in commit
Informational 15 AI analysisMessage 91 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6898: Release tracking PR: `consensus-encoding 1.3.0`

This is a routine release-management commit that bumps the version number of the `bitcoin-consensus-encoding` crate from 1.2.0 to 1.3.0 and updates lock files accordingly. It contains no code changes that fix or introduce a security issue.…

0cfc7908by Andrew Poelstra+37−349 files
No security note in commit
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
Repository ledger

Explore captured commits

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

Lower-prioritySplit Target and Work in to extension traitsby Mitchell Bagot · 04bc22a6 · Apr 9, 2026 · 3 filesMessage 80 · StrongInformational 15Details
Commit message · Mitchell Bagot

Split Target and Work in to extension traits

In order to reduce the move to units to a simple type definition, the
existing logic in bitcoin's pow module needs to be moved into
extension traits.

from_compact is required for the From impl for CompactTarget to Target,
and as such, is retained in the Target impl.
to_compact_lossy is retained as the inverse operation for from_compact.

Introduce TargetExt and WorkExt extension traits and move most struct
content into them.

80/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode
AI analysis · Informational 15/100

This commit is a routine internal code reorganization. It moves several helper functions for Bitcoin mining target/work calculations out of the main struct definitions and into Rust 'extension traits' named TargetExt and WorkExt. The actual formulas, checks, and behavior appear unchanged; only the code structure and import paths are modified. There is no indication this fixes a security bug or introduces a vulnerability.

Lower-priorityMove U256 tests to unitsby Mitchell Bagot · e4bcaaa6 · Apr 9, 2026 · 2 filesMessage 71 · AdequateInformational 15Details
Commit message · Mitchell Bagot

Move U256 tests to units

As part of ensuring that the hex parsing on U256 is only needed in
units (to simplify error conversions), the test cases for u256 that
currently rely on the U256Hex trait should be moved to units. This move
also ensures that the type is tested at the most upstream point it is
used, not only in bitcoin, potentially helping to catch bugs earlier.

Move all u256-specific test cases to units.
Remove U256Hex trait from bitcoin.
Fix lint errors in test cases.

71/100 · AdequateMessage clarity
✓ Subject identifies a change✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
AI analysis · Informational 15/100

This commit is a routine code cleanup: it moves test cases for a 256-bit unsigned integer type (U256) from one internal test module to another, closer to where the type is defined. It also removes a test-only helper trait used for parsing hex strings and fixes minor code style warnings. There is no change to the actual library behavior or any security-sensitive logic.

Lower-priorityUpdate API filesby Mitchell Bagot · 8d1b42af · Apr 9, 2026 · 6 filesMessage 51 · ThinInformational 15Details
Commit message · Mitchell Bagot

Update API files

Following the move of the pow types to units, the api files for
both units and primitives will be out of date.

Update API files for units and primitives.

51/100 · ThinMessage clarity
✓ Subject identifies a change✓ Provides detailed explanatory context
Why it was queued
documentation-only discount
AI analysis · Informational 15/100

This commit is a routine maintenance update. It refreshes generated text files that list the public application programming interface (API) of two Rust library crates after some internal type moves. No program logic, bug fixes, or security-sensitive code changes are present in the diff.

Lower-priorityMove Target and Work to unitsby Mitchell Bagot · 498a4bb5 · Apr 9, 2026 · 5 filesMessage 78 · AdequateInformational 15Details
Commit message · Mitchell Bagot

Move Target and Work to units

With all the prior work complete, the pow types can now be moved to
units. Since units has no hex feature, hex formatting for the U256
(and thus the Target and Work types) is implemented manually.

Move Target and Work to units, using include! to introduce U256.
Move and improve relevant tests to kill mutants.
Fix lint errors to satisfy stricter requirements.

78/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
AI analysis · Informational 15/100

This commit is a routine code reorganization: it moves the `Target` and `Work` types (and their shared 256-bit integer helper, `U256`) from the `bitcoin` crate into the lower-level `units` crate. The public API is preserved through re-exports, and the only behavioral change is a new hand-written hex formatter for `U256` because the destination crate does not have a hex-formatting feature. There is no indication this fixes a security bug or introduces a vulnerability.

Lower-priorityDeprecate the to_hex implementation on Work and Targetby Mitchell Bagot · 99471959 · Apr 9, 2026 · 1 fileMessage 73 · AdequateInformational 15Details
Commit message · Mitchell Bagot

Deprecate the to_hex implementation on Work and Target

Types in stable crates should not include the to_hex function. Since
this type is coming from bitcoin, this may be unintuitive to users.
For now, we'll keep the to_hex functionality on the types using the
bitcoin extension traits, but label them as deprecated.

Deprecate the Work and Target to_hex implementations.

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
AI analysis · Informational 15/100

This commit is a routine API cleanup, not a security fix. It marks the `to_hex()` methods on two Bitcoin proof-of-work types (`Work` and `Target`) as deprecated, telling developers to use Rust's standard `format!("{var:x}")` instead. No vulnerability is present or fixed.

Lower-priorityAdjust pow impls to remove private accessby Mitchell Bagot · ab6e996f · Apr 9, 2026 · 1 fileMessage 68 · AdequateInformational 15Details
Commit message · Mitchell Bagot

Adjust pow impls to remove private access

With the move to units, the use of the Target() and Work() constructors
will no longer be possible, and neither will access to the inner U256.
However, since these types retain the to_/from_le_bytes, we can convert
them to the locally include!d U256 to perform the various complex
operations on them.

Convert all functions in TargetExt and WorkExt to use to_/from_le_bytes
instead of directly constructing or accessing the inner U256.

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
AI analysis · Informational 15/100

This is a routine internal refactoring change in the rust-bitcoin library. It replaces direct access to the internal numeric value of Target and Work types with conversions through public byte-array methods, so the library can keep working after those types move to a different crate. There is no user-facing behavior change and no security fix.

Lower-priorityMove U256 to shared include and use include! in powby Mitchell Bagot · a3a38e7a · Apr 9, 2026 · 2 filesMessage 85 · StrongInformational 15Details
Commit message · Mitchell Bagot

Move U256 to shared include and use include! in pow

As part of stabilising the proof-of-work types, various functionality
needs to be computed in bitcoin without access to the inner type.
Since U256 should not be in the public API, the U256 struct logic
needs to be (at least partially) duplicated. In order to avoid having
multiple direct copies of the same code, we can use the include!
macro with a shared file.

Add include/u256.rs and move U256 struct definition to it. Use
include! to retain the logic in bitcoin's pow module.

85/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode
AI analysis · Informational 15/100

This commit is a pure code reorganization: it moves the internal U256 256-bit integer implementation from one file into a shared include file and pulls it back in with Rust's include! macro. No behavior changes, no bug fixes, and no security-relevant changes are visible.

Lower-prioritySplit hex parsing on U256 into a second implby Mitchell Bagot · d1248fa7 · Apr 9, 2026 · 1 fileMessage 68 · AdequateInformational 15Details
Commit message · Mitchell Bagot

Split hex parsing on U256 into a second impl

The hex parsing on U256 is only used for the constructors of the Target
and Work types. Since we want to remove the From impls on the hex
errors, we need to remove the usage of them from outside of units.
Since U256 will be a shared module, we need to break out the hex parsing
into a separate impl that we can eventually move into units.

Introduce a second U256 impl and move hex parsing functionality from
U256 into it.

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
AI analysis · Informational 15/100

This commit is a simple internal code reorganization. It moves some hex-parsing helper functions for a 256-bit unsigned integer (U256) from one place in the file to another, without changing what the code does or how it behaves. There is no security fix or vulnerability here.

Lower-priorityRemove hex_conservative from U256 serdeby Mitchell Bagot · 2830d66e · Apr 9, 2026 · 1 fileMessage 68 · AdequateInformational 16Details
Commit message · Mitchell Bagot

Remove hex_conservative from U256 serde

The serde implementation for U256 relies on hex_conservative features
for the human readable implementation. Since units won't always have
access to the hex_conservative crate, it's better to change the serde
implementation to function without it.

Replace hex parsing to use units::parse_int module instead of
hex_conservative for U256 serde implementation.

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
AI analysis · Informational 16/100

This commit changes how a 256-bit unsigned integer (U256) is converted to and from human-readable formats like JSON when the optional 'serde' feature is enabled. Previously it used a helper crate called hex_conservative; now it uses parsing code already available in the project's own 'units' module. The goal is to reduce unnecessary dependencies, not to fix a security bug. There is no direct evidence in the commit or supplied references that this fixes a vulnerability.

Lower-priorityExclude aarch64-gated merkle code from mutationby jrakibi · 48e9eacf · Apr 9, 2026 · 1 fileMessage 76 · AdequateInformational 15Details
Commit message · jrakibi

Exclude aarch64-gated merkle code from mutation

the new batched merkle root functions are behind
cfg(target_arch = "aarch64") and are not compiled on the x86_64
CI runner, which cause these mutants to appear

exclude these mutants until x86 SIMD support lands (#5540)

76/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
AI analysis · Informational 15/100

This change only updates the mutation-testing configuration file. It tells the automated mutation-testing tool to skip testing certain new merkle root functions because they are only compiled for ARM64 (aarch64) processors and the project's CI currently runs on x86_64. There is no change to actual Bitcoin library code, no bug fix, and no security patch.

Lower-prioritybenches: benchmark merkle root computationby jrakibi · cfc75810 · Apr 9, 2026 · 2 filesMessage 60 · AdequateInformational 15Details
Commit message · jrakibi

benches: benchmark merkle root computation

benchmark with consecutive odd and even counts to calculate the
cost of adding the last transaction in the odd case

60/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
AI analysis · Informational 15/100

This commit only adds a new performance benchmark for calculating Bitcoin merkle tree roots. It does not change any library code, fix bugs, or alter behavior. There is no security relevance.

Lower-priorityprimitives: add test comparing batch and stacked-based merkle rootby jrakibi · e0710c8f · Apr 9, 2026 · 1 fileMessage 75 · AdequateInformational 15Details
Commit message · jrakibi

primitives: add test comparing batch and stacked-based merkle root

compare the old stack-based approach to calculate the merkle root
against the new batched level-by-level approach.

75/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Mentions testing or verification
AI analysis · Informational 15/100

This commit only adds a new unit test. It does not change any production code, fix a bug, or alter behavior. The test compares two different ways of computing the same merkle root to make sure they produce identical results.

Lower-priorityprimitives: use optimized sha256d for 64-byte in merkle root computationby jrakibi · c15debc6 · Apr 9, 2026 · 1 fileMessage 73 · AdequateInformational 17Details
Commit message · jrakibi

primitives: use optimized sha256d for 64-byte in merkle root computation

currently we are using stack-based approach to calculate the root.
instead of that, we can batch all pairs at each tree level into one
`hash_64_many()` call

we gate this for aarch64 to use the new batched algorithm. We will
widen to support x86 once we add a 2-way SHA-NI implementation.

for no-alloc we will always keep using the old stack-based approach

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
AI analysis · Informational 17/100

This commit is a performance optimization for Bitcoin merkle root calculation on ARM 64-bit (aarch64) systems. It replaces a stack-based approach with a batched hashing approach using an optimized SHA256 function. It is not a security fix and does not change behavior for most users; the old code path remains for non-aarch64 and no-alloc builds.

Lower-priorityRe-export locktime encoders and decodersby Tobin C. Harding · 1a274c75 · Apr 8, 2026 · 1 fileMessage 76 · AdequateInformational 16Details
Commit message · Tobin C. Harding

Re-export locktime encoders and decoders

For all `units::foo::Foo` there should exist a `primitives::foo::Foo`
and `bitcoin::foo::Foo`. We forgot about the new locktime encoding
types.

FTR we have issue #5969 to investigate how this happened.

76/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
AI analysis · Informational 16/100

This commit simply makes a few existing locktime-related type names available through an additional public module path. It is a routine API consistency fix with no security relevance.

Lower-priorityRemove public re-exports of old consenus traitsby Tobin C. Harding · 993ba1a7 · Apr 8, 2026 · 1 fileMessage 68 · AdequateInformational 18Details
Commit message · Tobin C. Harding

Remove public re-exports of old consenus traits

In the `absolute` module for some reason we publicly re-export the old
consensus encoding traits. This is unusual and wrong.

Uncovered in discussion between Andrew and Nymius on PR 5965

Remove the public re-export but keep the import statement.

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
AI analysis · Informational 18/100

This commit removes an accidental public re-export of internal Bitcoin data-encoding traits from a module that should not have exposed them. It is a minor API cleanup that slightly reduces the library's public surface area. There is no direct security vulnerability in the code itself, but cleaning up unintended public exports is a defensive hardening practice that prevents future misuse or confusion.

Security candidateAdd panics section to docsby Jamil Lambert, PhD · 43dae788 · Apr 8, 2026 · 3 filesMessage 45 · ThinInformational 15Details
Commit message · Jamil Lambert, PhD

Add panics section to docs

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
cryptography-sensitive path
AI analysis · Informational 15/100

This commit only adds documentation comments describing when three functions can panic. No code behavior was changed, so it cannot introduce or fix a security vulnerability on its own.

Security candidateDocs cleanupby Jamil Lambert, PhD · f68ae3cb · Apr 8, 2026 · 2 filesMessage 33 · OpaqueInformational 15Details
Commit message · Jamil Lambert, PhD

Docs cleanup

Add a couple of missing full stops and capital letters.

33/100 · OpaqueMessage clarity
✓ Subject identifies a change✓ Provides an explanatory body! Too few words to establish purpose! Opaque security-relevant change
Why it was queued
cryptography-sensitive path
AI analysis · Informational 15/100

This commit only fixes punctuation and capitalization in code comments (documentation). No program logic, behavior, or security properties were changed.

Security candidatebitcoin: Move key module errors to error submoduleby Mitchell Bagot · bd8f15bc · Apr 8, 2026 · 1 fileMessage 73 · AdequateInformational 18Details
Commit message · Mitchell Bagot

bitcoin: Move key module errors to error submodule

At present, some modules in bitcoin separate error types into
submodules with re-exports while others simply define the error types
in the module. This inconsistency is confusing and makes the docs vary.
All error types for each top-level module should be moved into a
relevant submodule and re-exported without inline docs.

Move error types from key module into error submodule and re-export.

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
cryptography-sensitive path
AI analysis · Informational 18/100

This commit is a code cleanup that moves error type definitions into a new 'error' submodule and re-exports them so existing code keeps working. It does not change how keys are parsed, validated, or used, and it does not fix or introduce any security vulnerability.

AI review queuedbitcoin: Move transaction module errors to error submoduleby Mitchell Bagot · 5bd3c36a · Apr 8, 2026 · 1 fileMessage 73 · AdequateInformational 19Details
Commit message · Mitchell Bagot

bitcoin: Move transaction module errors to error submodule

At present, some modules in bitcoin separate error types into
submodules with re-exports while others simply define the error types
in the module. This inconsistency is confusing and makes the docs vary.
All error types for each top-level module should be moved into a
relevant submodule and re-exported without inline docs.

Move error types from transaction module into error submodule and
re-export.

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 19/100

This commit is a straightforward internal code reorganization. It moves several error type definitions from one place in the transaction module into a new 'error' submodule and re-exports them so existing code can still use them the same way. There is no functional change to how transactions are validated, parsed, or secured.

Security candidatebitcoin: Move ecdsa module errors to error submoduleby Mitchell Bagot · 630ca5ac · Apr 8, 2026 · 1 fileMessage 73 · AdequateInformational 15Details
Commit message · Mitchell Bagot

bitcoin: Move ecdsa module errors to error submodule

At present, some modules in bitcoin separate error types into
submodules with re-exports while others simply define the error types
in the module. This inconsistency is confusing and makes the docs vary.
All error types for each top-level module should be moved into a
relevant submodule and re-exported without inline docs.

Move error types from ecdsa module into error submodule and re-export.

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
cryptography-sensitive path
AI analysis · Informational 15/100

This commit is a simple internal code cleanup in the rust-bitcoin library. It moves two error types (DecodeError and ParseSignatureError) from the main ECDSA module into a new 'error' submodule and re-exports them so existing code keeps working. There is no change to behavior, no bug fix, and no security issue.

Security candidatebitcoin: Move sighash module errors to error submoduleby Mitchell Bagot · e2d65253 · Apr 8, 2026 · 1 fileMessage 73 · AdequateInformational 15Details
Commit message · Mitchell Bagot

bitcoin: Move sighash module errors to error submodule

At present, some modules in bitcoin separate error types into
submodules with re-exports while others simply define the error types
in the module. This inconsistency is confusing and makes the docs vary.
All error types for each top-level module should be moved into a
relevant submodule and re-exported without inline docs.

Move error types from sighash module into error submodule and re-export.

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
cryptography-sensitive path
AI analysis · Informational 15/100

This commit is a pure internal code reorganization: it moves error type definitions from one place in the file to a new `error` submodule and re-exports them. There is no change to how the library behaves, no bug fix, and no security-relevant change.

Lower-prioritybitcoin: Move script module errors to error submoduleby Mitchell Bagot · e98a0625 · Apr 8, 2026 · 1 fileMessage 73 · AdequateInformational 19Details
Commit message · Mitchell Bagot

bitcoin: Move script module errors to error submodule

At present, some modules in bitcoin separate error types into
submodules with re-exports while others simply define the error types
in the module. This inconsistency is confusing and makes the docs vary.
All error types for each top-level module should be moved into a
relevant submodule and re-exported without inline docs.

Move error types from script module into error submodule and re-export.

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
AI analysis · Informational 19/100

This commit is a routine code cleanup: it moves error type definitions for Bitcoin scripts into a dedicated 'error' submodule and re-exports them so existing code keeps working. There is no change to how the library behaves, no bug fix, and no security-relevant change.

Lower-prioritybitcoin: Move block module errors to error submoduleby Mitchell Bagot · d371956a · Apr 8, 2026 · 1 fileMessage 73 · AdequateInformational 15Details
Commit message · Mitchell Bagot

bitcoin: Move block module errors to error submodule

At present, some modules in bitcoin separate error types into
submodules with re-exports while others simply define the error types
in the module. This inconsistency is confusing and makes the docs vary.
All error types for each top-level module should be moved into a
relevant submodule and re-exported without inline docs.

Move error types from block module into error submodule and re-export.

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
AI analysis · Informational 15/100

This commit is a routine code cleanup: it moves error type definitions for Bitcoin blocks into a new 'error' submodule and re-exports them. There is no change to how the code behaves, no bug fix, and no security impact.

Lower-prioritybitcoin: Move witness_program module errors to error submoduleby Mitchell Bagot · 492f1c27 · Apr 8, 2026 · 1 fileMessage 73 · AdequateInformational 15Details
Commit message · Mitchell Bagot

bitcoin: Move witness_program module errors to error submodule

At present, some modules in bitcoin separate error types into
submodules with re-exports while others simply define the error types
in the module. This inconsistency is confusing and makes the docs vary.
All error types for each top-level module should be moved into a
relevant submodule and re-exported without inline docs.

Move error types from witness_program module into error submodule
and re-export.

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
AI analysis · Informational 15/100

This commit is a simple internal code cleanup. It moves the definition of error types for witness programs into a new 'error' submodule and re-exports them at the original location. There is no change to how the code behaves, no bug fix, and no security improvement or regression.

Lower-prioritybitcoin: Move witness_version module errors to error submoduleby Mitchell Bagot · 0f0f7d74 · Apr 8, 2026 · 1 fileMessage 73 · AdequateInformational 15Details
Commit message · Mitchell Bagot

bitcoin: Move witness_version module errors to error submodule

At present, some modules in bitcoin separate error types into
submodules with re-exports while others simply define the error types
in the module. This inconsistency is confusing and makes the docs vary.
All error types for each top-level module should be moved into a
relevant submodule and re-exported without inline docs.

Move error types from witness_version module into error submodule
and re-export.

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
AI analysis · Informational 15/100

This commit is a straightforward internal code cleanup. It moves three error types (FromStrError, TryFromInstructionError, TryFromError) from the witness_version module into a new error submodule and re-exports them so existing code keeps working. There is no functional change to how witness versions are parsed, validated, or used.