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 48 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 queuedRemove From<SubError> for Error implsby busayo-OD · 39c6e225 · Mar 24, 2026 · 7 filesMessage 45 · ThinInformational 17Details
Commit message · busayo-OD

Remove From<SubError> for Error impls

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 17/100

This commit removes automatic conversion traits (From implementations) that let sub-errors be silently turned into parent errors. It replaces them with explicit error wrapping at each call site. This is a code-quality and API-clarity change, not a security fix. There is no evidence in the commit message or diff that it addresses a vulnerability, exploit, or bug that could affect users.

AI review queuedRun the formatterby Mitchell Bagot · 1b962b50 · Mar 24, 2026 · 5 filesMessage 28 · OpaqueTriage 0Details
Commit message · Mitchell Bagot

Run the formatter

28/100 · OpaqueMessage clarity
✓ Subject identifies a change! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI review queuedconsensus_encoding: Error on byte-less end for VecDecoderby Mitchell Bagot · 4d6e7554 · Mar 23, 2026 · 1 fileMessage 73 · AdequateTriage 7Details
Commit message · Mitchell Bagot

consensus_encoding: Error on byte-less end for VecDecoder

In the existing encoding, Vec<T> would error when attempting to decode
an empty byte slice (i.e. one without a length prefix). In the new
consensus_encoding crate, a VecDecoder successfully decodes a
completely empty byte slice as 0 length Vec<T>. This difference in
behaviour manifests in various decoders throughout the stack and thus
results in differences in decoding behaviour.

Throw Eof error in VecDecoder::end() if no length prefix has been
provided to the decoder.

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
parser or protocol pathsecond-pass: security-sensitive path
AI review queuedprimitives: Update API filesby Mitchell Bagot · da3f0930 · Mar 23, 2026 · 3 filesMessage 35 · OpaqueTriage 0Details
Commit message · Mitchell Bagot

primitives: Update API files

35/100 · OpaqueMessage clarity
✓ Descriptive subject! No meaningful explanatory body
Why it was queued
documentation-only discountsecond-pass: opaque commit message
AI review queuedprimitives: Add Default and new to all decodersby Mitchell Bagot · 9804591b · Mar 23, 2026 · 2 filesMessage 80 · StrongInformational 15Details
Commit message · Mitchell Bagot

primitives: Add Default and new to all decoders

In order to simplify composition of decoder types, the Default trait
and new() function should be provided for all decoder types.

Add Default and new to BlockDecoder, HeaderDecoder, TxInDecoder and
TxOutDecoder.

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 adds convenient ways to create certain Bitcoin data decoders (Default and new()) in the rust-bitcoin library. It does not change how data is parsed or validated, and there is no indication it fixes or introduces a security problem.

AI review queuedprimitives: Convert encoders to ExactSizeEncoderby Mitchell Bagot · 35c6e004 · Mar 21, 2026 · 3 filesMessage 68 · AdequateInformational 19Details
Commit message · Mitchell Bagot

primitives: Convert encoders to ExactSizeEncoder

For encoders, the use of the encoder_newtype_exact macro allows for the
implementation of the ExactSizeEncoder trait. This provides users with
the ability to determine the encoding length of types without needing
to perform the entire encoding process. The TxIn and TxOut encoders in
primitives can be made ExactSizeEncoders but are currently not.

Replace uses of encoder_newtype with encoder_newtype_exact for TxIn and
TxOut encoder types.

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

This is a routine library improvement that lets users ask 'how many bytes will this transaction input/output take up when encoded?' without actually encoding it. It adds a length method to two encoder types by switching to a macro that supports exact-size encoders. There is no security bug being fixed and no indication this change addresses any vulnerability.

AI review queuedinternals, hashes, primivties: clean up optional depsby Nick Johnson · cecf021c · Mar 20, 2026 · 3 filesMessage 85 · StrongTriage 0Details
Commit message · Nick Johnson

internals, hashes, primivties: clean up optional deps

If you use the `dep:OPTIONAL_DEP` syntax in a package's feature, then
the implicit feature flag for the optional dependency is disabled. No need
to tell end users to avoid it.

85/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode
Why it was queued
second-pass: broader security terminology
AI review queuedRe-export serde and arbitrary when they appear in public APIby Mitchell Bagot · e59a0040 · Mar 19, 2026 · 7 filesMessage 85 · StrongTriage 0Details
Commit message · Mitchell Bagot

Re-export serde and arbitrary when they appear in public API

In various crates, we have types from external crates in the public
APIs, such as serde's Serialize or arbitrary's Arbitrary. In order to
simplify dependency handling, we should re-export these crates which
have types appearing in the public API.

Add pub extern crate for serde and arbitrary in bitcoin, network, p2p,
units and primitives as needed.

85/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode
Why it was queued
second-pass: broader security terminology
AI review queuedapi: update for CompactSizeU64Decoderby Nick Johnson · 85a6da3a · Mar 18, 2026 · 5 filesMessage 35 · OpaqueTriage 0Details
Commit message · Nick Johnson

api: update for CompactSizeU64Decoder

35/100 · OpaqueMessage clarity
✓ Descriptive subject! No meaningful explanatory body
Why it was queued
documentation-only discountsecond-pass: opaque commit message
AI review queuedconsensus_encoding: move compact size into its own moduleby Nick Johnson · a06bf033 · Mar 18, 2026 · 4 filesMessage 65 · AdequateTriage 7Details
Commit message · Nick Johnson

consensus_encoding: move compact size into its own module

Public API is unchanged; lib.rs re-exports all the same types.

65/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Why it was queued
parser or protocol pathsecond-pass: security-sensitive path
AI review queuedunits: Add hex parsing for Amount and SignedAmountby Mitchell Bagot · 7abbd16f · Mar 18, 2026 · 3 filesMessage 73 · AdequateInformational 12Details
Commit message · Mitchell Bagot

units: Add hex parsing for Amount and SignedAmount

The Amount and SignedAmount types are numeric wrapper types that should
include functionality for parsing from hex. Since the types can error
during construction for non-hex reasons, the existing ParseAmountError
needs to be extended

Add additional variants to ParseAmountErrorInner to handle hex parsing.
Introduce from_hex and from_hex_unprefixed to Amount and SignedAmount.

73/100 · AdequateMessage clarity
✓ Specific, 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 12/100

This commit adds new public functions that let users create Bitcoin amount values from hexadecimal strings. It is a feature addition, not a fix for a known bug or vulnerability. There is no evidence in the commit or supplied references that this change addresses a security issue.

AI review queuedp2p: add version message encoder/decoderby yancy · 0a183542 · Mar 17, 2026 · 1 fileMessage 78 · AdequateTriage 0Details
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 review queuedUpdate the API filesby Tobin C. Harding · 3388e573 · Mar 16, 2026 · 1 fileMessage 28 · OpaqueTriage 0Details
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 review queuedMove script hexification functions to primitivesby Tobin C. Harding · 829a4ff7 · Mar 16, 2026 · 5 filesMessage 78 · AdequateTriage 0Details
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 review queuedbitcoin: Replace script hex decoding with new consensus crateby Tobin C. Harding · 545f73eb · Mar 16, 2026 · 1 fileMessage 73 · AdequateTriage 0Details
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 review queuedRemove honggfuzz inputsby Shing Him Ng · 9a1149fd · Mar 16, 2026 · 438 filesMessage 43 · ThinInformational 15Details
Commit message · Shing Him Ng

Remove honggfuzz inputs

We have switched over to libfuzzer, so these honggfuzz inputs are no
longer needed

43/100 · ThinMessage clarity
✓ Subject identifies a change✓ Provides an explanatory body
Why it was queued
fuzzing or regression evidencesigning or wallet pathsecond-pass: unusually broad changesecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit simply deletes old fuzzing test input files that were used with the honggfuzz tool. The project has switched to a different fuzzer (libfuzzer), so these files are no longer needed. No code changes were made, and there is no security fix or vulnerability introduced.

AI review queuedFix decoder and encoder re-exportsby Mitchell Bagot · d427a7ff · Mar 16, 2026 · 6 filesMessage 90 · StrongInformational 18Details
Commit message · Mitchell Bagot

Fix decoder and encoder re-exports

The bitcoin crate should always be a superset of primitives, and
primitives a superset of units. Due to a filter check in
generate-bitcoin-re-export-test.sh, encoder and decoder types and their
associated errors are not being caught missing from bitcoin.

Remove the encoder/decoder type filter and add pub use (re-exports) to
generate-bitcoin-re-export-test.sh and correctly re-export all required
types.
Add pub use check to primitives re-export script.

90/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Mentions testing or verification
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 18/100

This commit fixes missing public re-exports of encoder/decoder types and their error types in the rust-bitcoin crate. It is a packaging/API consistency fix: the bitcoin crate is meant to expose everything primitives exposes, and primitives everything units exposes. The change adds those missing re-exports and updates the test scripts that check this property. There is no indication of a runtime vulnerability, memory corruption, or exploit path.

AI review queuedFix decoder error Display and source implsby busayo-OD · 7bfeae68 · Mar 13, 2026 · 6 filesMessage 45 · ThinInformational 18Details
Commit message · busayo-OD

Fix decoder error Display and source impls

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 18/100

This commit fixes how several Bitcoin data-decoding error types print messages and report their underlying cause. The changes are cosmetic/correctness improvements to error formatting and the `source()` chain used by Rust's standard error handling. There is no evidence of a security vulnerability, remote exploit, or memory-safety bug in the diff.

AI review queuedhashes: Introduce hex stable and remove unecessary uses of hex_unstableby Mitchell Bagot · ba7cab15 · Mar 11, 2026 · 11 filesMessage 73 · AdequateTriage 0Details
Commit message · Mitchell Bagot

hashes: Introduce hex stable and remove unecessary uses of hex_unstable

The hashes crate provides various cross-crate macros, which expose
unstable hash errors in the public API of the crates that use them. In
order to remove these unstable errors from the bitcoin API, the hashes
crate needs to use stable hex_conservative errors in these macros.

Introduce hex_conservative 1.0.0 as a dependency for hashes and replace
uses of FromHex with decode_to_vec and decode_to_array.

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 review queuedp2p: Introduce hex stable and remove unecessary uses of hex_unstableby Mitchell Bagot · 26ccfd92 · Mar 11, 2026 · 7 filesMessage 73 · AdequateTriage 0Details
Commit message · Mitchell Bagot

p2p: Introduce hex stable and remove unecessary uses of hex_unstable

While the p2p crate doesn't directly expose unstable hex errors, it has
various uses of the unstable hex crate where the stable hex crate would
be sufficient.

Introduce hex_conservative 1.0.0 as a dependency for p2p and replace
uses of FromHex with decode_to_vec and decode_to_array.

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 review queuedAdd missing license commentby Jamil Lambert, PhD · 3dff2d7c · Mar 11, 2026 · 1 fileMessage 35 · OpaqueTriage 0Details
Commit message · Jamil Lambert, PhD

Add missing license comment

35/100 · OpaqueMessage clarity
✓ Descriptive subject! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI review queuedAdd missing doc inlineby Jamil Lambert, PhD · 1df9d49e · Mar 11, 2026 · 1 fileMessage 28 · OpaqueTriage 0Details
Commit message · Jamil Lambert, PhD

Add missing doc inline

28/100 · OpaqueMessage clarity
✓ Subject identifies a change! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI review queuedconsensus_encoding: Introduce decode_from_slice_unboundedby Mitchell Bagot · 7ee482c1 · Mar 11, 2026 · 7 filesMessage 63 · AdequateTriage 7Details
Commit message · Mitchell Bagot

consensus_encoding: Introduce decode_from_slice_unbounded

The old consensus code deserialize function returned an error when
decoding failed to consume all bytes in the input slice. The new
nearest-equivalent function, decode_from_slice, does not error on
unconsumed bytes.

Introduce decode_from_slice_unbounded which errors on unconsumed bytes.
Adjust decode_from_slice to error on unconsumed bytes.
Introduce DecodeError type to specify decoder vs unconsumed bytes
errors for decode_from_slice.

63/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Provides detailed explanatory context
Why it was queued
parser or protocol pathsecond-pass: broader security terminologysecond-pass: security-sensitive path
AI review queuedp2p: add serde impls for FilterHash and FilterHeaderby busayo-OD · 5e968d57 · Mar 10, 2026 · 5 filesMessage 65 · AdequateTriage 0Details
Commit message · busayo-OD

p2p: add serde impls for FilterHash and FilterHeader

p2p: update lock files for serde dependency

65/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Why it was queued
second-pass: broader security terminology
AI review queuedAdd serde support for Vec<(Signed)Amount>by Jamil Lambert, PhD · c104a521 · Mar 10, 2026 · 2 filesMessage 78 · AdequateTriage 0Details
Commit message · Jamil Lambert, PhD

Add serde support for Vec<(Signed)Amount>

Expand the serde module to also support Vec<Amount> and
Vec<SignedAmount>.

Add tests of the Vec serialization and
deserialization.

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