rippled
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{
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 std::shared_ptr<SLE const> const& before,
55 bool isDelete);
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 std::shared_ptr<SLE const> const& issuer,
69 IssuerChanges const& changes,
70 STTx const& tx,
71 beast::Journal const& j,
72 bool enforce);
73
74 static bool
76 BalanceChange const& change,
77 bool high,
78 STTx const& tx,
79 beast::Journal const& j,
80 bool enforce,
81 bool globalFreeze);
82};
83
84} // namespace xrpl
A generic endpoint for log messages.
Definition Journal.h:40
A currency issued by an account.
Definition Issue.h:13
A view into a ledger.
Definition ReadView.h:31
Invariant: frozen trust line balance change is not allowed.
std::shared_ptr< SLE const > findIssuer(AccountID const &issuerID, ReadView const &view)
void recordBalance(Issue const &issue, BalanceChange change)
bool isValidEntry(std::shared_ptr< SLE const > const &before, std::shared_ptr< SLE const > const &after)
static bool validateIssuerChanges(std::shared_ptr< SLE const > const &issuer, IssuerChanges const &changes, STTx const &tx, beast::Journal const &j, bool enforce)
std::map< AccountID, std::shared_ptr< SLE const > const > possibleIssuers_
static STAmount calculateBalanceChange(std::shared_ptr< SLE const > const &before, std::shared_ptr< SLE const > const &after, bool isDelete)
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)
void visitEntry(bool, std::shared_ptr< SLE const > const &, std::shared_ptr< SLE const > const &)
void recordBalanceChanges(std::shared_ptr< SLE const > const &after, STAmount const &balanceChange)
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:523
std::shared_ptr< SLE const > const line
std::vector< BalanceChange > senders
std::vector< BalanceChange > receivers