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 queue248AI analyses
194commits · 30 days
405commits · 60 days
1283commits · 180 days
2070commits · 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 Bagot640192109068
Tobin C. Harding4096544063
jrakibi944912068
Nick Johnson189204059
Andrew Poelstra512011075
Jamil Lambert, PhD114185061
Fmt Bot311412045
Trevor Arjeski111111069
Shing Him Ng3176056
Ismail Daif2263050
satsfy (Renato Britto)1766066
Martin Habovstiak2754069
Analysis record

Published AI watches

Last scanned 1 minute ago

Informational 15 AI analysisMessage 60 · Adequate
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

base58ck: Bump version to 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 describing unrelated feature changes. There are no code changes,…

8479b56eby Tobin C. Harding+22−168 files
No security note in commit
Informational 20 AI analysisMessage 58 · Thin
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Rename Error to DecodeCheckError

This commit is a routine code cleanup: it renames the `Error` type in the base58 module to the more descriptive `DecodeCheckError`, and adds a deprecated type alias so existing code using `base58::Error` continues to work. There is no chan…

b0eba4c0by Mitchell Bagot+45−395 files
No security note in commit
Informational 15 AI analysisMessage 78 · Adequate
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

hashes: add sha256::Midstate::SHA256_IV constant

This commit is a routine internal refactoring in the rust-bitcoin SHA-256 hashing code. It exposes the SHA-256 initial value (IV) as a public constant and renames an internal helper function so it can start from any midstate rather than al…

dc21841bby Andrew Poelstra+39−143 files
No security note in commit
Informational 15 AI analysisMessage 50 · Thin
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

hashes: add several methods to sha256::Midstate for computing them in const contexts

This commit adds new helper methods to the SHA-256 'Midstate' type in the rust-bitcoin hashes library. These helpers let callers compute SHA-256 intermediate states inside 'const' contexts (compile-time constants). It is a routine feature …

7d8f06d2by Andrew Poelstra+80−72 files
No security note in commit
Informational 17 AI analysisMessage 73 · Adequate
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

taproot-primitives: Implement encoding traits for TapLeafHash

This commit adds standard data-encoding support for a Bitcoin Taproot hash type (TapLeafHash) so it can be properly serialized and deserialized in PSBT data. There is no indication of a security bug being fixed; it appears to be a missing-…

No security-relevant signal in commit message or diffChange is a feature addition (encoding trait implementations)No bounds-checking, memory-safety, or cryptographic flaws evident in diff
b2ab0896by Mitchell Bagot+59−12 files
No security note in commit
Informational 18 AI analysisMessage 73 · Adequate
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Split Address into an extension trait

This commit is a routine code reorganization in the rust-bitcoin library. It moves the `Address::from_script` method out of the main `Address` type into a new 'extension trait' called `AddressExt`. The actual logic of the function is copie…

c900fa8cby Mitchell Bagot+35−263 files
No security note in commit
Informational 15 AI analysisMessage 60 · Adequate
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

primitives: Bump version to 0.103.0

This commit is a routine release preparation: it bumps the version number of the `bitcoin-primitives` crate from 0.102.0 to 0.103.0, updates related dependency declarations in other crates, refreshes lock files, and adds a changelog entry.…

5612224dby Tobin C. Harding+48−88 files
No security note in commit
Informational 15 AI analysisMessage 45 · Thin
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

hashes: bump version to 1.1.0

This commit is a routine version bump for the bitcoin_hashes crate from 1.0.0 to 1.1.0. It updates dependency references across the workspace, records the release in the changelog, and adjusts deprecation lint allowances in tests. There is…

bf3f25f4by Nick Johnson+34−269 files
No security note in commit
Informational 17 AI analysisMessage 80 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

refactor(bip32): Xpub child tweak api

This commit is a straightforward API refactor in the BIP-32 (Bitcoin key derivation) code. It replaces a function that returned a raw secret key and chain code with one that returns a new structured type called XpubChildTweak. The actual c…

No security-relevant behavioral change observedAPI rename and return-type encapsulation onlyNo new validation, bounds checking, or constant-time guarantees added
37191717by Trevor Arjeski+21−71 file
No security note in commit
Informational 18 AI analysisMessage 85 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

refactor(bip32): rename Xpub and Xpriv derivation methods

This is a routine code cleanup in a Bitcoin library. It renames key-derivation methods on extended public and private keys (Xpub/Xpriv) to clearer names and removes old aliases. There is no security bug being fixed and no new vulnerability…

No security-relevant logic changePure API renaming/refactoringDeprecated method removal may break downstream callers at compile time
f8f053fdby Trevor Arjeski+61−852 files
No security note in commit
Informational 15 AI analysisMessage 60 · Adequate
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

internals: Bump version to 0.6.0

This commit is a routine version bump for the internal 'bitcoin-internals' crate from 0.5.0 to 0.6.0. It updates version numbers across package manifests and lock files, and adds a changelog describing API cleanups and small improvements. …

aed7a9ceby Tobin C. Harding+73−5616 files
No security note in commit
Informational 15 AI analysisMessage 68 · Adequate
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Remove hex dep from internals

This commit simply removes an unused software dependency (the hex-conservative crate) from the internals sub-package and updates related package configuration files. It is a routine cleanup change with no security relevance.

bd0d4bc0by Tobin C. Harding+8−118 files
No security note in commit
Informational 17 AI analysisMessage 73 · Adequate
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Replace external uses of base58 encoding with Base58CkString

This commit is a routine internal code cleanup in the rust-bitcoin project. It swaps old base58 encoding helper functions for a new equivalent type, Base58CkString, in three source files. There is no indication from the commit itself that …

No security-relevant signal in the diff: equivalent API swap onlyNo new dependencies or unsafe blocks introducedNo changes to input validation, parsing, or secret handling
7f5fbd13by Mitchell Bagot+10−103 files
No security note in commit
Informational 15 AI analysisMessage 68 · Adequate
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Add try_push to Buffer trait

This commit adds a new `try_push` method to an internal `Buffer` trait used during Base58 encoding. It is a straightforward, additive change that lets encoding code gracefully handle a full fixed-size buffer in no-allocation builds. There …

aafb6065by Mitchell Bagot+15−01 file
No security note in commit
Informational 15 AI analysisMessage 73 · Adequate
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

consensus_encoding: Rename _with decoder functions

This commit is a simple renaming of internal Rust functions from names ending in '_with' to names ending in '_with_decoder'. It does not change what the code does, only what the functions are called, to avoid confusion with another functio…

12325a67by Mitchell Bagot+18−174 files
No security note in commit
Informational 17 AI analysisMessage 63 · Adequate
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Move ScriptPubKeyBufExt to addresses

This commit is a routine internal code reorganization in the rust-bitcoin library. It moves a helper trait (ScriptPubKeyBufExt) and its functions from one internal module to another, and re-exports it so existing users see no change. There…

ed00d91aby Mitchell Bagot+92−552 files
No security note in commit
Informational 16 AI analysisMessage 50 · Thin
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

hashes: Deprecate sha256t_tag macro

This is a routine code-maintenance change: the developers are marking an old helper macro as deprecated and telling users how to write the same code by hand. There is no bug fix, no security patch, and no vulnerability being addressed in t…

ac921e97by jrakibi+26−123 files
No security note in commit
Informational 15 AI analysisMessage 45 · Thin
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

2026-07-05 automated rustfmt nightly

This commit is a routine automated code-formatting run by the rustfmt tool. It only changes whitespace, import order, and line breaks in five files. There are no functional changes, no bug fixes, and no security-related modifications.

673e5ee4by Fmt Bot+12−115 files
No security note in commit
Informational 15 AI analysisMessage 68 · Adequate
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

hashes: implement sha256t::Tag without the macro

This commit is a routine code cleanup in the rust-bitcoin library. It replaces a macro used to define SHA-256 tagged hash identifiers with direct Rust code that does the same thing. The actual hash values and behavior are unchanged; only t…

0131814dby jrakibi+30−133 files
No security note in commit
Informational 15 AI analysisMessage 95 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

ci: adapt default and no feature bip32 test for rbmt 0.4.0

This is a routine update to the project's automated testing configuration. A tool used to run example tests changed its syntax, so the developer updated one line to keep the same tests running the same way. There is no user-facing change a…

5f933d5cby satsfy (Renato Britto)+1−11 file
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 candidatecrypto: Gate all usage of hex-conservative behind hex featureby Mitchell Bagot · 745f4fe4 · Jun 3, 2026 · 6 filesMessage 73 · AdequateInformational 19Details
Commit message · Mitchell Bagot

crypto: Gate all usage of hex-conservative behind hex feature

Typically, all of the crates upstream of bitcoin have a hex feature
that gates the usage and inclusion of the hex-conservative crate.
Since the crypto crate functionality was crudely pulled from bitcoin,
this feature was not present but instead baked in as part of the
default functionality.

Introduce a hex feature which gates hex 1.1.0.
Add hex feature gates as necessary for existing functionality.

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 19/100

This commit reorganizes how an optional hex-encoding helper library is enabled in the bitcoin-crypto crate. It makes the hex-conservative dependency optional and gated behind a new 'hex' feature, instead of being included by default. The main bitcoin crate explicitly enables this feature, so end-user behavior is unchanged. This is a build/configuration cleanup, not a fix for an exploitable vulnerability.

Security candidateCI: Fix nightly toolchain update to mention weeklyby Tobin C. Harding · a7778aac · Jun 2, 2026 · 1 fileMessage 77 · AdequateTriage 0Details
Commit message · Tobin C. Harding

CI: Fix nightly toolchain update to mention weekly

This job runs weekly not daily. Update the branch name and PR title.

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
boot or update pathdocumentation-only discount
Security candidateDestructure error types in source implsby Mitchell Bagot · 8b03bf95 · Jun 1, 2026 · 30 filesMessage 80 · StrongInformational 15Details
Commit message · Mitchell Bagot

Destructure error types in source impls

In the source impls of error types, we previously decided to use
explicit impls to try to prevent changes in the error type from
introducing errors. However, impls that simply return None do not help
to solve this issue.

Add a complete error type destructure to all None source impls to catch
future error shape changes.

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 pathsigning or wallet path
AI analysis · Informational 15/100

This commit is a code-quality maintenance change. It adds pattern-matching destructuring inside Rust error-type 'source' methods that previously just returned 'None'. The goal is to make the compiler warn future maintainers if the shape of an error type changes, so they remember to update the source() implementation. It does not change runtime behavior, fix a bug, or close a security vulnerability.

Security candidatehashes: Bump version to 1.0.0by Tobin C. Harding · f7f7dd2b · May 31, 2026 · 12 filesMessage 68 · AdequateInformational 15Details
Commit message · Tobin C. Harding

hashes: Bump version to 1.0.0

No changes since last RC `v0.21.0`.

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

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 routine release-preparation change. It bumps the version number of the `bitcoin_hashes` crate from 0.21.0 to 1.0.0, updates the changelog, and updates dependency references in lock files and other crates' configuration files. There are no code changes and no security relevance.

Security candidate2026-05-31 automated rustfmt nightlyby Fmt Bot · acaff550 · May 31, 2026 · 6 filesMessage 45 · ThinInformational 15Details
Commit message · Fmt Bot

2026-05-31 automated rustfmt nightly

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 is a routine automated code-formatting run by the rustfmt tool. It only changes whitespace, line breaks, and import grouping in six files. No program logic, security checks, or behavior were altered.

Security candidatehashes: Rename engine_input_implby Tobin C. Harding · 7b56cdda · May 29, 2026 · 6 filesMessage 50 · ThinInformational 15Details
Commit message · Tobin C. Harding

hashes: Rename engine_input_impl

In line with other macros put the 'impl' first in the name. Also use
`{}` instead of `()` as is more typical here.

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

This commit is a pure code cleanup: it renames an internal helper macro from `engine_input_impl!` to `impl_engine_input!` and switches its syntax from parentheses to curly braces. No logic, behavior, or security properties of the hashing code change.

Security candidatehashes: Inline error functionsby Tobin C. Harding · 5b241e3b · May 29, 2026 · 2 filesMessage 35 · OpaqueInformational 15Details
Commit message · Tobin C. Harding

hashes: Inline error functions

35/100 · OpaqueMessage clarity
✓ Descriptive subject! No meaningful explanatory body! Opaque security-relevant change
Why it was queued
cryptography-sensitive path
AI analysis · Informational 15/100

This commit adds compiler hints to three small functions in the rust-bitcoin hashes crate, suggesting the compiler should inline them. It does not change behavior, fix a bug, or address any security issue.

Security candidatehashes: Add From<Infallible> for error typesby Tobin C. Harding · acd0d01f · May 29, 2026 · 2 filesMessage 68 · AdequateInformational 16Details
Commit message · Tobin C. Harding

hashes: Add From<Infallible> for error types

As is customary in this repo add `From<Infallible>` to all error
types. The unusual code layout (above display) is intentional and
inline with other error code.

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 16/100

This commit adds a standard Rust trait implementation that lets two error types be automatically converted from the 'Infallible' type (a type that can never actually exist). It is a routine ergonomic improvement and does not fix any security bug or change runtime behavior.

Security candidatehashes: Pluralize function docsby Tobin C. Harding · 3b2bdc0e · May 29, 2026 · 9 filesMessage 50 · ThinInformational 15Details
Commit message · Tobin C. Harding

hashes: Pluralize function docs

By convention in this repo we use plural for the verb in function
docs.

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

This commit only changes the wording of code comments (documentation) from singular verbs like 'Finalize' to plural verbs like 'Finalizes' to match the project's style convention. No actual program code was modified, so it cannot affect security or behavior.

Security candidatebip32: add missing From<Infallible> to errorsby satsfy (Renato Britto) · ab38e614 · May 29, 2026 · 1 fileMessage 68 · AdequateInformational 15Details
Commit message · satsfy (Renato Britto)

bip32: add missing From<Infallible> to errors

Error types impls are not uniform in this module.

Add From<Infallible> for DerivationError and
InvalidBase58PayloadLengthError.

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 commit adds two small Rust trait implementations that allow certain error types to be automatically converted from the 'Infallible' type. 'Infallible' is a type that can never actually exist, so these conversions are purely for making the error types easier to use in generic code. There is no security issue here.

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.

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

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.

Security candidatehashes: fix Miri UB in aarch64 loadsby jrakibi · 06f69fff · May 28, 2026 · 1 fileMessage 68 · AdequateTriage 15Details
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
Security candidateUpdate all changelog formatsby Nick Johnson · 0785a67a · May 27, 2026 · 16 filesMessage 50 · ThinTriage 0Details
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
Security candidateci: upgrade cargo-rbmt and fix up breaking changesby Nick Johnson · 1eb6ece5 · May 27, 2026 · 18 filesMessage 85 · StrongTriage 12Details
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
Security candidateFix docs warningsby Benalleng · 41887fd3 · May 27, 2026 · 2 filesMessage 28 · OpaqueTriage 10Details
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
Security candidateRemove top-level serde importsby Mitchell Bagot · 7faf0bff · May 27, 2026 · 1 fileMessage 80 · StrongTriage 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
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 · AdequateTriage 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
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.