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
2054commits · 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 7 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.

Security candidateBump crypto crate versionby Mitchell Bagot · 345ad946 · Apr 19, 2026 · 5 filesMessage 58 · ThinInformational 15Details
Commit message · Mitchell Bagot

Bump crypto crate version

With the move of types complete, the crypto crate is in a suitable
state for release and integration with bitcoin.

Bump crypto version number to 0.1.0.
Update crypto changelog.
Adjust bitcoin cargo TOML to match new version number.
Update lock files.

58/100 · ThinMessage clarity
✓ Descriptive subject✓ Provides detailed explanatory context
Why it was queued
cryptography-sensitive path
AI analysis · Informational 15/100

This commit is a routine version bump for an internal Rust crate. It changes the package version from 0.0.0 to 0.1.0, updates dependency references and lock files, and records the migration of code into the crate in the changelog. There are no code logic changes and no security-relevant behavior changes visible in the diff.

Security candidateMove most key types to crypto crateby Mitchell Bagot · c96fc0fd · Apr 19, 2026 · 8 filesMessage 68 · AdequateInformational 18Details
Commit message · Mitchell Bagot

Move most key types to crypto crate

The key types in bitcoin are largely disconnected from bitcoin outside
of interdependencies within the crypto module. With the other
submodules moved, the keys can now be trivially moved to the crypto
crate.

Move and re-export all crypto key types and relevant errors from crypto
crate.

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

This commit is a large but straightforward internal code reorganization. It moves Bitcoin key types (public keys, private keys, keypairs, and related errors) from the main `bitcoin` crate into a new `crypto` sub-crate, then re-exports them so existing users of the `bitcoin` crate see the same public API. There is no indication of a security bug being fixed or introduced; it is a refactoring to improve the project's modular structure.

Security candidateBreak split_anyonecanpay_flag functions to SplitAnyoneCanPay traitby Mitchell Bagot · 652a0039 · Apr 19, 2026 · 1 fileMessage 73 · AdequateInformational 15Details
Commit message · Mitchell Bagot

Break split_anyonecanpay_flag functions to SplitAnyoneCanPay trait

The split_anyonecanpay_flag functions are pub(crate). Since we don't
want them to be in the public API, and they're exclusively used by
logic that will remain in bitcoin, we can split them into a pub(crate)
trait to be left behind.

Introduce SplitAnyoneCanPay trait and implement for TapSigHashType and
EcdsaSighashType by moving the corresponding split_anyonecanpay_flag
functions to them.

73/100 · AdequateMessage clarity
✓ Specific, 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 simple internal code cleanup in the rust-bitcoin library. It moves two nearly identical helper functions into a shared internal trait, without changing what the code does or how it behaves. There is no security issue here.

Security candidateMove minimal sighash types to crypto crateby Mitchell Bagot · d4a3f75a · Apr 19, 2026 · 7 filesMessage 68 · AdequateInformational 18Details
Commit message · Mitchell Bagot

Move minimal sighash types to crypto crate

While many of the sighash types are intertwined with taproot and
bitcoin dependencies, some can be moved and re-exported trivially.

Move and re-export EcdsaSighashType, TapSighashType,
InvalidSighashTypeError, NonStandardSighashTypeError and
SighashTypeParseError to crypto crate.

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

This commit is a routine code reorganization: it moves some Bitcoin signature-hash type definitions (EcdsaSighashType, TapSighashType, and related error types) from the main bitcoin crate into a new bitcoin-crypto sub-crate, then re-exports them so existing users see no change. There is no functional change to how signatures or transactions are validated.

Security candidateReturn TapSighashType parse error in PsbtSighashType FromStrby Mitchell Bagot · 910ad0d4 · Apr 19, 2026 · 1 fileMessage 73 · AdequateInformational 19Details
Commit message · Mitchell Bagot

Return TapSighashType parse error in PsbtSighashType FromStr

The FromStr trait for PsbtSighashType uses the TapSighashType FromStr
to parse from a string. On failure, this generates the same
SighashTypeParseError that is currently returned. Rather than manually
constructing the error, we can just return the error result from
attempting to parse s as a TapSighashType.

Return the error result of the TapSighashType FromStr impl rather than
manually constructing a new error in PsbtSighashType FromStr impl.

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
signing boundarysigning or wallet path
AI analysis · Informational 19/100

This is a small code-quality change in how a Bitcoin-related Rust library reports parsing errors for a special sighash type. It makes the error message come directly from the underlying Taproot parser instead of being manually rebuilt. There is no direct security vulnerability here, but it slightly improves error-message accuracy and removes a tiny bit of duplicated logic.

Security candidateMove ecdsa module to crypto crateby Mitchell Bagot · 31168f7f · Apr 19, 2026 · 7 filesMessage 68 · AdequateInformational 15Details
Commit message · Mitchell Bagot

Move ecdsa module to crypto crate

The ecdsa module has no dependencies in bitcoin outside of some in the
sighash module of crypto. Following the previous sighash move, this
entire module can now be trivially moved to the crypto crate.

Move the ecdsa module to the crypto crate.

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

This commit is a routine internal code reorganization. It moves the ECDSA signature module from the main 'bitcoin' crate into a smaller 'crypto' sub-crate, then re-exports it so existing users see no change. There is no security fix or vulnerability here.

Security candidateFix lint errors in crypto crateby Mitchell Bagot · c65f4c9f · Apr 19, 2026 · 1 fileMessage 80 · StrongInformational 15Details
Commit message · Mitchell Bagot

Fix lint errors in crypto crate

The prior code move introduces a variety of lint errors due to the lax
lint requirements from bitcoin compared to the other crates.

Fix all lint errors in crypto crate's sighash module.

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

This commit only cleans up style warnings in a Rust source file. It replaces wildcard imports with explicit Self:: references, adds a documentation comment, and fixes a minor formatting issue in a doc comment. There is no change to program behavior or security.

Security candidateSplit raw_ecdsa_sign_recoverable function to PrivateKeyExtby Mitchell Bagot · bb8fed10 · Apr 19, 2026 · 2 filesMessage 73 · AdequateInformational 15Details
Commit message · Mitchell Bagot

Split raw_ecdsa_sign_recoverable function to PrivateKeyExt

The raw_ecdsa_sign_recoverable function on PrivateKey exists purely to
provide the low level functionality used in the sign_message module of
bitcoin. Since this is not necessary at this early stage in the crypto
crate, it should be moved to a new extension trait prior to the move.

Introduce PrivateKeyExt and move raw_ecdsa_sign_recoverable to the new
extension trait.

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

This commit is a routine internal code reorganization. It moves a low-level ECDSA signing helper method from the main PrivateKey implementation into a new extension trait called PrivateKeyExt, and updates the one place that uses it to import the trait. There is no change to what the code does or any security fix.

Security candidateFix lint errors in crypto crateby Mitchell Bagot · ff655ac5 · Apr 19, 2026 · 1 fileMessage 80 · StrongInformational 15Details
Commit message · Mitchell Bagot

Fix lint errors in crypto crate

The prior code move introduces a variety of lint errors due to the lax
lint requirements from bitcoin compared to the other crates.

Fix all lint errors in crypto crate's ecdsa module.

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

This commit is a routine code cleanup in the rust-bitcoin crypto crate. It fixes compiler lint warnings by adding documentation comments, adjusting number formatting, and making minor style changes. There is no functional change to how signatures are created, validated, or parsed, and no security issue is present.

Security candidateSplit methods to extension traits on public keysby Mitchell Bagot · fffcd586 · Apr 19, 2026 · 2 filesMessage 68 · AdequateInformational 18Details
Commit message · Mitchell Bagot

Split methods to extension traits on public keys

The p2wpkh_script_code functions on FullPublicKey and LegacyPublicKey
rely on functionality only present in the bitcoin crate. Since this
will not be easy to move out, these functions should be moved to
extension traits prior to the move.

Further, the to_bytes method on LegacyPublicKey relies on
SerializedLegacyPublicKey, a type which itself relies on conversions
to and from PushBytes, a type only available in bitcoin. Since the
serialised type cannot be moved at present, the to_bytes must be left
behind in the extension trait for now.

Introduce FullPublicKeyExt and LegacyPublicKeyExt and move the
corresponding p2wpkh_script_code functions to them from the public
key types. Move to_bytes on LegacyPublicKey to LegacyPublicKeyExt.

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

This commit is a routine internal code reorganization. It moves a few public-key helper methods into Rust 'extension traits' so the underlying key types can be relocated to a different crate later. The actual behavior of the moved functions is unchanged, and there is no indication of a bug fix or security patch.

Security candidateImprove Arbitrary impl for Xprivby Ismail Daif · 6a552b1c · Apr 17, 2026 · 1 fileMessage 45 · ThinInformational 18Details
Commit message · Ismail Daif

Improve Arbitrary impl for Xpriv

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

This commit changes how test-only fake data is generated for an extended Bitcoin private key (Xpriv) when the optional 'arbitrary' feature is enabled. Previously, the generator always produced a 'master' key with depth 0. Now it can produce keys at any depth with proper parent fingerprint and child number fields. This is a code-quality/test-coverage improvement; it does not change production key handling or add a security vulnerability.

Security candidatep2p: add ping pong exampleby yancy · 984d6734 · Apr 16, 2026 · 2 filesMessage 45 · ThinInformational 15Details
Commit message · yancy

p2p: add ping pong example

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

This commit adds a new example program to the rust-bitcoin library's p2p crate. It demonstrates how to perform a Bitcoin peer-to-peer handshake and respond to ping messages with pong messages. It is documentation/example code only and does not change any library behavior or fix any security issue.

Security candidateRun the formatterby Jamil Lambert, PhD · 8e245415 · Apr 16, 2026 · 10 filesMessage 28 · OpaqueInformational 15Details
Commit message · Jamil Lambert, PhD

Run the formatter

28/100 · OpaqueMessage clarity
✓ Subject identifies a change! No meaningful explanatory body! Opaque security-relevant change
Why it was queued
cryptography-sensitive pathsigning or wallet path
AI analysis · Informational 15/100

This commit is purely a code-formatting cleanup. It only changes whitespace, import order, line breaks, and trailing blank lines. There are no functional changes, no bug fixes, and no security-related modifications.

Security candidateAdd `SerializedLegacyPublicKey`by Martin Habovstiak · ed1dfce2 · Apr 16, 2026 · 1 fileMessage 48 · ThinInformational 15Details
Commit message · Martin Habovstiak

Add `SerializedLegacyPublicKey`

The legacy public keys can be serialized as compressed or uncompressed
which was annoying to deal with since serializing them involved either a
heap alloction or branches. A stack-allocated type holding any key was
needed for a long tim.

This commit finally adds `SerializedLegacyPublicKey` which behaves
similarly to `SerializedSignature` - holding `ArrayVec<u8, 65>` to be
able to represent any of the keys. While this could've been more
efficient, taking advantage of the first byte encoding length, let's
stick with something simple at least for now.

48/100 · ThinMessage clarity
✓ Descriptive subject✓ Provides detailed explanatory context! Too few words to establish purpose
Why it was queued
signing boundarycryptography-sensitive path
AI analysis · Informational 15/100

This commit adds a new helper type for storing Bitcoin legacy public keys in their serialized form without needing a heap allocation. It is a routine internal API improvement and does not fix any security bug or change how keys are validated.

Security candidatehashes: Add x86 SHA-NI 2-way dispatchby jrakibi · 3be195ed · Apr 14, 2026 · 1 fileMessage 60 · AdequateInformational 17Details
Commit message · jrakibi

hashes: Add x86 SHA-NI 2-way dispatch

add x86 sha256d dispatcher that handles 2-way SHA-NI

60/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Why it was queued
cryptography-sensitive path
AI analysis · Informational 17/100

This commit adds a performance optimization for computing SHA-256 hashes on modern x86 processors that support Intel's SHA-NI instructions. It is a routine feature addition, not a security fix or vulnerability patch. There is no indication in the commit that it addresses a security issue.

Security candidatehashes: Interleave two independent hashes for 2-way SHA256dby jrakibi · ee04a988 · Apr 14, 2026 · 1 fileMessage 81 · StrongInformational 17Details
Commit message · jrakibi

hashes: Interleave two independent hashes for 2-way SHA256d

x86 SHA256RNDS2 has a latency of 4-6 cycles depending on
the architecture. the next SHA256RNDS2 needs the result
of the current one as input, so the CPU has to wait until
it is ready. (in Transform 2 for eg, 3 out of every 4 cycles
are wasted doing nothing)

we fill those wasted cycles by computing a second independent
hash alongside the first.

See https://uops.info/html-instr/SHA256RNDS2_XMM_XMM.html
for per-architecture instruction timings.

81/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Why it was queued
cryptography-sensitive path
AI analysis · Informational 17/100

This commit is a performance optimization for Bitcoin's double-SHA256 hashing on modern Intel/AMD processors. It rewrites a low-level routine to compute two independent hashes at once instead of one, filling idle CPU cycles. There is no security fix or vulnerability here; it is purely about making hashing faster.

Security candidatehashes: Add optimized x86 SHA256d for 64-byte inputby jrakibi · 301c3c16 · Apr 14, 2026 · 1 fileMessage 73 · AdequateInformational 16Details
Commit message · jrakibi

hashes: Add optimized x86 SHA256d for 64-byte input

Add the three transforms for sha256(sha256(64_bytes))

Transforms 1 & 2 compute the inner `sha256(64_bytes)`:

- Transform 1: 64 bytes already fill the first block (no
padding needed), so we apply 64 rounds of compression
normally.
After T1: state = state + initial_state

- Transform 2: the message schedule at this step is constant
and known in advance (64 bytes of padding), so
we precompute W[i]+K[i] into MIDS and apply 64 rounds (no
schedule expansion needed).
After T2: state = state + saved_T1_state
(state now contains sha256(64_bytes))

- Transform 3 computes sha256(output_of_T1_and_T2). The output
is 32 bytes, so the block contains 32 bytes and the rest is
known padding. we precompute the message
schedule for the known words (w8-w15) into FINS.
After T3: state = state + initial_state
(state now contains the sha256d result)

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

This commit adds a new, highly optimized x86 implementation for computing a double SHA-256 hash (SHA256d) on exactly 64 bytes of input. It uses Intel SHA-NI CPU instructions and precomputed constants to speed up Bitcoin-style hashing. There is no indication in the commit that this fixes a security bug; it appears to be a pure performance optimization.

Security candidatehashes: use consistent round numbering in sha256 commentsby jrakibi · d61ad42b · Apr 14, 2026 · 2 filesMessage 73 · AdequateInformational 15Details
Commit message · jrakibi

hashes: use consistent round numbering in sha256 comments

the 1-way ARM and x86 SHA-NI functions used Rounds 0-3 while
the 2-way ARM function used Rounds 1-4 in the comments.

use this consistently everywhere.

73/100 · AdequateMessage clarity
✓ Specific, 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 only changes comments in the SHA-256 code. It makes the round-number labels consistent between different versions of the optimized code (ARM and x86). No actual program logic, math, or behavior was changed, so it cannot affect security or correctness.

Security candidatehashes: split sha256 crypto int separate filesby jrakibi · a8e9c992 · Apr 13, 2026 · 4 filesMessage 68 · AdequateInformational 15Details
Commit message · jrakibi

hashes: split sha256 crypto int separate files

since we are planning to add other implementations for sha256: 2-way x86 shani,
4-way SSE4.1, and 8-way AVX2, we can split the file so each impl has
its own file without ending up with a single file that is hard to review.

this is just a code move, no logic change.

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 pure file reorganization: it splits the SHA-256 cryptographic implementation from one large file into several smaller files. The author explicitly states there is no logic change, and the diff shows the same code being moved into new modules with only minor module wiring adjustments. There is no security-relevant change visible.

Security candidateAdd psbt fuzz targetby Shing Him Ng · 390582f4 · Apr 11, 2026 · 5 filesMessage 38 · OpaqueInformational 12Details
Commit message · Shing Him Ng

Add psbt fuzz target

38/100 · OpaqueMessage clarity
✓ Subject identifies a change✓ Mentions testing or verification! No meaningful explanatory body! Opaque security-relevant change
Why it was queued
signing boundaryfuzzing or regression evidencecryptography-sensitive pathsigning or wallet path
AI analysis · Informational 12/100

This commit adds a new automated fuzz-testing target for Partially Signed Bitcoin Transactions (PSBTs) in the rust-bitcoin project. It does not change production behavior, fix a bug, or alter any user-facing API. It only adds test infrastructure and small helper implementations needed to generate random PSBT-like objects for fuzzing. The fuzz target itself even documents a pre-existing known panic condition it works around, rather than fixing it.

Security candidatep2p: Implement ExactSizeEncoder for AddrV2Encoderby Mitchell Bagot · cbc14d2a · Apr 9, 2026 · 1 fileMessage 78 · AdequateInformational 15Details
Commit message · Mitchell Bagot

p2p: Implement ExactSizeEncoder for AddrV2Encoder

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. Since the AddrV2Encoder
can do the necessary calculation in constant time, this trait should
be implemented for it too.

Implement ExactSizeEncoder for AddrV2Encoder.
Add test cases to confirm correct encoding + length calculation for
all types of AddrV2.

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

This commit adds a small performance and convenience feature to a Bitcoin peer-to-peer networking library written in Rust. It lets callers ask up front how many bytes an address encoding will produce, without actually doing the encoding. There is no security bug being fixed here; it is a routine enhancement with new tests.

Security candidatekey: Add From conversions for references for secret key typesby Mitchell Bagot · c55661dd · Apr 9, 2026 · 1 fileMessage 73 · AdequateInformational 15Details
Commit message · Mitchell Bagot

key: Add From conversions for references for secret key types

As with the changes to the from_* functions, there should exist From
impls that take references for all From impls that work on secret key
types. This further simplifies working with the non-Copy secret types.

Add From<&TweakedKeypair> for &Keypair, From<&PrivateKey> for Keypair
and From<&TweakedKeypair> for TweakedPublicKey.

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

This commit adds new Rust conversion helpers (From trait implementations) that let callers pass secret key types by reference instead of by value. It is a routine ergonomic/API improvement and does not change security behavior. The existing logic for deriving public keys from secret keys is unchanged; only the way callers provide the input is made more convenient.

Security candidatekey: Make as_inner pub(super) for secret key typesby Mitchell Bagot · cee439d8 · Apr 9, 2026 · 1 fileMessage 73 · AdequateInformational 15Details
Commit message · Mitchell Bagot

key: Make as_inner pub(super) for secret key types

As part of the long-term goal to remove the need to access the inner
secp types for all key types, the secret keys can now have their
inner accessor functions made pub(super). These functions are still
needed for functionality in the key module, but are no longer
necessary in the bitcoin crate or in the wider ecosystem.

Make as_inner pub(super) on PrivateKey and Keypair.

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

This commit narrows the visibility of two internal accessor methods from public to crate-internal. It is a routine API-cleanup change with no security relevance: it does not fix a bug, change behavior, or address any reported vulnerability.

Security candidatekey: Adjust all from_* functions to take refsby Mitchell Bagot · 0af1a681 · Apr 9, 2026 · 2 filesMessage 68 · AdequateInformational 19Details
Commit message · Mitchell Bagot

key: Adjust all from_* functions to take refs

The secret key types in bitcoin are no longer Copy. Since some
conversions to public key types take the key types by value, this makes
the use of private keys fairly unergonomic. Except where necessary,
conversion constructors for all key types (that is, from_* functions)
should always take references. This can help avoid costly copies.

Change from_keypair on TweakedPublicKey, from_private_key on
CompressedPublicKey and from_secret_bytes on PrivateKey to all take
references instead of values.

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

This commit is a routine ergonomic/API change in the rust-bitcoin library. It changes several key-conversion functions so they accept references instead of taking ownership of private key and keypair values. There is no security bug being fixed and no new vulnerability being introduced; it simply makes the API easier to use after the underlying secret key types stopped being implicitly copyable.

Security candidateAdd panics section to docsby Jamil Lambert, PhD · 43dae788 · Apr 8, 2026 · 3 filesMessage 45 · ThinInformational 15Details
Commit message · Jamil Lambert, PhD

Add panics section to docs

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

This commit only adds documentation comments describing when three functions can panic. No code behavior was changed, so it cannot introduce or fix a security vulnerability on its own.