From 21061e2ad4c051fbd59af35f6600aebb72594196 Mon Sep 17 00:00:00 2001 From: Shawn Xie Date: Wed, 16 Oct 2024 11:49:50 -0400 Subject: [PATCH 1/2] add mpt id --- src/test/rpc/LedgerRPC_test.cpp | 3 +++ src/xrpld/rpc/handlers/LedgerEntry.cpp | 7 ++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/test/rpc/LedgerRPC_test.cpp b/src/test/rpc/LedgerRPC_test.cpp index 891515b221e..792da88b5bc 100644 --- a/src/test/rpc/LedgerRPC_test.cpp +++ b/src/test/rpc/LedgerRPC_test.cpp @@ -2394,6 +2394,9 @@ class LedgerRPC_test : public beast::unit_test::suite BEAST_EXPECT( jrr[jss::node][sfMPTokenMetadata.jsonName] == strHex(std::string{"123"})); + BEAST_EXPECT( + jrr[jss::node][jss::mpt_issuance_id] == + strHex(mptAlice.issuanceID())); } { // Request an index that is not a MPTIssuance. diff --git a/src/xrpld/rpc/handlers/LedgerEntry.cpp b/src/xrpld/rpc/handlers/LedgerEntry.cpp index b8937c528eb..48962ac5999 100644 --- a/src/xrpld/rpc/handlers/LedgerEntry.cpp +++ b/src/xrpld/rpc/handlers/LedgerEntry.cpp @@ -774,7 +774,12 @@ doLedgerEntry(RPC::JsonContext& context) } else { - jvResult[jss::node] = sleNode->getJson(JsonOptions::none); + auto sleJson = sleNode->getJson(JsonOptions::none); + if (sleNode->getType() == ltMPTOKEN_ISSUANCE) + sleJson[jss::mpt_issuance_id] = to_string(makeMptID( + (*sleNode)[sfSequence], sleNode->getAccountID(sfIssuer))); + + jvResult[jss::node] = sleJson; jvResult[jss::index] = to_string(uNodeIndex); } } From c77df64469d4bc6083b6a7befc90c34b6d6699be Mon Sep 17 00:00:00 2001 From: Shawn Xie Date: Wed, 16 Oct 2024 14:01:18 -0400 Subject: [PATCH 2/2] refactor --- src/libxrpl/protocol/STLedgerEntry.cpp | 4 ++++ src/xrpld/rpc/detail/RPCHelpers.cpp | 8 +------- src/xrpld/rpc/handlers/LedgerData.cpp | 4 ---- src/xrpld/rpc/handlers/LedgerEntry.cpp | 7 +------ 4 files changed, 6 insertions(+), 17 deletions(-) diff --git a/src/libxrpl/protocol/STLedgerEntry.cpp b/src/libxrpl/protocol/STLedgerEntry.cpp index 68d1455cb1d..1801149ab2a 100644 --- a/src/libxrpl/protocol/STLedgerEntry.cpp +++ b/src/libxrpl/protocol/STLedgerEntry.cpp @@ -125,6 +125,10 @@ STLedgerEntry::getJson(JsonOptions options) const ret[jss::index] = to_string(key_); + if (getType() == ltMPTOKEN_ISSUANCE) + ret[jss::mpt_issuance_id] = to_string( + makeMptID(getFieldU32(sfSequence), getAccountID(sfIssuer))); + return ret; } diff --git a/src/xrpld/rpc/detail/RPCHelpers.cpp b/src/xrpld/rpc/detail/RPCHelpers.cpp index f3df4be263e..930f8d8a0e5 100644 --- a/src/xrpld/rpc/detail/RPCHelpers.cpp +++ b/src/xrpld/rpc/detail/RPCHelpers.cpp @@ -285,13 +285,7 @@ getAccountObjects( if (!typeFilter.has_value() || typeMatchesFilter(typeFilter.value(), sleNode->getType())) { - auto sleJson = sleNode->getJson(JsonOptions::none); - if (sleNode->getType() == ltMPTOKEN_ISSUANCE) - sleJson[jss::mpt_issuance_id] = to_string(makeMptID( - (*sleNode)[sfSequence], - sleNode->getAccountID(sfIssuer))); - - jvObjects.append(sleJson); + jvObjects.append(sleNode->getJson(JsonOptions::none)); } if (++i == mlimit) diff --git a/src/xrpld/rpc/handlers/LedgerData.cpp b/src/xrpld/rpc/handlers/LedgerData.cpp index 573f3f62f88..ad26b83b43b 100644 --- a/src/xrpld/rpc/handlers/LedgerData.cpp +++ b/src/xrpld/rpc/handlers/LedgerData.cpp @@ -124,10 +124,6 @@ doLedgerData(RPC::JsonContext& context) Json::Value& entry = nodes.append(sle->getJson(JsonOptions::none)); entry[jss::index] = to_string(sle->key()); - - if (sle->getType() == ltMPTOKEN_ISSUANCE) - entry[jss::mpt_issuance_id] = to_string(makeMptID( - (*sle)[sfSequence], sle->getAccountID(sfIssuer))); } } } diff --git a/src/xrpld/rpc/handlers/LedgerEntry.cpp b/src/xrpld/rpc/handlers/LedgerEntry.cpp index 48962ac5999..b8937c528eb 100644 --- a/src/xrpld/rpc/handlers/LedgerEntry.cpp +++ b/src/xrpld/rpc/handlers/LedgerEntry.cpp @@ -774,12 +774,7 @@ doLedgerEntry(RPC::JsonContext& context) } else { - auto sleJson = sleNode->getJson(JsonOptions::none); - if (sleNode->getType() == ltMPTOKEN_ISSUANCE) - sleJson[jss::mpt_issuance_id] = to_string(makeMptID( - (*sleNode)[sfSequence], sleNode->getAccountID(sfIssuer))); - - jvResult[jss::node] = sleJson; + jvResult[jss::node] = sleNode->getJson(JsonOptions::none); jvResult[jss::index] = to_string(uNodeIndex); } }