EP
← All projectsElements Project

Elements

Consensus node software underlying Liquid and other Elements-based Bitcoin sidechains.

BitcoinBitcoin sidechainsCryptographic librariesNode implementationsActive incident
Repository coverage

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

34security candidates25second-pass queue59AI analyses
36commits · 30 days
47commits · 60 days
85commits · 180 days
115commits · 365 days
Backfill bands
Sep 7 → Mar 1129 seen5 candidatesComplete
Mar 11 → Jul 938 seen7 candidatesComplete
Jul 9 → Aug 82 seen0 candidatesComplete
Aug 8 → Sep 738 seen13 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.

62/100 average clarity
26Strong · 80–100
32Adequate · 60–79
48Thin · 40–59
10Opaque · 0–39
Read the scoring rubric →
Developer activity

Who is changing the project?

Public Git author strings; identities are not independently verified.

DeveloperCommitsCandidatesAnalyzedHigh riskMessage avg.
Byron Hambly462227371
Tom Trevethan37414152
merge-script944191
Ruslan Kasheparov827042
Pablo Greco814045
ivanlele111058
Abdullah1738200057
nazarevsky101035
Pieter Wuille100091
Hennadii Stepanov100045
Russell O'Connor101068
fanquake100080
Analysis record

Published AI watches

Last scanned 5 minutes ago

Moderate 64 AI analysisMessage 91 · Strong
EP Elements ProjectElements BitcoinBitcoin sidechainsCryptographic librariesNode implementations

Merge ElementsProject/elements#1604: [master] sigcache: harden range proof cache keys and add -norangeproofcache option

This commit fixes a cache-key collision bug in Elements' range-proof and surjection-proof validation caches. Previously, the cache key was built by simply concatenating raw bytes, so two different sets of inputs could accidentally produce …

Cache key collision resistance hardened by length-prefixing all fieldsSurjection-proof cache key now includes vTags, fixing a missing-input vulnerabilityNew runtime option to disable range-proof cache without recompilation
301acc64by merge-script+270−335 files
Vendor flagged security relevance
Informational 18 AI analysisMessage 73 · Adequate
EP Elements ProjectElements BitcoinBitcoin sidechainsCryptographic librariesNode implementations

init: add -norangeproofcache startup option to disable range proof cache

This commit adds a new command-line option `-norangeproofcache` that lets node operators turn off an internal performance cache used when validating confidential transaction range proofs. It is a debug/test option, not a security fix. Ther…

No security-relevant signal in commit message or diffNew debug/test startup option onlyNo validation logic change; only cache lookup/store paths are bypassed
53167b1fby Byron Hambly+13−52 files
No security note in commit
Moderate 68 AI analysisMessage 83 · Strong
EP Elements ProjectElements BitcoinBitcoin sidechainsCryptographic librariesNode implementations

sigcache: harden proof cache keys with length-prefixed hashing

This commit fixes a cache-key collision bug in Elements' proof verification caches. Previously, the cache key for range proofs and surjection proofs was built by simply concatenating raw bytes, so two different sets of inputs could acciden…

Cache-key collision in proof verification cache could allow bypass of cryptographic verificationRaw concatenation of variable-length fields in cache-key constructionMissing input (vTags) in surjection-proof cache key
b0a27528by Byron Hambly+92−282 files
Vendor flagged security relevance
Moderate 59 AI analysisMessage 100 · Strong
EP Elements ProjectElements BitcoinBitcoin sidechainsCryptographic librariesNode implementations

Merge ElementsProject/elements#1593: Fix RPC return errors for psbt and invalid rangeproofs

This update fixes several ways that malformed transaction data could crash Elements nodes or trick wallet users into signing bad transactions. The main changes turn internal 'assert' crashes into proper error returns when creating confiden…

assert-to-error conversion in rangeproof generationPSBT explicit output data now required before signing blinded outputspeg-in witness stack length and deserialization hardening
4ddaefc8by merge-script+221−4515 files
No security note in commit
High 72 AI analysisMessage 91 · Strong
EP Elements ProjectElements BitcoinBitcoin sidechainsCryptographic librariesNode implementations

Merge ElementsProject/elements#1592: blind/blindpsbt fixes

This merge commit fixes several security and robustness bugs in Elements' confidential-transaction blinding code and in its dynamic-federated (dynafed) header handling. The most user-visible issues are in 'blindpsbt': malformed PSET inputs…

Replacement of assertion failures with recoverable error returns in attacker-influenced PSET blinding pathsOut-of-bounds read prevention by requiring 33-byte Pedersen commitments before passing buffers to libsecp256k1Range-proof equality verification now checks both min and max bounds, closing a proof-forgery window
31e8f27fby merge-script+86−189 files
Vendor flagged security relevance
Informational 15 AI analysisMessage 96 · Strong
EP Elements ProjectElements BitcoinBitcoin sidechainsCryptographic librariesNode implementations

Merge ElementsProject/elements#1576: Fix intermittent failure in feature_pegin_subsidy.py

This commit only updates test scripts to fix flaky automated tests. It changes how test code calculates expected pegin subsidy values and how test nodes bind to network ports when using Bitcoin Core as a parent chain. No production node co…

No changes to production source codeChanges limited to test/functional/ Python test scriptsTest assertion hardening: dynamic subsidy computation instead of hardcoded constants
bad8ca42by merge-script+154−382 files
No security note in commit
Moderate 60 AI analysisMessage 50 · Thin
EP Elements ProjectElements BitcoinBitcoin sidechainsCryptographic librariesNode implementations

PartiallySignedTransaction::SetupFromTx indexes vtxinwit checked

This commit hardens how Elements handles 'peg-in' transactions—transfers of assets from a parent blockchain into a sidechain. It adds size checks for witness data fields and wraps decoding in error handling so malformed inputs are rejected…

Out-of-bounds array access fixed in PSBT peg-in setupMissing length validation added for pegin witness stack elementsException handling added around deserialization of pegin witness components
ffd91c05by Tom Trevethan+57−332 files
No security note in commit
High 72 AI analysisMessage 50 · Thin
EP Elements ProjectElements BitcoinBitcoin sidechainsCryptographic librariesNode implementations

Return error for psbt if explicit amounts/assets deleted

This commit fixes a security bug in how the Elements wallet signs partially-signed Bitcoin transactions (PSBTs) for confidential (blinded) payments. Previously, a malicious counterparty could remove the plain-text amount and asset fields f…

Missing input validation on attacker-controlled PSBT dataBlinding proof verification relied on explicit fields that could be omitted by a counterpartyAssertions replaced with safe error returns for off-host data
3a8dec12by Tom Trevethan+18−73 files
No security note in commit
Moderate 60 AI analysisMessage 45 · Thin
EP Elements ProjectElements BitcoinBitcoin sidechainsCryptographic librariesNode implementations

Return error for invalid rangproof amounts

This commit fixes a crash bug in the Elements blockchain wallet software. When creating a confidential (blinded) transaction, the code could hit an internal 'assert' and abort the program if it tried to generate a rangeproof for a zero-amo…

Removal of assert() on cryptographic operation result in transaction blinding codeConversion of abort-on-failure into error-return for rangeproof generation failuresNew explicit validation rejecting zero-amount spendable outputs in PSBT blinding
4e5ca94fby Tom Trevethan+99−54 files
No security note in commit
High 74 AI analysisMessage 73 · Adequate
EP Elements ProjectElements BitcoinBitcoin sidechainsCryptographic librariesNode implementations

blindpsbt: return error instead of asserting on surjection proof failure

This commit fixes a denial-of-service bug in Elements' confidential asset handling. Previously, a malformed transaction file (PSET) could trigger a hard program crash (assert/abort) by feeding in mismatched cryptographic tags. The patch tu…

assert-to-error conversiondenial-of-service vector from untrusted PSET inputsurjection proof failure on attacker-chosen tags/generators
b0aba619by Byron Hambly+9−21 file
Vendor flagged security relevance
Moderate 62 AI analysisMessage 73 · Adequate
EP Elements ProjectElements BitcoinBitcoin sidechainsCryptographic librariesNode implementations

blindpsbt: refuse to blind a PSET output with no amount

This commit fixes a crash/undefined-behavior bug in the Elements wallet's confidential-transaction blinding code. When processing a specially crafted Partially Signed Elements Transaction (PSET), the software would blindly use an output am…

Undefined behavior from dereferencing a disengaged std::optionalMissing input validation on optional PSET fieldPotential denial-of-service/crash via crafted PSET
066ecf6eby Byron Hambly+8−01 file
Vendor flagged security relevance
Moderate 63 AI analysisMessage 73 · Adequate
EP Elements ProjectElements BitcoinBitcoin sidechainsCryptographic librariesNode implementations

headerssync: retain Elements identity and proof fields

This commit fixes a bug in how Elements nodes temporarily store block headers during initial sync. The node was stripping out Elements-specific fields (block height, proof, dynamic federation parameters, and signblock witness) when compres…

Header integrity loss in sync path: reconstructed header hash would not match received headerLoss of proof and signblock witness data needed for signed/dynafed validationPotential denial-of-service via sync failure or validation rejection of otherwise valid headers
fef1a30bby Byron Hambly+26−32 files
No security note in commit
High 74 AI analysisMessage 85 · Strong
EP Elements ProjectElements BitcoinBitcoin sidechainsCryptographic librariesNode implementations

blindpsbt: require both range bounds to match claim in VerifyBlindValueProof

This commit fixes a bug in how Elements verifies confidential transaction value proofs. Previously, the software only checked the lower bound of a mathematical range proof against the amount shown in a transaction. That meant a proof could…

Understated output values in PSET blind value proofsIncomplete range-proof bound verificationConfidential transaction amount mismatch risk
34be37f3by Byron Hambly+5−11 file
Vendor flagged security relevance
Low 48 AI analysisMessage 73 · Adequate
EP Elements ProjectElements BitcoinBitcoin sidechainsCryptographic librariesNode implementations

validation: always validate and retain dynafed header block_height

This patch fixes a bug in the Elements blockchain where dynamic-federation (dynafed) block headers could contain an incorrect block height and still be accepted, and where stored header records could be rebuilt with a different hash than t…

Header hash mismatch between accepted and reconstructed dynafed headers when legacy option disabledMissing height validation for dynafed headers when -con_blockheightinheader option is offPotential for accepting dynafed headers with incorrect block_height
c7ec63c5by Byron Hambly+12−32 files
No security note in commit
Moderate 62 AI analysisMessage 73 · Adequate
EP Elements ProjectElements BitcoinBitcoin sidechainsCryptographic librariesNode implementations

blindpsbt: reject off-curve blinding pubkey before ECDH

This commit fixes a crash bug in Elements' confidential-transaction blinding code for PSBTs (Partially Signed Bitcoin Transactions). A malformed, attacker-chosen 'blinding public key' that is not actually a valid point on the cryptographic…

Off-curve / invalid elliptic-curve public key reaches ECDHAssertion abort (DoS / process termination) via crafted inputMissing input validation in PSBT blinding path compared to non-PSBT path
f634a3a4by Byron Hambly+7−01 file
Vendor flagged security relevance
Moderate 60 AI analysisMessage 78 · Adequate
EP Elements ProjectElements BitcoinBitcoin sidechainsCryptographic librariesNode implementations

dynafed: require at least four-fifths approval for parameter transition

This commit fixes a voting threshold bug in Elements' dynamic federation (dynafed) feature. The code was supposed to require at least 80% (four-fifths) of recent blocks to approve a change to federation parameters, but due to integer divis…

Consensus threshold under-approximation due to integer floor divisionPotential for dynafed parameter transition with less than intended 80% block approvalOverflow-safe ceiling formula used as remediation
bdedb12eby Byron Hambly+5−21 file
Vendor flagged security relevance
Moderate 62 AI analysisMessage 73 · Adequate
EP Elements ProjectElements BitcoinBitcoin sidechainsCryptographic librariesNode implementations

blindpsbt: require genuine commitments in VerifyBlindValueProof

This commit fixes a bug in the way confidential transaction value proofs are validated. Previously, the code accepted an explicit 9-byte value or an empty field where a 33-byte cryptographic commitment was expected. It then passed that sho…

Out-of-bounds read in cryptographic proof verificationInsufficient input validation before passing buffer to libsecp256k1Confidential value/asset commitment type confusion
6f1a5131by Byron Hambly+5−11 file
Vendor flagged security relevance
Informational 12 AI analysisMessage 95 · Strong
EP Elements ProjectElements BitcoinBitcoin sidechainsCryptographic librariesNode implementations

test: assert wallet default commits rangeproofs post-dynafed

This commit only adds a new test to the project's test suite. It checks that the wallet's default signing behavior correctly includes (or excludes) a special 'rangeproof' flag depending on whether a network upgrade called 'dynafed' is acti…

Adds functional test coverage for SIGHASH_RANGEPROOF default behaviorVerifies pre-dynafed wallet default does not set SIGHASH_RANGEPROOF bitNo modification to signing, consensus, or mempool code
a1aacfaaby Byron Hambly+45−01 file
No security note in commit
Moderate 64 AI analysisMessage 73 · Adequate
EP Elements ProjectElements BitcoinBitcoin sidechainsCryptographic librariesNode implementations

wallet: default to rangeproof-committing sighash when dynafed active

This commit changes the Elements wallet so that, when a newer consensus feature called 'DynaFed' is active, any transaction the wallet signs without an explicit signature mode will automatically include the transaction's confidential outpu…

Fixes a known malleability vector: pre-Taproot rangeproof/witness malleabilityChanges wallet default sighash only when dynafed is activeDoes not override explicit user sighash choices
ce342f58by Byron Hambly+12−33 files
Vendor flagged security relevance
Low 33 AI analysisMessage 73 · Adequate
EP Elements ProjectElements BitcoinBitcoin sidechainsCryptographic librariesNode implementations

rpc: default raw signing to rangeproof-committing sighash when dynafed active

This commit changes how the Elements blockchain software creates and checks digital signatures for raw transactions. Once a network upgrade called 'dynafed' is active, the software now defaults to a signature type that also commits to conf…

New consensus-relevant sighash default gated by dynafed activationVerification flag added to accept previously rejected signature typeRaw transaction signing behavior change for RPC callers
f5e2b1f5by Byron Hambly+27−84 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.

AI review queuedPartiallySignedTransaction::SetupFromTx indexes vtxinwit checkedby Tom Trevethan · ffd91c05 · Sep 1, 2026 · 2 filesMessage 50 · ThinModerate 60Details
Commit message · Tom Trevethan

PartiallySignedTransaction::SetupFromTx indexes vtxinwit checked

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Moderate 60/100

This commit hardens how Elements handles 'peg-in' transactions—transfers of assets from a parent blockchain into a sidechain. It adds size checks for witness data fields and wraps decoding in error handling so malformed inputs are rejected cleanly. It also fixes a place where the code could read past the end of an array when setting up a Partially Signed Transaction (PSBT). The changes are defensive: they prevent crashes or undefined behavior from bad transaction data, but they do not by themselves create new asset theft or remote-code-execution paths.

AI review queuedReturn error for invalid rangproof amountsby Tom Trevethan · 4e5ca94f · Sep 1, 2026 · 4 filesMessage 45 · ThinModerate 60Details
Commit message · Tom Trevethan

Return error for invalid rangproof amounts

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

This commit fixes a crash bug in the Elements blockchain wallet software. When creating a confidential (blinded) transaction, the code could hit an internal 'assert' and abort the program if it tried to generate a rangeproof for a zero-amount output sent to a normal spendable address. The patch turns those hard crashes into ordinary error returns, and adds an explicit early check that rejects zero-value spendable outputs before blinding. It also adds tests proving the boundary between valid and invalid cases. The change is defensive and improves robustness, but it is a partial patch: it does not add the same explicit zero-amount guard to the older BlindTransaction path, only to the newer PSBT blinding path.

AI review queuedlinter: remove trailing whitespaceby Tom Trevethan · 85be2cc6 · Jul 10, 2026 · 1 fileMessage 35 · OpaqueInformational 15Details
Commit message · Tom Trevethan

linter: remove trailing whitespace

35/100 · OpaqueMessage clarity
✓ Descriptive subject! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: opaque commit messagesecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit removes a single trailing space at the end of a comment line in a Python test file. It is a cosmetic linting cleanup with no functional change to the software and no security relevance.

AI review queuedfix RPC documentation inconsistenciesby Tom Trevethan · e5d02b9f · Jul 9, 2026 · 8 filesMessage 35 · OpaqueInformational 19Details
Commit message · Tom Trevethan

fix RPC documentation inconsistencies

35/100 · OpaqueMessage clarity
✓ Descriptive subject! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: opaque commit messagesecond-pass: security-sensitive path
AI analysis · Informational 19/100

This commit fixes mistakes in the text descriptions and type labels shown by several command-line/RPC commands. Most changes are cosmetic documentation corrections, such as fixing typos, marking fields as optional, and correcting error messages. The only functional change is a small update to the `combineblocksigs` command so its optional `witnessScript` argument behaves as documented for both old-style and dynamic-federation blocks, plus a regression test for that behavior. There is no direct security vulnerability being patched.

AI review queuedadd linter check to CIby Tom Trevethan · 713da864 · Jul 7, 2026 · 3 filesMessage 38 · OpaqueInformational 15Details
Commit message · Tom Trevethan

add linter check to CI

38/100 · OpaqueMessage clarity
✓ Subject identifies a change✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI analysis · Informational 15/100

This commit adds a code-style linter to the project's continuous integration (CI) pipeline and makes two small supporting changes: it tells the shell linter to ignore a specific quoting warning in build scripts, and it adds a parameter to a test helper function with a note explaining it is used by a currently disabled test. There is no security-relevant code change here.

AI review queuedrpc: fix fields describtion in manby Ruslan Kasheparov · a58014af · Jul 2, 2026 · 4 filesMessage 45 · ThinInformational 15Details
Commit message · Ruslan Kasheparov

rpc: fix fields describtion in man

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

This commit only fixes mistakes in the text documentation and examples shown to users of the software's remote procedure call (RPC) interface. It changes descriptions of data types, corrects command names in examples, fixes a typo in a backtick, and updates help text to match what the code actually does. There are no code behavior changes, so it cannot be exploited or cause security problems on its own.

AI review queuedtest: update and re-enable trim headers functional testby Byron Hambly · e151cada · Jul 2, 2026 · 3 filesMessage 95 · StrongLow 28Details
Commit message · Byron Hambly

test: update and re-enable trim headers functional test

The trim_headers test was previously moved to extended tests, and only
worked with legacy wallets. Update it to work with descriptor wallets,
and move it back to base scripts in functional tests.

95/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Mentions testing or verification
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Low 28/100

This commit re-enables a functional test for a feature called 'trim headers' and makes a small wallet change so that anyone-can-spend outputs (OP_TRUE) are recognized as wallet funds on custom Elements chains when a special configuration flag is set. The main purpose appears to be test maintenance, not fixing an active security vulnerability. The wallet change could affect how funds are classified, but only in a specific, non-default configuration.

AI review queuedrpc: fix fields type in manby Ruslan Kasheparov · 8165ec82 · Jun 30, 2026 · 7 filesMessage 45 · ThinInformational 15Details
Commit message · Ruslan Kasheparov

rpc: fix fields type in man

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

This commit only updates the text descriptions and type annotations shown in RPC help/man pages. It does not change any executable code, validation logic, wallet behavior, or network handling. The changes make documentation more accurate (for example, correcting field names like 'fee reason' to 'fee_reason', marking optional fields, and adding missing Elements-specific fields), but they cannot be exploited or cause security problems.

AI review queuedrpc: use null for optional parametersby Ruslan Kasheparov · 14a52bf1 · Jun 25, 2026 · 12 filesMessage 45 · ThinInformational 19Details
Commit message · Ruslan Kasheparov

rpc: use null for optional parameters

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

This commit changes how several RPC commands detect missing optional arguments. Instead of checking how many arguments were supplied, the code now treats an explicit JSON 'null' as 'not provided.' This lets callers pass null as a placeholder for optional parameters, matching normal Bitcoin/Elements RPC conventions. It is a usability and consistency fix, not a security patch.

AI review queuedfix: minor fixesby Byron Hambly · 20c5d373 · Jun 23, 2026 · 4 filesMessage 40 · ThinLow 48Details
Commit message · Byron Hambly

fix: minor fixes

40/100 · ThinMessage clarity
✓ Subject identifies a change✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Low 48/100

This commit makes four small fixes in the Elements sidechain codebase. Two changes remove incorrect assumptions in block-signature size checks. One tightens the peg-in witness format check from 'at least 5 items' to 'exactly 6 items'. One adds explicit-type checks before counting burned pegged-asset outputs as a subsidy. And one prevents a wallet RPC call from crashing when asked to blind a transaction that has no outputs. The changes look like routine bug fixes rather than a single coordinated security patch, and no exploit is directly demonstrated.

AI review queuedfix help manby Ruslan Kasheparov · fecf4f1c · Jun 10, 2026 · 6 filesMessage 28 · OpaqueInformational 15Details
Commit message · Ruslan Kasheparov

fix help man

28/100 · OpaqueMessage clarity
✓ Subject identifies a change! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: opaque commit messagesecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit only updates the text shown by the help command for several RPC (remote procedure call) interfaces. It corrects descriptions, marks some fields as optional, and documents newer parameters such as asset labels, peg-in inputs, and blinded transaction fields. There are no code logic changes that affect how the software processes commands or secures funds.

AI review queuedrename test_bitcoin to test_elementsby Tom Trevethan · 0916a2ac · May 26, 2026 · 10 filesMessage 35 · OpaqueInformational 15Details
Commit message · Tom Trevethan

rename test_bitcoin to test_elements

35/100 · OpaqueMessage clarity
✓ Descriptive subject! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: opaque commit messagesecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit simply renames the project's unit-test executable from 'test_bitcoin' to 'test_elements' across build scripts, CI, coverage tooling, and documentation. It is a branding/consistency change with no effect on the software users run or on security.

AI review queuedfix help manby Ruslan Kasheparov · 8408b79d · May 14, 2026 · 12 filesMessage 28 · OpaqueInformational 15Details
Commit message · Ruslan Kasheparov

fix help man

28/100 · OpaqueMessage clarity
✓ Subject identifies a change! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: opaque commit messagesecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit is a documentation-only cleanup of the built-in help text for many RPC (remote procedure call) commands in the Elements node software. It corrects typos, marks fields as optional where they are not always returned, adds missing fields that the code already returns, and updates examples. There are no code logic changes, no bug fixes in executable behavior, and no security-relevant changes.

AI review queuedbuild: fix windows/mingw buildby Tom Trevethan · 33ff16cb · May 7, 2026 · 5 filesMessage 57 · ThinInformational 15Details
Commit message · Tom Trevethan

build: fix windows/mingw build

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
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit fixes the Windows/MinGW build process for the Elements project. It renames leftover 'bitcoin' installer filenames to 'elements', corrects a path used by the installer graphics, and adjusts which internal libraries are linked and in what order so the software compiles successfully on Windows. There is no indication this changes runtime behavior or fixes a security vulnerability.

AI review queuedci fixes: wipby Tom Trevethan · dc51ca8e · May 4, 2026 · 2 filesMessage 8 · OpaqueInformational 18Details
Commit message · Tom Trevethan

ci fixes: wip

8/100 · OpaqueMessage clarity
✓ Subject identifies a change! No meaningful explanatory body! Contains work-in-progress language
Why it was queued
second-pass: opaque commit message
AI analysis · Informational 18/100

This commit is a work-in-progress patch to the project's continuous-integration (CI) build scripts and one CMake build file. It swaps some shell equality tests from '==' to '=', changes a conditional to a case statement, switches the CI build from autotools to CMake for certain configurations, adds macOS-only compiler warning suppressions, and changes how wallet-tool binaries are linked. None of these changes are security fixes for shipped product code; they are build-system and CI maintenance changes.

AI review queuedLog status of ELIP 203by Pablo Greco · 56eb7131 · Mar 10, 2026 · 1 fileMessage 38 · OpaqueInformational 15Details
Commit message · Pablo Greco

Log status of ELIP 203

38/100 · OpaqueMessage clarity
✓ Subject identifies a change✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI analysis · Informational 15/100

This commit adds a single log message that records whether a network feature called ELIP 203 is active when the node starts. It does not change any rules, permissions, or behavior; it only prints a status line for operators to read.

AI review queuedgrammar: prefer peg-in to pegin in messagesby Byron Hambly · a18a88b3 · Jan 15, 2026 · 4 filesMessage 45 · ThinInformational 15Details
Commit message · Byron Hambly

grammar: prefer peg-in to pegin in messages

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

This commit only changes wording in user-facing messages and comments, replacing 'pegin' with 'peg-in' for grammar consistency. It does not alter any code logic, network behavior, or security checks.

AI review queuedsubsidy: implementation for claimpegin, createrawpegin, and RPCsby Byron Hambly · 51c89c65 · Jan 15, 2026 · 6 filesMessage 50 · ThinLow 34Details
Commit message · Byron Hambly

subsidy: implementation for claimpegin, createrawpegin, and RPCs

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Low 34/100

This commit adds a new 'pegin subsidy' feature to the Elements sidechain. When users move small amounts of Bitcoin into the sidechain (a 'pegin'), the sidechain now sometimes adds an extra output that pays the network operators (the functionaries) a fee to cover the cost of later moving those coins back to Bitcoin. The change also adds a helper that reads how many signatures a federation script requires, and exposes new information in several RPC commands. There is no explicit security bug in the diff, but the new subsidy logic touches consensus-relevant money flows and relies on external fee data, so it deserves careful review.

AI review queuedAvoid Simplicity header dependency propogationby Russell O'Connor · 6c7788ad · Dec 24, 2025 · 2 filesMessage 68 · AdequateInformational 15Details
Commit message · Russell O'Connor

Avoid Simplicity header dependency propogation

The problem with including <simplicity/elements/env.h> in interpreter.h is that
now everyone who needs to include interpreter.h also needs access to
Simplicity's header files too.

This commit breaks that dependency chain by using forward declarations. It will
pay signifigant dividends when elements switches to CMake.

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
second-pass: broader security terminology
AI analysis · Informational 15/100

This commit is a straightforward build hygiene change. It moves a Simplicity library header include out of a widely-used header file and into the single source file that actually needs it, replacing the direct include with forward declarations. This reduces compile-time dependencies for other parts of the project and makes future build system changes easier. There is no functional change to how transactions or scripts are validated.

AI review queuedGuix: fix codeberg linkby Pablo Greco · 4296205e · Nov 12, 2025 · 2 filesMessage 28 · OpaqueInformational 15Details
Commit message · Pablo Greco

Guix: fix codeberg link

28/100 · OpaqueMessage clarity
✓ Subject identifies a change! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: opaque commit messagesecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit fixes a typo in two build helper scripts. The scripts were pointing to an outdated or incorrect Git repository URL for the Guix package manager (https://codeberg.org/guix.git instead of https://codeberg.org/guix/guix.git). This is a routine maintenance fix with no security implications.

AI review queuedadd reissuance token moneyrange checkby Tom Trevethan · a700d7f2 · Nov 11, 2025 · 2 filesMessage 45 · ThinModerate 60Details
Commit message · Tom Trevethan

add reissuance token moneyrange check

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

This commit fixes a missing validation check in the Elements sidechain. When creating or reissuing custom assets, the code already checked that the main asset amount was within the 21-million-coin money range, but it forgot to perform the same check on the optional 'reissuance token' amount. A user could therefore issue or carry a reissuance token whose nominal supply exceeded the normal limit. The patch adds that missing range check and includes tests showing that nodes with stricter policy now reject such out-of-range reissuance-token issuances from their memory pool.

AI review queuedguix builds: Use codeberg.org instead of git.savannah.gnu.orgby Pablo Greco · 4a131c80 · Nov 4, 2025 · 2 filesMessage 73 · AdequateInformational 19Details
Commit message · Pablo Greco

guix builds: Use codeberg.org instead of git.savannah.gnu.org

Cherry-picked from https://github.com/bitcoin/bitcoin/commit/5c2ba9f583e28460e618cc1119a10c06b868377c

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

This commit simply changes the web address from which the Guix build system downloads its own source code during reproducible builds. It switches from the GNU project's Savannah server to Codeberg, a non-profit code hosting platform. There is no security vulnerability or malicious change visible in the diff.

AI review queuedRemove 'pops a' duplicationby nazarevsky · 16799ae3 · Oct 2, 2025 · 1 fileMessage 35 · OpaqueInformational 15Details
Commit message · nazarevsky

Remove 'pops a' duplication

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

This commit fixes a trivial typo in a documentation file. The phrase 'pops a pops a' was corrected to 'pops a'. There is no code change and no security impact.

AI review queuedmoved acceptunlimitedissuances to chainparams and set defaultsby Tom Trevethan · a937d53a · Sep 26, 2025 · 7 filesMessage 50 · ThinLow 36Details
Commit message · Tom Trevethan

moved acceptunlimitedissuances to chainparams and set defaults

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Low 36/100

This commit moves a network rule about unblinded asset issuances above 21 million units from a global node setting into per-chain parameters. Before the change, the default was to accept unlimited issuances globally. After the change, the default is to reject such issuances unless a chain explicitly opts in. This is a policy/consensus-adjacent change that could affect which transactions nodes accept, but it is not presented as a security fix and does not by itself create a new exploit.

AI review queuedfix: unblinded re/issuance for non-policy asset greater than 21 million (#1445)by Byron Hambly · 93c84a97 · Sep 23, 2025 · 7 filesMessage 100 · StrongModerate 59Details
Commit message · Byron Hambly

fix: unblinded re/issuance for non-policy asset greater than 21 million (#1445)

* test: add test for unblinded re/issuance greater than 21 million

Co-authored-by: Mihailo Milenkovic <mihailo.milenkovic84@gmail.com>

* fix: unblinded re/issuance for greater than 21 million

Co-authored-by: Mihailo Milenkovic <mihailo.milenkovic84@gmail.com>

* enable with param config

* change range check to policy with config option

* refactoring, additional error messages and test extension

---------

Co-authored-by: Mihailo Milenkovic <mihailo.milenkovic84@gmail.com>
Co-authored-by: Tom Trevethan <ttrevethan@blockstream.com>

100/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Moderate 59/100

This commit fixes a bug in the Elements sidechain where creating or reissuing more than 21 million units of a non-bitcoin asset was incorrectly rejected when the issuance was unblinded (publicly visible amounts). The change makes the 21-million limit apply only to the network's main pegged asset (like bitcoin), not to other custom assets, and adds a configurable policy switch so node operators can choose whether to relay/mine such large unblinded issuances. Previously, unblinded issuances over 21 million could fail validation even though they are allowed by consensus rules for non-policy assets.