xrpld
Loading...
Searching...
No Matches
FreezeInvariant.h
1#pragma once
2
3#include <xrpl/beast/utility/Journal.h>
4#include <xrpl/ledger/ReadView.h>
5#include <xrpl/protocol/AccountID.h>
6#include <xrpl/protocol/Issue.h>
7#include <xrpl/protocol/STAmount.h>
8#include <xrpl/protocol/STLedgerEntry.h>
9#include <xrpl/protocol/STTx.h>
10#include <xrpl/protocol/TER.h>
11#include <xrpl/protocol/XRPAmount.h>
12
13#include <map>
14#include <vector>
15
16namespace xrpl {
17
25{
27 {
30 };
31
37
40
42
43public:
44 void
46
47 bool
48 finalize(STTx const&, TER const, XRPAmount const, ReadView const&, beast::Journal const&);
49
50private:
51 bool
53
54 static STAmount
56
57 void
58 recordBalance(Issue const& issue, BalanceChange change);
59
60 void
62
64 findIssuer(AccountID const& issuerID, ReadView const& view);
65
66 static bool
68 SLE::const_ref issuer,
69 IssuerChanges const& changes,
70 STTx const& tx,
71 beast::Journal const& j,
72 bool enforce,
73 bool fixOverrideFreeze);
74
75 static bool
77 BalanceChange const& change,
78 bool high,
79 STTx const& tx,
80 beast::Journal const& j,
81 bool enforce,
82 bool globalFreeze,
83 bool fixOverrideFreeze);
84};
85
86} // namespace xrpl
A generic endpoint for log messages.
Definition Journal.h:44
A currency issued by an account.
Definition Issue.h:18
A view into a ledger.
Definition ReadView.h:41
std::shared_ptr< STLedgerEntry const > const & const_ref
std::shared_ptr< STLedgerEntry const > const_pointer
Invariant: frozen trust line balance change is not allowed.
void recordBalance(Issue const &issue, BalanceChange change)
std::map< AccountID, SLE::const_pointer const > possibleIssuers_
static bool validateFrozenState(BalanceChange const &change, bool high, STTx const &tx, beast::Journal const &j, bool enforce, bool globalFreeze, bool fixOverrideFreeze)
static STAmount calculateBalanceChange(SLE::const_ref before, SLE::const_ref after, bool isDelete)
void recordBalanceChanges(SLE::const_ref after, STAmount const &balanceChange)
bool finalize(STTx const &, TER const, XRPAmount const, ReadView const &, beast::Journal const &)
bool isValidEntry(SLE::const_ref before, SLE::const_ref after)
static bool validateIssuerChanges(SLE::const_ref issuer, IssuerChanges const &changes, STTx const &tx, beast::Journal const &j, bool enforce, bool fixOverrideFreeze)
void visitEntry(bool, SLE::const_ref, SLE::const_ref)
SLE::const_pointer findIssuer(AccountID const &issuerID, ReadView const &view)
std::map< Issue, IssuerChanges > ByIssuer
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition algorithm.h:5
bool after(NetClock::time_point now, std::uint32_t mark)
Has the specified time passed?
Definition View.cpp:572
BaseUInt< 160, detail::AccountIDTag > AccountID
A 160-bit unsigned that uniquely identifies an account.
Definition AccountID.h:34
TERSubset< CanCvtToTER > TER
Definition TER.h:647
std::vector< BalanceChange > senders
std::vector< BalanceChange > receivers