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 queue563AI analyses
189commits · 30 days
404commits · 60 days
1283commits · 180 days
2064commits · 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 Bagot640192232068
Tobin C. Harding4096580063
jrakibi944954068
Nick Johnson1892027059
Andrew Poelstra512020075
Jamil Lambert, PhD1141830061
Fmt Bot311416045
Trevor Arjeski111111069
Shing Him Ng31710056
Ismail Daif2267050
satsfy (Renato Britto)1768066
Martin Habovstiak2759069
Analysis record

Published AI watches

Last scanned 45 minutes ago

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 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 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 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 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
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 20 AI analysisMessage 68 · Adequate
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

units: make Sequence inner field private

This commit makes a single internal number field private in a Rust Bitcoin library type called Sequence. It is an API-cleanup change to follow Rust naming conventions (C-STRUCT-PRIVATE). It does not fix a memory corruption bug, a cryptogra…

No security signal: this is an API-encapsulation refactorNo validation or serialization logic changedNo unsafe code, no cryptographic operations modified
30f280daby satsfy (Renato Britto)+9−96 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 80 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

ci: update cargo-rbmt ever month instead of week

This commit simply renames a GitHub Actions workflow file and changes its schedule from weekly to monthly. It is a routine CI maintenance change with no security relevance.

778018e1by Nick Johnson+46−461 file
No security note in commit
Informational 18 AI analysisMessage 68 · Adequate
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Use generic arguments for functions

This commit is a routine API cleanup: it makes a few Bitcoin merkle-root functions accept a broader range of input types (generic iterators and borrowed transactions) instead of only slices or exact iterator types. There is no security bug…

e887140aby Mitchell Bagot+26−184 files
No security note in commit
Informational 19 AI analysisMessage 68 · Adequate
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

units: Flatten nested checked_ops methods

This commit is a straightforward code cleanup in the rust-bitcoin library. It replaces deeply nested match blocks with newer, cleaner Rust syntax (let-else statements) inside safe arithmetic helper functions. The actual behavior of the cod…

99f3721dby Abeeujah+53−1274 files
No security note in commit
Informational 15 AI analysisMessage 23 · Opaque
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

primitives: Remove todo

This commit only changes a code comment. It replaces a developer TODO note with a short explanation that the code is verbose because it implements a state machine. No code behavior, logic, or security properties changed.

e62e553dby Tobin C. Harding+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.

AI review queuedUse TxInEncoder for TxIn encodingby Abeeujah · ef12ebee · Jun 30, 2026 · 1 fileMessage 68 · AdequateInformational 15Details
Commit message · Abeeujah

Use TxInEncoder for TxIn encoding

TxIn has a TxInEncoder newtype for consensus encoding TxIn
objects, but the Encode implementation currently uses a bare
Encoder3.

This fails to properly encapsulate the inner state of the
TxIn type and its encoding behavior. Switch the implementation
to use TxInEncoder.

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 is a small internal code cleanup in the rust-bitcoin library. It changes how transaction input (TxIn) objects are prepared for serialization so they use a dedicated wrapper type (TxInEncoder) instead of a generic three-field encoder. The commit message frames this as better encapsulation, but the diff itself only shows a refactor with no change to the actual serialized bytes or to public behavior. There is no direct evidence of a security vulnerability being fixed.

Lower-priorityUse BlockEncoder for Block encodingby Abeeujah · 7393b06c · Jun 30, 2026 · 1 fileMessage 68 · AdequateTriage 0Details
Commit message · Abeeujah

Use BlockEncoder for Block encoding

Block has a BlockEncoder newtype for consensus encoding Block
objects, but the Encode implementation currently uses a bare
Encoder3.

This fails to properly encapsulate the inner state of the
Block type and its encoding behavior. Switch the implementation
to use BlockEncoder.

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
AI review queuedUpdate API filesby Abeeujah · 1fdb9c65 · Jun 30, 2026 · 2 filesMessage 28 · OpaqueTriage 0Details
Commit message · Abeeujah

Update API files

28/100 · OpaqueMessage clarity
✓ Subject identifies a change! No meaningful explanatory body
Why it was queued
documentation-only discountsecond-pass: opaque commit message
AI review queuedUpdate API filesby Mitchell Bagot · a074762e · Jun 30, 2026 · 1 fileMessage 28 · OpaqueTriage 0Details
Commit message · Mitchell Bagot

Update API files

28/100 · OpaqueMessage clarity
✓ Subject identifies a change! No meaningful explanatory body
Why it was queued
documentation-only discountsecond-pass: opaque commit message
AI review queuedClose FromHexErrorby Mitchell Bagot · f0e8e7bc · Jun 30, 2026 · 4 filesMessage 41 · ThinInformational 18Details
Commit message · Mitchell Bagot

Close FromHexError

The FromHexError is currently unreleased but is necessary for hex
functionality. Since it is not ready for 1.0 as an enum, it should be
enclosed in a private struct as is typical for error types from units,
primitives, etc.

Rename FromHexError enum to FromHexErrorInner and add a new
FromHexError struct to privately wrap the inner enum.

41/100 · ThinMessage clarity
✓ Subject identifies a change✓ Provides detailed explanatory context! Too few words to establish purpose
Why it was queued
signing or wallet pathparser or protocol pathsecond-pass: security-sensitive path
AI analysis · Informational 18/100

This commit is a routine API design change, not a security fix. It renames an internal error enum and wraps it in a private struct so the library can keep the error type flexible before its first stable release. No vulnerability is patched and no exploit is possible.

Lower-priorityconsensus_encoding: Adjust ConsensusHex impl in serde_as_consensusby Mitchell Bagot · aad85d1e · Jun 30, 2026 · 1 fileMessage 73 · AdequateTriage 0Details
Commit message · Mitchell Bagot

consensus_encoding: Adjust ConsensusHex impl in serde_as_consensus

The ConsensusHex Display impl in serde_as_consensus currently uses the
EncoderByteIter. While this functions correctly, it is inefficient as
it repeatedly calls current_chunk internally to fetch successive chars
as well as writing to the Formatter one char at a time. Instead, the
DisplayHex trait can be used to dump entire chunks at a time.

Adjust ConsensusHex Display impl in serde_as_consensus to write using
DisplayHex rather than char-by-char with EncoderByteIter.

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Lower-priorityAdd ExactSizeEncoder impl for Option<T: ExactSizeEncoder>by Mitchell Bagot · 574415ea · Jun 30, 2026 · 5 filesMessage 73 · AdequateTriage 0Details
Commit message · Mitchell Bagot

Add ExactSizeEncoder impl for Option<T: ExactSizeEncoder>

Currently, there exists an Encoder impl for Option<T: Encoder>. Since
ExactSizeEncoder can be useful, there is no reason not to include an
ExactSizeEncoder impl for Option<T: ExactSizeEncoder> also.

Add ExactSizeEncoder impl for Option<T: ExactSizeEncoder>.

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Security candidateReplace uses of bitcoin::consensus with consensus_encodingby Mitchell Bagot · 22cf8fb6 · Jun 29, 2026 · 6 filesMessage 73 · AdequateLow 33Details
Commit message · Mitchell Bagot

Replace uses of bitcoin::consensus with consensus_encoding

Throughout the bitcoin code, there are various uses of the old encoding
traits used to implement functionality. With the introduction of the
new encoding and decoding implementations, all of these can be replaced
with the new implementations to remove the dependency on bitcoin.

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 · Low 33/100

This commit swaps out an older Bitcoin data-encoding system for a newer one across six files. It is a routine internal refactoring change. There is no direct evidence in the commit that it fixes a security vulnerability, but any encoding change in consensus-critical code carries a small risk that a subtle behavior difference could affect transaction or block validation. The commit message and diff do not describe any security issue or credit a researcher.

AI review queuedAdjust fuzz targets to use consensus_encodingby Mitchell Bagot · f5041528 · Jun 29, 2026 · 9 filesMessage 78 · AdequateInformational 15Details
Commit message · Mitchell Bagot

Adjust fuzz targets to use consensus_encoding

Various fuzz targets use the old consensus code for serialisation and
deserialisation. Since we want to remove this consensus code, the fuzz
targets must be updated.

Replace all uses of old consensus code in fuzz targets with
consensus_encoding.

78/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
Why it was queued
fuzzing or regression evidencesigning or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit only updates internal fuzz-testing code to use a newer serialization API (consensus_encoding) instead of an older one being removed. It does not change the library's runtime behavior or fix any security bug.

Security candidateReplace uses of consensus in testsby Mitchell Bagot · 171f6661 · Jun 29, 2026 · 7 filesMessage 78 · AdequateInformational 15Details
Commit message · Mitchell Bagot

Replace uses of consensus in tests

As with the uses of consensus::encode in the main code, the uses in the
tests and doctest examples can also be replaced.

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

This commit only changes test code and documentation examples in the rust-bitcoin library. It replaces older consensus encoding/decoding helper functions with newer equivalents from a different internal module. There is no change to production code, no bug fix, and no security-relevant behavior change.

Security candidateReplace use of con_serde in sighash testby Mitchell Bagot · 09d0c9df · Jun 29, 2026 · 2 filesMessage 78 · AdequateInformational 15Details
Commit message · Mitchell Bagot

Replace use of con_serde in sighash test

The bip_341_sighash_tests test in sighash relies on con_serde to hex
decode a transaction in the test data. Since we want to remove old
consensus logic, con_serde will not be available. As such, this test
should be modified to use consensus_encoding's decode_from_hex.

Add hex feature to consensus_encoding dependency in bitcoin.
Replace use of con_serde in bip_341_sighash_tests test with
decode_from_hex.

78/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
Why it was queued
cryptography-sensitive path
AI analysis · Informational 15/100

This commit is a routine internal test refactor. It swaps one test-only helper for another so that a unit test can still decode hex transaction data after an older helper is removed. There is no change to production code or to how real transactions are handled.

Lower-priorityRemove old consensus code from examplesby Mitchell Bagot · d5cbd077 · Jun 29, 2026 · 3 filesMessage 68 · AdequateTriage 0Details
Commit message · Mitchell Bagot

Remove old consensus code from examples

Various examples in bitcoin use old consensus code but should instead
make use of the modern consensus_encoding functionality. This also
provides users with a demonstration on how to use the new logic as
opposed to the old.

Replace all uses of consensus in examples with new consensus_encoding
functionality.

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Security candidateAdd XOnlyPublicKey::verifyby Mitchell Bagot · 8a5deee2 · Jun 29, 2026 · 1 fileMessage 73 · AdequateInformational 18Details
Commit message · Mitchell Bagot

Add XOnlyPublicKey::verify

At present, users who wish to verify a message with a Schnorr signature
need to use the secp256k1 library directly. Since Legacy/FullPublicKey
already provide verify functions for ECDSA, XOnlyPublicKey should
provide a similar function for Schnorr.

Add XOnlyPublicKey::verify to Schnorr verify messages with a
taproot::Signature.

73/100 · AdequateMessage clarity
✓ Descriptive subject✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Names security-relevant behavior explicitly
Why it was queued
signing boundarycryptography-sensitive path
AI analysis · Informational 18/100

This commit adds a new convenience method, XOnlyPublicKey::verify, that lets users verify Schnorr (taproot) signatures without calling the underlying secp256k1 library directly. It is a straightforward API addition with no obvious security bug; it simply wraps the existing, well-tested secp256k1 Schnorr verification routine.

Security candidateMove TapTweak trait to taproot-primitivesby Mitchell Bagot · 6912358e · Jun 29, 2026 · 2 filesMessage 68 · AdequateInformational 15Details
Commit message · Mitchell Bagot

Move TapTweak trait to taproot-primitives

The TapTweak trait is necessary for WitnessProgram::p2tr and thus
Address::p2tr. With from_key_and_merkle_root moved back to
taproot-primitives, this trait can now be moved alongside it and
and later used in addresses.

Move TapTweak trait to taproot-primitives.

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 code reorganization. It moves the TapTweak trait and its implementations from the main bitcoin crate into a smaller taproot-primitives crate. The actual logic for tweaking Taproot keys is copied unchanged; only its location in the codebase changes. There is no security bug being fixed or introduced.

Lower-priorityprimitives: Implement ExactSizeEncoder for WitnessEncoderby awn · 8a3c27d9 · Jun 26, 2026 · 3 filesMessage 83 · StrongTriage 0Details
Commit message · awn

primitives: Implement ExactSizeEncoder for WitnessEncoder

WitnessEncoder wraps Encoder2<CompactSizeEncoder, BytesEncoder>. Both inner
encoders implement ExactSizeEncoder, but WitnessEncoder only manually
implemented Encoder and was therefore missing an ExactSizeEncoder impl for
no reason.

The manual struct definition and Encoder impl is replaced with the
encoder_newtype_exact! macro, consistent with the other encoder newtypes in
the codebase. This adds the missing ExactSizeEncoder implementation.

Also add a test asserting that the encoder's reported length matches the
actual encoded length, including the CompactSize one-byte boundary for both
element length and element count.

83/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
AI review queuedhashes: update API filesby jrakibi · 6c0f1ea5 · Jun 26, 2026 · 3 filesMessage 28 · OpaqueTriage 0Details
Commit message · jrakibi

hashes: update API files

28/100 · OpaqueMessage clarity
✓ Subject identifies a change! No meaningful explanatory body
Why it was queued
documentation-only discountsecond-pass: opaque commit message
Lower-priorityhashes: Add with_input method to HashEngineby jrakibi · 641d75b3 · Jun 26, 2026 · 1 fileMessage 60 · AdequateTriage 0Details
Commit message · jrakibi

hashes: Add with_input method to HashEngine

this is the same as input but takes and returns self,
which allows calls to be chained without a mutable variable.

60/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Security candidateReplace dyn fmt::Write with fmt::Formatterby Mitchell Bagot · 22da6c4f · Jun 26, 2026 · 3 filesMessage 68 · AdequateInformational 15Details
Commit message · Mitchell Bagot

Replace dyn fmt::Write with fmt::Formatter

In Rust, the dyn keyword for a function parameter provides generic-like
functionality for a parameter. However, unlike impl or a generic, dyn
enables dynamic dispatch for the function, preventing inlining by the
compiler. Since all such uses of dyn fmt::Write are used with formatter
anyway, the dynamic dispatch cost can be eliminated by replacing the
dyn param with a fmt::Formatter type.

Replace dyn fmt::Write with fmt::Formatter in all non-deprecated
functions.

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 performance and code-quality refactor. It replaces dynamically-dispatched formatter parameters with concrete Rust formatter types so the compiler can inline the code. There is no security-relevant change: no new inputs are accepted, no validation logic changes, and no sensitive data handling is altered.

AI review queuedfuzz: rename old_bitcoin to bitcoin_0_32by Nick Johnson · e739ebb8 · Jun 25, 2026 · 10 filesMessage 55 · ThinInformational 15Details
Commit message · Nick Johnson

fuzz: rename old_bitcoin to bitcoin_0_32

55/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Mentions testing or verification! No meaningful explanatory body
Why it was queued
fuzzing or regression evidencesigning or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit is a simple renaming of a dependency alias used only in fuzz testing code. It changes 'old_bitcoin' to 'bitcoin_0_32' throughout the fuzz test suite and generation script. There is no change to production code, no security fix, and no vulnerability introduced.

AI review queuedfuzz: migrate 0.32.x fuzz targets to masterby Nick Johnson · f01340ee · Jun 25, 2026 · 13 filesMessage 78 · AdequateInformational 15Details
Commit message · Nick Johnson

fuzz: migrate 0.32.x fuzz targets to master

Centralize all fuzz infra on the master branch, including targets from
the LTS 0.32.x branch. This should make the infra and targets easier to
maintain, and they will probably be run more often in practice here.

The 0.32.x targets were migrated from hongfuzz to master's libfuzzer.

78/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
Why it was queued
fuzzing or regression evidencesigning or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit only adds and reorganizes fuzz testing code. It brings older 0.32.x fuzz targets onto the master branch and switches them from hongfuzz to libfuzzer. There are no changes to production library code, so ordinary users of the crate are not affected and no new security vulnerability is introduced.

AI review queuedconsensus_encoding: always enable alloc for serdeby Nick Johnson · d6730d68 · Jun 24, 2026 · 3 filesMessage 68 · AdequateTriage 0Details
Commit message · Nick Johnson

consensus_encoding: always enable alloc for serde

Since there is no "collect_bytes" exposed in serde, an allocation is
unavoidable for non-human-readable serialization. Make the alloc
dependency explicit in the feature declaration.

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
second-pass: broader security terminology
Lower-priorityAdd recent 0.32.x releases to relevant changelogsby Nick Johnson · 0c39a2bd · Jun 24, 2026 · 5 filesMessage 60 · AdequateTriage 0Details
Commit message · Nick Johnson

Add recent 0.32.x releases to relevant changelogs

The `[YANKED]` tag is following the keep-a-changelog convention.

60/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Why it was queued
documentation-only discount
Lower-priorityhashes: fix tag name in sha256t_tag macro docsby jrakibi · bb887edb · Jun 24, 2026 · 1 fileMessage 76 · AdequateTriage 0Details
Commit message · jrakibi

hashes: fix tag name in sha256t_tag macro docs

The sha256t_tag! macro referred to `$hash_name`, which does not exist, so every
generated tag showed "The tag used for [`$hash_name`]" in its docs.

eg: https://docs.rs/bitcoin-taproot-primitives/0.1.0/bitcoin_taproot_primitives/

76/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Security candidateAdd tests to verify 0 return for overflowby Mitchell Bagot · 4ee43312 · Jun 24, 2026 · 1 fileMessage 83 · StrongInformational 12Details
Commit message · Mitchell Bagot

Add tests to verify 0 return for overflow

Following the previous change to Target::from_compact, the tests should
be updated to confirm the 0 for overflow, and also to check the
boundary values for the overflow.

Add and adjust pow unit tests to check the overflow logic if
Target::from_compact.

83/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Names security-relevant behavior explicitly
Why it was queued
memory safety
AI analysis · Informational 12/100

This commit only adds new unit tests to verify that a previously changed function, Target::from_compact, returns zero when a Bitcoin 'compact' difficulty value overflows a 256-bit target. It does not change any production code. The tests confirm the overflow behavior and check values right at the overflow boundary.

Security candidateReturn 0 on Target::from_compact overflowby Mitchell Bagot · 1fb9a651 · Jun 24, 2026 · 1 fileMessage 73 · AdequateModerate 59Details
Commit message · Mitchell Bagot

Return 0 on Target::from_compact overflow

Currently, the Target::from_compact function treats a negative mantissa
as a failure mode and returns a Target value of zero. This lines up
with Core's SetCompact, which sets a pfNegative flag in the same case.
In Core, a pfOverflow flag is similarly set in overflow cases, and in
every case where a negative flag is treated as a failure, the overflow
is too. As such, our implementation should also return Target::ZERO in
the overflow case as it does for the negative case.

Return Target::ZERO for mantissa/exponent values which overflow in
Target::from_compact.

73/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Names security-relevant behavior explicitly
Why it was queued
memory safety
AI analysis · Moderate 59/100

This commit fixes a bug in how rust-bitcoin converts Bitcoin 'compact' difficulty targets into full numeric Target values. Previously, if the compact value encoded a number too large to fit in a valid Target, the code would silently produce a truncated/wrapped result instead of treating it as invalid. The fix makes overflow behave like an invalid negative mantissa: return zero. This aligns the library with Bitcoin Core's consensus behavior, reducing the risk of consensus divergence or incorrect difficulty calculations.