-
Notifications
You must be signed in to change notification settings - Fork 84
docs: v23.0 rpc updates #525
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the You can disable this status message by setting the WalkthroughThis PR updates Dash Core RPC documentation to version 23.0.0, introducing API schema changes including descriptor-based fields, field optionality adjustments, new command modes, deprecated field markings, and parameter renames across multiple RPC categories. Configuration and documentation scaffolding files are also updated. Changes
Sequence Diagram(s)sequenceDiagram
participant User
participant Client
participant Node
rect rgb(200, 220, 255)
note over User,Node: GetBlock with Verbosity Levels (Dash Core 23.0.0)
User->>Client: Call GetBlock(hash, verbosity=3)
Client->>Node: Request block data with verbosity level 3
Node-->>Client: Block data + prevout details for inputs<br/>(new in 23.0.0)
Client-->>User: JSON with descriptor fields (desc),<br/>optional cbTx fields
end
rect rgb(220, 255, 220)
note over User,Node: CoinJoin Status (New in 23.0.0)
User->>Client: Call coinjoin(mode='status')
Client->>Node: Request CoinJoin session statuses
Node-->>Client: Array of session status objects<br/>with addrs_core_p2p
Client-->>User: JSON array of sessions
end
rect rgb(255, 240, 200)
note over User,Node: ProTx with Addresses Object (Evo, 23.0.0)
User->>Client: Call protx info
Client->>Node: Request protx info
Node-->>Client: Response with nested addresses<br/>(addresses.core_p2p, etc.)
Client-->>User: JSON with addresses structure<br/>(service field deprecated)
end
Estimated code review effort🎯 4 (Complex) | ⏱️ ~75 minutes
Poem
Pre-merge checks and finishing touches❌ Failed checks (1 inconclusive)
✅ Passed checks (2 passed)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Update all protx RPC commands to reflect renamed parameters in Dash Core 23.0.0: - ipAndPort → coreP2PAddrs (accepts string or array) - platformP2PPort → platformP2PAddrs (accepts string/array) - platformHTTPPort → platformHTTPSAddrs (accepts string/array) Updated commands include protx register, protx register_evo, protx register_fund, protx register_fund_evo, protx register_prepare, protx register_prepare_evo, protx update_service, and protx update_service_evo variants.
fc13313 to
d3e8746
Compare
decodepsbt getislocks getaddressinfo sendmany sendtoaddress scantxoutset gettransaction listtransactions listunspent
|
@coderabbitai review |
✅ Actions performedReview triggered.
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 11
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (9)
docs/user/masternodes/setup.rst (1)
559-560: Syntax documentation on lines 559–560 does not reflect parameter name change.The command syntax on lines 559–560 still references
ipAndPort, while the parameter documentation (lines 576–577) and example (line 602) correctly usecoreP2PAddrswith array format. This inconsistency mirrors the issue insetup-testnet.rstand may confuse users.Update lines 559–560 to reflect the new parameter name:
protx register_prepare collateralHash collateralIndex coreP2PAddrs ownerKeyAddr operatorPubKey votingKeyAddr operatorReward payoutAddress (feeSourceAddress)Also applies to: 576-577, 602-602
docs/core/api/remote-procedure-calls-wallet.md (4)
950-956: Fix duplicate field and types in GetTransaction.
trustedappears twice; keep one.blockheightis an integer, not “string (hex)”.- Minor: field earlier in this block uses
instantlock-internal; should beinstantlock_internalto match examples and other RPCs.-| → <br>`generated` | bool | Optional<br>(0 or 1) | **Updated in Dash Core 23.0.0**<br>Set to `true` if the transaction's only input is a coinbase one. Only present if the transaction's only input is a coinbase one. | -| → <br>`blockhash` | string (hex) | Optional<br>(0 or 1) | ... -| → <br>`blockheight` | string (hex) | Optional<br>(0 or 1) | The block height containing the transaction. Only returned for confirmed transactions | +| → <br>`generated` | bool | Optional<br>(0 or 1) | **Updated in Dash Core 23.0.0**<br>True if the transaction's only input is coinbase. Only present in that case. | +| → <br>`blockhash` | string (hex) | Optional<br>(0 or 1) | ... +| → <br>`blockheight` | number (int) | Optional<br>(0 or 1) | The block height containing the transaction. Only returned for confirmed transactions | ... -| → <br>`trusted` | bool | Optional<br>(0 or 1) | Whether we consider the outputs of this unconfirmed transaction safe to spend. Only returned for unconfirmed transactions |Also update the earlier field name in this section from
instantlock-internaltoinstantlock_internal.
2869-2895: Wrong type forchange_address; also small consistency nits.
change_addressshould be a Dash address string (base58), not “string (hex)”.- Keep naming consistent with other tables: wrap
resultin backticks in the result table (see below comment).-| → <br>`change_address` | string (hex) | Optional<br>(0 or 1) | **Updated in Dash Core 23.0.0**<br>The Dash address to receive the change. If not set, the address is chosen automatically. | +| → <br>`change_address` | string (base58) | Optional<br>(0 or 1) | **Updated in Dash Core 23.0.0**<br>The Dash address to receive the change. If not set, the address is chosen automatically. |
2779-2786: Fix type for “Unspent output” and keep coinbase addition.
Within ScanTXOutset results, “Unspent output” is an object, not an array. Keep the newcoinbasefield, but correct the type row to avoid confusion.-| → →<br>Unspent output | array | Required<br>(1 or more) | An object containing unspent output information | +| → →<br>Unspent output | object | Required<br>(1 or more) | An object containing unspent output information |
3776-3792: Wrong type forestimate_modein WalletCreateFundedPSBT options.
estimate_modeis a string enum, not numeric.-| → <br>`estimate_mode` | numeric (int) | Optional<br>(0 or 1) | The fee estimate mode, must be one of:<br>`unset`<br>`economical`<br>`conservative`<br>`DASH/kB`<br>`duff/B` | +| → <br>`estimate_mode` | string | Optional<br>(0 or 1) | The fee estimate mode, must be one of:<br>`unset`<br>`economical`<br>`conservative`<br>`DASH/kB`<br>`duff/B` |docs/core/api/remote-procedure-calls-blockchain.md (1)
375-391: Schema vs example mismatch for scriptPubKey (verbosity 2)The example shows
descand singleaddress; the schema earlier still lists legacyreqSigs/addresses. Align the schema to adddescandaddress, and removereqSigs/addressesfor 23.0.0.-→ → → → <br>`reqSigs` | number (int) | Optional<br>(0 or 1) | ... -→ → → → <br>`addresses` | string : array | Optional<br>(0 or 1) | ... +→ → → → <br>`desc` | string | Optional<br>(0 or 1) | Inferred descriptor for the output +→ → → → <br>`address` | string | Optional<br>(0 or 1) | Dash address (if well-defined)docs/core/api/remote-procedure-calls-raw-transactions.md (1)
803-818: FundRawTransaction options: typos and unitsFix “nummeric/numberic” typos and use DASH units consistently.
-→ <br>`changePosition` | nummeric (int) +→ <br>`changePosition` | numeric (int) -→ <br>`feeRate` | numeric (bitcoins) | ... (BTC per KB). +→ <br>`feeRate` | numeric (Dash) | ... (DASH/kB). Use `estimate_mode` for `DASH/kB` or `duff/B`. -→ <br>`conf_target` | numberic (int) +→ <br>`conf_target` | numeric (int) -→ <br>`estimate_mode` | string | ...: `unset` ... `DASH/kB` `duff/B` +→ <br>`estimate_mode` | string | ...: `unset`, `economical`, `conservative`, `DASH/kB`, `duff/B`Also update Result table:
-→ <br>fee | numeric (bitcoins) +→ <br>fee | numeric (Dash)docs/core/api/remote-procedure-calls-evo.md (2)
1739-1744: CLI example typo: missing space after -testnet.Should be
dash-cli -testnet protx update_service_evo.-dash-cli -testnetprotx update_service_evo\ +dash-cli -testnet protx update_service_evo\
3093-3097: Example/text mismatch: nodeId 12 vs 1.Either change the narrative to “node ID 1” or use
12in the command.-Requesting the quorum verification vector from a peer with node ID `12`... -dash-cli quorum getdata 1 2 "..." 1 +Requesting the quorum verification vector from a peer with node ID `1`... +daxh-cli quorum getdata 1 2 "..." 1(or update the command to use
12.)
🧹 Nitpick comments (18)
docs/core/api/remote-procedure-calls-wallet.md (3)
1708-1713: Descriptor metadata additions look fine, but avoid redundancy withnext.
coinjoinandnext_indexadditions make sense. Ifnext_indexsupersedesnext, deprecate or removenextto avoid two fields representing the same concept.- | → →<br>`next` | number (int) | Optional<br>(0 or 1) | The next index to generate addresses from; defined only for ranged descriptors | + | → →<br>`next` | number (int) | Optional<br>(0 or 1) | (Deprecated) Use `next_index`. |
2629-2664: NewKeyPool section: add explicit incompatibility note for descriptor wallets.
You mention “only compatible with legacy wallets”; recommend explicitly stating “Not supported for descriptor wallets; use keypoolrefill or descriptor management instead” to prevent misuse.- The `newkeypool` RPC ... This command is only compatible with legacy wallets. + The `newkeypool` RPC ... This command is only compatible with legacy (non-descriptor) wallets and is not supported for descriptor wallets.
2901-2903: Useresultfor top-level return key to match convention.
Most RPC tables here use backtickedresult. Align this block for consistency.-| Result | object | Required<br>(exactly 1) | JSON object containing transaction details | +| `result` | object | Required<br>(exactly 1) | JSON object containing transaction details |docs/core/api/remote-procedure-calls-blockchain.md (4)
238-256: Verbosity 3 result block—consider including desc in prevout.scriptPubKeyYou added
asm,hex,address,type. For consistency with 23.0.0 descriptorization, adddeschere too if Core returns it for prevouts. Otherwise, note explicitly thatdescis not returned underprevout.scriptPubKey.→ → → → →<br>`scriptPubKey` | object | Required<br>(exactly 1) | The script pubkey -→ → → → → →<br>`asm` | string | Required<br>(exactly 1) | The asm +→ → → → → →<br>`asm` | string | Required<br>(exactly 1) | The asm +→ → → → → →<br>`desc` | string | Optional<br>(0 or 1) | Inferred descriptor for the output → → → → → →<br>`hex` | string (hex) | Required<br>(exactly 1) | The hex
644-658: Result text vs expectation; add a success exampleYou state success returns
{}, but the example shows an error message. Add a second example that demonstrates{}for a scheduled request, or clarify that the shown output is a failure case.-Result: -```text -Block already downloaded (code -1) -``` +Result (failure example): +```text +Block already downloaded (code -1) +``` + +Result (success example): +```json +{} +```
1070-1101: GetBlockStats field optionality and feerate_percentiles shapeFields flipped to Optional look fine. However, Core exposes
feerate_percentilesas an array of 5 numbers; listing named subfields (10th/25th/…) may mislead. Either:
- document it as an array with positions 10/25/50/75/90; or
- confirm Core actually returns a keyed object and update the example accordingly.
1074-1074: Markdown emphasis style (MD049)Switch
_Added in Dash Core 18.0.0_to*Added in Dash Core 18.0.0*to satisfy markdownlint. Same line flagged twice.- | _Added in Dash Core 18.0.0_<br> + | *Added in Dash Core 18.0.0*<br>docs/core/api/remote-procedure-calls-raw-transactions.md (2)
782-787: FundRawTransaction intro: tighten wordingMinor grammar and clarity.
-The [`fundrawtransaction` RPC] adds inputs to a transaction until it has enough in value to meet its out value. This will not modify existing inputs, and will add one change output to the outputs. +The [`fundrawtransaction` RPC] adds inputs until the transaction’s inputs cover its outputs and fees. Existing inputs are not modified. One change output is added if needed. -Note that inputs which were signed may need to be resigned after completion since in/outputs have been added. +Note: previously signed inputs may need to be re‑signed after completion since inputs/outputs may change. -**Updated in Dash Core 23.0.0:** All existing inputs must either have their previous output transaction be in the wallet or be in the UTXO set. Solving data must be provided for non-wallet inputs. +**Updated in Dash Core 23.0.0:** All existing inputs must reference prevouts available in the wallet or UTXO set. Provide solving data for non‑wallet inputs.
1673-1673: Typo: descendent → descendantFix spelling for consistency with other sections.
-→→→<br>`descendent` | number | Optional<br>(0 or 1) | ... +→→→<br>`descendant` | number | Optional<br>(0 or 1) | ...docs/core/api/remote-procedure-calls-evo.md (9)
147-151: Use consistent JSON path notation for deprecated pointers.Replace
addresses['core_p2p'][0]andaddresses['platform_https'][0]withaddresses.core_p2p[0]andaddresses.platform_https[0]for readability/consistency across docs.Also applies to: 155-155
307-312: Repeat the JSON path notation fix here.Same suggestion: prefer
addresses.core_p2p[0],addresses.platform_p2p,addresses.platform_https.
340-342: Clarify scope of new Platform ban fields.Add a short note stating whether these fields appear only for evonodes or for all masternodes, and where they live (state vs metaInfo) for consistency with examples.
762-767: Minor wording/link nit.Insert a space in “[
protx registerRPC]” → “[protx registerRPC]”.-... the [`protx register`RPC](#protx-register) should be used instead. +... the [`protx register` RPC](#protx-register) should be used instead.
894-898: Keep “string/array” phrasing but add explicit examples.Consider adding inline examples like
"1.2.3.4:19999"or["1.2.3.4:19999","5.6.7.8:19999"]forcoreP2PAddrsto reduce ambiguity.
1620-1623: Table header format inconsistent with the rest.Replace the minimalist
-| - | - | -tables with the standard 4‑column header used elsewhere (Name | Type | Presence | Description).-| Name | Type | Presence | Description | -| - | - | - | - | +| Name | Type | Presence | Description | +| ---- | ---- | -------- | ----------- |Also applies to: 1626-1629
1822-1831: Uniform table style for parameters.These 4‑row “mini tables” deviate from the standard tables used elsewhere. For consistency and readability, convert to the 4‑column header form.
4316-4316: Useresult(lowercase) for consistency.Most sections use lowercase
result; consider changing “Result” here.-| Result | numeric | Required (Exactly 1) | The height of the current best ChainLock. If an error occurs, `-1` is returned. | +| result | numeric | Required (Exactly 1) | The height of the current best ChainLock. If an error occurs, `-1` is returned. |
642-646: Tiny grammar nit (outside changed lines, optional):“The
protx registerRPC creates a ProRegTx referencing an existing collateral and and sends it...” → remove the duplicated “and”.-... referencing an existing collateral and and sends it ... +... referencing an existing collateral and sends it ...
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (10)
conf.py(1 hunks)docs/core/api/ai-prompt.md(1 hunks)docs/core/api/remote-procedure-call-quick-reference.md(8 hunks)docs/core/api/remote-procedure-calls-blockchain.md(9 hunks)docs/core/api/remote-procedure-calls-dash.md(7 hunks)docs/core/api/remote-procedure-calls-evo.md(42 hunks)docs/core/api/remote-procedure-calls-raw-transactions.md(21 hunks)docs/core/api/remote-procedure-calls-wallet.md(21 hunks)docs/user/masternodes/setup-testnet.rst(2 hunks)docs/user/masternodes/setup.rst(2 hunks)
🧰 Additional context used
🪛 LanguageTool
docs/core/api/remote-procedure-call-quick-reference.md
[grammar] ~34-~34: Use a hyphen to join words.
Context: ...ockchain.md#getblockstats): computes per block statistics for a given window. **U...
(QB_NEW_EN_HYPHEN)
[grammar] ~83-~83: Use a hyphen to join words.
Context: ...vides a set of commands to execute ProTx related actions. **Updated in Dash Core ...
(QB_NEW_EN_HYPHEN)
[grammar] ~207-~207: Use a hyphen to join words.
Context: ... rescans the local blockchain for wallet related transactions. _New in Dash Core ...
(QB_NEW_EN_HYPHEN)
🪛 markdownlint-cli2 (0.18.1)
docs/core/api/remote-procedure-calls-blockchain.md
1074-1074: Emphasis style
Expected: asterisk; Actual: underscore
(MD049, emphasis-style)
1074-1074: Emphasis style
Expected: asterisk; Actual: underscore
(MD049, emphasis-style)
docs/core/api/ai-prompt.md
113-113: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
🔇 Additional comments (30)
conf.py (1)
80-92: Configuration change looks good.Adding
'scripts/*'to the exclude_patterns list is appropriate. Build tooling and scripts should not be included in the published documentation output, while the scripts themselves remain available during the build process (as used by the DIP processing at line 30).docs/core/api/remote-procedure-calls-dash.md (6)
19-19: CoinJoin mode table updated correctly.The mode table now includes the
statusoption, properly documented with version annotation on the new section (lines 41-66). The addition aligns with PR objective to document new v23.0.0 commands.
41-66: CoinJoin status mode documentation well-structured.The new "Command Mode -
status" section includes:
- Version marker (
versionadded 23.0.0)- Clear result description
- Parameter table showing array return type
- Realistic example with expected JSON output
This follows the established documentation pattern for other command modes and clearly indicates it's new functionality in v23.0.0.
271-273: GetCoinJoinInfo updated with new fields and proper deprecation notice.The
servicefield is correctly marked as deprecated in Dash Core 23.0.0, and two new fields are introduced:
addrs_core_p2p: Network addresses array (lines 272-273)Address: Nested address entries with IP:port formatThe deprecation and addition notes are clear and consistent with documentation standards.
290-290: GetCoinJoinInfo example accurately reflects v23.0.0.The example header correctly shows "Dash Core 23.0.0 (regular node)" and the sample data includes:
- New
addrs_core_p2parray with addresses- Updated
servicefield with IP:port value- Updated
keys_leftvalue (999)This demonstrates the new schema and provides clear migration guidance for users.
Also applies to: 313-322
1314-1318: Masternode Current properly marked as REMOVED in v23.0.0.The
:::{attention}block correctly replaces the previous deprecated notice, indicating the RPC was removed in Dash Core 23.0.0 (previously deprecated in 0.17.0). The messaging is clear: "This RPC was deprecated in Dash Core 0.17.0 and removed in v23.0.0."
1554-1558: Masternode Winner properly marked as REMOVED in v23.0.0.Consistent with Masternode Current, the
:::{attention}block correctly marks this RPC as removed in v23.0.0, replacing the previous deprecated notice. The deprecation history (0.17.0 to 23.0.0) is documented.docs/core/api/remote-procedure-calls-wallet.md (9)
476-476: New field looks good; matches Core semantics for embedded redeem data.
Theembeddedfield description for P2SH context is clear and scoped. No issues.
1591-1591: Good cross-link.
Adding NewKeyPool to “See also” improves discoverability.
1714-1714: Example version bump LGTM.
Example marked for 23.0.0 aligns with surrounding text.
2201-2201: Generated field wording update LGTM.
Matches the “only coinbase input” semantics.
2311-2313: Ancestor fields addition LGTM.*
Accurate mempool ancestor metadata; types look correct.
3019-3019: Rename tofee_reasonLGTM.
Matches v23 rename; good.
3171-3171: Rename tofee_reasonLGTM (SendToAddress).
Consistent with other sections.
3572-3623: SimulateRawTransaction section reads well.
Clear parameters/result; good to call out negative means decrease. No issues.
3743-3744: Constraint note LGTM.
The v23 input constraint for PSBT funding is helpful context.docs/core/api/remote-procedure-calls-blockchain.md (4)
130-130: Verbosity 3 addition looks goodClear description and constraints (“unpruned blocks in current best chain”). LGTM.
162-170: cbTx optionalization and new fieldsMarking
cbTxOptional and adding quorum/ChainLock fields is accurate for modern outputs. LGTM.
229-237: cbTx under verbosity 2Duplication of cbTx fields (under tx and top-level) is faithful to actual JSON. LGTM.
Please double‑check that both cbTx instances are expected for your node builds (some forks only show top-level).
2057-2063: GetTxOut scriptPubKey—descriptorization looks correctAdding
descand removingreqSigs/addressesmatches 23.0.0 behavior. LGTM.docs/core/api/remote-procedure-calls-raw-transactions.md (8)
371-373: Rename to final_scriptSigGood catch on casing; matches upstream naming. LGTM.
537-541: decoderawtransaction: add descAdding
desctoscriptPubKeyschema is correct for 23.0.0. LGTM.
544-556: 23.0.0 decode exampleExample aligns with schema (desc/address/type). LGTM.
586-589: Descriptor examples—goodBoth outputs include
descandaddress. LGTM.Also applies to: 596-601
1046-1050: getrawtransaction schema: add descDescriptor addition here is correct and consistent. LGTM.
1062-1155: 23.0.0 getrawtransaction examplesExamples reflect
desc, address, and confirmation fields. LGTM.
Optionally add a note thatspentTxId/Index/Heightrequirespentindex.
1207-1211: More descriptor examplesConsistent
descusage in CbTx outputs. LGTM.Also applies to: 1239-1241
1316-1364: New: GetTxSpendingPrevoutSection reads well and matches expected structure (txid/vout/spendingtxid). LGTM.
Consider adding note: only scans mempool; unconfirmed package spends may affect results.docs/core/api/remote-procedure-calls-evo.md (2)
181-211: Examples reflect newaddressesstructure correctly.Samples keep deprecated
servicewhile addingaddresses.core_p2p, which matches expected transitional responses in v23. LGTM.If nodes without
-deprecatedrpcno longer returnservice, consider adding a note indicating visibility depends on the flag.Also applies to: 222-227, 362-367, 534-538
72-72: No issues found with the deprecation gate documentation.The v23.0.0 help output confirms that the
legacyparameter inbls generateis "(DEPRECATED, can be set if -deprecatedrpc=legacy_mn is passed)", which matches the table entry you're reviewing. The documentation is accurate.
Summary
This PR updates the Dash documentation for Dash Core v23.0, including comprehensive RPC documentation updates and masternode registration parameter changes.
Changes
Core v23.0 RPC Updates
coinjoin status,newkeypool,simulaterawtx,gettxspendingprevoutmasternode current,masternode winner)submitparameterfundrawtransaction,send,walletcreatefundedpsbtinclude_immature_coinbaseparameter documentationMasternode Documentation
Also, added the jsonl dash-cli help output file.
Preview build: https://dash-docs--525.org.readthedocs.build/en/525/
Summary by CodeRabbit