refactor(interfaces): expose typed provider transaction operations - #7600
refactor(interfaces): expose typed provider transaction operations#7600PastaPastaPasta wants to merge 13 commits into
Conversation
|
Warning Review limit reached
Next review available in: 38 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (31)
Comment |
|
🕓 Ready for review — 1 ahead in queue (commit 9742a27) |
Potential PR merge conflictsThis is advisory only. It does not block CI, but it marks PRs that will likely need a rebase depending on merge order. If this PR merges firstThese open PRs will likely need a rebase:
|
0d641d8 to
71a70d4
Compare
71a70d4 to
9742a27
Compare
Issue being fixed or feature implemented
The Qt masternode registration and maintenance work needs to build, sign, and
broadcast normal/Evo provider transactions without treating the RPC server as a
GUI transport. Calling
Node::executeRpcwith method strings,UniValuearguments, and wallet URI routing would make the GUI depend on RPC parsing and
error conventions and would duplicate no domain boundary at all.
This PR extracts the existing normal/Evo ProTx implementation into a typed
service shared by RPC and future GUI callers. It is the backend prerequisite for
the registration UI extracted from PastaPastaPasta/dash#68.
This PR is stacked on #7594. Until that PR merges, GitHub's aggregate diff also
contains its wallet-derived operator-key commits. The P-specific change is
commit
348958f6d080and can be reviewed directly with thestack-only comparison.
What was done?
under
interfaces.Service, Update Registrar, and Revoke operations to
interfaces::EVO.signing, and broadcast into one node-domain service used by both RPC and the
typed interface.
interfaces::Wallet; provider operations remain oninterfaces::EVObecausethey require node chainstate and deterministic-masternode state.
validation, transaction construction, and RPC adapters use the same rules.
acquired by that call, while successful register/prepare operations retain
the collateral lock for the registration lifecycle.
UniValue,JSONRPCRequest, RPC method string, wallet URI, orexecuteRpcdependencycrosses the typed boundary.
Complete user-story manifest frozen before PR creation
The canonical manifest is published in
dash-ui-artifacts.
submit=falsereturns a fully signed transaction without broadcast.This PR has no Qt entry point or screen, so its screenshot set is intentionally
empty. UI screenshots belong to the stacked registration and maintenance PRs.
How Has This Been Tested?
src/dashdandsrc/test/test_dashwith the macOS depends toolchain.src/dashdin a fresh--disable-wallet --without-guiconfiguration.evo_netinfo_testssuite.wallet_dash_rpcs.pywith legacy and descriptor wallets.rpc_netinfo.pyserially.feature_protx_version.py.git diff --checkchecks.lock ordering, collateral ownership, external prepare/submit, payload
signing, and RPC behavior. No consensus or security blocker was found.
Breaking Changes
No RPC method or successful result shape changes. Incompletely signed ProTx
inputs now return the existing wallet error category instead of yielding a
partial transaction or deferring failure to broadcast. This is intentional:
the typed success type guarantees a fully signed transaction.
Checklist