RB
← All projectsRust Bitcoin

rust-bitcoin

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

BitcoinCryptographic librariesNormal
Repository coverage

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

459security candidates448second-pass queue1033AI analyses
187commits · 30 days
403commits · 60 days
1283commits · 180 days
2062commits · 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.

64/100 average clarity
311Strong · 80–100
1054Adequate · 60–79
555Thin · 40–59
150Opaque · 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 Bagot640192359068
Tobin C. Harding40965156063
jrakibi944963068
Nick Johnson18920112059
Andrew Poelstra512035075
Jamil Lambert, PhD1141849061
Fmt Bot311422045
Trevor Arjeski111111069
Shing Him Ng31724056
Ismail Daif22612050
satsfy (Renato Britto)17612066
Martin Habovstiak27512069
Analysis record

Published AI watches

Last scanned 29 minutes ago

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

Merge rust-bitcoin/rust-bitcoin#6671: units: reword docs from height to count in relative locktime

This commit only changes documentation comments and variable names in the rust-bitcoin library. It rewords references to 'block height' as 'block count' for relative locktime, because a relative locktime measures elapsed blocks since a coi…

6ea4ff92by Andrew Poelstra+20−172 files
No security note in commit
Informational 15 AI analysisMessage 96 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6670: ci: fix labeller permissions

This is a routine GitHub Actions workflow fix. The change gives the automated PR labeler workflow permission to download artifacts and explicitly tells the GitHub CLI which repository to act on. It does not change the Bitcoin library code,…

CI workflow permission fixNo source code changesNo cryptographic or consensus changes
276e0a61by Andrew Poelstra+5−01 file
No security note in commit
Informational 15 AI analysisMessage 91 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6657: Release tracking PR: `base58ck 0.5.0`

This commit is a routine version bump for the base58ck crate from 0.4.0 to 0.5.0. It only updates version numbers in package manifests, lock files, and adds a changelog entry. There are no code changes and no security relevance.

9deb5de1by Andrew Poelstra+22−168 files
No security note in commit
Informational 21 AI analysisMessage 100 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6440: base58: Introduce `decode_check_to_array` for alloc-less decoding

This commit is a routine feature addition to the rust-bitcoin base58 crate. It adds a new no-allocator function to decode short base58-check strings into fixed-size byte arrays, and renames the existing error type while keeping a deprecate…

No security-relevant bug fix is described in the commit message or diff.New decoding path uses a fixed 128-byte scratch buffer (`ArrayVec`) and rejects oversized inputs.Checksum verification and invalid-character handling are preserved from the existing alloc implementation.
c5fd1832by Andrew Poelstra+330−775 files
No security note in commit
Informational 15 AI analysisMessage 93 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6646: hashes: add several methods to `Midstate` and release 1.2.0

This commit is a routine feature release for the bitcoin_hashes crate. It adds new public methods and a constant to the SHA-256 Midstate type so developers can compute SHA-256 midstates in const contexts. There is no indication of a securi…

0f68fcb3by Andrew Poelstra+157−4210 files
No security note in commit
Informational 15 AI analysisMessage 73 · Adequate
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

units: reword docs to block count in relative locktime

This commit only rewords documentation comments and variable names in the codebase. It changes references from 'block height' to 'block count' for relative lock times, which is a terminology correction with no functional code changes. Ther…

8867fe2eby satsfy (Renato Britto)+20−172 files
No security note in commit
Informational 15 AI analysisMessage 91 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6667: Make the `WitnessesEncoder` private

This commit makes a small internal helper type called WitnessesEncoder private. It was previously exported as public API but is only used inside the transaction encoder. The change removes it from the public API surface and moves the code …

07d91f7fby Andrew Poelstra+54−1324 files
No security note in commit
Informational 12 AI analysisMessage 75 · Adequate
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

ci: fix labeller permissions

This commit adjusts a GitHub Actions workflow that automatically labels pull requests based on CI results. It adds a built-in repository token, tells the artifact download step to merge single-file artifacts, and explicitly sets the reposi…

Workflow-only change with no library code modificationsUses the default GITHUB_TOKEN rather than a custom secretRuns in workflow_run context, which already has elevated repository access by design
715f2bd6by Nick Johnson+5−01 file
No security note in commit
Informational 19 AI analysisMessage 91 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6661: units: Remove `From<u16>` from `NumberOfBlocks`

This is a routine API cleanup, not a security fix. The developers removed a shortcut that let programmers create a 'number of blocks' value directly from any u16 number, replacing it with an existing named constructor called from_height. T…

ed5f1b68by Andrew Poelstra+18−358 files
No security note in commit
Informational 15 AI analysisMessage 91 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6668: Scrub the transaction encoding logic

This commit is a pure code reorganization (refactor) in the rust-bitcoin library. It moves transaction encoding and decoding definitions around within a single file so the code follows the project's preferred layout. No logic, behavior, or…

c5588ba5by Andrew Poelstra+57−571 file
No security note in commit
Informational 18 AI analysisMessage 96 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6662: build(deps): bump actions/checkout from 6.0.2 to 6.0.3

This commit is a routine update to the GitHub Actions checkout tool used by the project's automated workflows. It changes the pinned version from 6.0.2 to 6.0.3 across many workflow files. The newer version fixes minor bugs related to SHA-…

Dependency bump of actions/checkout to a patch releaseUpstream fixes for SHA-256 repository checkout and merge commit regexAll affected workflows already disable persisted credentials
f7d364cdby Andrew Poelstra+29−2915 files
No security note in commit
Informational 15 AI analysisMessage 96 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6663: build(deps): bump taiki-e/install-action from 2.79.12 to 2.81.4

This is a routine Dependabot update that bumps the version of a third-party GitHub Action used only in automated testing workflows. The change does not touch the project's actual Bitcoin library code, and there is no indication it fixes or…

5c92c0b0by Andrew Poelstra+2−22 files
No security note in commit
Informational 15 AI analysisMessage 45 · Thin
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Update the API text files

This commit only updates two generated API text files that list the public surface of the Rust crate. It removes entries for a `WitnessesEncoder` type, reflecting that the type is no longer part of the public API. There is no source code c…

9c391145by Tobin C. Harding+0−782 files
No security note in commit
Informational 15 AI analysisMessage 68 · Adequate
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Scrub the transaction encoding logic

This commit is a pure code reorganization: it moves existing transaction encoding and decoding definitions around within a single file so they follow the project's preferred layout. No logic was changed, no security bug was fixed, and no n…

80dcef15by Tobin C. Harding+57−571 file
No security note in commit
Informational 15 AI analysisMessage 58 · Thin
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Make the WitnessesEncoder private

This commit simply hides an internal helper type called WitnessesEncoder from public view. It is a routine API-cleanup change with no security relevance visible in the code or commit message.

b37accc3by Tobin C. Harding+54−542 files
No security note in commit
Informational 15 AI analysisMessage 45 · Thin
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

release bitcoin_hashes 1.2.0

This commit is a routine version bump for the bitcoin_hashes library from version 1.1.0 to 1.2.0. It only updates lock files, the package version number, and the changelog. There is no code change and no security relevance visible in the c…

8899dfd2by Andrew Poelstra+27−224 files
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.1.0 to 8.2.0

This is a routine automated update by Dependabot that changes the pinned version of a GitHub Action used to install the 'uv' Python tool in two workflow files. The new commit hash corresponds to the legitimate 8.2.0 release of astral-sh/se…

1c438632by dependabot[bot]+2−22 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 automated update by Dependabot that changes the pinned version of a GitHub-provided security scanning helper used in a workflow. It does not modify the project's actual Bitcoin library code, its cryptographic logic, or an…

5293bee4by 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 taiki-e/install-action from 2.79.12 to 2.81.4

This is a routine Dependabot update that bumps a GitHub Actions helper used in automated testing workflows from version 2.79.12 to 2.81.4. It only changes which version of the action is invoked during CI runs; it does not modify the Rust B…

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

build(deps): bump actions/checkout from 6.0.2 to 6.0.3

This is a routine automated update by Dependabot that bumps the GitHub Actions 'actions/checkout' dependency from version 6.0.2 to 6.0.3 across all project workflow files. It only changes pinned commit hashes and version comments for the a…

Routine patch-level dependency bumpNo changes to permissions, inputs, or workflow logicpersist-credentials: false already present on all checkout steps
ae935fadby dependabot[bot]+29−2915 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 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 · AdequateTriage 0Details
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
Lower-priorityExclude mutating `ExactSizeEncoder::is_empty`by Abeeujah · 736d343d · May 28, 2026 · 1 fileMessage 68 · AdequateTriage 0Details
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
Lower-priorityp2p: use char instead of sliceby yancy · 8ead139d · May 28, 2026 · 1 fileMessage 60 · AdequateTriage 0Details
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
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 · AdequateTriage 0Details
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
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 · AdequateTriage 0Details
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
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 · ThinTriage 0Details
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
Lower-priorityhashes: remove outdated readme sectionsby Nick Johnson · b995fdad · May 27, 2026 · 1 fileMessage 45 · ThinTriage 0Details
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
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 · ThinTriage 0Details
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
Lower-priorityprimitives: move a const to the module levelby Boris Nagaev · 3f10970e · May 27, 2026 · 1 fileMessage 78 · AdequateTriage 0Details
Commit message · Boris Nagaev

primitives: move a const to the module level

Make WITNESS_COMMITMENT_MAGIC a module-level const, not a local const in
a function, reuse it in witness_commitment_from_coinbase_simple test.

78/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
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.

Lower-priorityprimitives: fix witness commitment check (BIP141)by Boris Nagaev · 16f3ad79 · May 27, 2026 · 1 fileMessage 68 · AdequateTriage 0Details
Commit message · Boris Nagaev

primitives: fix witness commitment check (BIP141)

If a block has a witness commitment, it must also contain exactly one
32-byte witness reserved value EVEN IF no transactions use SegWit.

The commit enforces this check by moving the "there are no transactions
using SegWit" check after the coinbase witness commitment and witness
reserved value checks. Now the check is in line with Bitcoin Core and btcd.

Assisted-by: OpenAI GPT-5

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