RB
← All projectsRust Bitcoin

rust-bitcoin

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

BitcoinCryptographic librariesNormal
Repository coverage

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

524security candidates506second-pass queue2193AI analyses
147commits · 30 days
304commits · 60 days
1150commits · 180 days
2055commits · 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.

66/100 average clarity
489Strong · 80–100
1083Adequate · 60–79
566Thin · 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 Bagot649193645068
Andrew Poelstra21072145089
Tobin C. Harding41566410063
jrakibi944994068
Nick Johnson19121190060
Jamil Lambert, PhD11919116061
satsfy (Renato Britto)381527066
Fmt Bot331431045
Trevor Arjeski111111069
Shing Him Ng31731056
Ismail Daif22622050
Martin Habovstiak28527069
Analysis record

Published AI watches

Last scanned 41 minutes ago

Informational 15 AI analysisMessage 96 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6909: build(deps): bump actions/labeler from 6.2.0 to 7.0.0

This commit updates a GitHub Actions automation tool (actions/labeler) used to automatically tag pull requests with labels. It is a routine dependency version bump from 6.2.0 to 7.0.0, with no indication of a security fix or vulnerability.…

4ed7c068by Andrew Poelstra+1−11 file
No security note in commit
Informational 15 AI analysisMessage 96 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6910: build(deps): bump actions/checkout from 7.0.0 to 7.0.1

This commit is a routine update to the GitHub Actions checkout tool used by the project's automated workflows. It only changes version numbers in configuration files and does not alter the actual Bitcoin library code that users run. There …

328c4ae9by Andrew Poelstra+37−3717 files
No security note in commit
Informational 15 AI analysisMessage 100 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6911: build(deps): bump astral-sh/setup-uv from 8.3.2 to 9.0.0

This commit updates a GitHub Actions helper used to install a Python tool called uv, which runs the zizmor security scanner. The change only bumps the pinned version of the helper from 8.3.2 to 9.0.0. The new version's release notes mentio…

No security-relevant signals in commit or upstream release notesDependency bump in CI only, not in library codeNo CVE or advisory referenced
67600795by Andrew Poelstra+2−22 files
No security note in commit
Informational 15 AI analysisMessage 96 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6912: build(deps): bump github/codeql-action/upload-sarif from 4.37.0 to 4.37.3

This is a routine Dependabot update that changes the pinned version of GitHub's official CodeQL upload-sarif action from 4.37.0 to 4.37.3 in a single CI workflow. The action only uploads static analysis results to GitHub; it does not touch…

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

Merge rust-bitcoin/rust-bitcoin#6913: build(deps): bump dtolnay/rust-toolchain from 6c977a6ca4077a0ceb28ffbe03f59d46e9ac8772 to 02cb101ec7c40f2c49e1d9714d64511d8e1b74de

This is a routine update to a GitHub Actions helper used to install Rust during automated testing. It only changes the pinned version of the dtolnay/rust-toolchain action in workflow files. There is no change to the actual rust-bitcoin lib…

90330d15by Andrew Poelstra+8−84 files
No security note in commit
Informational 20 AI analysisMessage 100 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6906: consensus_encoding, primitives: expose exact encoding size for block and transaction

This commit adds a way to ask, in advance, exactly how many bytes a Bitcoin block or transaction will take when serialized. It is a feature addition for the library's encoding system, not a fix for a vulnerability. There is no indication i…

No security-relevant signals in commit message or diffFeature addition: expose exact encoded sizeNo mention of vulnerability, CVE, bug bounty, or security report
1a365d53by Andrew Poelstra+129−1068 files
No security note in commit
Informational 15 AI analysisMessage 88 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

build(deps): bump dtolnay/rust-toolchain

This is a routine update by Dependabot that changes which version of a popular GitHub Action (dtolnay/rust-toolchain) is used to install Rust in automated CI workflows. The commit only updates pinned commit hashes in workflow files; it doe…

a31e0b0eby dependabot[bot]+8−84 files
No security note in commit
Informational 15 AI analysisMessage 93 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

build(deps): bump github/codeql-action/upload-sarif

This is a routine patch-version update of a GitHub-maintained action used only to upload static-analysis results (SARIF files) from a scheduled CI job. The change does not touch any project source code, cryptographic logic, or user-facing …

2cac6e38by dependabot[bot]+1−11 file
No security note in commit
Informational 15 AI analysisMessage 93 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

build(deps): bump astral-sh/setup-uv from 8.3.2 to 9.0.0

This is a routine automated update by Dependabot that changes the pinned version of a GitHub Action used to install a Python tool called 'uv' in two workflow files. The new version is a major release of the setup-uv action itself, but the …

7d7e7269by dependabot[bot]+2−22 files
No security note in commit
Informational 21 AI analysisMessage 100 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6894: Harden `Copy` policy and apply to all pre-1.0 crates

This commit removes the automatic `Copy` trait from several public error types in the rust-bitcoin library and updates the project's written policy to discourage `Copy` on error types. `Copy` is a Rust trait that lets values be duplicated …

API hardening: removes `Copy` from public error types to preserve future flexibilityPolicy update: docs/policy.md now explicitly discourages `Copy` on error typesNo vulnerability fix: change is defensive/preventive, not reactive to a disclosed issue
457cb9b5by Andrew Poelstra+14−146 files
No security note in commit
Informational 18 AI analysisMessage 96 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6787: Move `from_script` to `Address` and drop `AddressExt`

This change is a routine code cleanup, not a security fix. It moves a method that converts Bitcoin output scripts into human-readable addresses from a temporary 'extension trait' directly onto the main Address type. The actual conversion l…

ed42dabdby Andrew Poelstra+38−414 files
No security note in commit
Low 35 AI analysisMessage 91 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6061: Units improvements

This is a routine code-quality and API-expansion pull request for the rust-bitcoin library's 'units' crate. It widens some fee-rate constructors from 32-bit to 64-bit inputs, renames the old 32-bit versions, improves serde error messages, …

API surface change: new u64 fee-rate constructors return NumOpResult to prevent silent overflowRenaming of existing u32 constructors to *_u32 may break downstream callers at compile time (breaking API change)Removal of artificial restriction in from_per_vb allows larger valid inputs
f9460859by Andrew Poelstra+266−12211 files
No security note in commit
Low 49 AI analysisMessage 96 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6862: units: Preserve error in NumOpResult add and sub

This commit fixes a bug in how the library handles math errors. Previously, if you added or subtracted two values and one of them already had an error (for example, dividing by zero), the library would silently replace that original error …

Error-state information loss in arithmetic wrapper typeIncorrect error propagation could mask prior failures such as division by zeroDefensive correctness fix in numeric operation result handling
5324e59aby Andrew Poelstra+26−41 file
No security note in commit
Low 37 AI analysisMessage 91 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6896: Fix `cargo audit` findings

This is a routine dependency-maintenance merge that swaps out old, unmaintained helper libraries for newer, patched versions in the project's example embedded programs and benchmark harness. The changes are driven by automated security sca…

cargo audit advisory remediationdependency upgrade for known-vulnerable crate (rand 0.7 / jobserver)dependency upgrade for known-vulnerable crate (crossbeam-epoch)
5f5f666dby Andrew Poelstra+51−1849 files
Vendor flagged security relevance
Low 37 AI analysisMessage 91 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6897: consensus_encoding: fix overcounting bug in the composite encoders exact size len calculation

This commit fixes a counting bug in a Rust Bitcoin library. The library has combined encoders that bundle multiple pieces of data together. A method called len() is supposed to report how many bytes are left to encode, but it was incorrect…

Violation of documented API contract (ExactSizeEncoder::len)Potential incorrect buffer-size or progress decisions by downstream callersComposite encoder state not fully isolated in size reporting before fix
22bbc326by Andrew Poelstra+19−13 files
No security note in commit
Low 37 AI analysisMessage 73 · Adequate
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

consensus_encoding: fix bug in the composite encoder's exact size

This commit fixes a bookkeeping bug in a Rust Bitcoin library's composite encoder. The encoder is a tool that combines multiple pieces of data into a single byte stream, and it has a method that is supposed to report how many bytes are lef…

Incorrect implementation of a documented size/length contractPotential for callers to over-allocate buffers or miscompute transaction/witness sizesComposite encoder used in consensus-critical serialization paths
914365b4by Nick Johnson+19−13 files
No security note in commit
Informational 18 AI analysisMessage 91 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6809: addresses: Add `AddressParams` type and remove most uses of network types

This is a routine API refactoring in the rust-bitcoin library. It introduces a new AddressParams type and replaces most public uses of the older Network/NetworkKind types when creating or validating Bitcoin addresses. There is no security …

No memory-safety issues, cryptographic errors, or input-validation changes observedNo new unsafe blocks, no new dependencies, no new parsing of untrusted dataAPI surface change only: parameter types replaced with semantically equivalent AddressParams
81032b1aby Andrew Poelstra+208−16414 files
No security note in commit
Low 38 AI analysisMessage 100 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6886: units: preserve original err summing `NumOpResult`

This patch fixes a bug in how rust-bitcoin adds up a list of numeric operation results. Previously, if any item in the list already carried an error (for example, dividing by zero), the summing code would overwrite that error and falsely r…

Error-type confusion / misattribution in arithmetic result aggregationLoss of original failure context across iterator foldPotential for downstream logic to act on wrong `MathOp`/`MathErrorKind`
4af1ee1dby Andrew Poelstra+23−191 file
No security note in commit
Informational 15 AI analysisMessage 100 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6618: ci: disable fail-fast in weekly rustc update crons

This commit changes two GitHub Actions workflow files used for weekly automated Rust toolchain updates. It adds `fail-fast: false` so that if one branch's update job fails, the other branch jobs continue running instead of all being cancel…

c0a70548by Andrew Poelstra+2−02 files
No security note in commit
Moderate 62 AI analysisMessage 91 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6884: units: Fix div_by_fee_rate_floor precision

This commit fixes a precision bug in a Rust Bitcoin library function that calculates how much transaction weight a given amount of money can afford at a given fee rate. The old code rounded the fee rate up to a coarser unit (satoshis per k…

Incorrect fee-rate-to-weight conversion leading to understated affordable weightInteger rounding direction (ceil) used as divisor in floor division causing off-by-one or larger precision lossAddition of overflow handling for Weight::MAX
9caad2c1by Andrew Poelstra+23−52 files
Vendor flagged security relevance
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 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 · AdequateInformational 15Details
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
AI analysis · Informational 15/100

This is a small build-configuration cleanup, not a security fix. The change makes the 'alloc' feature automatically enabled whenever the 'serde' feature is enabled, because serializing to non-human-readable formats requires allocating memory. It also removes an unnecessary 'hex' feature gate from the serde module. There is no vulnerability here.

AI review queuedPrevent panic in UserAgent arbitraryby Mitchell Bagot · eee88730 · Jun 23, 2026 · 1 fileMessage 68 · AdequateInformational 24Details
Commit message · Mitchell Bagot

Prevent panic in UserAgent arbitrary

The current UserAgent arbitrary impl can panic when calling into
UserAgent::new, as it doesn't correctly sanitise the characters and
length of the name. While the decoder doesn't enforce these checks,
unexpected panics in the arbitrary impl are surprising and should be
avoided.

Prevent panics in UserAgent arbitrary impl by sanitising inputs to
UserAgent::new.

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
AI analysis · Informational 24/100

This commit fixes a panic (crash) in a test-only feature called 'arbitrary' that generates random fake user-agent strings for fuzz testing. The panic happened because the random generator could produce characters or lengths that the UserAgent constructor rejects. It is not a normal runtime bug in Bitcoin networking code, but it could cause fuzz tests or property-based tests to crash unexpectedly.

AI review queuedAdjust Transaction arbitrary to satisfy decode checksby Mitchell Bagot · 1357c3c9 · Jun 23, 2026 · 1 fileMessage 83 · StrongInformational 18Details
Commit message · Mitchell Bagot

Adjust Transaction arbitrary to satisfy decode checks

The TransactionDecoder has various checks in place that enforce certain
invariants for the decoded Transaction values. In the arbitrary fuzz
targets, this can mean that the arbitrary values can fail to round-trip.
Instead, arbitrary should enforce the same invariants on constructed
values as the decoders do.

Adjust Transaction arbitrary impl to enforce the same invariants as the
TransactionDecoder.

83/100 · StrongMessage clarity
✓ Specific, 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 18/100

This commit fixes a fuzz-testing helper so that randomly generated fake Bitcoin transactions follow the same rules that the real transaction decoder enforces. It does not change normal transaction handling, network behavior, or wallet logic; it only affects test code used to fuzz the library.

AI review queuedUpdate API filesby Mitchell Bagot · fed8a134 · Jun 23, 2026 · 2 filesMessage 28 · OpaqueInformational 15Details
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 analysis · Informational 15/100

This commit only updates generated API listing files (text snapshots of public symbols). It shows that some serde helper modules moved from the `bitcoin_primitives` crate to the `bitcoin_consensus_encoding` crate and that two external crates (`hex`, `serde`) are now re-exported. There is no actual code change in the diff, and nothing here indicates a security fix or vulnerability.

AI review queuedAdd serde dep to consensus_encodingby Mitchell Bagot · d6a7362e · Jun 23, 2026 · 6 filesMessage 68 · AdequateInformational 15Details
Commit message · Mitchell Bagot

Add serde dep to consensus_encoding

The serde dependency will be necessary for the serde_as_consensus
module.

Add and extern serde dep to consensus_encoding

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
AI analysis · Informational 15/100

This commit only adds the serde library as a dependency to a Rust Bitcoin sub-crate and wires up feature flags. It does not change any logic, parsing, serialization, or security-sensitive code. There is no indication of a vulnerability or security fix.

AI review queuedinternals: Update API filesby Mitchell Bagot · d7f527f0 · Jun 23, 2026 · 3 filesMessage 35 · OpaqueInformational 15Details
Commit message · Mitchell Bagot

internals: 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 analysis · Informational 15/100

This commit only updates three text files that list the project's public API surface. It removes entries for some internal macros and a module that are no longer publicly exposed. There are no code changes, no bug fixes, and no security relevance visible in the diff.

AI review queuedprimitive: Fix typos, grammar and formatting in docsby Mitchell Bagot · 8c1f7a61 · Jun 22, 2026 · 10 filesMessage 65 · AdequateInformational 15Details
Commit message · Mitchell Bagot

primitive: Fix typos, grammar and formatting in docs

The docs have various typos, grammar and formatting mistakes that should
ideally be fixed before the 1.0 release.

65/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit only fixes typos, grammar mistakes, and formatting in documentation comments. No code behavior changes. There is no security issue.

AI review queued2026-06-21 automated rustfmt nightlyby Fmt Bot · 70a946b9 · Jun 21, 2026 · 2 filesMessage 45 · ThinInformational 15Details
Commit message · Fmt Bot

2026-06-21 automated rustfmt nightly

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

This is an automated code-formatting commit. It only reorders import and module declarations to match the latest rustfmt nightly style. No logic, behavior, or security-sensitive code was changed.

AI review queuedUpdate API filesby Mitchell Bagot · 483e8f9f · Jun 19, 2026 · 2 filesMessage 28 · OpaqueInformational 15Details
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 analysis · Informational 15/100

This commit only updates two generated API snapshot files (all-features.txt and alloc-only.txt) to reflect newly added public types and methods in the bitcoin_primitives crate. It contains no actual source code changes, no bug fixes, and no security-related modifications.

AI review queuedprimitives: Update API filesby Mitchell Bagot · 460d8c0d · Jun 19, 2026 · 3 filesMessage 35 · OpaqueInformational 15Details
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 analysis · Informational 15/100

This commit only updates generated API listing files (text snapshots that document what functions and types are publicly available). It adds entries for a newly exposed 'witness_version' module and some conversions to/from opcodes. There is no actual code change, no bug fix, and no security-relevant behavior change in this commit itself.

AI review queuedAdjust docs on WitnessVersionby Mitchell Bagot · f7f9164b · Jun 19, 2026 · 1 fileMessage 35 · OpaqueInformational 15Details
Commit message · Mitchell Bagot

Adjust docs on WitnessVersion

35/100 · OpaqueMessage clarity
✓ Descriptive subject! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI analysis · Informational 15/100

This commit is a one-character documentation fix: it adds a missing period at the end of a comment describing the first witness version. There are no code, logic, or API changes.

AI review queuedFix base64 panic in from_base64by Mitchell Bagot · 33968200 · Jun 17, 2026 · 1 fileMessage 68 · AdequateModerate 62Details
Commit message · Mitchell Bagot

Fix base64 panic in from_base64

In sign_message, the from_base64 function can panic if the string has
both a length of 88 bytes, and decodes to an array of bytes > 65. This
can happen for a string of 88 "A" characters, for example. Further, the
function incorrectly parses base64 strings that produce 64 byte arrays.
While the latter is likely caught by the underlying secp parsing, both
should be checked to provide a more meaningful error return.

Add checks for non-65 byte base64 decoding in from_base64, returning
an InvalidLength error for 64 or 66 byte decodes. Also prevent panic on
66 byte decode.

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: broader security terminologysecond-pass: security-sensitive path
AI analysis · Moderate 62/100

This commit fixes a bug in the rust-bitcoin library where a specific function used to verify Bitcoin signed messages could crash the program. The crash could be triggered by feeding it a carefully crafted 88-character base64 string that decoded to 66 bytes instead of the expected 65 bytes. The fix adds proper length checks so the function returns a clean error instead of panicking, and also rejects 64-byte results that were previously silently accepted.

AI review queuedAdd regression test for decode_from_read_unbuffered_with bugby Mitchell Bagot · 29314bbe · Jun 17, 2026 · 1 fileMessage 95 · StrongInformational 11Details
Commit message · Mitchell Bagot

Add regression test for decode_from_read_unbuffered_with bug

The bug in decode_from_read_unbuffered_with is finicky and can only
be triggered in very particular cases. To ensure it is not
reintroduced, a test case should be included.

Introduce regression test for encoding::decode_from_read_unbuffered_with.

Test case produced by Project Loupe.

95/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Mentions testing or verification
Why it was queued
fuzzing or regression evidenceparser or protocol pathsecond-pass: security-sensitive path
AI analysis · Informational 11/100

This commit only adds a regression test for a previously existing bug in a decoding helper. It does not change any production code, so by itself it cannot introduce a security vulnerability. The test documents a bug where a decoder could lose unconsumed bytes under specific conditions, but the actual fix must have happened in an earlier commit not shown here.

AI review queuedFix buffer bug in encoding::decode_from_read_unbuffered_withby Mitchell Bagot · 3ddab5d8 · Jun 17, 2026 · 1 fileMessage 85 · StrongModerate 61Details
Commit message · Mitchell Bagot

Fix buffer bug in encoding::decode_from_read_unbuffered_with

In decode_from_read_unbuffered_with, the clamped buffer is pushed into
the decoder after a successful read. Some decoders do not completely
consume all provided bytes in a single push_bytes call, which can lead
to parts of the buffer being dropped. Like encoding::decode_from_hex,
the push_bytes should instead be called in a loop until the buffer is
empty, or the error case occurs.

Call push_bytes in a loop to prevent buffer bug in
encoding::decode_from_read_unbuffered_with.

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
parser or protocol pathsecond-pass: security-sensitive path
AI analysis · Moderate 61/100

This commit fixes a bug where a Bitcoin data decoder could silently ignore parts of incoming data. The decoder only processed each chunk of data once, but some decoders don't finish a chunk in one go. Leftover bytes were effectively dropped, which could cause malformed or incomplete data to be accepted as valid. The fix repeatedly feeds the remaining bytes until the chunk is fully consumed or an error occurs.

AI review queuedinternals: Update API filesby Mitchell Bagot · aa25afb4 · Jun 16, 2026 · 3 filesMessage 35 · OpaqueInformational 15Details
Commit message · Mitchell Bagot

internals: 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 analysis · Informational 15/100

This commit only updates generated text files that list the public API surface of the `bitcoin_internals` crate. The removed lines describe a simple helper trait (`ToU64`) and its implementations for unsigned integer types. There is no code change, no bug fix, and no security relevance visible in the diff.

AI review queuedMove ToU64 to bitcoinby Mitchell Bagot · f3b49833 · Jun 16, 2026 · 9 filesMessage 51 · ThinInformational 15Details
Commit message · Mitchell Bagot

Move ToU64 to bitcoin

Outside of a single usage in p2p which can be replaced by a From call,
the ToU64 trait is only used in bitcoin.

Move ToU64 trait to bitcoin, keeping it pub for use in existing public
API code.

51/100 · ThinMessage clarity
✓ Subject identifies a change✓ 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 simple internal code reorganization. It moves a small helper trait called ToU64 from one internal crate (internals) into the main bitcoin crate, and updates import statements accordingly. There is no change to what the code does, no bug fix, and no security-relevant behavior change.

AI review queuedprimitives: drop redundant reference in format! callsby satsfy (Renato Britto) · 2d45904e · Jun 15, 2026 · 1 fileMessage 50 · ThinInformational 15Details
Commit message · satsfy (Renato Britto)

primitives: drop redundant reference in format! calls

50/100 · ThinMessage clarity
✓ Specific, 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 15/100

This commit only cleans up test code by removing unnecessary '&' symbols inside format!() calls. It does not change any runtime behavior or fix a security issue.

AI review queuedAdjust wording on docs to match function behaviourby Mitchell Bagot · 3a3fe1dc · Jun 15, 2026 · 3 filesMessage 73 · AdequateInformational 15Details
Commit message · Mitchell Bagot

Adjust wording on docs to match function behaviour

There are a couple of functions in units that have docs that don't
clearly describe their behaviour. These should be adjusted to better
read and match the functionality.

Adjust from_float_in docs for Amount + SignedAmount and unwrap_or and
unwrap_or_else on NumOpResult.

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

This commit only fixes wording in code comments/documentation. It changes descriptions of three functions so the docs accurately describe what the functions do. No actual code behavior was changed, so there is no security impact.

AI review queuedFix typos, grammar and formatting in docsby Mitchell Bagot · 4bd10aa2 · Jun 15, 2026 · 9 filesMessage 68 · AdequateInformational 15Details
Commit message · Mitchell Bagot

Fix typos, grammar and formatting in docs

The docs have various typos, grammar and formatting mistakes that should
ideally be fixed before the 1.0 release. This also includes strange
formatting for code in examples.

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 only fixes typos, grammar, punctuation, and formatting in documentation comments and one code example. There are no code logic changes, no API changes, and no behavior changes. It is purely a documentation quality cleanup.

AI review queuedprimitives: Update API filesby Mitchell Bagot · 9d133152 · Jun 15, 2026 · 3 filesMessage 35 · OpaqueInformational 15Details
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 analysis · Informational 15/100

This commit only updates generated text files that list the public API surface of the rust-bitcoin 'primitives' crate. It records that the opcodes module and its constants are now publicly exposed. There are no code changes, no bug fixes, and no security-related modifications.

AI review queuedUpdate API filesby Mitchell Bagot · 7fdbb879 · Jun 15, 2026 · 1 fileMessage 28 · OpaqueInformational 15Details
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 analysis · Informational 15/100

This commit only updates an automatically-generated text file that lists the project's public API surface. It removes entries for some error types that were renamed or replaced elsewhere, and updates type signatures to match. No actual source code, logic, or behavior changed in this commit, so it has no security relevance on its own.

AI review queuedReplace HexPrimitive decoding with consensus_encodingby Mitchell Bagot · f0a52a65 · Jun 15, 2026 · 5 filesMessage 73 · AdequateInformational 17Details
Commit message · Mitchell Bagot

Replace HexPrimitive decoding with consensus_encoding

The HexPrimitive type in primitives provides an alloc-less hex str
decoding for types in primitives. Since consensus_encoding now has
the same functionality in decode_from_hex, the entire from_str on
HexPrimitive (and ParsePrimitiveError) can be completely eliminated.

Replace all decoding uses with decode_from_hex in consensus_encoding.
Remove Parse*Error wrappers around ParsePrimitiveError.

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

This commit is a routine internal cleanup in the rust-bitcoin library. It removes a duplicate way of turning hex strings into Bitcoin data structures (blocks, block headers, transactions) and replaces it with a single shared helper called decode_from_hex. The actual hex decoding logic stays functionally the same; only the error types and code paths are simplified. There is no indication this fixes a security bug.

AI review queuedUpdate API filesby Mitchell Bagot · 2ccf8548 · Jun 9, 2026 · 3 filesMessage 28 · OpaqueInformational 15Details
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 analysis · Informational 15/100

This commit only updates three text files that list the project's public API surface. It removes entries for modules, macros, and types that are no longer part of the public API. There is no actual source code change, no bug fix, and no security-related content.