1#include <xrpl/shamap/SHAMapTreeNode.h>
3#include <xrpl/basics/IntrusivePointer.h>
4#include <xrpl/basics/IntrusivePointer.ipp>
5#include <xrpl/basics/SHAMapHash.h>
6#include <xrpl/basics/Slice.h>
7#include <xrpl/basics/base_uint.h>
8#include <xrpl/basics/contract.h>
9#include <xrpl/basics/safe_cast.h>
10#include <xrpl/protocol/HashPrefix.h>
11#include <xrpl/protocol/Serializer.h>
12#include <xrpl/protocol/digest.h>
13#include <xrpl/shamap/SHAMapAccountStateLeafNode.h>
14#include <xrpl/shamap/SHAMapInnerNode.h>
15#include <xrpl/shamap/SHAMapItem.h>
16#include <xrpl/shamap/SHAMapNodeID.h>
17#include <xrpl/shamap/SHAMapTxLeafNode.h>
18#include <xrpl/shamap/SHAMapTxPlusMetaLeafNode.h>
34 "Short TXN node: " +
std::to_string(data.size()) +
" bytes (minimum " +
64 "Short TXN+MD node: failed to read tag at offset " +
133 auto const type = rawNode[rawNode.
size() - 1];
137 bool const hashValid =
false;
161 if (rawNode.
size() < 4)
172 bool const hashValid =
true;
187 "prefix: unknown type (" +
static constexpr std::size_t kBytes
static SHAMapTreeNodePtr makeCompressedInner(Slice data)
static SHAMapTreeNodePtr makeFullInner(Slice data, SHAMapHash const &hash, bool hashValid)
Identifies a node inside a SHAMap.
static SHAMapTreeNodePtr makeFromPrefix(Slice rawNode, SHAMapHash const &hash)
static SHAMapTreeNodePtr makeFromWire(Slice rawNode)
static SHAMapTreeNodePtr makeAccountState(Slice data, SHAMapHash const &hash, bool hashValid)
static SHAMapTreeNodePtr makeTransaction(Slice data, SHAMapHash const &hash, bool hashValid)
static SHAMapTreeNodePtr makeTransactionWithMeta(Slice data, SHAMapHash const &hash, bool hashValid)
virtual std::string getString(SHAMapNodeID const &) const
bool getBitString(BaseUInt< Bits, Tag > &data, int offset) const
Slice slice() const noexcept
std::size_t size() const noexcept
An immutable linear range of bytes.
bool empty() const noexcept
Return true if the byte range is empty.
std::size_t size() const noexcept
Returns the number of bytes in the storage.
void removePrefix(std::size_t n)
Shrinks the slice by moving its start forward by n characters.
void removeSuffix(std::size_t n)
Shrinks the slice by moving its end backward by n characters.
SharedPtr< T > makeShared(A &&... args)
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
intr_ptr::SharedPtr< SHAMapTreeNode > SHAMapTreeNodePtr
sha512_half_hasher::result_type sha512Half(Args const &... args)
Returns the SHA512-Half of a series of objects.
constexpr std::enable_if_t< std::is_integral_v< Dest > &&std::is_integral_v< Src >, Dest > safeCast(Src s) noexcept
static constexpr unsigned char const kWireTypeTransactionWithMeta
static constexpr unsigned char const kWireTypeCompressedInner
std::string to_string(BaseUInt< Bits, Tag > const &a)
constexpr std::size_t kMinShaMapItemBytes
boost::intrusive_ptr< SHAMapItem > makeShamapitem(uint256 const &tag, Slice data)
static constexpr unsigned char const kWireTypeAccountState
static constexpr unsigned char const kWireTypeTransaction
@ TransactionId
transaction plus signature to give transaction ID
@ InnerNode
inner node in V1 tree
@ TxNode
transaction plus metadata
static constexpr unsigned char const kWireTypeInner
XRPL_NO_SANITIZE_ADDRESS void Throw(Args &&... args)