xrpld
Loading...
Searching...
No Matches
xrpl::TransfersNotFrozen Class Reference

Invariant: frozen trust line balance change is not allowed. More...

#include <FreezeInvariant.h>

Collaboration diagram for xrpl::TransfersNotFrozen:

Classes

struct  BalanceChange
struct  IssuerChanges

Public Member Functions

void visitEntry (bool, SLE::const_ref, SLE::const_ref)
bool finalize (STTx const &, TER const, XRPAmount const, ReadView const &, beast::Journal const &)

Private Types

using ByIssuer = std::map<Issue, IssuerChanges>

Private Member Functions

bool isValidEntry (SLE::const_ref before, SLE::const_ref after)
void recordBalance (Issue const &issue, BalanceChange change)
void recordBalanceChanges (SLE::const_ref after, STAmount const &balanceChange)
SLE::const_pointer findIssuer (AccountID const &issuerID, ReadView const &view)

Static Private Member Functions

static STAmount calculateBalanceChange (SLE::const_ref before, SLE::const_ref after, bool isDelete)
static bool validateIssuerChanges (SLE::const_ref issuer, IssuerChanges const &changes, STTx const &tx, beast::Journal const &j, bool enforce)
static bool validateFrozenState (BalanceChange const &change, bool high, STTx const &tx, beast::Journal const &j, bool enforce, bool globalFreeze)

Private Attributes

ByIssuer balanceChanges_
std::map< AccountID, SLE::const_pointer const > possibleIssuers_

Detailed Description

Invariant: frozen trust line balance change is not allowed.

We iterate all affected trust lines and ensure that they don't have unexpected change of balance if they're frozen.

Definition at line 21 of file FreezeInvariant.h.

Member Typedef Documentation

◆ ByIssuer

Definition at line 35 of file FreezeInvariant.h.

Member Function Documentation

◆ visitEntry()

void xrpl::TransfersNotFrozen::visitEntry ( bool isDelete,
SLE::const_ref before,
SLE::const_ref after )

Definition at line 24 of file FreezeInvariant.cpp.

◆ finalize()

bool xrpl::TransfersNotFrozen::finalize ( STTx const & tx,
TER const ter,
XRPAmount const fee,
ReadView const & view,
beast::Journal const & j )

Definition at line 51 of file FreezeInvariant.cpp.

◆ isValidEntry()

bool xrpl::TransfersNotFrozen::isValidEntry ( SLE::const_ref before,
SLE::const_ref after )
private

Definition at line 106 of file FreezeInvariant.cpp.

◆ calculateBalanceChange()

STAmount xrpl::TransfersNotFrozen::calculateBalanceChange ( SLE::const_ref before,
SLE::const_ref after,
bool isDelete )
staticprivate

Definition at line 131 of file FreezeInvariant.cpp.

◆ recordBalance()

void xrpl::TransfersNotFrozen::recordBalance ( Issue const & issue,
BalanceChange change )
private

Definition at line 159 of file FreezeInvariant.cpp.

◆ recordBalanceChanges()

void xrpl::TransfersNotFrozen::recordBalanceChanges ( SLE::const_ref after,
STAmount const & balanceChange )
private

Definition at line 177 of file FreezeInvariant.cpp.

◆ findIssuer()

SLE::const_pointer xrpl::TransfersNotFrozen::findIssuer ( AccountID const & issuerID,
ReadView const & view )
private

Definition at line 194 of file FreezeInvariant.cpp.

◆ validateIssuerChanges()

bool xrpl::TransfersNotFrozen::validateIssuerChanges ( SLE::const_ref issuer,
IssuerChanges const & changes,
STTx const & tx,
beast::Journal const & j,
bool enforce )
staticprivate

Definition at line 205 of file FreezeInvariant.cpp.

◆ validateFrozenState()

bool xrpl::TransfersNotFrozen::validateFrozenState ( BalanceChange const & change,
bool high,
STTx const & tx,
beast::Journal const & j,
bool enforce,
bool globalFreeze )
staticprivate

Definition at line 246 of file FreezeInvariant.cpp.

Member Data Documentation

◆ balanceChanges_

ByIssuer xrpl::TransfersNotFrozen::balanceChanges_
private

Definition at line 36 of file FreezeInvariant.h.

◆ possibleIssuers_

std::map<AccountID, SLE::const_pointer const> xrpl::TransfersNotFrozen::possibleIssuers_
private

Definition at line 38 of file FreezeInvariant.h.