RB
← All projectsRust Bitcoin

rust-bitcoin

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

BitcoinCryptographic librariesNormal
Repository coverage

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

527security candidates507second-pass queue2197AI analyses
143commits · 30 days
279commits · 60 days
1156commits · 180 days
2045commits · 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
496Strong · 80–100
1083Adequate · 60–79
567Thin · 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 Poelstra21775149089
Tobin C. Harding41566410063
jrakibi944994068
Nick Johnson19121190060
Jamil Lambert, PhD11919116061
satsfy (Renato Britto)381527066
Fmt Bot331431045
Trevor Arjeski111111069
Shing Him Ng31731056
Ismail Daif22622050
Martin Habovstiak29527068
Analysis record

Published AI watches

Last scanned 8 minutes ago

Informational 19 AI analysisMessage 100 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6922: Use `try_fold` instead of `fold` in `Sum` impl

This is a code-quality and performance improvement, not a security fix. It changes how the library adds up lists of Bitcoin amounts so that it stops early once an overflow is detected, rather than continuing to process the rest of the list…

No security-relevant signal in commit message or diffRefactor preserves overflow-checking behavior (short-circuits instead of continuing)New API method `NumOpResult::from_result` is a pure inverse of existing `into_result`
86e4d5daby Andrew Poelstra+60−562 files
No security note in commit
Moderate 52 AI analysisMessage 91 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6893: units: Reject malformed amount strings

This update fixes a bug in how the library reads Bitcoin amount strings like '1.5 BTC'. Previously, certain malformed inputs such as '.', '._', '1_', '1_.0', and '1._0' were incorrectly accepted and treated as valid amounts (often zero), i…

Input validation bypass in amount parserMalformed strings silently parsed as zero or ordinary amountsUnderscore separator placement not enforced
fcb14622by Andrew Poelstra+88−343 files
Vendor flagged security relevance
Low 48 AI analysisMessage 91 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6921: units: fix div_by_fee_rate_ceil precision

This commit fixes a rounding bug in how the rust-bitcoin library calculates the minimum transaction weight needed to pay a given fee at a given fee rate. The old code rounded the fee rate up too early, which could produce a weight slightly…

Incorrect fee-weight calculation due to premature integer roundingPotential transaction fee shortfall when using div_by_fee_rate_ceilOverflow protection added for Amount::MAX * 4_000_000 intermediate value
b31212e0by Andrew Poelstra+38−82 files
No security note in commit
Informational 15 AI analysisMessage 91 · Strong
RB Rust Bitcoinrust-bitcoin BitcoinCryptographic libraries

Merge rust-bitcoin/rust-bitcoin#6898: Release tracking PR: `consensus-encoding 1.3.0`

This is a routine release-management commit that bumps the version number of the `bitcoin-consensus-encoding` crate from 1.2.0 to 1.3.0 and updates lock files accordingly. It contains no code changes that fix or introduce a security issue.…

0cfc7908by Andrew Poelstra+37−349 files
No security note in commit
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
Repository ledger

Explore captured commits

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

Security candidateAdd Lower/UperHex impls for taproot::SerializedSignatureby Tobin C. Harding · a2a69cef · Nov 23, 2025 · 1 fileMessage 65 · AdequateInformational 16Details
Commit message · Tobin C. Harding

Add Lower/UperHex impls for taproot::SerializedSignature

Done in an effort to make the `ecdsa` and `taproot`
`SerializedSignature`s have the same API.

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

This commit adds two new ways to display a taproot serialized signature as hexadecimal text (lowercase and uppercase). It is a pure API-consistency change to make taproot signatures match the existing ecdsa signature API. There is no security issue visible in the diff.

Security candidateMove ecdsa::SerializedSignature implsby Tobin C. Harding · fa57e889 · Nov 23, 2025 · 2 filesMessage 58 · ThinInformational 15Details
Commit message · Tobin C. Harding

Move ecdsa::SerializedSignature impls

In an effort to make the `ecdsa` and `taproot` modules look the same
so it is easier to tell exactly where they differ move some
`SelializedSignature` impls. Elect to use the layout in the `taproot`
one.

Except in `taproot` move the `Eq` impl to be grouped with the
`PartialEq` impls.

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

This commit is purely a code cleanup: it moves some trait implementation blocks for the ECDSA SerializedSignature type to a different location in the same file and reorders the Taproot Eq impl to sit next to PartialEq. No logic, behavior, or signatures changed.

Security candidateMove the SerializedSignature to cryto moduleby Tobin C. Harding · df89db76 · Nov 23, 2025 · 3 filesMessage 88 · StrongInformational 18Details
Commit message · Tobin C. Harding

Move the SerializedSignature to cryto module

There was no good reason for putting it where it is, at least from
what I found on the original PR

> I don't remember exactly but I think I thought it wouldn't work in
> the other taproot module. I have no idea now if it's actually an
> issue

ref: https://github.com/rust-bitcoin/rust-bitcoin/pull/2156#issuecomment-1790295634

Anyways, in order to split the `crypto` module out into a separate
crate it makes sense to have the `SerializedSignature` as well.

88/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Links an issue, advisory, or supporting reference
Why it was queued
signing boundarycryptography-sensitive pathsigning or wallet path
AI analysis · Informational 18/100

This commit is a straightforward internal code reorganization. It moves the SerializedSignature type from one module to another within the same crate, without changing its behavior or public API. There is no security fix or vulnerability here.

Security candidatecrypto: Fix taproot module docsby Tobin C. Harding · dba9d487 · Nov 23, 2025 · 1 fileMessage 65 · AdequateInformational 15Details
Commit message · Tobin C. Harding

crypto: Fix taproot module docs

The docs are just plain wrong, this module contains `Signature` only,
nothing to do with keys.

65/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Names security-relevant behavior explicitly
Why it was queued
signing boundarycryptography-sensitive path
AI analysis · Informational 15/100

This commit only fixes a documentation comment in the source code. It changes the module description from incorrectly saying it contains Taproot keys to correctly saying it contains Taproot signatures. There is no code change and no security impact.

Security candidatecrypto: Re-order taproot::Signature methodsby Tobin C. Harding · b906245b · Nov 23, 2025 · 1 fileMessage 73 · AdequateInformational 15Details
Commit message · Tobin C. Harding

crypto: Re-order taproot::Signature methods

The `taproot::Signature` and `ecdsa::Signature` are similar, lets make
the code look similar so its more clear exactly where the APIs differ.

Move the `taproot` code to mirror the `ecdsa` code.

Code move only, no logic change.

73/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Names security-relevant behavior explicitly
Why it was queued
signing boundarycryptography-sensitive path
AI analysis · Informational 15/100

This commit simply reorders two methods inside the same Rust source file so that the taproot signature code matches the layout of the ECDSA signature code. No code behavior, logic, or public API changed. It is a cosmetic cleanup only.

Security candidateDrop rand-std feature flagby Nick Johnson · 85fccd64 · Nov 21, 2025 · 11 filesMessage 68 · AdequateInformational 18Details
Commit message · Nick Johnson

Drop rand-std feature flag

With underlying secp256k1 updates, this flag is essentially a duplicate
with the "rand" feature flag. Dropping this one for user clarity.

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

This commit removes a redundant feature flag called 'rand-std' from the rust-bitcoin library and replaces its use with the combination of 'rand' and 'std'. It is a cleanup change to make feature selection clearer for users. There is no security vulnerability or bug fix in the code itself.

Security candidateFix lint warnings after upgrade to secp-0.32.0-beta.2by Tobin C. Harding · 9a1b408f · Nov 19, 2025 · 12 filesMessage 83 · StrongInformational 15Details
Commit message · Tobin C. Harding

Fix lint warnings after upgrade to secp-0.32.0-beta.2

- Use new secret key API
- Remove deprecated Keypair calls
- Use new `ecdsa::verify` function
- Use new `secp256k1::ecdsa::sign` stand alone function
- Use new `secp256k1::schnorr::sign` stand alone function
- Use new `secp256k1::ecdsa::sign_recoverable` function
- Use `RecoverableSignature` methods
- Use new `secp256k1::schnorr::sign_with_aux_rand` function
- Use the new `secp256k::schnoor::sign_no_aux_rand` function
- Use the new `secp256k1 crate level generate_keypair` function

Don't remove the secp context yet, that will be done next.

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
secret or key materialsigning boundarycryptography-sensitive pathsigning or wallet path
AI analysis · Informational 15/100

This commit is a routine code cleanup that updates rust-bitcoin to match a newer version of the secp256k1 cryptographic library. It only renames function calls (for example, switching from older methods like `secp.sign_ecdsa` to newer standalone functions like `secp256k1::ecdsa::sign`) and does not change any security logic, fix a bug, or alter how secrets are handled.

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.

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.

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.

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.

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.

Security candidateci: fix default permissions to noneby Jose Storopoli · 594327b5 · Nov 3, 2025 · 16 filesMessage 57 · ThinLow 37Details
Commit message · Jose Storopoli

ci: fix default permissions to none

57/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
credential or privilege stateboot or update path
AI analysis · Low 37/100

This commit tightens the security settings on the project's GitHub Actions workflows. Previously, these automated scripts likely ran with broad default permissions that could let a compromised action read or modify code, open pull requests, or access secrets. The change sets the default permission to 'none' and then explicitly grants each workflow only the minimum permissions it actually needs (mostly just reading the repository, with write access only where required). This is a defensive hardening measure rather than a fix for an active attack.

Security candidateci: actions/checkout with persist-credentials falseby Jose Storopoli · bbe1b79b · Nov 3, 2025 · 15 filesMessage 62 · AdequateLow 42Details
Commit message · Jose Storopoli

ci: actions/checkout with persist-credentials false

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
credential or privilege stateboot or update path
AI analysis · Low 42/100

This commit changes the project's GitHub Actions CI workflows so that after checking out the source code, the temporary GitHub authentication token is no longer kept in memory for later steps. This is a defensive hardening change: it reduces the risk that a compromised third-party action or malicious build step could steal the token and modify the repository or release artifacts. It does not fix an active bug in the Bitcoin library code itself.

Security candidateci: pin actions to tagged hashesby Jose Storopoli · 106a8a98 · Nov 3, 2025 · 16 filesMessage 57 · ThinInformational 15Details
Commit message · Jose Storopoli

ci: pin actions to tagged hashes

57/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
access controlboot or update path
AI analysis · Informational 15/100

This commit only changes how GitHub Actions automation is configured. It replaces floating version tags like @v5 with exact commit hashes (plus a comment showing the version). This is a standard hardening practice to prevent a compromised third-party action from silently updating under the same tag. It does not change any of the project's actual Bitcoin/Rust code, so it cannot directly introduce or fix a vulnerability in the library users depend on.

Security candidateAdd tests for XOnlyPublicKey functionsby Mitchell Bagot · bae0c57c · Nov 1, 2025 · 1 fileMessage 78 · AdequateInformational 15Details
Commit message · Mitchell Bagot

Add tests for XOnlyPublicKey functions

These tests sanity check the implementations of the from_byte_array
and into_inner functions in the XOnlyPublicKey struct implementation.

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

This commit only adds two new unit tests for existing XOnlyPublicKey functions. It does not change any production code, fix bugs, or alter behavior. There is no security issue here.

Security candidateAdd unwrapping function to XOnlyPublicKeyby Mitchell Bagot · 4c5ffffc · Nov 1, 2025 · 1 fileMessage 68 · AdequateInformational 15Details
Commit message · Mitchell Bagot

Add unwrapping function to XOnlyPublicKey

The XOnlyPublicKey struct wraps a similar secp256k1 struct, and can
be constructed from the secp256k1 type. For code that requires the
secp key type, we have no way to convert our XOnlyPublicKey type back
to a secp type.

Add an into_inner() function on the XOnlyPublicKey struct
implementation to return the internal secp256k1 XOnlyPublicKey.

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 adds a simple accessor method that lets users extract the underlying cryptographic key from a wrapper type. It is a routine API addition with no security relevance visible in the code or commit message.

Security candidatehashes: add clippy::use_self lintby Jose Storopoli · bbf36a02 · Oct 31, 2025 · 15 filesMessage 45 · ThinInformational 15Details
Commit message · Jose Storopoli

hashes: add clippy::use_self lint

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 is purely a code-style cleanup. It turns on a Clippy lint that encourages using 'Self' instead of repeating type names inside Rust code, then updates many files in the rust-bitcoin hashes crate to follow that style. There is no functional change, no bug fix, and no security impact.

Security candidatebitcoin: add clippy::use_self lintby Jose Storopoli · 8a8b12e2 · Oct 31, 2025 · 43 filesMessage 45 · ThinInformational 15Details
Commit message · Jose Storopoli

bitcoin: add clippy::use_self lint

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

This commit only turns on a Rust style lint (clippy::use_self) and rewrites code to use `Self` instead of repeating type names. It does not change any behavior, logic, or security properties of the library.

Security candidateChange secp256k1 format in docsby Mitchell Bagot · e20f1a4b · Oct 28, 2025 · 2 filesMessage 68 · AdequateInformational 15Details
Commit message · Mitchell Bagot

Change secp256k1 format in docs

The docs occasionally use 'secp', 'Secp256k1' and 'secp256k1' all
to refer to the secp256k1 library. This is inconsistent and conflicts
with the naming of the Secp256k1 context object.

Change instances of 'Secp256k1' to lowercase and use full name in
place of 'secp' shorthand.

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 only changes wording in documentation comments and one inline code comment. It renames 'Secp256k1' to 'secp256k1' and expands the shorthand 'secp' to 'secp256k1' for consistency. No executable code, logic, cryptography, or APIs were modified, so there is no security impact.

Security candidatechore: improve test panic messagesby Klaklax · 89c77e93 · Oct 18, 2025 · 2 filesMessage 67 · AdequateInformational 15Details
Commit message · Klaklax

chore: improve test panic messages

67/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Mentions testing or verification! No meaningful explanatory body
Why it was queued
cryptography-sensitive pathsigning or wallet path
AI analysis · Informational 15/100

This commit only improves the wording of error messages shown when tests fail. It does not change any production code, behavior, or security logic.

Security candidatechore: remove extra spaces in the commentby spuradage · ba9aa861 · Oct 17, 2025 · 3 filesMessage 72 · AdequateInformational 15Details
Commit message · spuradage

chore: remove extra spaces in the comment

Signed-off-by: spuradage <spuradage@outlook.com>

72/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body
Why it was queued
cryptography-sensitive path
AI analysis · Informational 15/100

This commit only removes extra spaces inside comments and a user-facing error message string. It does not change any executable code, logic, or behavior. There is no security relevance.

Security candidatefix typosby Forostovec · 563f2231 · Oct 15, 2025 · 1 fileMessage 0 · OpaqueInformational 15Details
Commit message · Forostovec

fix typos

0/100 · OpaqueMessage clarity
! Very short subject! Too few words to establish purpose! No meaningful explanatory body! Opaque security-relevant change
Why it was queued
cryptography-sensitive path
AI analysis · Informational 15/100

This commit fixes two spelling/grammar mistakes in code comments and documentation strings within a Bitcoin signature hashing file. There are no code behavior changes, no bug fixes, and no security implications.