RB
← All projectsRust Bitcoin

rust-bitcoin

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

BitcoinCryptographic librariesNormal
Repository coverage

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

461security candidates452second-pass queue2076AI analyses
183commits · 30 days
389commits · 60 days
1289commits · 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
320Strong · 80–100
1058Adequate · 60–79
557Thin · 40–59
151Opaque · 0–39
20security candidates with opaque commit messaging
Read the scoring rubric →
Developer activity

Who is changing the project?

Public Git author strings; identities are not independently verified.

DeveloperCommitsCandidatesAnalyzedHigh riskMessage avg.
Mitchell Bagot643192641068
Tobin C. Harding41366410063
jrakibi944994068
Andrew Poelstra602155078
Nick Johnson18920189059
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 10 minutes ago

Informational 20 AI analysisMessage 91 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6678: units: Add `Weight::to_vb_*` functions, deprecating `to_vbytes_*`

This is a routine API cleanup in a Rust Bitcoin library. It adds new method names (to_vb_floor, to_vb_ceil) for converting transaction 'weight' to 'virtual bytes' and marks the old names (to_vbytes_floor, to_vbytes_ceil) as deprecated. The…

7f614781by Andrew Poelstra+30−86 files
No security note in commit
Informational 15 AI analysisMessage 91 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6597: Release tracking PR: `crypto 0.3.0`

This commit is a routine release-tracking merge. It only bumps version numbers (bitcoin-crypto to 0.3.0 and bitcoin-primitives to 0.103.1), updates dependency version requirements, refreshes lock files, and adds changelog entries. There ar…

1fddd49eby Andrew Poelstra+34−1210 files
No security note in commit
Informational 15 AI analysisMessage 28 · Opaque
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Update API files

This commit only updates generated API listing files (text snapshots of public functions) to reflect a newly added public function, `to_consensus_u32`, on the `CompactTarget` type. It does not change any source code, logic, or behavior, an…

a75c53c8by Mitchell Bagot+6−03 files
No security note in commit
Informational 15 AI analysisMessage 100 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6675: units: Remove unnecessary track_caller

This commit removes two Rust compiler hints (`#[track_caller]`) from helper functions that simply return a value or call a user-provided fallback. These functions never panic, so the hints were unnecessary and had no security effect. The c…

ce894f36by Andrew Poelstra+0−21 file
No security note in commit
Informational 15 AI analysisMessage 91 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6644: primitives: Add serde impls for `WitnessVersion`

This commit adds standard serialization/deserialization support for the WitnessVersion type when the optional serde feature is enabled. It is a routine feature addition with no security relevance visible in the code or commit message.

4981faa7by Andrew Poelstra+50−02 files
No security note in commit
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
Repository ledger

Explore captured commits

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

Lower-priority[to squash] remove some old doccomments from consensus_encodingby Andrew Poelstra · fc8830bf · Sep 4, 2025 · 1 fileMessage 50 · ThinInformational 15Details
Commit message · Andrew Poelstra

[to squash] remove some old doccomments from consensus_encoding

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI analysis · Informational 15/100

This commit only removes documentation comments and two unused extern crate declarations from a Rust source file. It does not change any executable code, logic, or security behavior.

Lower-priorityAdd empty consensus_encoding crateby Tobin C. Harding · 8277ed99 · Sep 4, 2025 · 8 filesMessage 70 · AdequateInformational 15Details
Commit message · Tobin C. Harding

Add empty consensus_encoding crate

Add an empty `consensus_encoding` crate so we can grab the name on
crates.io

## Aims of the crate

This crate will hold the encoding traits and be depended on by
`units`, `primitives`, and `bitcoin` where implementations of the
traits will live.

All this will be feature gated so users can opt in. This nicely
bypasses the `Read`/`Write` vs `BufRead`/`BufWrite` problem because
later we can add an additional crate for the buffered stuff and users
can opt in to the one they want to use.

This crate will be no-std by default and depend on `bitcoin-io` for
I/O.

First release will just bring everything as it is from `bitcoin` over
here, then we can implement the traits in the various other crates,
then iterate - like its our job.

70/100 · AdequateMessage clarity
✓ Descriptive subject✓ Provides detailed explanatory context✓ Explains rationale or failure mode
AI analysis · Informational 15/100

This commit adds a brand-new, empty placeholder Rust crate named `consensus_encoding` to the rust-bitcoin workspace. It contains no executable code, no traits yet, and no logic changes to existing crates. Its sole purpose is to reserve the package name on crates.io before someone else does. There is nothing here that could affect security.

AI review queuedprimitives: Use new import policyby Tobin C. Harding · 02386cd7 · Sep 4, 2025 · 2 filesMessage 68 · AdequateInformational 15Details
Commit message · Tobin C. Harding

primitives: Use new import policy

Now we want to only import using crate re-exports if possible in
`bitcoin` and `primitives`. We fixed `bitcoin` already, now do
`primitives`.

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

This commit is a routine code cleanup that changes how internal items are imported within the rust-bitcoin library. It switches from importing through intermediate module paths to using crate-level re-exports. There is no functional change, no bug fix, and no security relevance.

Lower-priorityFix typos in deprecated method namesby jrakibi · ca94c498 · Sep 3, 2025 · 2 filesMessage 68 · AdequateInformational 15Details
Commit message · jrakibi

Fix typos in deprecated method names

- Fix deprecation note: from_hex_string_no_length_prefix() → from_hex_no_length_prefix()
- Fix comment in script example: from_hex_string_prefixed → from_hex_prefixed

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

This commit fixes two typos in documentation and deprecation messages: one in a code example comment and one in a deprecation note telling users which new method to use. There is no code behavior change and no security impact.

Lower-priorityAdd a unit test for `sha3`by rustaceanrob · 55249345 · Sep 3, 2025 · 1 fileMessage 86 · StrongInformational 15Details
Commit message · rustaceanrob

Add a unit test for `sha3`

All tests are sourced from NIST via the Cryptographic Algorithm
Validation Program. They include namely:
1. the null data case
2. Input cases just above, equal, and below the rate block in bytes
3. Additional randomly sized vectors

ref: https://csrc.nist.gov/projects/cryptographic-algorithm-validation-program/secure-hashing

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

This commit only adds new test cases for the SHA3-256 hashing code. It does not change the actual hashing implementation, fix any bug, or alter how the library behaves in production. It simply verifies that the existing code produces the correct output for a set of standard test vectors from NIST.

Lower-priorityAdd the SHA3-256 hash functionby rustaceanrob · 5fa8a5d3 · Sep 3, 2025 · 4 filesMessage 76 · AdequateInformational 17Details
Commit message · rustaceanrob

Add the SHA3-256 hash function

There is a substantial amount of bitcoin listening nodes only reachable
by Tor. This is backed by some relatively old research, but I would
imagine this remains the case today. When it comes to peer-to-peer
gossip, Tor nodes are reachable by a 32-byte ed25519 public key. In
practice, most applications will run a Tor daemon, and other
applications will communicate with Tor via a Socks5 proxy. With Socks5,
you may connect to an IPv4, IPv6, or domain.

The problem is to go from Tor public key to onion address (domain), you
must take a Sha3-256 hash of a public key and some concatinated data. In
effect this makes Tor nodes unreachable for those that do not want to
use `RustCrypto` or god forbid the Arti project.

Here I propose we add this hash to `bitcoin_hashes`. While it is not
explicitly a hash used in bitcoin, many bitcoin nodes use Tor, and more
importantly, accept inbound connections using Tor. Others are of course
free to use this hash however their heart desires.

As far as implementation, from a high level, the hash is a number of
permutation operations on a state array of 1600 bits. These bits can be
visualized/represented as a 5x5 matrix of 64-bit "lanes." I will leave
the rest to the code comment in the file. The Keccak team designed this
function to be robust theoretically but easy to implement. Each of these
lanes may be mutated directly, and I also try to abuse `for_each` to
give SIMD hints. To review the implementation, you may follow the
psuedo-code provided by the Keccak team, linked below.

ref
Psuedo-code: https://keccak.team/keccak_specs_summary.html
Full Keccak reference: https://keccak.team/files/Keccak-reference-3.0.pdf
Tor spec: https://spec.torproject.org/rend-spec/encoding-onion-addresses.html
Tor post: https://archive.torproject.org/websites/lists.torproject.org/pipermail/tor-dev/2017-January/011816.html
P2P data: https://github.com/virtu/p2p-metrics

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

This commit adds a new SHA3-256 hashing implementation to the rust-bitcoin library's bitcoin_hashes crate. It is a feature addition intended to support computing Tor onion addresses from ed25519 public keys, not a fix for any known security issue. There is no evidence in the commit or supplied references that this change addresses a vulnerability or introduces one.

AI review queuedUpdate roadmap.mdby sashaodessa · 3e3a8dad · Sep 3, 2025 · 1 fileMessage 28 · OpaqueInformational 15Details
Commit message · sashaodessa

Update roadmap.md

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 is a one-word typo fix in the project's public planning document (roadmap.md), changing 'stabalize' to 'stabilize'. It does not modify any code, build configuration, tests, or documentation that affects how the software works. There is no security relevance.

Lower-priorityAdd encoding section to primitives 1.0.0 docby Tobin C. Harding · 485118f8 · Sep 2, 2025 · 1 fileMessage 60 · AdequateInformational 15Details
Commit message · Tobin C. Harding

Add encoding section to primitives 1.0.0 doc

Consensus encoding work is ongoing, add a quick and dirty section
linking to the discussion and initial work.

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

This commit only adds a documentation section to a planning markdown file. It adds links to an ongoing GitHub discussion and a pull request about consensus encoding. No code was changed, and there is no security relevance.

Lower-prioritydoc: Document primitives v1.0.0by Tobin C. Harding · ca1ada7d · Sep 2, 2025 · 1 fileMessage 68 · AdequateInformational 15Details
Commit message · Tobin C. Harding

doc: Document primitives v1.0.0

`primitives 1.0.0-rc.0` may or may not be done by the summit in
Nashville in 5 weeks.

- If it is: this document can serve as the first place folk look to
understand any design decisions we made and/or upgrade
considerations.
- If it is not: this document can serve as the canonical list of whats
left to do (any hard bits anyways).

Add a design document for the upcoming `primitives 1.0.0` release.

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

This commit only adds a Markdown design document describing future plans for the `bitcoin-primitives 1.0.0` release. It contains no code changes, no bug fixes, and no security-related behavior changes. It is purely documentation.

Lower-prioritybitcoin: add `push_int` and friends to `ScriptBuf`by Daniel Roberts · 395c6d0d · Sep 2, 2025 · 3 filesMessage 73 · AdequateInformational 15Details
Commit message · Daniel Roberts

bitcoin: add `push_int` and friends to `ScriptBuf`

Move the implementations of `push_int`, `push_int_non_minimal`, and
`push_int_unchecked` to `ScriptBuf` with copies of their current
documentation and make `script::Builder` call them.

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

This commit is a straightforward code reorganization. It moves functions that add integer-pushing instructions to Bitcoin scripts from one internal component (`script::Builder`) to another (`ScriptBuf`), then makes `Builder` call the new location. No behavior changes are visible to users, and no security bug is being fixed.

Lower-prioritybitcoin: add test for `push_int` with largest and smallest valid numbersby Daniel Roberts · a7265e86 · Sep 2, 2025 · 1 fileMessage 60 · AdequateInformational 15Details
Commit message · Daniel Roberts

bitcoin: add test for `push_int` with largest and smallest valid numbers

60/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Mentions testing or verification! No meaningful explanatory body
AI analysis · Informational 15/100

This commit only adds new test cases for two existing functions, `push_int` and `push_int_unchecked`, checking that they correctly encode the largest positive and negative 32-bit integers allowed by Bitcoin's script number rules. No production code was changed, so there is no security issue here.

Lower-prioritydocs: Add clause to import policy sectionby Tobin C. Harding · 1f46b8aa · Sep 2, 2025 · 1 fileMessage 57 · ThinInformational 15Details
Commit message · Tobin C. Harding

docs: Add clause to import policy section

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 only adds a documentation clause to the project's policy file. It explains that code should use re-exported types from the highest-level crate available rather than importing directly from lower-level crates. There is no code change, no security fix, and no functional impact.

Lower-priorityCI: Enforce policyby Tobin C. Harding · c0f5db26 · Sep 2, 2025 · 3 filesMessage 63 · AdequateInformational 15Details
Commit message · Tobin C. Harding

CI: Enforce policy

Recently we have started documenting repository coding policy in
`docs/policy.md` to help contributors.

Introduce a script that can be used to enforce the policy rules. At
this stage only enforce a subsection of import statement policy.

63/100 · AdequateMessage clarity
✓ Subject identifies a change✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
AI analysis · Informational 15/100

This commit adds a new automated CI check that enforces a coding style rule about how Rust import statements should be written. It does not change any production code, cryptographic logic, or network handling. There is no security vulnerability here.

Lower-priorityunits: Do not export hidden macrosby Tobin C. Harding · 9df7cb34 · Sep 2, 2025 · 7 filesMessage 68 · AdequateInformational 15Details
Commit message · Tobin C. Harding

units: Do not export hidden macros

These macros are no longer used outside of `units`. Lets not export
them - they are doc hidden already so this is not a breaking change.

With this applied there are no more exported macros in `units`.

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 cleanup in the Rust Bitcoin library. It stops exporting a few internal helper macros that were already marked as hidden from documentation. The macros are still used inside the crate, just not made available to outside users. There is no security bug being fixed here.

AI review queuedRe-name units::parse to parse_intby Tobin C. Harding · e40a8974 · Sep 2, 2025 · 18 filesMessage 80 · StrongInformational 15Details
Commit message · Tobin C. Harding

Re-name units::parse to parse_int

The `pares` module now only does one thing, parses strings (hex or
otherwise) to get integers. It can be re-named to `parse_int` to
better describe this and also so that when re-exported in `primitives`
and `bitcoin` the name is not misleading but nicely descriptive.

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 or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit is a simple rename of an internal Rust module from `parse` to `parse_int`. It does not change what the code does, only how it is named and where it appears in the public API. There is no security fix or behavior change.

Security candidateRename TxOut::value to amountby Tobin C. Harding · b620233a · Sep 2, 2025 · 18 filesMessage 76 · AdequateInformational 15Details
Commit message · Tobin C. Harding

Rename TxOut::value to amount

There is a draft naming BIP [0] and in it `amount` is favoured over
`value`. Since we are attempting to do a 1.0 stable release now is the
time to lock things like this.

Also consensus reached on this re-name in #1824

[0] https://github.com/murchandamus/bips/blob/2022-04-tx-terminology/bip-tx-terminology.mediawiki

76/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Why it was queued
cryptography-sensitive pathsigning or wallet path
AI analysis · Informational 15/100

This commit is a simple renaming of a field in the code from `value` to `amount` across many files. It does not change what the code does, how transactions are validated, or how bitcoins are counted. It is a cleanup change to match a proposed naming standard before the library reaches version 1.0.

Security candidateremove some pointer castsby Andrew Poelstra · 9b7e9202 · Sep 1, 2025 · 2 filesMessage 78 · AdequateInformational 18Details
Commit message · Andrew Poelstra

remove some pointer casts

I grepped the codebase for `as \*` and found a few places where we were
doing explicit pointer casts but we could've been using std methods. The
methods are safer because they don't allow changing mutability (unless
we use cast_const or cast_mut, which don't allow changing the type).

There are a few instances remaining where we cast to pointers to unsized
types. These are actually fat raw pointers and they don't have std
methods. Now they stand out because of the use of `as *`.

This commit might require a bit of thought to review, and it turns out
it has nothing to do with the MSRV bump (which gave us cast_const and
cast_mut, but actually we don't use those, thankfully..).

As a bit of trivia, though, the new cast_mut and cast_const methods were
originally proposed and implemented by our own Kixunil:

https://github.com/rust-lang/rust/pull/92657

78/100 · AdequateMessage clarity
✓ Descriptive subject✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Links an issue, advisory, or supporting reference
Why it was queued
cryptography-sensitive path
AI analysis · Informational 18/100

This commit is a small cleanup that replaces some old-style pointer type conversions with newer, safer Rust standard-library methods. It does not fix a known security bug, but it reduces the chance that a future code change accidentally introduces a dangerous pointer mistake. The actual behavior of the program should be unchanged.

Security candidateclippy: fix new clippy linksby Andrew Poelstra · 5a04527f · Sep 1, 2025 · 7 filesMessage 68 · AdequateInformational 11Details
Commit message · Andrew Poelstra

clippy: fix new clippy links

There is one `is_some_and` usage, but everything else is about using the
new `div_ceil` method. I didn't look closely at any of these but there were
a lot of them and I'll bet at least one was actually a panic bug that's
fixed now.

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

This commit is a routine code cleanup triggered by new warnings from the Rust linter (Clippy). It replaces hand-written 'round up to next multiple' calculations with Rust's newer built-in `div_ceil` method, and swaps one `map_or(false, ...)` for `is_some_and(...)`. The commit message itself jokes that at least one of these might have been a panic bug, but the actual diff shows no change in behavior or fix for a known crash. There is no disclosed security issue and no evidence this patch addresses an active vulnerability.

Lower-priorityinternals: update MSRV to 1.74by Andrew Poelstra · b90c4e86 · Sep 1, 2025 · 4 filesMessage 60 · AdequateInformational 15Details
Commit message · Andrew Poelstra

internals: update MSRV to 1.74

...and delete all conditional compilation based on earlier MSRVs.

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

This commit raises the minimum supported Rust compiler version for the `internals` crate from 1.63 to 1.74 and removes old conditional compilation workarounds. It is a routine maintenance change with no security-relevant behavior change.

AI review queuedrevert #4838 and #4847 using div_ceilby Andrew Poelstra · 2b38ffc2 · Sep 1, 2025 · 2 filesMessage 76 · AdequateLow 48Details
Commit message · Andrew Poelstra

revert #4838 and #4847 using div_ceil

In #4838 we used saturating addition to simulate `div_ceil`, which gives
incorrect results on extreme values but at least doesn't panic. Similar
in the followup PR #4847. (These aren't detected by clippy, but I remember
them.)

76/100 · AdequateMessage clarity
✓ 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 · Low 48/100

This commit fixes a subtle arithmetic bug in how Bitcoin fee rates and transaction weights are rounded up. The previous code tried to avoid crashes on extremely large numbers by using 'saturating addition,' but that produced slightly wrong rounded-up results for the maximum possible values. The patch replaces that workaround with Rust's proper div_ceil function, which gives the mathematically correct ceiling division even at the extremes. In practice, this mostly affects edge-case calculations with maximum values and is unlikely to be directly exploitable for theft, but it removes a source of incorrect fee/weight estimates.

Lower-prioritydocs: fix grammar issuesby radik878 · f3d963da · Sep 1, 2025 · 1 fileMessage 40 · ThinInformational 15Details
Commit message · radik878

docs: fix grammar issues

40/100 · ThinMessage clarity
✓ Subject identifies a change✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
documentation-only discount
AI analysis · Informational 15/100

This commit fixes two spelling mistakes in a Markdown documentation file ('stabalize' to 'stabilize' and 'effects' to 'affects'). It changes only documentation text and has no effect on program code, behavior, or security.

AI review queuedupdate MSRV to 1.74 everywhere except in internalsby Andrew Poelstra · c2ab0f73 · Sep 1, 2025 · 20 filesMessage 73 · AdequateInformational 15Details
Commit message · Andrew Poelstra

update MSRV to 1.74 everywhere except in internals

If I update it in internals, our uses of `rust_version!` with values below
1.74 break. In particular the cond_const! macro breaks. So I will do that
in the next commit, so the diff for this one is simple.

We may want to put some work into getting a single source of truth here...
I had to change this constant in 29 files, plus internals/Cargo.toml.

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
second-pass: unusually broad change
AI analysis · Informational 15/100

This commit is a routine maintenance change that raises the Minimum Supported Rust Version (MSRV) from Rust 1.63.0 to 1.74.0 across documentation, CI configuration, and package manifests. It does not change any code logic, cryptographic operations, or security behavior. It simply tells users and automated tooling that the project now requires a newer Rust compiler.

Security candidatedocs: fix typosby VolodymyrBg · 045f8f9b · Aug 31, 2025 · 1 fileMessage 40 · ThinInformational 15Details
Commit message · VolodymyrBg

docs: fix typos

40/100 · ThinMessage clarity
✓ Subject identifies a change✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
cryptography-sensitive pathdocumentation-only discount
AI analysis · Informational 15/100

This commit fixes two spelling mistakes in a documentation file (`docs/crypto.md`). It changes 'cryto' to 'crypto' and 'PriviateKey' to 'PrivateKey'. There are no code changes, no functional changes, and no security implications.

Lower-priorityAutomated update to Github CI to rustc nightly-2025-08-29by Update Nightly Rustc Bot · 87a947ab · Aug 30, 2025 · 1 fileMessage 50 · ThinInformational 15Details
Commit message · Update Nightly Rustc Bot

Automated update to Github CI to rustc nightly-2025-08-29

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI analysis · Informational 15/100

This commit simply updates the version of the Rust nightly compiler used by the project's GitHub CI from August 15, 2025 to August 29, 2025. It is a routine maintenance change with no security relevance.

Lower-prioritydocs: remove redundant "a" in CONTRIBUTING.mdby Tomass · d9bdd60a · Aug 28, 2025 · 1 fileMessage 57 · ThinInformational 15Details
Commit message · Tomass

docs: remove redundant "a" in CONTRIBUTING.md

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 fixes a minor typo in the project's contribution guidelines, removing an extra word 'a'. It does not change any code, build system, or configuration.