mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-07-21 13:49:57 +02:00
2447385f47rpc: remove unused RPCResult::Type::ELISION (satsfy (Renato Britto))7a85118005rpc: expand decodepsbt output script with explicit fields (satsfy (Renato Britto))88e2a6ae89rpc: expand getaddressinfo embedded with explicit fields (Renato Britto)a9f9e7d17erpc: extract fee estimate result helpers (Renato Britto)8a615a8800rpc: extract ListSinceBlockTxFields() helper (Renato Britto)372ac283acrpc: extend TxDoc() for getblock verbosity 2/3 (Renato Britto)0380a1c46brpc: extend TxDoc() for getrawtransaction verbosity 2 (Renato Britto)44fc3a290drpc: introduce HelpElision variant and ElideGroup helper (Renato Britto) Pull request description: Partially addresses #29912. Motivated by #34683, which exports OpenRPC from existing `RPCHelpMan` metadata. [Sample OpenRPC](https://gist.github.com/natobritto/8c4a1da04968d2325082ac4bca7d2408). Some RPC help definitions rely on `RPCResult::Type::ELISION` entries whose structure is only described in prose. This keeps human-readable help concise, but leaves parts of the result layout implicit and prevents tools from deriving complete machine-readable schemas from `RPCHelpMan` metadata. This PR replaces ELISION-based reuse with shared structured definitions, so result layouts are represented directly in metadata rather than only in text. At the same time, human-readable help remains compact via explicit help-rendering elision using `HelpElision`, so previously elided sections stay abbreviated without losing schema completeness. Affected RPCs: `getrawtransaction`, `getblock`, `listsinceblock`, `estimaterawfee`, `getaddressinfo`. RPC return values are unchanged. Human-readable help remains compact, while structured result metadata becomes explicit enough to derive complete machine-readable schemas. A related `RPCResult::Type::ELISION` use in `importdescriptors` was split out into the follow-up PR #34867 because it changes the generated help output, per [this review comment](https://github.com/bitcoin/bitcoin/pull/34764#discussion_r2960236111). Changes: - Introduce `HelpElision` (`NONE`, `START`, `SKIP`) and `ElideGroup()`, replacing the tri-state `print_elision` - Add an `RPCResult` copy-with-replacement-options constructor to support applying elision while keeping `m_opts` const - Extend `TxDoc()` / `TxDocOptions` to support reusable transaction layouts with optional `prevout`, `fee`, `hex`, and elision behavior - Replace ELISION-based reuse in `getrawtransaction` and `getblock` with explicit structured definitions - Factor shared result layouts into `GetBlockFields()`, `ListSinceBlockTxFields()`, `FeeRateBucketDoc()`, `GetAddressInfoEmbeddedFields()` and `FeeEstimateHorizonDoc()` - Expand `listsinceblock.removed`, `estimaterawfee` horizons/buckets and `getaddressinfo.embedded` into explicit metadata while preserving concise help output ACKs for top commit: achow101: ACK2447385f47w0xlt: reACK2447385f47janb84: re ACK2447385f47willcl-ark: ACK2447385f47Tree-SHA512: 8dc03c45c388ebdb4f8f1613af2576fc127a8d5425efe518cd0d0ed2439a38b2ed1236413471672c85f52ee22c4a17677c18fd4689bc6570496fc3af4cd4112f