satsfy
Open Search Select Theme Andromeeda Aurora X Ayu Dark Catppuccin Frappe Catppuccin Latte Catppuccin Macchiato Catppuccin Mocha Dark Plus Dracula Dracula Soft Everforest Dark Everforest Light Github Dark Github Dark Default Github Dark Dimmed Github Dark High Contrast Github Light Github Light Default Github Light High Contrast Gruvbox Dark Hard Gruvbox Dark Medium Gruvbox Dark Soft Gruvbox Light Hard Gruvbox Light Medium Gruvbox Light Soft Houston Kanagawa Dragon Kanagawa Lotus Kanagawa Wave Laserwave Light Plus Material Theme Material Theme Darker Material Theme Lighter Material Theme Ocean Material Theme Palenight Min Dark Min Light Monokai Night Owl Nord One Dark Pro One Light Plastic Poimandres Red Rose Pine Rose Pine Dawn Rose Pine Moon Slack Dark Slack Ochin Snazzy Light Solarized Dark Solarized Light Synthwave 84 Tokyo Night Vesper Vitesse Black Vitesse Dark Vitesse Light October 2026 5 merged · 10 reviews · 4 opened · 6 issue comments
Went to SF, most day in flight.
pr (open) rust-bitcoin#6974 Reject plus sign in U256 and hex integer strings review (commented) rust-bitcoin#6716 Release tracking PR: `units 0.6.0` review (approved) rust-bitcoin#6967 Automated weekly update to rustc stable (to 1.99.0) on master review (approved) rust-bitcoin#6968 Automated weekly update to rustc stable (to 1.99.0) on 0.32.xxx review (approved) rust-bitcoin#6966 Automated weekly update to rustc stable (to 1.99.0) on 0.32.xx review (commented) rust-bitcoin#6934 Release tracking PR: `internals 0.8.0` issue (commented) rust-bitcoin#1686 pow.rs overflow tests should be gated with #[cfg(debug_assertions)] issue (commented) rust-bitcoin#3775 Rustdocs on units types are a mess issue (commented) rust-bitcoin#1143 Consider hiding error internals issue (commented) rust-bitcoin#708 Should 32 byte `Copy` types be pass by reference or value? issue (commented) rust-bitcoin#5518 Audit stabalising crates and ensure usage of `track_caller` issue (commented) rust-bitcoin#1478 Formatting `Amount` with "satcomma standard"
September 2026 33 merged · 47 reviews · 37 opened · 1 issues · 12 issue comments
Triaging every units LLM fuzzer/Loupe finding to find any other public interface issues we may still have.
pr (merged) rust-bitcoin#6953 ci: cache cargo-rbmt binary pr (merged) rust-bitcoin#6952 units: move policy fee rates to `bitcoin::policy` review (approved) rust-bitcoin#6948 build(deps): bump taiki-e/install-action from 2.83.2 to 2.85.4 review (approved) rust-bitcoin#6947 build(deps): bump cargo-bins/cargo-binstall from 1.21.0 to 1.21.1 review (approved) rust-bitcoin#6938 Automated weekly update to rustc (to nightly-2026-09-26) on master review (commented) rust-bitcoin#6949 Manual nightly rustfmt (2026-09-27) review (approved) rust-bitcoin#6939 Automated weekly update to rustc (to nightly-2026-09-26) on 0.32.xx review (approved) rust-bitcoin#6940 Automated weekly update to rustc (to nightly-2026-09-26) on 0.32.xxx review (approved) rust-miniscript#1053 Automated weekly update to rustc (to nightly-2026-09-26) review (approved) rust-bech32#303 Automated daily update to rustc (to nightly-2026-09-25) issue (commented) rust-bitcoin#6951 Ensure RBMT is caching artifacts
Complete focus on getting units 1.0 done
Read chapter 1 of ‘An Introduction to Mathematical Cryptography’ by Hoffstein, Pipher, Silverman
Wrapping up units 1.0 api trait decisions for PR.
Creating a trait boundary checker for rust-bitcoin
review (approved) rust-bitcoin#6915 primitives: Fix `Witness` handling of oversized items
Reviwing years of units api decisions in Github discussions, to see if we have any failure on intent or problem on our trait bounds
Fuzzing units crate
Scoping out the remaining units 1.0 work.
Offloaded a bunch of Loupe PRs I had in my local env
LLM fuzzing units, some findings to be reviewed.
review (approved) rust-bitcoin#6902 Automated weekly update to rustc (to nightly-2026-09-19) on master review (approved) rust-bech32#303 Automated daily update to rustc (to nightly-2026-09-25) review (approved) rust-miniscript#1051 Automated weekly update to rustc (to nightly-2026-09-19) review (approved) rust-bitcoin#6909 build(deps): bump actions/labeler from 6.2.0 to 7.0.0 review (approved) rust-bitcoin#6910 build(deps): bump actions/checkout from 7.0.0 to 7.0.1
Reading Computer Networks - Andrew S. Tanenbaum
pr (merged) rust-bitcoin#6899 ci: regenerate Cargo-minimal.lock with rbmt pr (merged) corepc#713 bitreq: floor rustls dep at 0.23.45 review (commented) rust-bitcoin#6898 Release tracking PR: `consensus-encoding 1.3.0` review (commented) corepc#712 Prepare stack of releases
review (approved) rust-bech32#264 CI: Set and update weekly the stable toolchain version review (approved) rust-miniscript#1047 Automated weekly update to rustc (to nightly-2026-09-12) review (approved) rust-bech32#303 Automated daily update to rustc (to nightly-2026-09-25) issue (commented) corepc#707 bitreq: floor `rustls` at v0.23.45 to patch RUSTSEC-2026-0285 issue (commented) rust-bitcoin#6887 base58: `internals::array_vec::Error` should not be in the public API
pr (merged) rust-bitcoin#6886 units: preserve original err summing `NumOpResult` pr (merged) rust-bitcoin#6885 p2p: use `write_err` in CommandStringDecoderError review (commented) rust-bitcoin#6876 Automated weekly update to rustc (to nightly-2026-09-12) on 0.32.xxx review (commented) rust-bitcoin#6875 Automated weekly update to rustc (to nightly-2026-09-12) on 0.32.xx review (commented) rust-bitcoin#6877 Automated weekly update to rustc (to nightly-2026-09-12) on master review (approved) rust-bitcoin#6879 primitives: Fix Witness::get index overflow
Error source was being dropped in CommandStringDecoderError, found a second case while at it.
Summing NumOpResult threw away the original error.
review (approved) rust-bitcoin#6881 build(deps): bump cargo-bins/cargo-binstall from 1.20.1 to 1.21.0 review (approved) rust-bitcoin#6882 build(deps): bump taiki-e/install-action from 2.82.11 to 2.83.2 review (approved) rust-bitcoin#6878 Automated nightly rustfmt (2026-09-13)
A zero target should convert to zero work.
pr (merged) rust-bitcoin#6850 Use stacked attributes for feature conjunctions pr (merged) rust-bitcoin#6849 docs: update policy version gating attribute pr (merged) rust-bitcoin#6848 Manual weekly update to rustc (to nightly-2026-09-05) on 0.32.xx pr (merged) rust-bitcoin#6847 Manual weekly update to rustc (to nightly-2026-09-05) on master pr (merged) rust-bitcoin#6846 Manual weekly update to rustc (to nightly-2026-09-05) on 0.32.xxx pr (merged) rust-bitcoin#6845 ci: install rbmt from crates.io in replay job review (commented) rust-bitcoin#6832 Automated weekly update to rustc (to nightly-2026-09-05) on 0.32.xx review (commented) rust-bitcoin#6833 Automated weekly update to rustc (to nightly-2026-09-05) on master review (commented) rust-bitcoin#6834 Automated weekly update to rustc (to nightly-2026-09-05) on 0.32.xxx issue (commented) rust-bitcoin#6838 The Fuzz (corpus) workflow is failing
Crash replay was installing rbmt from git, now from crates.io.
Stacked attributes for feature conjunctions, the nested cfg spelling was unreadable.
pr (merged) rust-bitcoin#6836 bitcoin: move tests reading `tests/data` out of `src` review (approved) rust-miniscript#1047 Automated weekly update to rustc (to nightly-2026-09-12) review (approved) rust-bech32#301 Automated daily update to rustc (to nightly-2026-09-04) review (approved) rust-bitcoin#6820 Automated weekly update to rustc stable (to 1.98.1) on 0.32.xx review (approved) rust-bitcoin#6822 Automated weekly update to rustc stable (to 1.98.1) on 0.32.xxx review (approved) rust-bitcoin#6821 Automated weekly update to rustc stable (to 1.98.1) on master
Moves the tests that read tests/data out of src, so published test code stops reading files that are not published. Closes 6509.
review (commented) corepc#672 WIP: Demonstrate usage of the bitcoin-units compat layer issue (commented) rust-bitcoin#6813 The Fuzz (corpus) workflow is failing
units compat layer downstream
Deleted a stale fuzz target that no longer matches any code.
Tests each TLS backend in CI. Recreated because after the forge migration I no longer own the old branch.
August 2026 17 merged · 43 reviews · 23 opened · 1 issues · 6 issue comments pr (merged) rust-bech32#299 Manual daily update to rustc (to nightly-2026-08-28) pr (merged) rust-bitcoin#6811 ci: add corpus fuzzing crash store review (commented) rust-bech32#298 Automated daily update to rustc (to nightly-2026-08-28) review (approved) .github#14 readme: point secp256k1 repository link at Forgejo
Stores fuzz crashes so a failing run can be replayed instead of lost.
First real catch from corpus fuzzing, the p2p commands target had diverged between master and 0.32.
review (approved) rust-bitcoin#6773 build(deps): bump actions/cache from 5.0.5 to 6.1.0 review (approved) rust-bitcoin#6776 build(deps): bump actions/checkout from 6.0.2 to 7.0.0 review (commented) rust-bitcoin#6762 primitives: Flatten error constructors review (commented) rust-bitcoin#6782 ci: cache cargo install metadata in daily fuzz job review (approved) rust-bitcoin#6775 build(deps): bump cargo-bins/cargo-binstall from 1.20.0 to 1.20.1 review (approved) rust-bitcoin#6777 build(deps): bump taiki-e/install-action from 2.82.0 to 2.82.4 review (approved) rust-bitcoin#6780 base58: Remove `is_empty` from `Base58CkString` review (approved) rust-bitcoin#6781 base58: Use `div_ceil` for reserve length calculation
Dependabot had no schedule so bumps landed whenever, now Sunday 16:00.
Fuzz corpus storage in qa-assets
Corpus fuzzing now runs in rust-bitcoin CI and writes back to qa-assets.
pr (merged) rust-bitcoin#6761 Manual bump of dtolnay/rust-toolchain specifying toolchain review (commented) corepc#691 Added integration tests for four untested RPCs (#633) review (changes requested) rust-bitcoin#6751 build(deps): update dtolnay/rust-toolchain requirement to 6c977a6ca4077a0ceb28ffbe03f59d46e9ac8772 review (approved) rust-bitcoin#6759 primitives: Add `Arbitrary` for `PushBytes` & `PushBytesBuf` review (commented) rust-bitcoin#6741 units: Add and standardise doc and comment links
Pins the toolchain action by version instead of the commit hash dependabot proposed.
Split the rbmt upgrade PR rust-bitcoin#6547 into pieces, mixing the tooling bump with the API file deletion was a bad call:
Dropped the nightly update cron job, it was opening update PRs nobody handles.
review (commented) rust-bitcoin#6731 primitives: Add Arbitrary impl for Opcode review (changes requested) rust-bitcoin#6741 units: Add and standardise doc and comment links
Daily fuzz was reinstalling tooling every run, plus a stale cache key.
Renamed the old job to ‘Fuzz (from scratch)’ so it reads apart from the corpus one.
Fuzz corpus storage in qa-assets
The job pulls the saved corpus, fuzzes with it, and pushes new coverage back to qa-assets.
Renamed 6689 as proposed and regenerated the api files.
review (approved) rust-miniscript#1017 Automated weekly update to cargo-rbmt (to 0.5.2) review (approved) rust-bech32#294 Automated daily update to rustc (to nightly-2026-08-07) review (approved) rust-bitcoin#6698 bitcoin: fix changelog and forward port 0.32.xx and 0.32.xxx entries review (approved) rust-bitcoin#6697 ci: use lockfiles for embedded and cross tests
Follow up to the docs fix, renaming the locktime accessors and query methods for units 1.0.
Relative locktime docs called the value a height when it is really a count of blocks.
review (approved) rust-bitcoin#6662 build(deps): bump actions/checkout from 6.0.2 to 6.0.3 review (approved) rust-miniscript#1012 Automated weekly update to rustc (to nightly-2026-08-08) review (commented) rust-bitcoin#6656 ci: fix check-semver exit code capture and consolidate labellers issue (created) corepc#676 ci: auto-create bitcoin core version support issues from release feed
July 2026 10 merged · 35 reviews · 17 opened · 5 issues · 5 issue comments
Fuzz corpus storage: tested on my forks, corpus loads and saves each run, induced failures get caught
Fuzz corpus storage: rust-bitcoin CI job that fuzzes with the saved corpus
pr (closed) rust-bitcoin#6627 Manual weekly update to rustc (to nightly-2026-07-17) on master pr (merged) rust-bitcoin#6626 Manual weekly update to rustc (to nightly-2026-07-17) on 0.32.xx review (commented) rust-miniscript#1007 Link ANTLR4 Miniscript grammar review (approved) rust-bitcoin#6624 build(deps): bump taiki-e/install-action from 2.79.3 to 2.79.12 review (approved) rust-bitcoin#6615 ci: update cargo-rbmt every month instead of week
Fixed branch refs (rust-bitcoin#6616)
issue (commented) rust-bitcoin#6511 Seed fuzz targets with a shared corpus and run them on PR CI
pr (merged) rust-miniscript#1001 Drop obsolete unused-import workaround review (approved) corepc#644 Run `verify --tests` in CI review (approved) corepc#647 pin memmap2 version above RUSTSEC-2026-0186 fix
pr (closed) rust-bitcoin#6493 Manual weekly update to rustc (to nightly-2026-07-02) on 0.32.x pr (merged) rust-bitcoin#6492 Manual weekly update to rustc (to nightly-2026-07-02) on master review (approved) corepc#642 bitreq: use `Duration` for `Request::with_timeout` review (approved) rust-bitcoin#6459 Automated weekly update to rustc stable (to 1.96.1) review (approved) rust-miniscript#999 Automated weekly update to rustc (to nightly-2026-07-02) review (approved) rust-bech32#281 Automated daily update to rustc (to nightly-2026-07-02) issue (commented) corepc#654 Migrate this repo to forgejo
review (approved) corepc#652 Fix duplicate rustsec issue creation review (approved) corepc#651 Bump anyhow dep version to 1.0.103 to fix RUSTSEC-2026-0190
June 2026 6 merged · 21 reviews · 10 opened · 1 issues · 2 issue comments review (approved) rust-bech32#280 Automated daily update to rustc (to nightly-2026-06-26) review (approved) rust-miniscript#989 Automated weekly update to rustc (to nightly-2026-06-26)
review (approved) corepc#648 pr-labeler: remove stale labels
review (approved) corepc#642 bitreq: use `Duration` for `Request::with_timeout` review (approved) corepc#647 pin memmap2 version above RUSTSEC-2026-0186 fix review (approved) rust-bech32#271 Automated daily update to rustc (to nightly-2026-06-19) review (approved) corepc#644 Run `verify --tests` in CI
review (approved) corepc#640 verify: fix help text
pr (closed) corepc#643 Client 20 06 26 review (commented) bitcoin#34683 rpc: support a formal description of our JSON-RPC interface
pr (merged) corepc#635 Follow-ups for Bitcoin Core v31.0 support
review (approved) rust-bech32#271 Automated daily update to rustc (to nightly-2026-06-19)
Addressed reviews on the Core PR (bitcoin#34764)
review (commented) bitcoin#34683 rpc: support a formal description of our JSON-RPC interface issue (created) corepc#621 Naming schema is inconsistent
Upgraded Floresta and BDK to rust-bitcoin master to find the incompatibilities
pr (merged) rust-bitcoin#6334 Manual update to rustc nightly-2026-06-12 pr (merged) rust-miniscript#984 Manual weekly update to rustc (to nightly-2026-06-14) review (approved) rust-bitcoin#6328 Automated nightly rustfmt (2026-06-07) review (approved) rust-bitcoin#6324 Automated weekly update to cargo-semver-checks (to 0.48.0) review (approved) rust-bech32#270 Automated daily update to rustc (to nightly-2026-06-05) review (commented) bitcoin#34683 rpc: support a formal description of our JSON-RPC interface review (commented) bitcoin#34683 rpc: support a formal description of our JSON-RPC interface
Addressed reviews on the Core PR (bitcoin#34764)
Optional arguments in the codegen client
review (commented) corepc#618 Update repo and electrsd readme review (approved) rust-bitcoin#6275 Automated weekly update to rustc stable (to 1.96.0) review (approved) rust-miniscript#971 Automated weekly update to rustc (to nightly-2026-06-05)
Started a codegen async production client for corepc
Addressed reviews on corepc#615
May 2026 14 merged · 18 reviews · 14 opened · 1 issues · 4 issue comments pr (merged) corepc#615 Finish off support for Bitcoin Core v31.0 issue (commented) corepc#599 Finish off support for Core v31 pr (merged) rust-bech32#268 Manual update to rustc to nightly-2026-05-22 review (approved) corepc#607 Add bitreq to pr-labeller job review (commented) rust-bitcoin#6244 Fix fuzz cache key to use fuzz target review (approved) rust-bitcoin#6224 backport: Fix bug in `LeafVerison::Future`'s `Display` output review (approved) corepc#610 Gate out core tests from v31
Addressed reviews on rust-bitcoin#6212
pr (merged) corepc#606 tests: add curated list of client test invariants from Bitcoin Core review (approved) corepc#598 Add initial support for Bitcoin Core v31
Addressed reviews on rust-bitcoin#6212
Addressed reviews on the Core PR (bitcoin#34764)
Addressed reviews on the electrsd PR (corepc#570)
pr (merged) rust-bech32#266 Update to rustc nightly-2026-05-15 with lint fix review (approved) rust-bitcoin#6218 Remove `act` references review (changes requested) corepc#598 Add initial support for Bitcoin Core v31
Addressed reviews on rust-bitcoin#6212
review (approved) corepc#578 jsonrpc(fix): set host header to URL hostname instead of resolved IP
v31 fixes (corepc#586)
Drafted corepc v31 support
pr (closed) corepc#592 types: fix getblockstats doc for v21 and later review (approved) corepc#591 Fix `getnetworkhashps` return type in docs review (commented) corepc#586 Add support for Bitcoin Core 31.0
Read about software design and architecture
Reorganized the commits of corepc#570
Converting Core tests to corepc tests
Read Unit Testing Principles, Practices, and Patterns
Converting Core tests to corepc tests, settling what a corepc test should check
Addressed reviews on corepc#570
pr (merged) corepc#589 ci: enable debug logging on electrsd jobs review (commented) rust-bech32#264 CI: Set and update weekly the stable toolchain version review (approved) rust-bech32#262 ci: fix nightly cronjob to set environment variables properly
The production client design depends on the Core test import
Read rust-bitcoin primitives and recent PRs
Import Bitcoin Core tests into corepc
Addressed reviews on the electrsd PR
Addressed reviews on the electrsd PR (corepc#570)
review (commented) rust-psbt#120 Add a cargo-fuzz fuzzing harness pr (merged) rust-psbt#123 v2: fix global map defect causing input count fragility pr (merged) corepc#582 ci: add electrsd to labeler job and rename node label to bitcoind
Addressed corepc reviews
Read the Rust API Guidelines
rust-psbt: narrowed the first batch of prerelease fixes, plus one unrelated bug
Structured the codegen repo
pr (merged) corepc#575 contrib: remove obsolete scripts and document lock file updates review (approved) corepc#571 Release tracking PR: `electrsd 0.38.1`
Close reading of rust-bitcoin
Addressed reviewer suggestions on corepc#574
Addressed reviews on corepc#570
Addressed reviews on rust-psbt#116
Designed v1 of the corepc production client, with an implementation and codegen plan: https://github.com/satsfy/rust-btc-codegen
April 2026 6 merged · 7 reviews · 11 opened · 4 issue comments pr (merged) corepc#574 docs: fix stale corepc-node references pr (merged) corepc#573 electrsd: fix bitcoind 23_2 feature version
Answered a concern on corepc#570
Built and tested the Core PR changes, pushed (bitcoin#34764)
rust-psbt prerelease problems: all the small TODOs fixed in 40 commits, to be split into 2 to 5 PRs
pr (merged) rust-psbt#116 fix: re-enable v2 to v0 conversion review (commented) rust-psbt#33 [WIP] Impl conversion from v2::Psbt to v0::Psbt issue (commented) rust-psbt#31 Convert the inner PSBT v2 to a PSBT v0 (lossy)
Reworked corepc#570 after feedback, looked into flaky CI
rust-psbt 31: extra test, CI fixes, notified the issue
Addressed a review on the Core PR (bitcoin#34764)
Read about 20% of rust-bitcoin, systematically
Tested and polished the rust-psbt 31 fix
Picked 11 issues to tackle for rust-bitcoin 1.0
pr (merged) corepc#570 electrsd: include in workspace and CI
Moved the rust-bech32 nightly update to rbmt and unified the nightly version (rust-bech32#254)
corepc 552: tested electrsd, cut the change down, CI passing
corepc Core test import: widened the test surface, split the changes into PRs
Fixed CI and trimmed the corepc 552 change
rust-psbt prerelease problems
Presented the codegen proposal to a maintainer, approved
Patched up the codegen repo: https://github.com/satsfy/rust-btc-codegen
review (commented) corepc#558 jsonrpc: Add async support
Addressed reviews on the rust-bech32 mutation tests
pr (merged) rust-bech32#255 test: address all mutation test misses and timeouts review (commented) corepc#557 CI: Add `cargo-audit` workflow review (approved) corepc#558 jsonrpc: Add async support review (approved) corepc#551 Remove rust-version from workspace manifest
rust-bech32 mutation tests
75 new tests and 1 modified, then cut down
Verified every mutant exclusion
Addressed reviews on the rust-bech32 CI migration
review (commented) rust-bitcoin#5975 Extend `bitcoin` re-export script to check against `units` and fix re-exports
Addressed reviews on the corepc CI migration
Rebased the Core ELISION removal PR (bitcoin#34764)
Reviewed rust-bitcoin#5975 to get to know rust-bitcoin
Slow blocks workshop: synced signet, received live slow blocks, inspected why they were slow
Set up my own testnet full node
corepc production client research
Found uses of corepc in real projects
Collected the RPC clients of BDK, Alpen, LDK, Floresta, hashi, mempool-radar, peer-observer and the sunset rust-bitcoincore-rpc
Listed the features a client really needs
Codegen proposal split into its own issue for later
Addressed reviews on the corepc CI migration
pr (merged) corepc#540 ci: migrate GitHub Actions to cargo rbmt
corepc CI migration to cargo-rbmt
Maintainers receptive to the idea
Painful PR, constant CI errors
Gathered material for a corepc production client proposal
review (approved) corepc#539 Test walletdisplayaddress
corepc CI migration to cargo-rbmt
Fixed the failing tests on my branch , CI passing
Cut the change down for review
Researched the open problems and tradeoffs of a corepc client
Read every open corepc issue and wrote a report
Explored corepc to find what it needs most
March 2026 1 merged · 3 reviews · 2 opened · 1 issue comments
Stealth: testnet transactions, deploy to testnet then mainnet
Ported the stealth backend to Rust
Fixing the broken test in the ELISION removal PR
Read Optech and BitDevs logs
pr (merged) bitcoin#34867 wallet: document importdescriptors error object fields
Core PR: ELISION removal
Reviewed 2 Core PRs
review (commented) bitcoin#34799 rpc: Run type check on decodepsbt result
Started the stealth design doc
review (commented) bitcoin#34799 rpc: Run type check on decodepsbt result
review (commented) bitcoin#34799 rpc: Run type check on decodepsbt result
pr (merged) bitcoin#34764 rpc: replace ELISION references with explicit result fields issue (commented) bitcoin#29912 RFC: Formal description of the RPC API
Opened the Core PR and the issue
Reviewed the Core PR and fixed CI
Read about coinswap, payjoin and rust-bitcoin
Polished the Core PR, wrote the issue and PR comments
February 2026 4 merged · 1 issue comments
Working on the Core help text fix PR
Regenerated specs v24 to v30, the earlier ones were not valid OpenRPC
Cut the corepc draft down to v30 plus a small v29
Backported the patch down to v24
Fixed the Core patch so the output is valid OpenRPC
Core help text references other RPCs (“this is getrawtransaction vin”) instead of the actual object. Fixing that in Core helps docs and spec generation
Ported the codegen to Python
Built Core v24 to v30 and generated a spec for each
Compare tool works per version
The value is three things together: codegen, spec generation from Core, and the compare tool
Reduce false positives and negatives in the compare tool
Start shaping it into a corepc PR
getnewaddress was missing because Core was built without the wallet
What exists now
Core patch that emits a full OpenRPC spec from the shared RPC help type
Codegen from the spec into generated.rs
flatten_mods.py flattens a version’s modules into one file
compare_types.py reports unmatched structs, ignored ones and field differences
New Core versions only need a new spec
Every generated struct mapped to a corepc type
getnewaddress missing from the generated spec
Core help text sometimes says “same as the output of decoderawtransaction” instead of describing the object, the generator needs to resolve those
Flattening script misses some structs
107 matched pairs
Codegen plan
Flatten one version’s types into a single file
Generate the same version from Core’s OpenRPC
Diff the two
Ship the diff as a tool, possibly in CI
First comparison
201 corepc structs vs 169 generated, only 53 pair up by name
corepc renames fields (estimated_feerate becomes estimated_fee_rate)
Naming is inconsistent. GetRpcInfo has ActiveDirectory instead of GetRpcInfoActiveCommands
GetRawAddrManEntry: mapped_as u32 vs i64, port i16 vs i64
Codegen
The hard part is corepc layout, not codegen. Each version only redefines what changed
January 2026 4 merged · 9 opened · 1 issues · 1 issue comments
Addressed all review comments
Codegen
Researched Rust codegen tools
Emitted OpenRPC for the client and JSON Schema for the types
Generated a client from the OpenRPC document
Output looks close to corepc, types included
pr (merged) corepc#485 Add `getblock` verbosity 2/3 support for v29 onward
getblock verbosity levels. Took a few design decisions
All 6 PRs approved, 5 with changes requested
Read Mastering Bitcoin
Maintainer reviewed all 6 PRs, one change requested on each
Fixed each PR keeping history clean
Fixing getblock too, as noted in the issue
getblock changes since v17
v19 to v20: verbosity 0 field renamed from data to hex
v21 to v22: previousblockhash and nextblockhash optional, fee added to verbosity 2 transactions
v22 to v23: verbosity 3 added, with prevouts
v23 to v24: desc added to scriptPubKey
v27 to v28: anchor script type
v28 to v29: target field added
Fixing v29 and v30 only
Schema generator works on v30
pr (merged) corepc#480 [client] Add chain tip query method to `getdeploymentinfo` RPC pr (merged) corepc#479 [client] Fix: require arguments for v30 `getdescriptoractivity` RPC pr (merged) corepc#478 Implement `GetRawMempoolSequence` return type for `getrawmempool` RPC pr (merged) corepc#477 [types] Add `completed` field to `ScanBlocksStart` return type pr (merged) corepc#476 [client] Validate `conf_target` argument value range in `estimaterawfee` RPC pr (merged) corepc#475 [types] Add missing return fields for `gettxoutsetinfo` RPC issue (created) corepc#474 Type discrepancies between corepc and v30 blockchain module.
Automatic type generation
Merged 3 branches of the schema generator into one Core branch
Built and ran it
Prepare the blockchain fix PRs for Vinteum review
30.1 and 30.2 released, no breaking RPC changes
Research automatic type generation
Plan
Take the existing schema generator, check it on v30
Hook it up to a codegen tool
Bridge the output to corepc naming and types
Bring an actionable PR, not an idea
5 PRs ready locally, next is Vinteum review then corepc
Possible fix: network__get_network_info__modelled integration test fails locally
Possible refactor: types like GetRawMempoolVerbose are redefined unchanged across versions, removing them cuts hundreds of lines
New task: research automatic RPC type generation
Continue the blockchain RPC review
Review every v30 blockchain RPC
Scope v30 only, note older mismatches
Checklist: bitcoin-cli help vs implementation, release notes, argument names, required vs optional, verbosity, return model
Docker image per Core version to settle release note doubts
Correct: dumptxoutset, getbestblockhash, getblockchaininfo, getblockcount, getblockfilter, getblockfrompeer, getblockhash, getblockstats, getchainstates, getchaintips, getchaintxstats, getdifficulty, getmempoolancestors, getmempooldescendants, getmempoolentry, getmempoolinfo, gettxoutproof, gettxspendingprevout, importmempool, preciousblock, pruneblockchain, savemempool, verifychain, verifytxoutproof, waitforblock, waitforblockheight, waitfornewblock
getblockheader verbose=0 false alarm, a conversion layer handles it
gettxout correct
getblock: wrong for verbosity 0, missing 2 and 3
getdeploymentinfo: blockhash is optional (defaults to tip), API had no way to omit it
getdescriptoractivity: arguments required in v30
getrawmempool: 3 return types, not 2. Added GetRawMempoolSequence (v21+)
gettxoutsetinfo: missing fields since v22 (muhash and others). Fix v30 and open an issue for older versions
scanblocks: start action should return completed
estimaterawfee: conf_target must be 1 to 1008
pr (merged) corepc#456 Add hidden RPCs `syncwithvalidationinterfacequeue`, `mockscheduler` and `reconsiderblock`
reconsiderblock, syncwithvalidationinterfacequeue and mockscheduler hidden RPCs, v17 to v30, with tests
Explore Floresta missing types
New plan: review every v30 blockchain RPC one by one against Core
pr (closed) corepc#455 Add hidden RPC `syncwithvalidationinterfacequeue` issue (commented) corepc#333 Implement hidden (test-only) RPC calls
PoC scope
Optional RPC arguments are a good longer term goal
Tests are a fine PoC target
Floresta needs corepc types
Only the last 3 Core versions need changes, older ones are not really supported
Floresta type needs
Done: getblockchaininfo, getblockcount, getbestblockhash, getblockhash, getblockheader, getblock, getrawtransaction, gettxout, getpeerinfo
Open: getnetworkinfo, generatetoaddress, getmempoolentry, importdescriptors, createwallet, loadwallet, scantxoutset, utxoupdatepsbt, getindexinfo, getblockfrompeer
getblock has 4 verbosity levels with a different type each, the one Floresta uses is not implemented
Recap of candidates
Hex-only string type. Invasive, could break users
Wrong version comment in types/src/v30/mining/mod.rs
settxfee deprecation. corepc does not emit deprecation warnings, dropped
Missing optional arguments. Too large and API breaking for the PoC, longer term goal
getdescriptoractivity requires blockhashes and scanobjects in v30. On hold, might be a duplicate
UNTESTED methods in v30: loadtxoutset, migratewallet, walletdisplayaddress. Reference: https://github.com/rust-bitcoin/corepc/pull/347
Hidden RPCs in Core but not in corepc, tracked in https://github.com/rust-bitcoin/corepc/issues/333
echo, echojson, setmocktime
mockscheduler, reconsiderblock, syncwithvalidationinterfacequeue (picked these)
Find more type improvements, collect them in one branch, pick the best for a PR
Wrong version comment in types/src/v30/mining/mod.rs, says v29
settxfee is deprecated in v30 and removed in v31, no deprecation warning
v30 added a version argument to createrawtransaction, createpsbt, send, sendall and walletcreatefundedpsbt, corepc lacks it
Optional arguments are missing across most RPCs. Maintainer says optional args are not really tested
Read open issues and old PRs for missing type requests
Set up dev environment and run corepc tests
Find RPCs targeting v30 missing from corepc
Look for loosely defined types instead
MempoolAcceptanceFees.effective_feerate is optional in corepc, required in Core
MempoolAcceptanceFees.effective_includes is a plain string, Core only accepts hex
GetMiningInfo.bits is a plain string, Core returns a hex string
Candidate: a hex-only string type
December 2025
Read corepc: implementations and folder structure
Mapped corepc types to their Bitcoin Core RPCs and to how downstream projects use them
Back