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/ledger/helpers/LendingHelpers.h>
6#include <xrpl/protocol/AccountID.h>
7#include <xrpl/protocol/Issue.h>
8#include <xrpl/protocol/STAmount.h>
9#include <xrpl/protocol/STLedgerEntry.h>
10#include <xrpl/protocol/STTx.h>
11#include <xrpl/protocol/TER.h>
12#include <xrpl/protocol/XRPAmount.h>
13
14#include <map>
15#include <optional>
16#include <vector>
17
18namespace xrpl {
19
27{
29 {
32 };
33
39
42
44
45public:
46 void
48
49 bool
50 finalize(STTx const&, TER const, XRPAmount const, ReadView const&, beast::Journal const&);
51
52private:
53 bool
55
56 static STAmount
58
59 void
60 recordBalance(Issue const& issue, BalanceChange change);
61
62 void
63 recordBalanceChanges(SLE::ConstRef after, STAmount const& balanceChange);
64
66 findIssuer(AccountID const& issuerID, ReadView const& view);
67
68 static bool
70 SLE::ConstRef issuer,
71 IssuerChanges const& changes,
72 STTx const& tx,
73 beast::Journal const& j,
74 bool enforce,
75 bool fixOverrideFreeze,
76 std::optional<LoanDefaultFreezeExemptAccounts> const& loanDefaultAccounts);
77
78 static bool
80 BalanceChange const& change,
81 bool high,
82 STTx const& tx,
83 beast::Journal const& j,
84 bool enforce,
85 bool globalFreeze,
86 bool fixOverrideFreeze,
87 std::optional<LoanDefaultFreezeExemptAccounts> const& loanDefaultAccounts);
88};
89
90} // 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 & ConstRef
std::shared_ptr< STLedgerEntry const > const_pointer
Invariant: frozen trust line balance change is not allowed.
void recordBalance(Issue const &issue, BalanceChange change)
void recordBalanceChanges(SLE::ConstRef after, STAmount const &balanceChange)
std::map< AccountID, SLE::const_pointer const > possibleIssuers_
void visitEntry(bool, SLE::ConstRef, SLE::ConstRef)
bool finalize(STTx const &, TER const, XRPAmount const, ReadView const &, beast::Journal const &)
static bool validateIssuerChanges(SLE::ConstRef issuer, IssuerChanges const &changes, STTx const &tx, beast::Journal const &j, bool enforce, bool fixOverrideFreeze, std::optional< LoanDefaultFreezeExemptAccounts > const &loanDefaultAccounts)
bool isValidEntry(SLE::ConstRef before, SLE::ConstRef after)
SLE::const_pointer findIssuer(AccountID const &issuerID, ReadView const &view)
static STAmount calculateBalanceChange(SLE::ConstRef before, SLE::ConstRef after, bool isDelete)
std::map< Issue, IssuerChanges > ByIssuer
static bool validateFrozenState(BalanceChange const &change, bool high, STTx const &tx, beast::Journal const &j, bool enforce, bool globalFreeze, bool fixOverrideFreeze, std::optional< LoanDefaultFreezeExemptAccounts > const &loanDefaultAccounts)
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:644
BaseUInt< 160, detail::AccountIDTag > AccountID
A 160-bit unsigned that uniquely identifies an account.
Definition AccountID.h:34
TERSubset< CanCvtToTER > TER
Definition TER.h:654
std::vector< BalanceChange > senders
std::vector< BalanceChange > receivers