fix: Add CTID to all RPC's that includes transactions (#2011)

fixes #1998
This commit is contained in:
Peter Chen
2025-04-25 09:55:39 -04:00
committed by GitHub
parent 79e6f07863
commit 593d7298b1
17 changed files with 238 additions and 92 deletions

View File

@@ -25,6 +25,7 @@
#include "feed/Types.hpp"
#include "rpc/JS.hpp"
#include "rpc/RPCHelpers.hpp"
#include "util/Assert.hpp"
#include "util/log/Logger.hpp"
#include <boost/asio/spawn.hpp>
@@ -176,7 +177,8 @@ TransactionFeed::pub(
data::TransactionAndMetadata const& txMeta,
ripple::LedgerHeader const& lgrInfo,
std::shared_ptr<data::BackendInterface const> const& backend,
std::shared_ptr<data::AmendmentCenterInterface const> const& amendmentCenter
std::shared_ptr<data::AmendmentCenterInterface const> const& amendmentCenter,
uint32_t const networkID
)
{
auto [tx, meta] = rpc::deserializeTxPlusMeta(txMeta, lgrInfo.seq);
@@ -205,6 +207,15 @@ TransactionFeed::pub(
rpc::insertDeliverMaxAlias(pubObj[txKey].as_object(), version);
rpc::insertMPTIssuanceID(pubObj[JS(meta)].as_object(), tx, meta);
auto const& metaObj = pubObj[JS(meta)];
ASSERT(metaObj.is_object(), "meta must be an obj in rippled and clio");
if (metaObj.as_object().contains("TransactionIndex") && metaObj.as_object().at("TransactionIndex").is_int64()) {
if (auto const& ctid =
rpc::encodeCTID(lgrInfo.seq, metaObj.as_object().at("TransactionIndex").as_int64(), networkID);
ctid)
pubObj[JS(ctid)] = ctid.value();
}
pubObj[JS(type)] = "transaction";
pubObj[JS(validated)] = true;
pubObj[JS(status)] = "closed";