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) {