4#include "util/Assert.hpp"
6#include <boost/container/flat_set.hpp>
7#include <xrpl/basics/Blob.h>
8#include <xrpl/basics/Log.h>
9#include <xrpl/basics/StringUtilities.h>
10#include <xrpl/basics/base_uint.h>
11#include <xrpl/protocol/AccountID.h>
12#include <xrpl/protocol/SField.h>
13#include <xrpl/protocol/STAccount.h>
14#include <xrpl/protocol/STLedgerEntry.h>
15#include <xrpl/protocol/Serializer.h>
16#include <xrpl/protocol/TxMeta.h>
27 boost::container::flat_set<xrpl::AccountID> accounts;
28 std::uint32_t ledgerSequence{};
29 std::uint32_t transactionIndex{};
39 : accounts(meta.getAffectedAccounts())
40 , ledgerSequence(meta.getLgrSeq())
41 , transactionIndex(meta.getIndex())
55 xrpl::uint256 tokenID;
56 std::uint32_t ledgerSequence;
57 std::uint32_t transactionIndex;
68 xrpl::uint256
const& tokenID,
69 xrpl::TxMeta
const& meta,
70 xrpl::uint256
const& txHash
73 , ledgerSequence(meta.getLgrSeq())
74 , transactionIndex(meta.getIndex())
94 xrpl::uint256 tokenID;
95 std::uint32_t ledgerSequence;
96 std::optional<std::uint32_t> transactionIndex;
97 xrpl::AccountID owner;
98 std::optional<xrpl::Blob> uri;
99 bool isBurned =
false;
100 bool onlyUriChanged =
false;
116 xrpl::uint256
const& tokenID,
117 xrpl::AccountID
const& owner,
118 xrpl::Blob
const& uri,
119 xrpl::TxMeta
const& meta
122 , ledgerSequence(meta.getLgrSeq())
123 , transactionIndex(meta.getIndex())
140 xrpl::uint256
const& tokenID,
141 xrpl::AccountID
const& owner,
142 xrpl::TxMeta
const& meta,
146 , ledgerSequence(meta.getLgrSeq())
147 , transactionIndex(meta.getIndex())
167 xrpl::uint256
const& tokenID,
168 std::uint32_t
const ledgerSequence,
169 xrpl::AccountID
const& owner,
170 xrpl::Blob
const& uri
172 : tokenID(tokenID), ledgerSequence(ledgerSequence), owner(owner), uri(uri)
184 NFTsData(xrpl::uint256
const& tokenID, xrpl::TxMeta
const& meta, xrpl::Blob
const& uri)
186 , ledgerSequence(meta.getLgrSeq())
187 , transactionIndex(meta.getIndex())
189 , onlyUriChanged(true)
199 xrpl::AccountID holder;
209 xrpl::uint192 mptIssuanceID;
210 boost::container::flat_set<xrpl::AccountID> accounts;
211 std::uint32_t ledgerSequence{};
212 std::uint32_t transactionIndex{};
213 xrpl::uint256 txHash;
229 static constexpr auto kMinSizeRequired = 3;
230 if (std::size(
object) < kMinSizeRequired)
233 static constexpr short kDirNodeSpaceKey = 0x0064;
234 short const spaceKey = (
object.data()[1] << 8) |
object.data()[2];
235 return spaceKey == kDirNodeSpaceKey;
245template <
typename T,
typename R>
252 xrpl::STLedgerEntry
const sle{xrpl::SerialIter{
object.data(),
object.size()}, key};
253 return !sle[~xrpl::sfOwner].has_value();
266 static constexpr size_t kEySize = 24;
268 ASSERT(key.size() == xrpl::uint256::size(),
"Invalid key size {}", key.size());
271 for (
size_t i = 0; i < kEySize; ++i)
272 ret.data()[i] = key.data()[i];
286 return {
reinterpret_cast<char const*
>(input.data()), xrpl::uint256::size()};
bool isDirNode(T const &object)
Check whether the supplied object is a dir node.
Definition DBHelpers.hpp:227
xrpl::uint256 getBookBase(T const &key)
Get the book base.
Definition DBHelpers.hpp:264
static constexpr std::uint32_t kRippleEpochStart
The ripple epoch start timestamp. Midnight on 1st January 2000.
Definition DBHelpers.hpp:292
bool isBookDir(T const &key, R const &object)
Check whether the supplied object is a book dir.
Definition DBHelpers.hpp:247
std::string uint256ToString(xrpl::uint256 const &input)
Stringify a xrpl::uint256.
Definition DBHelpers.hpp:284
AccountTransactionsData(xrpl::TxMeta const &meta, xrpl::uint256 const &txHash)
Construct a new AccountTransactionsData object.
Definition DBHelpers.hpp:38
Represents an MPT and holder pair.
Definition DBHelpers.hpp:197
Represents a transaction link for an MPTokenIssuance.
Definition DBHelpers.hpp:208
NFTTransactionsData(xrpl::uint256 const &tokenID, xrpl::TxMeta const &meta, xrpl::uint256 const &txHash)
Construct a new NFTTransactionsData object.
Definition DBHelpers.hpp:67
NFTsData(xrpl::uint256 const &tokenID, xrpl::AccountID const &owner, xrpl::TxMeta const &meta, bool isBurned)
Construct a new NFTsData object.
Definition DBHelpers.hpp:139
NFTsData(xrpl::uint256 const &tokenID, xrpl::AccountID const &owner, xrpl::Blob const &uri, xrpl::TxMeta const &meta)
Construct a new NFTsData object.
Definition DBHelpers.hpp:115
NFTsData(xrpl::uint256 const &tokenID, std::uint32_t const ledgerSequence, xrpl::AccountID const &owner, xrpl::Blob const &uri)
Construct a new NFTsData object.
Definition DBHelpers.hpp:166
NFTsData(xrpl::uint256 const &tokenID, xrpl::TxMeta const &meta, xrpl::Blob const &uri)
Construct a new NFTsData object with only the URI changed.
Definition DBHelpers.hpp:184