|
rippled
|
AMMCreate implements Automatic Market Maker(AMM) creation Transactor. More...
#include <AMMCreate.h>


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. | |
| ApplyView & | view () |
| ApplyView const & | view () const |
Static Public Member Functions | |
| static bool | checkExtraFeatures (PreflightContext const &ctx) |
| 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) |
| template<class T > | |
| static NotTEC | invokePreflight (PreflightContext const &ctx) |
| template<> | |
| NotTEC | invokePreflight (PreflightContext const &ctx) |
| template<> | |
| NotTEC | invokePreflight (PreflightContext const &ctx) |
| static NotTEC | 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 NotTEC | checkSign (ReadView const &view, ApplyFlags flags, std::optional< uint256 const > const &parentBatchId, AccountID const &idAccount, STObject const &sigObject, beast::Journal const j) |
| 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. | |
| static XRPAmount | calculateOwnerReserveFee (ReadView const &view, STTx const &tx) |
| static std::uint32_t | getFlagsMask (PreflightContext const &ctx) |
| static NotTEC | preflightSigValidated (PreflightContext const &ctx) |
| static bool | validDataLength (std::optional< Slice > const &slice, std::size_t maxLength) |
| template<class T > | |
| static bool | validNumericRange (std::optional< T > value, T max, T min=T{}) |
| template<class T , class Unit > | |
| static bool | validNumericRange (std::optional< T > value, unit::ValueUnit< Unit, T > max, unit::ValueUnit< Unit, T > min=unit::ValueUnit< Unit, T >{}) |
| template<class T > | |
| static bool | validNumericMinimum (std::optional< T > value, T min=T{}) |
| Minimum will usually be zero. | |
| template<class T , class Unit > | |
| static bool | validNumericMinimum (std::optional< T > value, unit::ValueUnit< Unit, T > min=unit::ValueUnit< Unit, T >{}) |
| Minimum will usually be zero. | |
Protected Attributes | |
| ApplyContext & | ctx_ |
| beast::WrappedSink | sink_ |
| beast::Journal const | j_ |
| AccountID const | account_ |
| XRPAmount | mPriorBalance |
| XRPAmount | mSourceBalance |
Private Member Functions | |
| std::pair< TER, XRPAmount > | reset (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 (ReadView const &view, AccountID const &idSigner, AccountID const &idAccount, std::shared_ptr< SLE const > sleAccount, beast::Journal const j) |
| static NotTEC | checkMultiSign (ReadView const &view, ApplyFlags flags, AccountID const &id, STObject const &sigObject, beast::Journal const j) |
| static NotTEC | preflight1 (PreflightContext const &ctx, std::uint32_t flagMask) |
| Performs early sanity checks on the account and fee fields. | |
| static NotTEC | preflight2 (PreflightContext const &ctx) |
| Checks whether the signature appears valid. | |
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.
Definition at line 38 of file AMMCreate.h.
|
inherited |
| Enumerator | |
|---|---|
| Normal | |
| Blocker | |
| Custom | |
Definition at line 138 of file Transactor.h.
|
explicit |
Definition at line 43 of file AMMCreate.h.
|
static |
Definition at line 16 of file AMMCreate.cpp.
|
static |
Definition at line 22 of file AMMCreate.cpp.
Definition at line 56 of file AMMCreate.cpp.
|
static |
Definition at line 63 of file AMMCreate.cpp.
|
overridevirtual |
Attempt to create the AMM instance.
Implements xrpl::Transactor.
Definition at line 320 of file AMMCreate.cpp.
|
inherited |
Process the transaction.
Definition at line 1135 of file Transactor.cpp.
|
inherited |
Definition at line 144 of file Transactor.h.
|
inherited |
Definition at line 150 of file Transactor.h.
|
staticinherited |
Definition at line 432 of file Transactor.cpp.
|
staticinherited |
Definition at line 503 of file Transactor.cpp.
|
staticinherited |
Definition at line 332 of file Transactor.cpp.
|
staticinherited |
Definition at line 728 of file Transactor.cpp.
|
staticprotectedinherited |
Definition at line 659 of file Transactor.cpp.
|
staticinherited |
Definition at line 738 of file Transactor.cpp.
|
staticinherited |
Definition at line 393 of file Transactor.h.
|
staticinherited |
Definition at line 18 of file Change.cpp.
|
staticinherited |
Definition at line 267 of file Transactor.cpp.
|
staticinherited |
Definition at line 552 of file Transactor.cpp.
|
protectedinherited |
Definition at line 622 of file Transactor.cpp.
|
protectedvirtualinherited |
Reimplemented in xrpl::Change, and xrpl::SetSignerList.
Definition at line 614 of file Transactor.cpp.
|
staticprotectedinherited |
Compute the minimum fee required to process a transaction with a given baseFee based on the current server load.
| app | The application hosting the server |
| baseFee | The base fee of a candidate transaction |
| fees | Fee settings from the current ledger |
| flags | Transaction processing fees |
Definition at line 322 of file Transactor.cpp.
|
staticprotectedinherited |
Definition at line 302 of file Transactor.cpp.
|
staticprotectedinherited |
Definition at line 255 of file Transactor.cpp.
|
staticprotectedinherited |
Definition at line 261 of file Transactor.cpp.
|
staticprotectedinherited |
Definition at line 245 of file Transactor.cpp.
|
staticprotectedinherited |
Definition at line 420 of file Transactor.h.
|
staticprotectedinherited |
Definition at line 429 of file Transactor.h.
|
staticprotectedinherited |
Minimum will usually be zero.
Definition at line 439 of file Transactor.h.
|
staticprotectedinherited |
Minimum will usually be zero.
Definition at line 448 of file Transactor.h.
Reset the context, discarding any changes made and adjust the fee.
| fee | The transaction fee to be charged. |
Definition at line 1073 of file Transactor.cpp.
|
privateinherited |
Definition at line 533 of file Transactor.cpp.
|
privateinherited |
Definition at line 397 of file Transactor.cpp.
|
staticprivateinherited |
Definition at line 784 of file Transactor.cpp.
|
staticprivateinherited |
Definition at line 816 of file Transactor.cpp.
|
privateinherited |
Definition at line 1128 of file Transactor.cpp.
|
staticprivateinherited |
Performs early sanity checks on the account and fee fields.
(And passes flagMask to preflight0)
Do not try to call preflight1 from preflight() in derived classes. See the description of invokePreflight for details.
Definition at line 144 of file Transactor.cpp.
|
staticprivateinherited |
Checks whether the signature appears valid.
Do not try to call preflight2 from preflight() in derived classes. See the description of invokePreflight for details.
Definition at line 199 of file Transactor.cpp.
|
staticconstexpr |
Definition at line 41 of file AMMCreate.h.
|
protectedinherited |
Definition at line 124 of file Transactor.h.
|
protectedinherited |
Definition at line 125 of file Transactor.h.
|
protectedinherited |
Definition at line 126 of file Transactor.h.
|
protectedinherited |
Definition at line 128 of file Transactor.h.
|
protectedinherited |
Definition at line 129 of file Transactor.h.
|
protectedinherited |
Definition at line 130 of file Transactor.h.