20#ifndef RIPPLE_APP_TX_INVARIANTCHECK_H_INCLUDED 
   21#define RIPPLE_APP_TX_INVARIANTCHECK_H_INCLUDED 
   23#include <xrpl/basics/Number.h> 
   24#include <xrpl/basics/base_uint.h> 
   25#include <xrpl/beast/utility/Journal.h> 
   26#include <xrpl/protocol/MPTIssue.h> 
   27#include <xrpl/protocol/STLedgerEntry.h> 
   28#include <xrpl/protocol/STTx.h> 
   29#include <xrpl/protocol/TER.h> 
A generic endpoint for log messages.
 
Invariant: a deleted account must not have any objects left.
 
void visitEntry(bool, std::shared_ptr< SLE const > const &, std::shared_ptr< SLE const > const &)
 
bool finalize(STTx const &, TER const, XRPAmount const, ReadView const &, beast::Journal const &)
 
std::vector< std::shared_ptr< SLE const  > > accountsDeleted_
 
Invariant: we cannot remove an account ledger entry.
 
std::uint32_t accountsDeleted_
 
void visitEntry(bool, std::shared_ptr< SLE const > const &, std::shared_ptr< SLE const > const &)
 
bool finalize(STTx const &, TER const, XRPAmount const, ReadView const &, beast::Journal const &)
 
Prototype for invariant check implementations.
 
void visitEntry(bool isDelete, std::shared_ptr< SLE const > const &before, std::shared_ptr< SLE const > const &after)
called for each ledger entry in the current transaction.
 
bool finalize(STTx const &tx, TER const tec, XRPAmount const fee, ReadView const &view, beast::Journal const &j)
called after all ledger entries have been visited to determine the final status of the check
 
InvariantChecker_PROTOTYPE()=default
 
A currency issued by an account.
 
Invariant: corresponding modified ledger entries should match in type and added entries should be a v...
 
void visitEntry(bool, std::shared_ptr< SLE const > const &, std::shared_ptr< SLE const > const &)
 
bool finalize(STTx const &, TER const, XRPAmount const, ReadView const &, beast::Journal const &)
 
Invariant: Validates counts of NFTokens after all transaction types.
 
std::uint32_t afterMintedTotal
 
bool finalize(STTx const &, TER const, XRPAmount const, ReadView const &, beast::Journal const &)
 
std::uint32_t afterBurnedTotal
 
void visitEntry(bool, std::shared_ptr< SLE const > const &, std::shared_ptr< SLE const > const &)
 
std::uint32_t beforeBurnedTotal
 
std::uint32_t beforeMintedTotal
 
Invariant: offers should be for non-negative amounts and must not be XRP to XRP.
 
void visitEntry(bool, std::shared_ptr< SLE const > const &, std::shared_ptr< SLE const > const &)
 
bool finalize(STTx const &, TER const, XRPAmount const, ReadView const &, beast::Journal const &)
 
Invariant: Trust lines with deep freeze flag are not allowed if normal freeze flag is not set.
 
void visitEntry(bool, std::shared_ptr< SLE const > const &, std::shared_ptr< SLE const > const &)
 
bool deepFreezeWithoutFreeze_
 
bool finalize(STTx const &, TER const, XRPAmount const, ReadView const &, beast::Journal const &)
 
Invariant: Trust lines using XRP are not allowed.
 
bool finalize(STTx const &, TER const, XRPAmount const, ReadView const &, beast::Journal const &)
 
void visitEntry(bool, std::shared_ptr< SLE const > const &, std::shared_ptr< SLE const > const &)
 
Invariant: an escrow entry must take a value between 0 and INITIAL_XRP drops exclusive.
 
void visitEntry(bool, std::shared_ptr< SLE const > const &, std::shared_ptr< SLE const > const &)
 
bool finalize(STTx const &, TER const, XRPAmount const, ReadView const &, beast::Journal const &)
 
Invariant: We should never charge a transaction a negative fee or a fee that is larger than what the ...
 
void visitEntry(bool, std::shared_ptr< SLE const > const &, std::shared_ptr< SLE const > const &)
 
bool finalize(STTx const &, TER const, XRPAmount const, ReadView const &, beast::Journal const &)
 
Invariant: frozen trust line balance change is not allowed.
 
std::map< AccountID, std::shared_ptr< SLE const  > const  > possibleIssuers_
 
bool isValidEntry(std::shared_ptr< SLE const > const &before, std::shared_ptr< SLE const > const &after)
 
void recordBalance(Issue const &issue, BalanceChange change)
 
std::shared_ptr< SLE const > findIssuer(AccountID const &issuerID, ReadView const &view)
 
bool validateIssuerChanges(std::shared_ptr< SLE const > const &issuer, IssuerChanges const &changes, STTx const &tx, beast::Journal const &j, bool enforce)
 
bool finalize(STTx const &, TER const, XRPAmount const, ReadView const &, beast::Journal const &)
 
STAmount calculateBalanceChange(std::shared_ptr< SLE const > const &before, std::shared_ptr< SLE const > const &after, bool isDelete)
 
void recordBalanceChanges(std::shared_ptr< SLE const > const &after, STAmount const &balanceChange)
 
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 &)
 
bool finalize(STTx const &, TER const, XRPAmount const, ReadView const &, beast::Journal const &)
 
bool finalizeWithdraw(STTx const &, ReadView const &, bool enforce, beast::Journal const &) const
 
bool finalizeDEX(bool enforce, beast::Journal const &) const
 
std::optional< STAmount > lptAMMBalanceAfter_
 
void visitEntry(bool, std::shared_ptr< SLE const > const &, std::shared_ptr< SLE const > const &)
 
bool finalizeBid(bool enforce, beast::Journal const &) const
 
std::optional< AccountID > ammAccount_
 
bool finalizeDelete(bool enforce, TER res, beast::Journal const &) const
 
bool finalizeCreate(STTx const &, ReadView const &, bool enforce, beast::Journal const &) const
 
bool finalizeVote(bool enforce, beast::Journal const &) const
 
bool finalizeDeposit(STTx const &, ReadView const &, bool enforce, beast::Journal const &) const
 
bool generalInvariant(STTx const &, ReadView const &, ZeroAllowed zeroAllowed, beast::Journal const &) const
 
std::optional< STAmount > lptAMMBalanceBefore_
 
Invariant: Token holder's trustline balance cannot be negative after Clawback.
 
void visitEntry(bool, std::shared_ptr< SLE const > const &, std::shared_ptr< SLE const > const &)
 
std::uint32_t trustlinesChanged
 
std::uint32_t mptokensChanged
 
bool finalize(STTx const &, TER const, XRPAmount const, ReadView const &, beast::Journal const &)
 
std::uint32_t mptIssuancesCreated_
 
void visitEntry(bool, std::shared_ptr< SLE const > const &, std::shared_ptr< SLE const > const &)
 
std::uint32_t mptokensCreated_
 
std::uint32_t mptIssuancesDeleted_
 
bool finalize(STTx const &, TER const, XRPAmount const, ReadView const &, beast::Journal const &)
 
std::uint32_t mptokensDeleted_
 
Invariant: Validates several invariants for NFToken pages.
 
void visitEntry(bool, std::shared_ptr< SLE const > const &, std::shared_ptr< SLE const > const &)
 
bool finalize(STTx const &, TER const, XRPAmount const, ReadView const &, beast::Journal const &)
 
Invariant: a new account root must be the consequence of a payment, must have the right starting sequ...
 
std::uint32_t accountsCreated_
 
bool finalize(STTx const &, TER const, XRPAmount const, ReadView const &, beast::Journal const &)
 
std::uint32_t accountSeq_
 
void visitEntry(bool, std::shared_ptr< SLE const > const &, std::shared_ptr< SLE const > const &)
 
bool finalize(STTx const &, TER const, XRPAmount const, ReadView const &, beast::Journal const &)
 
void visitEntry(bool, std::shared_ptr< SLE const > const &, std::shared_ptr< SLE const > const &)
 
hash_set< uint256 > domains_
 
Invariants: Permissioned Domains must have some rules and AcceptedCredentials must have length betwee...
 
void visitEntry(bool, std::shared_ptr< SLE const > const &, std::shared_ptr< SLE const > const &)
 
std::optional< SleStatus > sleStatus_[2]
 
bool finalize(STTx const &, TER const, XRPAmount const, ReadView const &, beast::Journal const &)
 
Invariants: Pseudo-accounts have valid and consisent properties.
 
bool finalize(STTx const &, TER const, XRPAmount const, ReadView const &, beast::Journal const &)
 
std::vector< std::string > errors_
 
void visitEntry(bool, std::shared_ptr< SLE const > const &, std::shared_ptr< SLE const > const &)
 
Invariants: Vault object and MPTokenIssuance for vault shares.
 
bool finalize(STTx const &, TER const, XRPAmount const, ReadView const &, beast::Journal const &)
 
std::vector< Shares > beforeMPTs_
 
std::vector< Vault > beforeVault_
 
std::unordered_map< uint256, Number > deltas_
 
static Number constexpr zero
 
std::vector< Shares > afterMPTs_
 
std::vector< Vault > afterVault_
 
void visitEntry(bool, std::shared_ptr< SLE const > const &, std::shared_ptr< SLE const > const &)
 
Invariant: An account XRP balance must be in XRP and take a value between 0 and INITIAL_XRP drops,...
 
bool finalize(STTx const &, TER const, XRPAmount const, ReadView const &, beast::Journal const &)
 
void visitEntry(bool, std::shared_ptr< SLE const > const &, std::shared_ptr< SLE const > const &)
 
Invariant: A transaction must not create XRP and should only destroy the XRP fee.
 
void visitEntry(bool, std::shared_ptr< SLE const > const &, std::shared_ptr< SLE const > const &)
 
bool finalize(STTx const &, TER const, XRPAmount const, ReadView const &, beast::Journal const &)
 
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
 
bool after(NetClock::time_point now, std::uint32_t mark)
Has the specified time passed?
 
InvariantChecks getInvariantChecks()
get a tuple of all invariant checks
 
int const balanceChangeSign
 
std::shared_ptr< SLE const  > const line
 
std::vector< BalanceChange > receivers
 
std::vector< BalanceChange > senders
 
std::size_t credentialsSize_
 
std::uint64_t sharesMaximum
 
static Shares make(SLE const &)
 
std::uint64_t sharesTotal
 
static Vault make(SLE const &)