Skip to content

refactor: use new type of composite commands for protx NNN - #6072

Merged
PastaPastaPasta merged 5 commits into
dashpay:developfrom
knst:refactor-rpc-18531-p4
Jun 27, 2024
Merged

refactor: use new type of composite commands for protx NNN#6072
PastaPastaPasta merged 5 commits into
dashpay:developfrom
knst:refactor-rpc-18531-p4

Conversation

@knst

@knstknst commented Jun 21, 2024

Copy link
Copy Markdown
Collaborator

Issue being fixed or feature implemented

See #6051

What was done?

Commands starting from 'protx ...' uses new a new way to make composite commands.

How Has This Been Tested?

Run unit/functional tests.

Breaking Changes

N/A

Checklist:

  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have added or updated relevant unit/integration/functional/e2e tests
  • I have made corresponding changes to the documentation
  • I have assigned this pull request to a milestone

@knstknst added this to the 21 milestone Jun 21, 2024
@knstknst changed the title refactor: use new type of composite commands for protx NNNrefactor: use new type of composite commands for protx NNNJun 21, 2024
@knst
knstforce-pushed the refactor-rpc-18531-p4 branch from 82e524d to e96776aCompareJune 21, 2024 19:48
UdjinM6
UdjinM6 previously approved these changes Jun 24, 2024

@UdjinM6UdjinM6 left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

utACK

@github-actions

Copy link
Copy Markdown

This pull request has conflicts, please rebase.

@UdjinM6UdjinM6 left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

re-utACK

@PastaPastaPastaPastaPastaPasta left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

utACK 7b44af2

@PastaPastaPasta
PastaPastaPasta merged commit b0426f3 into dashpay:developJun 27, 2024
@knst
knst deleted the refactor-rpc-18531-p4 branch June 29, 2024 09:07
knst added a commit to knst/dash that referenced this pull request Dec 27, 2024
The implementation of RPC has been refactored in bitcoin significantly with using RPCHelpMan,
see multiple PR, such as bitcoin#1853, bitcoin#19528, etc
Backporting them and appliying same refactoring to Dash Core caused undefined behaviour, particularly dashpay#6072
For example, in this code the local variable `use_legacy` will be used after `protx_update_registrar_wrapper`,
when executor will be called.
static RPCHelpMan protx_update_registrar_wrapper(const bool use_legacy)
{
std::string rpc_name = use_legacy ? "update_registrar_legacy" : "update_registrar";
std::string rpc_full_name = std::string("protx ").append(rpc_name);
std::string pubkey_operator = use_legacy ? "\"0532646990082f4fd639f90387b1551f2c7c39d37392cb9055a06a7e85c1d23692db8f87f827886310bccc1e29db9aee\"" : "\"8532646990082f4fd639f90387b1551f2c7c39d37392cb9055a06a7e85c1d23692db8f87f827886310bccc1e29db9aee\"";
std::string rpc_example = rpc_name.append(" \"0123456701234567012345670123456701234567012345670123456701234567\" ").append(pubkey_operator).append(" \"" + EXAMPLE_ADDRESS[1] + "\"");
return RPCHelpMan{rpc_full_name,
<...>
RPCResult{
RPCResult::Type::STR_HEX, "txid", "The transaction id"
},
RPCExamples{
HelpExampleCli("protx", rpc_example)
},
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
{
<...>
ptx.nVersion = specific_legacy_bls_scheme ? CProUpRegTx::LEGACY_BLS_VERSION : CProUpRegTx::BASIC_BLS_VERSION; <<<<---- THERE IS UB
It can be easy tested by adding debug logs to log string, for example rpc_full_name at the moment of call of executor has been during run:
2024-12-26T16:10:15Z rpc full name: 'r,ߧzu\x00\x00����m���istrar_legacy'
This PR fixes multiple unexplainable random failures which had happen only for `tsan` build or for only `ubsan` build during debuggin dashpay#6508
and depends only on code revision.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@knst@UdjinM6@PastaPastaPasta