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 queue2070AI analyses
181commits · 30 days
400commits · 60 days
1283commits · 180 days
2052commits · 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 Bagot640192640068
Tobin C. Harding40965409063
jrakibi944994068
Nick Johnson18920189059
Andrew Poelstra512051075
Jamil Lambert, PhD11418114061
Fmt Bot311431045
Trevor Arjeski111111069
Shing Him Ng31731056
Ismail Daif22622050
satsfy (Renato Britto)17617066
Martin Habovstiak27527069
Analysis record

Published AI watches

Last scanned 0 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.

Lower-priorityci: drop legacy release script in favor of cargo-rbmtby Nick Johnson · 41cdcb77 · Mar 17, 2026 · 9 filesMessage 62 · AdequateInformational 15Details
Commit message · Nick Johnson

ci: drop legacy release script in favor of cargo-rbmt

62/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
AI analysis · Informational 15/100

This commit is a routine update to the project's release automation. It removes an old shell script used for release checks and replaces it with a new tool called cargo-rbmt. There are no changes to the actual Bitcoin library code, no bug fixes, and no security-related changes.

Lower-priorityci: combine cargo-rbmt job definitionsby Nick Johnson · 31358d06 · Mar 17, 2026 · 1 fileMessage 57 · ThinInformational 15Details
Commit message · Nick Johnson

ci: combine cargo-rbmt job definitions

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

This commit is a routine cleanup of the project's automated testing configuration file. It merges several nearly identical test job definitions into two simpler, matrix-based job definitions. There is no change to the actual Bitcoin library code, no change to permissions or secrets, and no security relevance.

Lower-priorityci: bump cargo-rbmt and switch to upstream setup-rbmt actionby Nick Johnson · ca9550ca · Mar 17, 2026 · 3 filesMessage 62 · AdequateInformational 15Details
Commit message · Nick Johnson

ci: bump cargo-rbmt and switch to upstream setup-rbmt action

62/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
AI analysis · Informational 15/100

This is a routine maintenance change to the project's automated testing setup. It replaces a custom GitHub Actions helper with an equivalent upstream action and updates the version of an internal tool (cargo-rbmt). There is no change to the actual Bitcoin library code that users run, and nothing in the commit suggests a security problem or fix.

Security candidateci: move stable-version to repo root (required for cargo-rbmt)by Nick Johnson · 750ed320 · Mar 17, 2026 · 3 filesMessage 62 · AdequateInformational 15Details
Commit message · Nick Johnson

ci: move stable-version to repo root (required for cargo-rbmt)

62/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
boot or update path
AI analysis · Informational 15/100

This commit simply moves a file called 'stable-version' from one folder to another within the project's CI configuration. The file contains a Rust compiler version number used by automated checks. There is no change to the project's actual Bitcoin code, no security fix, and no vulnerability introduced.

Security candidateci: pin zizmor version to avoid random breaksby Nick Johnson · e67e4b92 · Mar 17, 2026 · 1 fileMessage 74 · AdequateInformational 15Details
Commit message · Nick Johnson

ci: pin zizmor version to avoid random breaks

74/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Explains rationale or failure mode✓ Names security-relevant behavior explicitly! No meaningful explanatory body
Why it was queued
access controldocumentation-only discount
AI analysis · Informational 15/100

This commit changes a GitHub Actions workflow so that a security linting tool called zizmor is installed at a fixed version (1.22.0) instead of the latest release. It is a routine CI maintenance change to prevent unexpected breakages when zizmor releases new versions. There is no indication it fixes or introduces a security vulnerability.

AI review queuedp2p: add version message encoder/decoderby yancy · 0a183542 · Mar 17, 2026 · 1 fileMessage 78 · AdequateInformational 15Details
Commit message · yancy

p2p: add version message encoder/decoder

* `VersionMessage` is a composition of 9 decoders, however, there is no
such `Decoder9`. Instead of creating a `Decoder9`, combine the first 3
decoders using a `Decoder3` and then the last 6 using a `Decoder6`.

* Replace `deserialize` in test with `decode_from_slice` since push based
encoding is planned to replace the current serialization provided by
`bitcoin::consensus::encode`.

* In the test cases, replace `serialize` with `encoding::encode_to_vec`
since the push encoding here is planned to replace the existing
`serialize` implementation.

78/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
Why it was queued
second-pass: broader security terminology
AI analysis · Informational 15/100

This commit adds a new way to encode and decode Bitcoin peer-to-peer 'version' messages in the rust-bitcoin library. It is a routine refactoring and feature addition: it introduces a new encoder/decoder implementation and updates one test to use the new code. There is no indication of a security bug being fixed.

Lower-priorityconsensus: add clippy allow to macroby yancy · 06ff2056 · Mar 17, 2026 · 1 fileMessage 68 · AdequateInformational 15Details
Commit message · yancy

consensus: add clippy allow to macro

The VersionMessage Encoder requires 9 fields, although no such
`Encoder9` exists. Therefore, using a nested encoder to combine
`Encoder6` and and `Encoder3` is needed. However, the nested encoder
causes clippy to fail without this lint.

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

This commit adds a single Rust lint suppression to a macro that generates encoder helper types. It tells the Clippy static-analysis tool to stop complaining about overly complex types when nested encoders are combined. There is no functional code change, no bug fix, and no security relevance.

Security candidateClean up comments and usages of to_x_only_public_keyby Mitchell Bagot · 33ce68c8 · Mar 17, 2026 · 2 filesMessage 73 · AdequateInformational 15Details
Commit message · Mitchell Bagot

Clean up comments and usages of to_x_only_public_key

Following the removal of parity from from_keypair, uses of
to_x_only_public_key were similarly changed. In those changed, doc
comments and function usage sites weren't cleaned up to suit the new
functionality.

Adjust comments for from_keypair. Remove unused variable definition in
from_keypair.

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

This is a minor code cleanup commit. It removes an unnecessary intermediate variable, updates a doc comment to match a previous API change, and removes an outdated comment in a test. There is no functional change and no security impact.

Security candidateAdd signing functions to Keypairby Mitchell Bagot · b74c4c32 · Mar 17, 2026 · 5 filesMessage 80 · StrongInformational 19Details
Commit message · Mitchell Bagot

Add signing functions to Keypair

In order to reduce the need to unwrap and reach into the Keypair type
for the secp keypair, signing should be possible directly with the
wrapper type.

Introduce raw_bip340_sign and raw_bip340_sign_with_aux_randomness to
schnorr sign bytes with the keypair.

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
signing boundarycryptography-sensitive pathsigning or wallet path
AI analysis · Informational 19/100

This commit adds convenience methods so that a Bitcoin keypair can sign messages directly, without callers having to reach into the underlying secp256k1 library. It is a code-cleanup and API-ergonomics change, not a fix for a known bug or vulnerability. The new methods wrap the same underlying signing functions that were already being used, so the cryptographic behavior is unchanged.

Lower-priorityparse_int: Add hex parsing for u16 and u64by Mitchell Bagot · e6f204be · Mar 17, 2026 · 4 filesMessage 68 · AdequateInformational 15Details
Commit message · Mitchell Bagot

parse_int: Add hex parsing for u16 and u64

At present, the parse_int module in units provides functions for
parsing u32 and u128. This can be easily extended to cover other
unsigned integer types such as u16 and u64, which provides the ability
to parse wrappers of those types from hex.

Convert hex parsing functions to a private macro call and introduce
functions for parsing u16 and u64 from hex.

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

This commit is a routine code cleanup and feature addition. It adds new helper functions for reading small and medium-sized unsigned integers (u16 and u64) from hexadecimal strings, using the same safe approach already used for u32 and u128. There is no indication of a security bug being fixed or introduced.

Security candidateReplace to_inner with as_inner on Keypairby Mitchell Bagot · bdb0bb74 · Mar 17, 2026 · 5 filesMessage 68 · AdequateLow 28Details
Commit message · Mitchell Bagot

Replace to_inner with as_inner on Keypair

When used on Copy types, to_inner produces a copy of the type. This is
undesirable for secret key types. For Keypair, access to the inner
type is necessary, so to_inner should be replaced by as_inner.

Replace to_inner (owned -> owned) with as_inner (ref -> ref) on
Keypair.

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

This commit changes how the library exposes a Bitcoin secret key pair internally. Previously, calling `to_inner()` made a full copy of the secret key data. The new `as_inner()` returns a reference instead, so the secret bytes are not duplicated in memory as often. This is a defensive hardening change: it reduces the number of copies of sensitive key material floating around in memory, which slightly lowers the chance that a secret key could leak through memory dumps, swap, or debugging. It is not a fix for an active bug or a directly exploitable vulnerability.

AI review queuedUpdate the API filesby Tobin C. Harding · 3388e573 · Mar 16, 2026 · 1 fileMessage 28 · OpaqueInformational 15Details
Commit message · Tobin C. Harding

Update the API files

Run `just check-api`.

28/100 · OpaqueMessage clarity
✓ Subject identifies a change! No meaningful explanatory body
Why it was queued
documentation-only discountsecond-pass: opaque commit message
AI analysis · Informational 15/100

This commit only updates a generated text file listing the public API surface of the crate. It adds four new public methods for converting Bitcoin scripts to/from hex strings. There is no code change, no bug fix, and no security relevance visible in the diff.

Lower-priorityMove the hex unit test to primitivesby Tobin C. Harding · 2f7f0ec0 · Mar 16, 2026 · 2 filesMessage 78 · AdequateInformational 15Details
Commit message · Tobin C. Harding

Move the hex unit test to primitives

`format` is already in scope. No other changes to the test.

Note this does introduce some duplication in the unit tests, leaving
refactor for later.

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

This commit simply moves an existing unit test from one file to another within the same project. It does not change any production code, fix a bug, or alter behavior. There is no security relevance.

Lower-priorityWrite a script hex unit testby Tobin C. Harding · e2938a40 · Mar 16, 2026 · 2 filesMessage 78 · AdequateInformational 15Details
Commit message · Tobin C. Harding

Write a script hex unit test

We have coverage for this in `bitcoin/examples/script.rs` but I didn't
remember that until after I wrote this ...

Add a unit test that tests exact behaviour of script hex parsing and
formatting functions.

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

This commit only adds a new unit test for existing script hex parsing and formatting functions. It does not change any production code, fix any bug, or alter behavior. There is no security relevance.

AI review queuedMove script hexification functions to primitivesby Tobin C. Harding · 829a4ff7 · Mar 16, 2026 · 5 filesMessage 78 · AdequateInformational 15Details
Commit message · Tobin C. Harding

Move script hexification functions to primitives

The functions for converting scripts to hex have clean API's, we
iterated on them a ton already. Currently the implementation uses the
old consensus code but we have all this available in `primitives` now
as well as an optional dependency on `hex_unstable`.

Lets move them to primitives.

Note that this patch adds a seemingly unnecessary allocation, maybe we
have an API that needs improving or maybe I'm being brain dead ATM.

Intentionally leave the unit test where it is for now to prove nothing
in `bitcoin` breaks.

78/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
Why it was queued
second-pass: broader security terminology
AI analysis · Informational 15/100

This is a routine internal code reorganization. It moves two helper functions that convert Bitcoin scripts to hexadecimal strings from the main `bitcoin` crate into the lower-level `primitives` crate. The functions still behave the same way; they are just located in a different module. There is no security fix or vulnerability here.

Security candidateMove script hex parsing to primitivesby Tobin C. Harding · cd735bf2 · Mar 16, 2026 · 10 filesMessage 68 · AdequateInformational 18Details
Commit message · Tobin C. Harding

Move script hex parsing to primitives

Now that we use stable error types we can move the hex parsing
functions from `bitcoin` to `primitives`.

Leave the deprecated method behind in `bitcoin`.

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

This commit is a routine code reorganization: it moves functions that parse Bitcoin script hex strings from the main `bitcoin` crate into the lower-level `primitives` crate. The old functions in `bitcoin` are kept as deprecated aliases so existing code keeps working. There is no security fix or vulnerability here.

Lower-priorityCombine script unit testsby Tobin C. Harding · c70c7892 · Mar 16, 2026 · 3 filesMessage 68 · AdequateInformational 15Details
Commit message · Tobin C. Harding

Combine script unit tests

Move all the unit tests from `ownded` and `borrowed` to the newly
created `tests` module.

Done to assist easily reading all the script units tests.

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

This commit simply moves existing unit tests from two separate files into a single shared test file. It does not change any production code, behavior, or security logic. There is no security impact.

Lower-priorityscript: Use format without pathby Tobin C. Harding · d4beef02 · Mar 16, 2026 · 1 fileMessage 70 · AdequateInformational 15Details
Commit message · Tobin C. Harding

script: Use format without path

The `format` macro is already in scope in the unit tests, use it directly.

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

This is a tiny code cleanup change inside unit tests. It replaces `alloc::format!` with the shorter `format!` because the macro is already available in the test module. There is no functional change and no security relevance.

Lower-priorityUse script_buf instead of scriptbufby Tobin C. Harding · d2805859 · Mar 16, 2026 · 1 fileMessage 70 · AdequateInformational 15Details
Commit message · Tobin C. Harding

Use script_buf instead of scriptbuf

The type is `ScriptBuf` which implies test identifiers should use
`script_buf`.

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

This commit only renames test functions in a single test file so the names match the project's preferred spelling (script_buf instead of scriptbuf). No code behavior changes, no security relevance.

Lower-priorityprimitives: Move script module tests to separate fileby Tobin C. Harding · 63835b1c · Mar 16, 2026 · 2 filesMessage 95 · StrongInformational 15Details
Commit message · Tobin C. Harding

primitives: Move script module tests to separate file

Currently we have test modules in three files within the `script`
module. Its not immediately what is tested where. We can put all the
tests in one file making it easier to see what is going no. Also
because `ScriptBuf` derefs to `Script` testing one tests the other.

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

This commit simply moves existing automated tests from one file to another within the project's source code. It does not change any actual program logic, fix bugs, or alter behavior. There is no security relevance.

Lower-priorityRemove confusing feature gateby Tobin C. Harding · 09770c7b · Mar 16, 2026 · 3 filesMessage 50 · ThinInformational 15Details
Commit message · Tobin C. Harding

Remove confusing feature gate

The whole `script` module is feature gated on `alloc`. No need
for a additional feature gating, its just confusing.

50/100 · ThinMessage clarity
✓ Descriptive subject✓ Provides an explanatory body
AI analysis · Informational 15/100

This commit removes redundant Rust feature gates inside a module that is already entirely gated behind the 'alloc' feature. It is a code cleanup change with no security relevance.

AI review queuedbitcoin: Replace script hex decoding with new consensus crateby Tobin C. Harding · 545f73eb · Mar 16, 2026 · 1 fileMessage 73 · AdequateLow 27Details
Commit message · Tobin C. Harding

bitcoin: Replace script hex decoding with new consensus crate

Currently we are using the old consensus deserialization code to
decode scripts as well as the unstable hex crate.

Now that we have both a stable `hex` parsing crate and a
soon-to-be-stable consensus encoding crate we can use them to shore up
the script hex parsing functions.

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
second-pass: broader security terminology
AI analysis · Low 27/100

This commit swaps out the old way of turning hex strings into Bitcoin scripts for a newer, more stable set of libraries. It also introduces a clearer error type so callers can tell whether something went wrong with the hex string itself or with decoding the script. The change is described by the project as a hardening/cleanup move, not a fix for a known vulnerability.

Security candidatebitcoin: Stop using FromHexby Tobin C. Harding · 12782954 · Mar 16, 2026 · 1 fileMessage 75 · AdequateInformational 18Details
Commit message · Tobin C. Harding

bitcoin: Stop using FromHex

In the upcoming `hex v1.1.0` we remove the `FromHex` trait. In order
to use that release we need to remove its usage here. The single usage
was left in so as not to change the function signature on a deprecated
signature, just go ahead and do that now. It is still better to keep
the different signature because downstream will get the deprecation
notice and _hopefully_ not too many folk are matching on the return type.

75/100 · AdequateMessage clarity
✓ Descriptive subject✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Names security-relevant behavior explicitly
Why it was queued
signing boundary
AI analysis · Informational 18/100

This is a routine code-maintenance change. The developers replaced one way of reading hexadecimal strings with another, because the old helper tool (the `FromHex` trait) is being removed in an upcoming version of a dependency. The function being changed is already marked as deprecated, so it is not the preferred way to do things. There is no indication this fixes a security bug or introduces a vulnerability.

Security candidateRemove outdated doc from `XOnlyPublicKey::from_secp`by Shing Him Ng · 277e0dce · Mar 16, 2026 · 1 fileMessage 50 · ThinInformational 15Details
Commit message · Shing Him Ng

Remove outdated doc from `XOnlyPublicKey::from_secp`

50/100 · ThinMessage clarity
✓ Specific, 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 simply removes two outdated lines from a code comment. The removed text incorrectly claimed that the function always sets an even parity, but the function actually accepts a parity argument supplied by the caller. There is no code change and no security issue.

Security candidateDrop the hex_lit dep in favor of built in hexby Nick Johnson · 470795a1 · Mar 16, 2026 · 26 filesMessage 45 · ThinInformational 15Details
Commit message · Nick Johnson

Drop the hex_lit dep in favor of built in hex

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

This commit is a routine dependency cleanup. It removes the external hex_lit crate and switches test/example code to use built-in hex macros from the project's own hex-conservative crate. There is no user-facing behavior change and no security fix or vulnerability introduced.