1#include <xrpld/app/ledger/ConsensusTransSetSF.h>
3#include <xrpld/app/ledger/TransactionMaster.h>
4#include <xrpld/app/misc/Transaction.h>
6#include <xrpl/basics/Blob.h>
7#include <xrpl/basics/Log.h>
8#include <xrpl/basics/SHAMapHash.h>
9#include <xrpl/beast/utility/instrumentation.h>
10#include <xrpl/core/Job.h>
11#include <xrpl/core/JobQueue.h>
12#include <xrpl/protocol/HashPrefix.h>
13#include <xrpl/protocol/Serializer.h>
14#include <xrpl/protocol/digest.h>
15#include <xrpl/server/NetworkOPs.h>
16#include <xrpl/shamap/SHAMapTreeNode.h>
47 JLOG(
j_.debug()) <<
"Node on our acquiring TX set is TXN we may not have";
52 Serializer const s(nodeData.data() + 4, nodeData.size() - 4);
56 stx->getTransactionID() == nodeHash.
asUInt256(),
57 "xrpl::ConsensusTransSetSF::gotNode : transaction hash "
59 auto const pap = &
app_;
60 app_.getJobQueue().addJob(
61 JtTransaction,
"TxsToTxn", [pap, stx]() { pap->getOPs().submitTransaction(stx); });
65 JLOG(
j_.warn()) <<
"Fetched invalid transaction in proposed set. Exception: "
78 auto txn =
app_.getMasterTransaction().fetchFromCache(nodeHash.
asUInt256());
83 JLOG(
j_.trace()) <<
"Node in our acquiring TX set is TXN we have";
86 txn->getSTransaction()->add(s);
89 "xrpl::ConsensusTransSetSF::getNode : transaction hash match");
ConsensusTransSetSF(Application &app, NodeCache &nodeCache)
TaggedCache< SHAMapHash, Blob > NodeCache
std::optional< Blob > getNode(SHAMapHash const &nodeHash) const override
void gotNode(bool fromFilter, SHAMapHash const &nodeHash, std::uint32_t ledgerSeq, Blob &&nodeData, SHAMapNodeType type) const override
uint256 const & asUInt256() const
Blob const & peekData() const
Slice slice() const noexcept
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
sha512_half_hasher::result_type sha512Half(Args const &... args)
Returns the SHA512-Half of a series of objects.
@ TransactionId
transaction plus signature to give transaction ID
std::vector< unsigned char > Blob
Storage for linear binary data.