RB
← All projectsRust Bitcoin

rust-bitcoin

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

BitcoinCryptographic librariesNormal
Repository coverage

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

527security candidates507second-pass queue2197AI analyses
143commits · 30 days
279commits · 60 days
1155commits · 180 days
2045commits · 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
496Strong · 80–100
1083Adequate · 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.
Mitchell Bagot649193645068
Andrew Poelstra21775149089
Tobin C. Harding41566410063
jrakibi944994068
Nick Johnson19121190060
Jamil Lambert, PhD11919116061
satsfy (Renato Britto)381527066
Fmt Bot331431045
Trevor Arjeski111111069
Shing Him Ng31731056
Ismail Daif22622050
Martin Habovstiak29527068
Analysis record

Published AI watches

Last scanned 16 minutes ago

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
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
Repository ledger

Explore captured commits

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

Security candidaterefactor(bip32): rename DerivationPath to RelativeDerivationPathby Trevor Arjeski · 6ee99f84 · May 29, 2026 · 2 filesMessage 85 · StrongInformational 20Details
Commit message · Trevor Arjeski

refactor(bip32): rename DerivationPath to RelativeDerivationPath

Renaming to trigger code changes in consumers of this module so we can pinpoint
locations that may need to be changed to AbsoluteDerivationPath

85/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
Why it was queued
secret or key materialcryptography-sensitive path
AI analysis · Informational 20/100

This is a routine code cleanup that renames the type `DerivationPath` to `RelativeDerivationPath` throughout the project. The change is purely a refactor: it does not alter how the code behaves, what it computes, or how it handles data. The commit message explicitly says the rename is intended to force other developers to update their code so the maintainers can identify places that may later need a new `AbsoluteDerivationPath` type. There is no security fix or vulnerability here.

Security candidaterefactor(bip32): split relative and absolute bip32 derivation pathsby Trevor Arjeski · 65ab45cd · May 29, 2026 · 1 fileMessage 85 · StrongLow 34Details
Commit message · Trevor Arjeski

refactor(bip32): split relative and absolute bip32 derivation paths

This is part of a larger refactor on the bip32 module.

- Make DerivationPath parse only relative paths
- Add AbsoluteDerivationPath for master prefixed (m) notation

Splitting DerivationPath into relative and absolute types will force the
derivation APIs to be more explicit about which path is being used to derive a
child key.

85/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
Why it was queued
secret or key materialcryptography-sensitive path
AI analysis · Low 34/100

This commit refactors how Bitcoin BIP-32 derivation paths are represented in the rust-bitcoin library. It splits the old single DerivationPath type into two: DerivationPath (relative paths like 0'/1) and AbsoluteDerivationPath (master-prefixed paths like m/0'/1). The goal is to make wallet code more explicit about whether it is deriving from the master key or from an intermediate key. The change is a type-system/API hardening, not a fix for a known exploitable bug. It may prevent future misuse where a relative path is accidentally treated as absolute or vice versa, but the commit itself does not describe any active vulnerability.

Security candidaterefactor(bip32): rename derivation path extend to joinby Trevor Arjeski · 83afae52 · May 29, 2026 · 1 fileMessage 77 · AdequateInformational 15Details
Commit message · Trevor Arjeski

refactor(bip32): rename derivation path extend to join

Use path-like naming convention for non-mutating concatenation like Rust does.

77/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body
Why it was queued
secret or key materialcryptography-sensitive path
AI analysis · Informational 15/100

This commit is a simple rename of a method from 'extend' to 'join' in a Rust Bitcoin library. It does not change what the code does, only its name. There is no security issue here.

Lower-priorityunits: Bump version to 0.4.0by Tobin C. Harding · fb53f118 · May 28, 2026 · 10 filesMessage 60 · AdequateInformational 15Details
Commit message · Tobin C. Harding

units: Bump version to 0.4.0

In preparation for release add a changelog entry, bump the version,
and update the lock files.

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

This commit is a routine version bump for the bitcoin-units crate from 0.3.0 to 0.4.0. It updates version numbers in package manifests, lock files, and adds a changelog entry describing new features and breaking changes. There is no code change that fixes or introduces a security issue.

Lower-priorityExclude mutating `ExactSizeEncoder::is_empty`by Abeeujah · 736d343d · May 28, 2026 · 1 fileMessage 68 · AdequateInformational 15Details
Commit message · Abeeujah

Exclude mutating `ExactSizeEncoder::is_empty`

Encoder tests has been updated to test the outcome of encoders, and
not the internal details of the encoder, this is a default method
which is too trivial to test.

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Provides detailed explanatory context✓ Mentions testing or verification
AI analysis · Informational 15/100

This commit only updates a configuration file used by an automated mutation-testing tool. It tells the tool not to waste time trying to mutate a very simple default method called `is_empty` on an encoder type. There is no change to actual library code, no bug fix, and no security relevance.

Lower-priorityp2p: use char instead of sliceby yancy · 8ead139d · May 28, 2026 · 1 fileMessage 60 · AdequateInformational 15Details
Commit message · yancy

p2p: use char instead of slice

Using a slice is needlessly complex vs a simple char.

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

This is a tiny code cleanup in the Bitcoin peer-to-peer networking code. It replaces a slightly more verbose way of stripping trailing null characters with a simpler, equivalent way. There is no security impact.

Security candidatebip32: split generic wrapper for Xpriv::new_masterby satsfy (Renato Britto) · 4f6de66e · May 28, 2026 · 1 fileMessage 73 · AdequateInformational 15Details
Commit message · satsfy (Renato Britto)

bip32: split generic wrapper for Xpriv::new_master

Keep the public new_master accepting impl Into<NetworkKind> and impl
AsRef<Bip32Seed>, but forward the arguments to new_master_inner, thus
preventing inner part from repeating for each inline implementation.

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

This is a small internal code cleanup in a Bitcoin library. It splits one function into two so the inner logic doesn't have to be repeated, but the public behavior is unchanged. There is no security issue visible in the change.

Lower-priorityinternals: regenerate api snapshots for ArrayVecby satsfy (Renato Britto) · 27aa84e3 · May 28, 2026 · 3 filesMessage 68 · AdequateInformational 15Details
Commit message · satsfy (Renato Britto)

internals: regenerate api snapshots for ArrayVec

The api snapshot files were not refreshed when ArrayVec::set_len and
ArrayVec::spare_capacity_mut were added, leaving cargo rbmt api failing
on master and on every PR that branches from it.

Commit regenerates the entries

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
documentation-only discount
AI analysis · Informational 15/100

This commit only refreshes automatically-generated API snapshot text files. It adds lines documenting two already-existing ArrayVec methods (set_len and spare_capacity_mut) and reorders one existing method. No source code, logic, or behavior changed, so there is no security impact.

Security candidatebip32: tidy InvalidSeedLengthError trait implsby satsfy (Renato Britto) · c0d5e26c · May 28, 2026 · 1 fileMessage 68 · AdequateInformational 15Details
Commit message · satsfy (Renato Britto)

bip32: tidy InvalidSeedLengthError trait impls

Follow up to match the conventions used by other errors in this module.

- Derive Copy.
- Add From<Infallible>.
- Use explicit source returning None in std::error::Error.
- Clarify range display message with 'inclusive' word.

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
secret or key materialcryptography-sensitive path
AI analysis · Informational 15/100

This is a minor code cleanup for an error type in the BIP-32 (Bitcoin key derivation) module. It adds a standard 'Copy' trait, a conversion from Rust's 'Infallible' type, an explicit 'no underlying cause' implementation, and slightly clarifies an error message. There is no security fix or behavior change.

Security candidatebip32: implement Eq for Bip32Seedby satsfy (Renato Britto) · b414ab57 · May 28, 2026 · 1 fileMessage 45 · ThinInformational 15Details
Commit message · satsfy (Renato Britto)

bip32: implement Eq for Bip32Seed

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

This commit adds a standard Rust equality trait (Eq) to the Bip32Seed type. It is a routine, non-functional change that does not alter behavior, fix a bug, or address any security issue. There is no security relevance.

Lower-prioritySuppress CI from verbose to progress outputby Benalleng · 3231c3b5 · May 28, 2026 · 1 fileMessage 68 · AdequateInformational 15Details
Commit message · Benalleng

Suppress CI from verbose to progress output

I found progress to still be a dramatic enough length reduction to be
worth it while retaining at least some readability while a job is
running.

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
documentation-only discount
AI analysis · Informational 15/100

This commit only changes a GitHub Actions CI workflow to reduce how much log output is printed during automated testing. It sets an environment variable named RBMT_LOG_LEVEL to 'progress' so the CI logs are shorter but still readable. There is no change to the actual Bitcoin library code, no security fix, and no vulnerability.

Security candidatehashes: fix Miri UB in aarch64 loadsby jrakibi · 06f69fff · May 28, 2026 · 1 fileMessage 68 · AdequateLow 36Details
Commit message · jrakibi

hashes: fix Miri UB in aarch64 loads

`vld1q_u32` loads four `u32` values, but `&INIT[0]`/`&INIT[4]`
creates a reference to only one `u32`.

Use `INIT.as_ptr()` instead

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
cryptography-sensitive path
AI analysis · Low 36/100

This commit fixes a low-level memory-safety issue in the SHA-256 code that runs on ARM 64-bit processors (aarch64). The code was asking the CPU to load four 32-bit numbers starting from a pointer that only pointed to a single 32-bit number. Rust's strict memory rules (flagged by the Miri checker) consider this undefined behavior, even though real hardware often tolerates it. The fix uses a pointer to the whole array instead, so the load is clearly valid.

Security candidateUpdate all changelog formatsby Nick Johnson · 0785a67a · May 27, 2026 · 16 filesMessage 50 · ThinInformational 15Details
Commit message · Nick Johnson

Update all changelog formats

* H1 Changelog header
* H2 headers for releases
* Diff compare links for relaeses with git tags

50/100 · ThinMessage clarity
✓ Descriptive subject✓ Provides an explanatory body
Why it was queued
cryptography-sensitive pathdocumentation-only discount
AI analysis · Informational 15/100

This commit only reformats the wording and layout of multiple CHANGELOG.md files. It adds a top-level 'Changelog' heading, converts release headings from H1 to H2, adds an 'Unreleased' section, and appends Markdown link references that point to git tags or comparison URLs. No program code, build scripts, dependencies, or documentation that affects behavior were changed. There is no security relevance.

Lower-priorityRemove root changelog since it is always out of dateby Nick Johnson · 7a16b6f4 · May 27, 2026 · 1 fileMessage 50 · ThinInformational 15Details
Commit message · Nick Johnson

Remove root changelog since it is always out of date

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
documentation-only discount
AI analysis · Informational 15/100

This commit simply deletes the top-level CHANGELOG.md file from the rust-bitcoin repository. The file only contained links to per-crate changelogs and was not executable code, configuration, or documentation that affects security. There is no security relevance.

Lower-priorityhashes: remove outdated readme sectionsby Nick Johnson · b995fdad · May 27, 2026 · 1 fileMessage 45 · ThinInformational 15Details
Commit message · Nick Johnson

hashes: remove outdated readme sections

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

This commit only removes two sections from a README file in the hashes subcrate: one about setting up git hooks and one about running benchmarks. No code, build scripts, tests, or documentation about cryptographic behavior were changed. There is no security relevance.

Security candidateci: upgrade cargo-rbmt and fix up breaking changesby Nick Johnson · 1eb6ece5 · May 27, 2026 · 18 filesMessage 85 · StrongInformational 15Details
Commit message · Nick Johnson

ci: upgrade cargo-rbmt and fix up breaking changes

The API files are re-generated since cargo-rbmt now de-dupes the output
making it a bit easier on the eyes. The toolchain workflows were updated
as well to use the explicit commands to read current versions instead of
relying on the eval env vars trick.

85/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
Why it was queued
boot or update path
AI analysis · Informational 15/100

This commit is purely a maintenance update to the project's continuous integration (CI) tooling. It upgrades an internal helper tool called cargo-rbmt and regenerates large API snapshot files because the new version produces cleaner, de-duplicated output. No actual Bitcoin library code was changed, and there is no security relevance.

Security candidateFix docs warningsby Benalleng · 41887fd3 · May 27, 2026 · 2 filesMessage 28 · OpaqueInformational 15Details
Commit message · Benalleng

Fix docs warnings

28/100 · OpaqueMessage clarity
✓ Subject identifies a change! No meaningful explanatory body! Opaque security-relevant change
Why it was queued
authentication path
AI analysis · Informational 15/100

This commit only fixes broken or missing backticks in documentation comments within two example files. It changes how Rustdoc links and formats text, with no effect on actual program behavior or security.

Security candidateRemove top-level serde importsby Mitchell Bagot · 7faf0bff · May 27, 2026 · 1 fileMessage 80 · StrongInformational 15Details
Commit message · Mitchell Bagot

Remove top-level serde imports

The top-level serde trait imports clutter the global namespace of the
key module and force the use of (*self).serialize() to prevent rust
from using the serde trait functions. By using the serde:: prefix on
all uses of serde in the file, the serialize calls can be simplified.

Remove serde imports and add serde:: prefix to all serde types in key.

80/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode
Why it was queued
cryptography-sensitive path
AI analysis · Informational 15/100

This commit is a straightforward code cleanup in the rust-bitcoin library. It removes top-level imports of serde serialization traits and replaces them with explicit `serde::` prefixes in the key module. There is no functional change to how keys are serialized or deserialized, and no security issue is introduced or fixed.

Security candidateRename and move LegacyPublicKey::to_bytes to serializeby Mitchell Bagot · 62f351b5 · May 27, 2026 · 1 fileMessage 73 · AdequateInformational 18Details
Commit message · Mitchell Bagot

Rename and move LegacyPublicKey::to_bytes to serialize

The to_bytes function on LegacyPublicKey no longer yields a vec, but
instead a SerializedLegacyPublicKey. While the type functions like a
byte slice, the typical pattern for the serialising function's name is
serialize(), as is used on the ecdsa and taproot signatures.

Revert LegacyPublicKey::to_bytes to return Vec<u8> and deprecate.
Introduce serialize function that returns SerializedLegacyPublicKey
alongside other serialising functions.

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

This commit is a routine API cleanup in the rust-bitcoin library. It renames a public key serialization method from `to_bytes` to `serialize`, restores `to_bytes` as a deprecated alias that returns a plain byte vector, and updates internal callers to use the new name. There is no security fix or vulnerability here.

Security candidateSplit encapsulate module to modules per typeby Mitchell Bagot · cd167603 · May 27, 2026 · 1 fileMessage 68 · AdequateInformational 15Details
Commit message · Mitchell Bagot

Split encapsulate module to modules per type

The encapsulate module is a name copied from units, where module files
hold encapsulate modules with a single type and a limited API surface.
In crypto::key, the encapsulate module has grown to encompass all of
the key types, which makes it unwieldy. It should be broken into
modules per type, like the single-type encapsulate modules in units.

Split encapsulate module into individual modules per type and adjust
re-exports accordingly.

68/100 · AdequateMessage clarity
✓ 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 straightforward internal code reorganization. It takes a single large module named 'encapsulate' in the cryptographic key code and splits it into several smaller modules, one for each key type. The public types and their behavior remain exactly the same; only the internal file/module structure and re-export paths changed. There is no security fix or vulnerability here.

AI review queuedwitness: Allocate in reserve_batch if capacity < MIN_VECTOR_ALLOCATEby Mitchell Bagot · 32344e94 · May 27, 2026 · 1 fileMessage 81 · StrongModerate 59Details
Commit message · Mitchell Bagot

witness: Allocate in reserve_batch if capacity < MIN_VECTOR_ALLOCATE

Following #6198, the reserve_batch call now allocates a minimum size of
1000 bytes. Since the allocation only updates beyond capacity when
capacity - len == 0, reserve_batch may not always allocate up to the
given required_len.
In WitnessDecoder::push_bytes, reserve_batch is used in such a way that
assumes self.content will have the required_len. This causes a panic
when writing a compact size to the witness content if it does not.

Replace capacity == 0 check with capacity < MIN_VECTOR_ALLOCATE,
ensuring reserve_batch always allocates at least MIN_VECTOR_ALLOCATE
empty content space.

81/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Why it was queued
second-pass: broader security terminology
AI analysis · Moderate 59/100

This commit fixes a bug in how the Bitcoin witness data decoder grows its internal buffer. Previously, when decoding witness data, the code could fail to reserve enough space before writing a size value, causing the program to panic and crash. The fix ensures the buffer is always expanded by at least a minimum amount when free space is low.

Security candidateAdjust BIP340 in tapsighash docsby Mitchell Bagot · 43df739f · May 27, 2026 · 1 fileMessage 68 · AdequateInformational 15Details
Commit message · Mitchell Bagot

Adjust BIP340 in tapsighash docs

It is policy in this repo to use 4-digit zero padded numbers for BIPs
in documentation. BIP-340 should thus be BIP-0340 in the tapsighash
signing function docs.

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
signing boundarycryptography-sensitive path
AI analysis · Informational 15/100

This commit only fixes the formatting of a documentation link. It changes 'BIP-340' to 'BIP-0340' and wraps the URL in angle brackets so it renders correctly in Rust's generated documentation. No code behavior was changed, and there is no security impact.

Security candidateReplace pk with key in sighash signby Mitchell Bagot · 1bc56e90 · May 27, 2026 · 1 fileMessage 65 · AdequateInformational 15Details
Commit message · Mitchell Bagot

Replace pk with key in sighash sign

'pk' typically is shorthand for public key, not private key. Instead,
the generic term key would better suit.

65/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Names security-relevant behavior explicitly
Why it was queued
secret or key materialcryptography-sensitive path
AI analysis · Informational 15/100

This commit is a simple variable rename from 'pk' to 'key' in two Rust functions because 'pk' is commonly understood to mean public key, while the parameter is actually a private key. There is no change to program logic, no security fix, and no behavior change.

Lower-priorityTest consensus encoding error API traitsby Julio Cesar · fe8bf078 · May 27, 2026 · 1 fileMessage 55 · ThinInformational 15Details
Commit message · Julio Cesar

Test consensus encoding error API traits

55/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Mentions testing or verification! No meaningful explanatory body
AI analysis · Informational 15/100

This commit only adds new automated tests that check error types implement certain standard Rust traits (Display and From<Infallible>). It does not change any production code, fix a bug, or alter behavior. There is no security relevance.

Lower-priorityprimitives: witness commitment regression testby Boris Nagaev · e754baf4 · May 27, 2026 · 1 fileMessage 78 · AdequateInformational 14Details
Commit message · Boris Nagaev

primitives: witness commitment regression test

Make a block with a witness commitment, but without the witness reserved value.
BIP-0141 forbids this, so check that check_witness_commitment() returns false
and block.validate() returns InvalidWitnessCommitment.

Assisted-by: OpenAI GPT-5

78/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
Why it was queued
defensive validationfuzzing or regression evidence
AI analysis · Informational 14/100

This commit only adds a new automated test to the codebase. It does not change any production code. The test verifies that a Bitcoin block containing a fake witness commitment but missing the required reserved value is correctly rejected by existing validation logic. There is no security fix or vulnerability being introduced here.