feat: ETLng MPT support (#2154)

This commit is contained in:
Alex Kremer
2025-05-27 13:05:03 +01:00
committed by GitHub
parent 3e83b54332
commit 28062496eb
15 changed files with 380 additions and 36 deletions

View File

@@ -56,18 +56,18 @@ constinit auto const kRAW_HEADER =
namespace util {
std::pair<std::string, std::string>
createNftTxAndMetaBlobs(std::string metaStr, std::string txnStr)
createTxAndMetaBlobs(std::string metaStr, std::string txnStr)
{
return {hexStringToBinaryString(metaStr), hexStringToBinaryString(txnStr)};
}
std::pair<ripple::STTx, ripple::TxMeta>
createNftTxAndMeta(std::string hashStr, std::string metaStr, std::string txnStr)
createTxAndMeta(std::string hashStr, std::string metaStr, std::string txnStr)
{
ripple::uint256 hash;
EXPECT_TRUE(hash.parseHex(hashStr));
auto const [metaBlob, txnBlob] = createNftTxAndMetaBlobs(metaStr, txnStr);
auto const [metaBlob, txnBlob] = createTxAndMetaBlobs(metaStr, txnStr);
ripple::SerialIter it{txnBlob.data(), txnBlob.size()};
return {ripple::STTx{it}, ripple::TxMeta{hash, kSEQ, metaBlob}};
@@ -76,7 +76,7 @@ createNftTxAndMeta(std::string hashStr, std::string metaStr, std::string txnStr)
etlng::model::Transaction
createTransaction(ripple::TxType type, std::string hashStr, std::string metaStr, std::string txnStr)
{
auto const [sttx, meta] = createNftTxAndMeta(hashStr, metaStr, txnStr);
auto const [sttx, meta] = createTxAndMeta(hashStr, metaStr, txnStr);
return {
.raw = "",
.metaRaw = "",
@@ -161,6 +161,28 @@ createObjectWithTwoNFTs()
};
}
etlng::model::Object
createObjectWithMPT()
{
constexpr auto kACCOUNT = "rM2AGCCCRb373FRuD8wHyUwUsh2dV4BW5Q";
auto const account = getAccountIdWithString(kACCOUNT);
auto const mptokenObject = createMpTokenObject(kACCOUNT, ripple::makeMptID(2, getAccountIdWithString(kACCOUNT)));
return {
.key = {},
.keyRaw = std::string(reinterpret_cast<char const*>(account.data()), ripple::AccountID::size()),
.data = {},
.dataRaw = std::string(
static_cast<char const*>(mptokenObject.getSerializer().getDataPtr()),
mptokenObject.getSerializer().getDataLength()
),
.successor = "",
.predecessor = "",
.type = etlng::model::Object::ModType::Created,
};
}
etlng::model::BookSuccessor
createSuccessor()
{
@@ -184,7 +206,7 @@ createDataAndDiff()
{
auto original = org::xrpl::rpc::v1::TransactionAndMetadata();
auto const [metaRaw, txRaw] = createNftTxAndMetaBlobs();
auto const [metaRaw, txRaw] = createTxAndMetaBlobs();
original.set_transaction_blob(txRaw);
original.set_metadata_blob(metaRaw);
for (int i = 0; i < 10; ++i) {
@@ -230,7 +252,7 @@ createData()
{
auto original = org::xrpl::rpc::v1::TransactionAndMetadata();
auto const [metaRaw, txRaw] = createNftTxAndMetaBlobs();
auto const [metaRaw, txRaw] = createTxAndMetaBlobs();
original.set_transaction_blob(txRaw);
original.set_metadata_blob(metaRaw);
for (int i = 0; i < 10; ++i) {

View File

@@ -144,10 +144,10 @@ static constexpr auto kDEFAULT_HASH = "6C7F69A6D25A13AC4A2E9145999F45D4674F93990
static constexpr auto kDEFAULT_OBJ_KEY = "B00AA769C00726371689ED66A7CF57C2502F1BF4BDFF2ACADF67A2A7B5E8960D";
[[maybe_unused, nodiscard]] std::pair<std::string, std::string>
createNftTxAndMetaBlobs(std::string metaStr = kDEFAULT_TXN_META, std::string txnStr = kDEFAULT_TXN_HEX);
createTxAndMetaBlobs(std::string metaStr = kDEFAULT_TXN_META, std::string txnStr = kDEFAULT_TXN_HEX);
[[maybe_unused, nodiscard]] std::pair<ripple::STTx, ripple::TxMeta>
createNftTxAndMeta(
createTxAndMeta(
std::string hashStr = kDEFAULT_HASH,
std::string metaStr = kDEFAULT_TXN_META,
std::string txnStr = kDEFAULT_TXN_HEX
@@ -176,6 +176,9 @@ createObjectWithBookBase(
[[maybe_unused, nodiscard]] etlng::model::Object
createObjectWithTwoNFTs();
[[maybe_unused, nodiscard]] etlng::model::Object
createObjectWithMPT();
[[maybe_unused, nodiscard]] etlng::model::BookSuccessor
createSuccessor();