rippled
Loading...
Searching...
No Matches
Classes | Public Member Functions | Private Types | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
xrpl::TransfersNotFrozen Class Reference

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

#include <FreezeInvariant.h>

Collaboration diagram for xrpl::TransfersNotFrozen:
Collaboration graph
[legend]

Classes

struct  BalanceChange
 
struct  IssuerChanges
 

Public Member Functions

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 &)
 

Private Types

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

Private Member Functions

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

Static Private Member Functions

static STAmount calculateBalanceChange (std::shared_ptr< SLE const > const &before, std::shared_ptr< SLE const > const &after, bool isDelete)
 
static bool validateIssuerChanges (std::shared_ptr< SLE const > const &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, std::shared_ptr< SLE const > 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,
std::shared_ptr< SLE const > const &  before,
std::shared_ptr< SLE const > const &  after 
)

Definition at line 12 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 42 of file FreezeInvariant.cpp.

◆ isValidEntry()

bool xrpl::TransfersNotFrozen::isValidEntry ( std::shared_ptr< SLE const > const &  before,
std::shared_ptr< SLE const > const &  after 
)
private

Definition at line 97 of file FreezeInvariant.cpp.

◆ calculateBalanceChange()

STAmount xrpl::TransfersNotFrozen::calculateBalanceChange ( std::shared_ptr< SLE const > const &  before,
std::shared_ptr< SLE const > const &  after,
bool  isDelete 
)
staticprivate

Definition at line 124 of file FreezeInvariant.cpp.

◆ recordBalance()

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

Definition at line 152 of file FreezeInvariant.cpp.

◆ recordBalanceChanges()

void xrpl::TransfersNotFrozen::recordBalanceChanges ( std::shared_ptr< SLE const > const &  after,
STAmount const &  balanceChange 
)
private

Definition at line 170 of file FreezeInvariant.cpp.

◆ findIssuer()

std::shared_ptr< SLE const > xrpl::TransfersNotFrozen::findIssuer ( AccountID const &  issuerID,
ReadView const &  view 
)
private

Definition at line 185 of file FreezeInvariant.cpp.

◆ validateIssuerChanges()

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

Definition at line 196 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 237 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, std::shared_ptr<SLE const> const> xrpl::TransfersNotFrozen::possibleIssuers_
private

Definition at line 38 of file FreezeInvariant.h.