RB
← All projectsRust Bitcoin

rust-bitcoin

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

BitcoinCryptographic librariesNormal
Repository coverage

2084 commits in the local evidence base

Every captured commit receives deterministic security triage and a separate communication-quality score. Security candidates and broader second-pass signals receive full-patch Ollama analysis.

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

Who is changing the project?

Public Git author strings; identities are not independently verified.

DeveloperCommitsCandidatesAnalyzedHigh riskMessage avg.
Mitchell Bagot643192641068
Tobin C. Harding41366410063
jrakibi944994068
Andrew Poelstra582155077
Nick Johnson18920189059
Jamil Lambert, PhD11418114061
Fmt Bot311431045
Trevor Arjeski111111069
Shing Him Ng31731056
Ismail Daif22622050
satsfy (Renato Britto)17617066
Martin Habovstiak27527069
Analysis record

Published AI watches

Last scanned 59 minutes ago

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

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

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

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

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

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

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

Update API files

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

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

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

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

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

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

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

4981faa7by Andrew Poelstra+50−02 files
No security note in commit
Informational 15 AI analysisMessage 100 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6671: units: reword docs from height to count in relative locktime

This commit only changes documentation comments and variable names in the rust-bitcoin library. It rewords references to 'block height' as 'block count' for relative locktime, because a relative locktime measures elapsed blocks since a coi…

6ea4ff92by Andrew Poelstra+20−172 files
No security note in commit
Informational 15 AI analysisMessage 96 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6670: ci: fix labeller permissions

This is a routine GitHub Actions workflow fix. The change gives the automated PR labeler workflow permission to download artifacts and explicitly tells the GitHub CLI which repository to act on. It does not change the Bitcoin library code,…

CI workflow permission fixNo source code changesNo cryptographic or consensus changes
276e0a61by Andrew Poelstra+5−01 file
No security note in commit
Informational 15 AI analysisMessage 91 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6657: Release tracking PR: `base58ck 0.5.0`

This commit is a routine version bump for the base58ck crate from 0.4.0 to 0.5.0. It only updates version numbers in package manifests, lock files, and adds a changelog entry. There are no code changes and no security relevance.

9deb5de1by Andrew Poelstra+22−168 files
No security note in commit
Informational 21 AI analysisMessage 100 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6440: base58: Introduce `decode_check_to_array` for alloc-less decoding

This commit is a routine feature addition to the rust-bitcoin base58 crate. It adds a new no-allocator function to decode short base58-check strings into fixed-size byte arrays, and renames the existing error type while keeping a deprecate…

No security-relevant bug fix is described in the commit message or diff.New decoding path uses a fixed 128-byte scratch buffer (`ArrayVec`) and rejects oversized inputs.Checksum verification and invalid-character handling are preserved from the existing alloc implementation.
c5fd1832by Andrew Poelstra+330−775 files
No security note in commit
Informational 15 AI analysisMessage 93 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6646: hashes: add several methods to `Midstate` and release 1.2.0

This commit is a routine feature release for the bitcoin_hashes crate. It adds new public methods and a constant to the SHA-256 Midstate type so developers can compute SHA-256 midstates in const contexts. There is no indication of a securi…

0f68fcb3by Andrew Poelstra+157−4210 files
No security note in commit
Informational 15 AI analysisMessage 73 · Adequate
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

units: reword docs to block count in relative locktime

This commit only rewords documentation comments and variable names in the codebase. It changes references from 'block height' to 'block count' for relative lock times, which is a terminology correction with no functional code changes. Ther…

8867fe2eby satsfy (Renato Britto)+20−172 files
No security note in commit
Informational 15 AI analysisMessage 91 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6667: Make the `WitnessesEncoder` private

This commit makes a small internal helper type called WitnessesEncoder private. It was previously exported as public API but is only used inside the transaction encoder. The change removes it from the public API surface and moves the code …

07d91f7fby Andrew Poelstra+54−1324 files
No security note in commit
Informational 12 AI analysisMessage 75 · Adequate
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

ci: fix labeller permissions

This commit adjusts a GitHub Actions workflow that automatically labels pull requests based on CI results. It adds a built-in repository token, tells the artifact download step to merge single-file artifacts, and explicitly sets the reposi…

Workflow-only change with no library code modificationsUses the default GITHUB_TOKEN rather than a custom secretRuns in workflow_run context, which already has elevated repository access by design
715f2bd6by Nick Johnson+5−01 file
No security note in commit
Informational 19 AI analysisMessage 91 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6661: units: Remove `From<u16>` from `NumberOfBlocks`

This is a routine API cleanup, not a security fix. The developers removed a shortcut that let programmers create a 'number of blocks' value directly from any u16 number, replacing it with an existing named constructor called from_height. T…

ed5f1b68by Andrew Poelstra+18−358 files
No security note in commit
Informational 15 AI analysisMessage 91 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6668: Scrub the transaction encoding logic

This commit is a pure code reorganization (refactor) in the rust-bitcoin library. It moves transaction encoding and decoding definitions around within a single file so the code follows the project's preferred layout. No logic, behavior, or…

c5588ba5by Andrew Poelstra+57−571 file
No security note in commit
Informational 18 AI analysisMessage 96 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6662: build(deps): bump actions/checkout from 6.0.2 to 6.0.3

This commit is a routine update to the GitHub Actions checkout tool used by the project's automated workflows. It changes the pinned version from 6.0.2 to 6.0.3 across many workflow files. The newer version fixes minor bugs related to SHA-…

Dependency bump of actions/checkout to a patch releaseUpstream fixes for SHA-256 repository checkout and merge commit regexAll affected workflows already disable persisted credentials
f7d364cdby Andrew Poelstra+29−2915 files
No security note in commit
Informational 15 AI analysisMessage 96 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6663: build(deps): bump taiki-e/install-action from 2.79.12 to 2.81.4

This is a routine Dependabot update that bumps the version of a third-party GitHub Action used only in automated testing workflows. The change does not touch the project's actual Bitcoin library code, and there is no indication it fixes or…

5c92c0b0by Andrew Poelstra+2−22 files
No security note in commit
Informational 15 AI analysisMessage 45 · Thin
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Update the API text files

This commit only updates two generated API text files that list the public surface of the Rust crate. It removes entries for a `WitnessesEncoder` type, reflecting that the type is no longer part of the public API. There is no source code c…

9c391145by Tobin C. Harding+0−782 files
No security note in commit
Informational 15 AI analysisMessage 68 · Adequate
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Scrub the transaction encoding logic

This commit is a pure code reorganization: it moves existing transaction encoding and decoding definitions around within a single file so they follow the project's preferred layout. No logic was changed, no security bug was fixed, and no n…

80dcef15by Tobin C. Harding+57−571 file
No security note in commit
Informational 15 AI analysisMessage 58 · Thin
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Make the WitnessesEncoder private

This commit simply hides an internal helper type called WitnessesEncoder from public view. It is a routine API-cleanup change with no security relevance visible in the code or commit message.

b37accc3by Tobin C. Harding+54−542 files
No security note in commit
Repository ledger

Explore captured commits

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

Security candidateRemove the secp contextby Tobin C. Harding · 648e5f86 · Nov 19, 2025 · 22 filesMessage 28 · OpaqueInformational 17Details
Commit message · Tobin C. Harding

Remove the secp context

BOOM!

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

This commit is a large API refactoring in the rust-bitcoin library. It removes the need for callers to pass an explicit secp256k1 cryptographic context object to many functions. Instead, the library now uses a global or internally-managed context. The change touches examples, tests, and core modules for addresses, BIP32 key derivation, scripts, PSBT signing, message signing, and Taproot. There is no direct evidence in the commit that this fixes a security vulnerability; it appears to be a usability and maintainability improvement.

Security candidateDepend on secp256k1-0.32.0-beta.2by Tobin C. Harding · 2328da56 · Nov 19, 2025 · 14 filesMessage 60 · AdequateLow 32Details
Commit message · Tobin C. Harding

Depend on secp256k1-0.32.0-beta.2

Upgrade to the latest and greatest secp. Only do build errors,
warnings will be done separately to assist review.

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

This commit updates the rust-bitcoin library to use a new beta version of its underlying secp256k1 cryptographic library (0.32.0-beta.2). It is a routine dependency upgrade that adjusts many internal calls to match the new library's simpler API. There is no direct evidence in the commit that this fixes a known security vulnerability, but it does remove an old, separately-patched version of a hashing dependency and moves to a newer cryptographic release. The main risk is that any upgrade of core crypto code could introduce subtle bugs or break downstream users who rely on the old API.

Lower-priorityChange PushBytes::read_scriptint to i32 return typeby Mitchell Bagot · b80a0cc7 · Nov 19, 2025 · 4 filesMessage 85 · StrongLow 35Details
Commit message · Mitchell Bagot

Change PushBytes::read_scriptint to i32 return type

The PushBytes::read_scriptint function currently returns an i64 value.
This is due to values in scripts potentially reaching 5 bytes in size
after various operations (e.g. ADD) have been applied. Despite this,
the function implementation currently prevents any value greater than
32 bits in size from being returned.

Change read_scriptint to return an i32, and introduce read_cltv_scriptint
to read up to 5 byte values into an i64.

85/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode
AI analysis · Low 35/100

This commit changes a Bitcoin script number-reading function so it returns a 32-bit integer instead of a 64-bit one, and adds a separate function for reading the larger 5-byte numbers used by the CHECKLOCKTIMEVERIFY opcode. The change makes the API more accurately reflect what the code actually allows, and reduces the risk that callers accidentally treat a 5-byte value as a normal script number. It appears to be a defensive correctness fix rather than a response to an active exploit.

Security candidateconsensus_encoding: implement batched allocation for VecDecoder and `ByteVecDecoder`by jrakibi · 0452a937 · Nov 17, 2025 · 1 fileMessage 73 · AdequateModerate 60Details
Commit message · jrakibi

consensus_encoding: implement batched allocation for VecDecoder and `ByteVecDecoder`

`VecDecoder` and `ByteVecDecoder` only checks that the element count/byte < 4,000,000.
This still allows an attacker to claims a large size without providing the data.

In this patch we allocates in 1 MB batches so an attacker now needs to provide
X MB of data to make us allocate X+1 MB of memory

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
explicit security languageparser or protocol path
AI analysis · Moderate 60/100

This commit fixes a denial-of-service weakness in how the library reads length-prefixed byte and element lists from untrusted data. Previously, the library would reserve up to 4 million bytes or elements immediately after seeing a length number, even if the actual data never arrived. Now it reserves memory in 1 MB chunks only as data actually comes in, so an attacker must send data to make the program use memory. The commit message and code comments explicitly describe this as a DoS-prevention change.

Lower-priorityunits: Add standard_check fuzz testby Mitchell Bagot · 197e8c7b · Nov 17, 2025 · 6 filesMessage 78 · AdequateInformational 15Details
Commit message · Mitchell Bagot

units: Add standard_check fuzz test

Introduce fuzzing using the `standard_test` crate for all structs in
units, sans Error types.

Co-developed-by: Tobin C. Harding <me@tobin.cc>

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

This commit only adds a new fuzz test for the 'units' crate. It does not change any production code, fix a bug, or alter behavior. There is no security issue introduced or patched here.

Lower-priorityprimitives: Implement BlockDecoder for Blockby Mitchell Bagot · 5890907c · Nov 17, 2025 · 3 filesMessage 68 · AdequateInformational 15Details
Commit message · Mitchell Bagot

primitives: Implement BlockDecoder for Block

The Block type in primitives implements Encodable through the
BlockEncoder type, but is missing a complementary decoder type.

Implement a BlockDecoder type that decodes Block types from bytes
and implement Decodable on Block to create BlockDecoder instances.

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

This commit adds a missing decoder for Bitcoin blocks in the rust-bitcoin library. It is a routine feature addition that lets the library read block bytes back into a Block object, complementing the already-existing encoder. There is no indication of a security bug being fixed.

Lower-priorityp2p: Lower initial allocation for Vec Decoderby Mitchell Bagot · 5489749b · Nov 16, 2025 · 1 fileMessage 76 · AdequateLow 41Details
Commit message · Mitchell Bagot

p2p: Lower initial allocation for Vec Decoder

In the implementation of consensus_decode_from_finite_reader for Vec<T>,
the initial vector capacity is calculated as 4_000_000 / 4 / sizeof<T>.
This is an arbitrary value that doesn't provide any specific benefit,
per discussion in #4797. Fedimint has a similar implementation of the
function using different, lower values.

Change the initial allocation capacity to match Fedimint's.

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

This commit reduces how much memory is pre-allocated when reading a variable-length list of items from a Bitcoin peer message. Previously the code could reserve up to roughly a quarter of a block's worth of elements based on an untrusted length value, which could let a malicious peer trick the program into reserving a large chunk of RAM. The new code caps the initial reservation to at most 8,000 bytes and lets the vector grow normally if more items actually arrive. It is a hardening change, not a fix for a known active attack.

Lower-prioritybitcoin: Lower initial allocation for Vec Decoderby Mitchell Bagot · d29c67a5 · Nov 16, 2025 · 1 fileMessage 76 · AdequateLow 42Details
Commit message · Mitchell Bagot

bitcoin: Lower initial allocation for Vec Decoder

In the implementation of consensus_decode_from_finite_reader for Vec<T>,
the initial vector capacity is calculated as 4_000_000 / 4 / sizeof<T>.
This is an arbitrary value that doesn't provide any specific benefit,
per discussion in #4797. Fedimint has a similar implementation of the
function using different, lower values.

Change the initial allocation capacity to match Fedimint's.

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

This commit reduces the initial memory allocation when decoding a variable-length list (Vec) from Bitcoin protocol data. Previously, the code could reserve a large chunk of memory based on an untrusted length value, which could be abused to waste or exhaust memory. The new code caps the initial reservation to roughly 8,000 bytes worth of elements and grows the vector only as items are actually read. This is a hardening change against denial-of-service via maliciously large length fields.

Lower-priorityChange PhantomData field names to _markerby Mitchell Bagot · 6f1f17be · Nov 16, 2025 · 1 fileMessage 80 · StrongInformational 15Details
Commit message · Mitchell Bagot

Change PhantomData field names to _marker

PhantomData fields currently don't have a standard naming convention.
_marker is commonly used in std, so we should use the same to ensure
an idiomatic naming convention.

Change named PhantomData fields in structs to _marker.

80/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode
AI analysis · Informational 15/100

This commit simply renames a Rust internal field from `marker` to `_marker` in one struct. It is a pure code-style cleanup with no functional, security, or API change.

AI review queuedprimitives: handle zero-input transactionsby Nick Johnson · 1f7969f4 · Nov 14, 2025 · 1 fileMessage 68 · AdequateLow 34Details
Commit message · Nick Johnson

primitives: handle zero-input transactions

rust-bitcoin always uses the Segwit witness encoding for zero input
transactions, described in detail in the Serialization notes of the
transaction docs. When decoding such case, there are no witnesses
so the decoder should skip to decoding the locktime.

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

This commit fixes a bug in how the rust-bitcoin library decodes Bitcoin transactions that have no inputs. Normally, the library uses a special encoding for zero-input transactions. The decoder was incorrectly trying to read witness data even when there were no inputs, which would cause decoding to fail. The fix skips witness decoding when there are no inputs, and a new test verifies that an empty transaction can be encoded and decoded correctly.

AI review queuedRemove redundant array allocation and copy in OutPointDecoderby Mitchell Bagot · 0e5f901f · Nov 13, 2025 · 1 fileMessage 73 · AdequateInformational 15Details
Commit message · Mitchell Bagot

Remove redundant array allocation and copy in OutPointDecoder

OutPointDecoder::end() currently decodes data into a 36-byte array,
before copying subslices to pass through to constructors for the inner
fields. This is needlessly wasteful.

Remove the array allocations and byte array copies in
OutPointDecoder::end() and construct inner OutPoint fields directly
from the decoded array.

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 is a straightforward internal code cleanup. It removes a temporary 36-byte buffer and manual byte copying when decoding an OutPoint (a Bitcoin transaction reference), replacing it with a direct split of the already-decoded byte array. There is no security-relevant change.

Security candidateCreate an empty crypto crateby Tobin C. Harding · 7d8172e2 · Nov 13, 2025 · 9 filesMessage 68 · AdequateInformational 15Details
Commit message · Tobin C. Harding

Create an empty crypto crate

In preparation for crate smashing the `crypto` module create an empty
crate so we can grab the name on crates.io.

I don't currently know whats the pros and cons of moving just keys to
moving everything in the `crypto` module. So the manifest description
is a bit vague.

FTR `bitcoin-keys` and `bitcoin_keys` are both taken on crates.io

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 creates a brand-new, empty placeholder Rust crate named `bitcoin-crypto` inside the rust-bitcoin workspace. It contains no executable code, no cryptographic logic, and no changes to existing crates. The sole purpose is to reserve the package name on crates.io before someone else takes it. There is nothing here that could affect security.

Lower-prioritybitcoin: Fix all primitives re-exportsby Tobin C. Harding · 4f0ac3a3 · Nov 12, 2025 · 4 filesMessage 68 · AdequateInformational 15Details
Commit message · Tobin C. Harding

bitcoin: Fix all primitives re-exports

We have a policy that for any `primitives::Foo` or `primitives::foo`
the same must exist at `bitcoin::Foo`or `bitcoin::foo` respectively.

Fix all the current issues. I used a script same as we have for
checking primitives/units, it will be added next.

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

This commit is a routine API cleanup. It adds missing public re-exports of types from the underlying `primitives` and `units` crates into the main `bitcoin` crate, and adjusts documentation attributes so the exports display correctly. There is no change to behavior, logic, or security-sensitive code.

Lower-priorityAdd a script for checking bitcoin re-exports primitives stuffby Tobin C. Harding · e7bd2255 · Nov 12, 2025 · 2 filesMessage 73 · AdequateInformational 15Details
Commit message · Tobin C. Harding

Add a script for checking bitcoin re-exports primitives stuff

As we do for primitives/units add a script and tie it into CI for
checking all bitcoin re-exports are correct.

This is a candidate for re-writing in Xshell so for now just duplicate
the other shell script.

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

This commit adds a new development script and a corresponding CI step that automatically checks whether the `bitcoin` crate correctly re-exports public items from the `bitcoin_primitives` crate. It is purely a testing/quality-assurance change and does not modify any library code, user-facing behavior, or security-sensitive logic.

Lower-priorityRe-name primitives re-export testby Tobin C. Harding · 83f1c82e · Nov 12, 2025 · 2 filesMessage 70 · AdequateInformational 15Details
Commit message · Tobin C. Harding

Re-name primitives re-export test

In preparation for doing the same sort of API test in
bitcoin/primitives re-name the primitives/units re-export test.

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

This commit simply renames a test-generation script and updates the GitHub Actions workflow that calls it. The old file `contrib/generate-re-export-test.sh` is renamed to `contrib/generate-primitives-re-export-test.sh`, and the CI step name and command are updated accordingly. The script's contents are unchanged. There is no security relevance.

Lower-priorityAdd iterator tests for EncodableByteIterby Mitchell Bagot · b7cb0885 · Nov 12, 2025 · 4 filesMessage 78 · AdequateInformational 15Details
Commit message · Mitchell Bagot

Add iterator tests for EncodableByteIter

Add tests for EncodableByteIter to demonstrate its usage alongside
hex::BytesToHexIter with examples of converting an Encodable object
to hex strings.

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

This commit only adds new test code and a development-only dependency. It does not change any production code, fix a bug, or alter behavior. There is no security issue here.

Lower-priorityAdd an iterator to yield the bytes of an encoded objectby Mitchell Bagot · 4fa296a9 · Nov 12, 2025 · 6 filesMessage 73 · AdequateInformational 15Details
Commit message · Mitchell Bagot

Add an iterator to yield the bytes of an encoded object

The Encoder trait currently provides an iterator-style interface for
objects to yield byte slices. Since other utilities, like
hex::BytesToHexIter rely on byte-by-byte input to function, providing
a method of yielding raw bytes for Encodables increases the versatility
of the encoding on Encodable objects.

Add EncodableByteIter struct to iterate the bytes from an Encodable
as u8 values.

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

This commit adds a new public helper type, EncodableByteIter, that lets callers read the serialized bytes of any Encodable object one byte at a time. It is a pure feature addition with no bug fixes, no changes to existing behavior, and no security-relevant content in the commit message or diff.

AI review queueddoc: Add version documentby Tobin C. Harding · 7888b60a · Nov 11, 2025 · 1 fileMessage 58 · ThinInformational 15Details
Commit message · Tobin C. Harding

doc: Add version document

Add a document that explicitly states which versions of `bitcoin` are
long term support (LTS).

Include a list that maps `bitcoin` version to its dependency versions
for crates in this repo.

58/100 · ThinMessage clarity
✓ Descriptive subject✓ Provides detailed explanatory context
Why it was queued
documentation-only discountsecond-pass: broader security terminology
AI analysis · Informational 15/100

This commit only adds a new documentation file describing which versions of the rust-bitcoin library are considered long-term support (LTS) and which dependency versions correspond to each release. No code was changed, and there is no security fix or vulnerability present.

Security candidateFix lint warnings after upgrade to secp 0.31by Tobin C. Harding · df02be71 · Nov 11, 2025 · 11 filesMessage 60 · AdequateInformational 15Details
Commit message · Tobin C. Harding

Fix lint warnings after upgrade to secp 0.31

- Remove rand deprecated stuff
- Use new Keypair API
- Remove unnecessary import

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

This commit is a routine maintenance patch that updates example code and tests to match a newer version of the underlying secp256k1 cryptography library. It replaces deprecated random-number calls with their modern equivalents and switches to a renamed key-construction function. There is no indication of a security vulnerability being fixed.

Lower-prioritybitcoin: Add explicit version numbers to depsby Tobin C. Harding · f47d7a15 · Nov 11, 2025 · 1 fileMessage 72 · AdequateInformational 15Details
Commit message · Tobin C. Harding

bitcoin: Add explicit version numbers to deps

In order to release we have to have explicit version numbers for all
dependencies.

72/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Explains rationale or failure mode
AI analysis · Informational 15/100

This commit only adds explicit version numbers to internal Rust package dependencies in a configuration file (Cargo.toml). It makes no code changes and does not fix or introduce any security issue. It is a routine release-preparation change.

Lower-prioritychore(docs): remove `act` from CI Pipeline section on READMEby Luis Schwab · 7061fdbe · Nov 11, 2025 · 1 fileMessage 62 · AdequateInformational 15Details
Commit message · Luis Schwab

chore(docs): remove `act` from CI Pipeline section on README

62/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
documentation-only discount
AI analysis · Informational 15/100

This commit simply removes a few sentences from the project's README that told developers they could run the CI pipeline locally using a tool called 'act'. It is a documentation-only change with no code modifications and no security relevance.

Lower-priorityClarify feature gate on impl_to_hex_from_lower_hex macroby Mitchell Bagot · de139654 · Nov 11, 2025 · 1 fileMessage 73 · AdequateInformational 15Details
Commit message · Mitchell Bagot

Clarify feature gate on impl_to_hex_from_lower_hex macro

The docs on internals::impl_to_hex_from_lower_hex macro state that the
calling crate must have an "alloc" feature. If this feature is not
enabled, the macro is a no-op. In practice, the macro has no such
feature gate, as it is primarily used in the bitcoin crate, which has
no "alloc" feature.

Adjust the wording of the internals::impl_to_hex_from_lower_hex macro
to clarify the true behaviour.

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

This commit only changes a documentation comment for an internal Rust macro. It removes an outdated note claiming the macro checks for an 'alloc' feature and updates the description to match what the code actually does. No code behavior changes, and there is no security relevance.

Lower-prioritydoc: Add agents.mdby jrakibi · 81a91f4b · Nov 11, 2025 · 2 filesMessage 43 · ThinInformational 15Details
Commit message · jrakibi

doc: Add agents.md

For an attempt to catch bots/low-quality contributions
we add AGENTS.md that tells LLMs to identify themselves

43/100 · ThinMessage clarity
✓ Subject identifies a change✓ Provides an explanatory body
Why it was queued
documentation-only discount
AI analysis · Informational 15/100

This commit only adds two documentation files. One asks automated coding tools (AI agents) to identify themselves in commit messages, and the other is a one-line pointer to that file. There is no code change, no bug fix, and no security impact.

Security candidateUpgrade secp to 0.31.1by Tobin C. Harding · 3c490723 · Nov 10, 2025 · 9 filesMessage 73 · AdequateInformational 17Details
Commit message · Tobin C. Harding

Upgrade secp to 0.31.1

Upgrade to the latest released version of `rust-secp256k1`. Do just
the build errors. Note one deprecated call to `thread_rng()` is added,
I'm not sure why this line was building before but anyways the `rand`
stuff will be done next.

73/100 · AdequateMessage clarity
✓ Subject identifies a change✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode
Why it was queued
cryptography-sensitive pathsigning or wallet path
AI analysis · Informational 17/100

This commit updates the underlying cryptographic library (rust-secp256k1) from version 0.30.0 to 0.31.1 and makes the small code changes needed to keep the project compiling. The newer library version may include its own bug fixes, but the commit itself is a routine dependency upgrade rather than a direct fix for a known security flaw in rust-bitcoin.

Security candidateDelete empty fileby Tobin C. Harding · e85045eb · Nov 10, 2025 · 1 fileMessage 28 · OpaqueInformational 15Details
Commit message · Tobin C. Harding

Delete empty file

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 removes a single empty example file named 'ecdsa-psbt' from the rust-bitcoin repository. The file contained only a blank line and had no executable code, so the change cannot affect software behavior or introduce any security issue.