rippled
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Member Functions | Static Protected Member Functions | Protected Attributes | Private Member Functions | Static Private Member Functions | List of all members
ripple::AMMCreate Class Reference

AMMCreate implements Automatic Market Maker(AMM) creation Transactor. More...

#include <AMMCreate.h>

Inheritance diagram for ripple::AMMCreate:
Inheritance graph
[legend]
Collaboration diagram for ripple::AMMCreate:
Collaboration graph
[legend]

Public Types

enum  ConsequencesFactoryType { Normal , Blocker , Custom }
 

Public Member Functions

 AMMCreate (ApplyContext &ctx)
 
TER doApply () override
 Attempt to create the AMM instance.
 
ApplyResult operator() ()
 Process the transaction.
 
ApplyViewview ()
 
ApplyView const & view () const
 

Static Public Member Functions

static NotTEC preflight (PreflightContext const &ctx)
 
static XRPAmount calculateBaseFee (ReadView const &view, STTx const &tx)
 
static TER preclaim (PreclaimContext const &ctx)
 
static NotTEC checkSeqProxy (ReadView const &view, STTx const &tx, beast::Journal j)
 
static NotTEC checkPriorTxAndLastLedger (PreclaimContext const &ctx)
 
static TER checkFee (PreclaimContext const &ctx, XRPAmount baseFee)
 
static NotTEC checkSign (PreclaimContext const &ctx)
 
static NotTEC checkBatchSign (PreclaimContext const &ctx)
 
static TER checkPermission (ReadView const &view, STTx const &tx)
 
static TER ticketDelete (ApplyView &view, AccountID const &account, uint256 const &ticketIndex, beast::Journal j)
 

Static Public Attributes

static constexpr ConsequencesFactoryType ConsequencesFactory {Normal}
 

Protected Member Functions

TER apply ()
 
virtual void preCompute ()
 

Static Protected Member Functions

static XRPAmount minimumFee (Application &app, XRPAmount baseFee, Fees const &fees, ApplyFlags flags)
 Compute the minimum fee required to process a transaction with a given baseFee based on the current server load.
 

Protected Attributes

ApplyContextctx_
 
beast::WrappedSink sink_
 
beast::Journal const j_
 
AccountID const account_
 
XRPAmount mPriorBalance
 
XRPAmount mSourceBalance
 

Private Member Functions

std::pair< TER, XRPAmountreset (XRPAmount fee)
 Reset the context, discarding any changes made and adjust the fee.
 
TER consumeSeqProxy (SLE::pointer const &sleAccount)
 
TER payFee ()
 
void trapTransaction (uint256) const
 

Static Private Member Functions

static NotTEC checkSingleSign (AccountID const &idSigner, AccountID const &idAccount, std::shared_ptr< SLE const > sleAccount, Rules const &rules, beast::Journal j)
 
static NotTEC checkMultiSign (ReadView const &view, AccountID const &idAccount, STArray const &txSigners, ApplyFlags const &flags, beast::Journal j)
 

Detailed Description

AMMCreate implements Automatic Market Maker(AMM) creation Transactor.

It creates a new AMM instance with two tokens. Any trader, or Liquidity Provider (LP), can create the AMM instance and receive in return shares of the AMM pool in the form of LPTokens. The number of tokens that LP gets are determined by LPTokens = sqrt(A * B), where A and B is the current composition of the AMM pool. LP can add (AMMDeposit) or withdraw (AMMWithdraw) tokens from AMM and AMM can be used transparently in the payment or offer crossing transactions. Trading fee is charged to the traders for the trades executed against AMM instance. The fee is added to the AMM pool and distributed to the LPs in proportion to the LPTokens upon liquidity removal. The fee can be voted on by LP's (AMMVote). LP's can continuously bid (AMMBid) for the 24 hour auction slot, which enables LP's to trade at zero trading fee. AMM instance creates AccountRoot object with disabled master key for book-keeping of XRP balance if one of the tokens is XRP, a trustline for each IOU token, a trustline to keep track of LPTokens, and ltAMM ledger object. AccountRoot ID is generated internally from the parent's hash. ltAMM's object ID is hash{token1.currency, token1.issuer, token2.currency, token2.issuer}, where issue1 < issue2. ltAMM object provides mapping from the hash to AccountRoot ID and contains: AMMAccount - AMM AccountRoot ID. TradingFee - AMM voted TradingFee. VoteSlots - Array of VoteEntry, contains fee vote information. AuctionSlot - Auction slot, contains discounted fee bid information. LPTokenBalance - LPTokens outstanding balance. AMMToken - currency/issuer information for AMM tokens. AMMDeposit, AMMWithdraw, AMMVote, and AMMBid transactions use the hash to access AMM instance.

See also
XLS30d:Creating AMM instance on XRPL

Definition at line 57 of file AMMCreate.h.

Member Enumeration Documentation

◆ ConsequencesFactoryType

Enumerator
Normal 
Blocker 
Custom 

Definition at line 155 of file Transactor.h.

Constructor & Destructor Documentation

◆ AMMCreate()

ripple::AMMCreate::AMMCreate ( ApplyContext ctx)
explicit

Definition at line 62 of file AMMCreate.h.

Member Function Documentation

◆ preflight()

NotTEC ripple::AMMCreate::preflight ( PreflightContext const &  ctx)
static

Definition at line 35 of file AMMCreate.cpp.

◆ calculateBaseFee()

XRPAmount ripple::AMMCreate::calculateBaseFee ( ReadView const &  view,
STTx const &  tx 
)
static

Definition at line 81 of file AMMCreate.cpp.

◆ preclaim()

TER ripple::AMMCreate::preclaim ( PreclaimContext const &  ctx)
static

Definition at line 88 of file AMMCreate.cpp.

◆ doApply()

TER ripple::AMMCreate::doApply ( )
overridevirtual

Attempt to create the AMM instance.

Implements ripple::Transactor.

Definition at line 345 of file AMMCreate.cpp.

◆ operator()()

ApplyResult ripple::Transactor::operator() ( )
inherited

Process the transaction.

Definition at line 1064 of file Transactor.cpp.

◆ view() [1/2]

ApplyView & ripple::Transactor::view ( )
inherited

Definition at line 161 of file Transactor.h.

◆ view() [2/2]

ApplyView const & ripple::Transactor::view ( ) const
inherited

Definition at line 167 of file Transactor.h.

◆ checkSeqProxy()

NotTEC ripple::Transactor::checkSeqProxy ( ReadView const &  view,
STTx const &  tx,
beast::Journal  j 
)
staticinherited

Definition at line 361 of file Transactor.cpp.

◆ checkPriorTxAndLastLedger()

NotTEC ripple::Transactor::checkPriorTxAndLastLedger ( PreclaimContext const &  ctx)
staticinherited

Definition at line 433 of file Transactor.cpp.

◆ checkFee()

TER ripple::Transactor::checkFee ( PreclaimContext const &  ctx,
XRPAmount  baseFee 
)
staticinherited

Definition at line 261 of file Transactor.cpp.

◆ checkSign()

NotTEC ripple::Transactor::checkSign ( PreclaimContext const &  ctx)
staticinherited

Definition at line 581 of file Transactor.cpp.

◆ checkBatchSign()

NotTEC ripple::Transactor::checkBatchSign ( PreclaimContext const &  ctx)
staticinherited

Definition at line 638 of file Transactor.cpp.

◆ checkPermission()

TER ripple::Transactor::checkPermission ( ReadView const &  view,
STTx const &  tx 
)
staticinherited

Definition at line 217 of file Transactor.cpp.

◆ ticketDelete()

TER ripple::Transactor::ticketDelete ( ApplyView view,
AccountID const &  account,
uint256 const &  ticketIndex,
beast::Journal  j 
)
staticinherited

Definition at line 482 of file Transactor.cpp.

◆ apply()

TER ripple::Transactor::apply ( )
protectedinherited

Definition at line 544 of file Transactor.cpp.

◆ preCompute()

void ripple::Transactor::preCompute ( )
protectedvirtualinherited

Reimplemented in ripple::Change, and ripple::SetSignerList.

Definition at line 536 of file Transactor.cpp.

◆ minimumFee()

XRPAmount ripple::Transactor::minimumFee ( Application app,
XRPAmount  baseFee,
Fees const &  fees,
ApplyFlags  flags 
)
staticprotectedinherited

Compute the minimum fee required to process a transaction with a given baseFee based on the current server load.

Parameters
appThe application hosting the server
baseFeeThe base fee of a candidate transaction
See also
ripple::calculateBaseFee
Parameters
feesFee settings from the current ledger
flagsTransaction processing fees

Definition at line 251 of file Transactor.cpp.

◆ reset()

std::pair< TER, XRPAmount > ripple::Transactor::reset ( XRPAmount  fee)
privateinherited

Reset the context, discarding any changes made and adjust the fee.

Parameters
feeThe transaction fee to be charged.
Returns
A pair containing the transaction result and the actual fee charged.

Definition at line 1002 of file Transactor.cpp.

◆ consumeSeqProxy()

TER ripple::Transactor::consumeSeqProxy ( SLE::pointer const &  sleAccount)
privateinherited

Definition at line 463 of file Transactor.cpp.

◆ payFee()

TER ripple::Transactor::payFee ( )
privateinherited

Definition at line 326 of file Transactor.cpp.

◆ checkSingleSign()

NotTEC ripple::Transactor::checkSingleSign ( AccountID const &  idSigner,
AccountID const &  idAccount,
std::shared_ptr< SLE const >  sleAccount,
Rules const &  rules,
beast::Journal  j 
)
staticprivateinherited

Definition at line 685 of file Transactor.cpp.

◆ checkMultiSign()

NotTEC ripple::Transactor::checkMultiSign ( ReadView const &  view,
AccountID const &  idAccount,
STArray const &  txSigners,
ApplyFlags const &  flags,
beast::Journal  j 
)
staticprivateinherited

Definition at line 746 of file Transactor.cpp.

◆ trapTransaction()

void ripple::Transactor::trapTransaction ( uint256  txHash) const
privateinherited

Definition at line 1057 of file Transactor.cpp.

Member Data Documentation

◆ ConsequencesFactory

constexpr ConsequencesFactoryType ripple::AMMCreate::ConsequencesFactory {Normal}
staticconstexpr

Definition at line 60 of file AMMCreate.h.

◆ ctx_

ApplyContext& ripple::Transactor::ctx_
protectedinherited

Definition at line 141 of file Transactor.h.

◆ sink_

beast::WrappedSink ripple::Transactor::sink_
protectedinherited

Definition at line 142 of file Transactor.h.

◆ j_

beast::Journal const ripple::Transactor::j_
protectedinherited

Definition at line 143 of file Transactor.h.

◆ account_

AccountID const ripple::Transactor::account_
protectedinherited

Definition at line 145 of file Transactor.h.

◆ mPriorBalance

XRPAmount ripple::Transactor::mPriorBalance
protectedinherited

Definition at line 146 of file Transactor.h.

◆ mSourceBalance

XRPAmount ripple::Transactor::mSourceBalance
protectedinherited

Definition at line 147 of file Transactor.h.