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/Issue.h>
6#include <xrpl/protocol/STAmount.h>
7#include <xrpl/protocol/STTx.h>
8#include <xrpl/protocol/TER.h>
9
10#include <map>
11#include <vector>
12
13namespace xrpl {
14
22{
24 {
27 };
28
34
37
39
40public:
41 void
43
44 bool
45 finalize(STTx const&, TER const, XRPAmount const, ReadView const&, beast::Journal const&);
46
47private:
48 bool
50
51 static STAmount
53
54 void
55 recordBalance(Issue const& issue, BalanceChange change);
56
57 void
59
61 findIssuer(AccountID const& issuerID, ReadView const& view);
62
63 static bool
65 SLE::const_ref issuer,
66 IssuerChanges const& changes,
67 STTx const& tx,
68 beast::Journal const& j,
69 bool enforce);
70
71 static bool
73 BalanceChange const& change,
74 bool high,
75 STTx const& tx,
76 beast::Journal const& j,
77 bool enforce,
78 bool globalFreeze);
79};
80
81} // namespace xrpl
A generic endpoint for log messages.
Definition Journal.h:38
A currency issued by an account.
Definition Issue.h:13
A view into a ledger.
Definition ReadView.h:31
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 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 &)
static bool validateFrozenState(BalanceChange const &change, bool high, STTx const &tx, beast::Journal const &j, bool enforce, bool globalFreeze)
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)
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:554
BaseUInt< 160, detail::AccountIDTag > AccountID
A 160-bit unsigned that uniquely identifies an account.
Definition AccountID.h:28
TERSubset< CanCvtToTER > TER
Definition TER.h:634
std::vector< BalanceChange > senders
std::vector< BalanceChange > receivers