|
| static bool | checkExtraFeatures (PreflightContext const &ctx) |
| static std::uint32_t | getFlagsMask (PreflightContext const &ctx) |
| static NotTEC | preflight (PreflightContext const &ctx) |
| static TER | preclaim (PreclaimContext const &ctx) |
| static std::tuple< TER, STAmount, STAmount, std::optional< STAmount > > | equalWithdrawTokens (Sandbox &view, SLE const &ammSle, AccountID const account, AccountID const &ammAccount, STAmount const &amountBalance, STAmount const &amount2Balance, STAmount const &lptAMMBalance, STAmount const &lpTokens, STAmount const &lpTokensWithdraw, std::uint16_t tfee, FreezeHandling freezeHandling, AuthHandling authHandling, WithdrawAll withdrawAll, XRPAmount const &priorBalance, beast::Journal const &journal) |
| | Equal-asset withdrawal (LPTokens) of some AMM instance pools shares represented by the number of LPTokens .
|
| static std::tuple< TER, STAmount, STAmount, std::optional< STAmount > > | withdraw (Sandbox &view, SLE const &ammSle, AccountID const &ammAccount, AccountID const &account, STAmount const &amountBalance, STAmount const &amountWithdraw, std::optional< STAmount > const &amount2Withdraw, STAmount const &lpTokensAMMBalance, STAmount const &lpTokensWithdraw, std::uint16_t tfee, FreezeHandling freezeHandling, AuthHandling authHandling, WithdrawAll withdrawAll, XRPAmount const &priorBalance, beast::Journal const &journal) |
| | Withdraw requested assets and token from AMM into LP account.
|
| static std::pair< TER, bool > | deleteAMMAccountIfEmpty (Sandbox &sb, SLE::pointer const ammSle, STAmount const &lpTokenBalance, Asset const &asset1, Asset const &asset2, beast::Journal const &journal) |
| 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 XRPAmount | calculateBaseFee (ReadView const &view, STTx const &tx) |
| static XRPAmount | calculateBaseFee (ReadView const &view, STTx const &tx, std::uint32_t extraBaseFeeMultiplier) |
| template<class T> |
| static NotTEC | invokePreflight (PreflightContext const &ctx) |
| template<> |
| NotTEC | invokePreflight (PreflightContext const &ctx) |
| template<> |
| NotTEC | invokePreflight (PreflightContext const &ctx) |
| static NotTEC | checkGranularSemantics (ReadView const &view, STTx const &tx, std::unordered_set< GranularPermissionType > const &heldGranularPermissions) |
| | This function can be overridden to introduce additional semantic constraints beyond the granular template validation for granular permissions.
|
| template<class T> |
| static NotTEC | invokeCheckPermission (ReadView const &view, STTx const &tx) |
| | Checks whether the transaction is authorized to be executed by the delegated account.
|
| static TER | ticketDelete (ApplyView &view, AccountID const &account, uint256 const &ticketIndex, beast::Journal j) |
|
| 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 (ServiceRegistry ®istry, 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 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.
|
|
| FreezeHandling | issuerFreezeHandling () const |
| | Returns IgnoreFreeze when the withdrawer is the issuer of a pool asset (post-fixCleanup3_3_0), ZeroIfFrozen otherwise.
|
| std::pair< TER, bool > | applyGuts (Sandbox &view) |
| std::pair< TER, STAmount > | withdraw (Sandbox &view, SLE const &ammSle, AccountID const &ammAccount, STAmount const &amountBalance, STAmount const &amountWithdraw, std::optional< STAmount > const &amount2Withdraw, STAmount const &lpTokensAMMBalance, STAmount const &lpTokensWithdraw, std::uint16_t tfee) |
| | Withdraw requested assets and token from AMM into LP account.
|
| std::pair< TER, STAmount > | equalWithdrawTokens (Sandbox &view, SLE const &ammSle, AccountID const &ammAccount, STAmount const &amountBalance, STAmount const &amount2Balance, STAmount const &lptAMMBalance, STAmount const &lpTokens, STAmount const &lpTokensWithdraw, std::uint16_t tfee) |
| | Equal-asset withdrawal (LPTokens) of some AMM instance pools shares represented by the number of LPTokens .
|
| std::pair< TER, STAmount > | equalWithdrawLimit (Sandbox &view, SLE const &ammSle, AccountID const &ammAccount, STAmount const &amountBalance, STAmount const &amount2Balance, STAmount const &lptAMMBalance, STAmount const &amount, STAmount const &amount2, std::uint16_t tfee) |
| | Withdraw both assets (Asset1Out, Asset2Out) with the constraints on the maximum amount of each asset that the trader is willing to withdraw.
|
| std::pair< TER, STAmount > | singleWithdraw (Sandbox &view, SLE const &ammSle, AccountID const &ammAccount, STAmount const &amountBalance, STAmount const &lptAMMBalance, STAmount const &amount, std::uint16_t tfee) |
| | Single asset withdrawal (Asset1Out) equivalent to the amount specified in Asset1Out.
|
| std::pair< TER, STAmount > | singleWithdrawTokens (Sandbox &view, SLE const &ammSle, AccountID const &ammAccount, STAmount const &amountBalance, STAmount const &lptAMMBalance, STAmount const &amount, STAmount const &lpTokensWithdraw, std::uint16_t tfee) |
| | Single asset withdrawal (Asset1Out, LPTokens) proportional to the share specified by tokens.
|
| std::pair< TER, STAmount > | singleWithdrawEPrice (Sandbox &view, SLE const &ammSle, AccountID const &ammAccount, STAmount const &amountBalance, STAmount const &lptAMMBalance, STAmount const &amount, STAmount const &ePrice, std::uint16_t tfee) |
| | Withdraw single asset (Asset1Out, EPrice) with two constraints.
|
| 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 () |
| std::tuple< TER, XRPAmount, bool > | processPersistentChanges (TER result, XRPAmount fee) |
| void | trapTransaction (uint256) const |
| TER | checkTransactionInvariants (TER result, XRPAmount fee) |
| | Check transaction-specific invariants only.
|
|
| static WithdrawAll | isWithdrawAll (STTx const &tx) |
| | Check from the flags if it's withdraw all.
|
| static NotTEC | checkPermission (ReadView const &view, STTx const &tx, std::unordered_set< GranularPermissionType > &heldGranularPermissions) |
| static NotTEC | checkSingleSign (ReadView const &view, AccountID const &idSigner, AccountID const &idAccount, SLE::const_pointer 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.
|
| static NotTEC | preflightUniversal (PreflightContext const &ctx) |
| | Universal validations.
|
Inspect a single ledger entry modified by this transaction.
Called once for every SLE created, modified, or deleted by the transaction, before finalizeInvariants. Implementations should accumulate whatever state they need to verify transaction-specific post-conditions.
- Parameters
-
| isDelete | true if the entry was erased from the ledger. |
| before | the entry's state before the transaction (nullptr for newly created entries). |
| after | the entry's state as supplied by the apply logic for this transaction. For deletions, this is the SLE being erased and is not guaranteed to be null; callers must use isDelete rather than after == nullptr to detect deletions. |
Implements xrpl::Transactor.
Definition at line 1182 of file AMMWithdraw.cpp.
Check transaction-specific post-conditions after all entries have been visited.
Called once after every modified ledger entry has been passed to visitInvariantEntry. Returns true if all transaction-specific invariants hold, or false to fail the transaction with tecINVARIANT_FAILED.
- Parameters
-
| tx | the transaction being applied. |
| result | the tentative TER result so far. |
| fee | the fee consumed by the transaction. |
| view | read-only view of the ledger after the transaction. |
| j | journal for logging invariant failures. |
- Returns
- true if all invariants pass; false otherwise.
Implements xrpl::Transactor.
Definition at line 1188 of file AMMWithdraw.cpp.
Withdraw both assets (Asset1Out, Asset2Out) with the constraints on the maximum amount of each asset that the trader is willing to withdraw.
All assets withdrawal with the constraints on the maximum amount of each asset that the trader is willing to withdraw.
The trading fee is not charged.
- Parameters
-
| view | |
| ammAccount | |
| amountBalance | current AMM asset1 balance |
| amount2Balance | current AMM asset2 balance |
| lptAMMBalance | current AMM LPT balance |
| amount | asset1 withdraw amount |
| amount2 | max asset2 withdraw amount |
| tfee | trading fee in basis points |
- Returns
a = (t/T) * A (5) b = (t/T) * B (6) where A,B: current pool composition T: current balance of outstanding LPTokens a: balance of asset A being withdrawn b: balance of asset B being withdrawn t: balance of LPTokens issued to LP after a successful transaction Use equation 5 to compute t, given the amount in Asset1Out. Let this be Z Use equation 6 to compute the amount of asset2, given Z. Let the computed amount of asset2 be X If X <= amount in Asset2Out: The amount of asset1 to be withdrawn is the one specified in Asset1Out The amount of asset2 to be withdrawn is X The amount of LPTokens redeemed is Z If X> amount in Asset2Out: Use equation 5 to compute t, given the amount in Asset2Out. Let this be Q Use equation 6 to compute the amount of asset1, given Q. Let the computed amount of asset1 be W The amount of asset2 to be withdrawn is the one specified in Asset2Out The amount of asset1 to be withdrawn is W The amount of LPTokens redeemed is Q
Definition at line 938 of file AMMWithdraw.cpp.
Single asset withdrawal (Asset1Out) equivalent to the amount specified in Asset1Out.
Withdraw single asset equivalent to the amount specified in Asset1Out.
The trading fee is charged.
- Parameters
-
| view | |
| ammAccount | |
| amountBalance | current AMM asset1 balance |
| lptAMMBalance | current AMM LPT balance |
| amount | asset1 withdraw amount |
| tfee | trading fee in basis points |
- Returns
t = T * (c - sqrt(c**2 - 4*R))/2 where R = b/B, c = R*fee + 2 - fee Use equation 7 to compute the t, given the amount in Asset1Out.
Definition at line 1008 of file AMMWithdraw.cpp.
Single asset withdrawal (Asset1Out, LPTokens) proportional to the share specified by tokens.
withdrawal of single asset specified in Asset1Out proportional to the share represented by the amount of LPTokens.
The trading fee is charged.
- Parameters
-
| view | |
| ammAccount | |
| amountBalance | current AMM asset1 balance |
| lptAMMBalance | current AMM LPT balance |
| amount | asset1 withdraw amount |
| lpTokensWithdraw | amount of tokens to withdraw |
| tfee | trading fee in basis points |
- Returns
Use equation 8 to compute the amount of asset1, given the redeemed t represented by LPTokens. Let this be Y. If (amount exists for Asset1Out & Y >= amount in Asset1Out) || (amount field does not exist for Asset1Out): The amount of asset out is Y The amount of LPTokens redeemed is LPTokens Equation 8 solves equation 7
- See also
- singleWithdraw for b.
Definition at line 1059 of file AMMWithdraw.cpp.
Withdraw single asset (Asset1Out, EPrice) with two constraints.
Withdraw single asset with two constraints.
The trading fee is charged.
- Parameters
-
| view | |
| ammAccount | |
| amountBalance | current AMM asset1 balance |
| lptAMMBalance | current AMM LPT balance |
| amount | asset1 withdraw amount |
| ePrice | maximum asset1 effective price |
| tfee | trading fee in basis points |
- Returns
a. amount of asset1 if specified (not 0) in Asset1Out specifies the minimum amount of asset1 that the trader is willing to withdraw. b. The effective price of asset traded out does not exceed the amount specified in EPrice The effective price (EP) of a trade is defined as the ratio of the tokens the trader sold or swapped in (Token B) and the token they got in return or swapped out (Token A). EP(B/A) = b/a (III) b = B * (t1**2 + t1*(f - 2))/(t1*f - 1) (8) where t1 = t/T Use equations 8 & III and amount in EPrice to compute the two variables: asset in as LPTokens. Let this be X asset out as that in Asset1Out. Let this be Y If (amount exists for Asset1Out & Y >= amount in Asset1Out) || (amount field does not exist for Asset1Out): The amount of assetOut is given by Y The amount of LPTokens is given by X
Definition at line 1112 of file AMMWithdraw.cpp.
Checks whether the transaction is authorized to be executed by the delegated account.
This function enforces the strict permission check hierarchy. It is explicitly designed NOT to be overridden. Derived transactors must instead implement checkGranularSemantics to add custom validation logic for granular permissions.
The evaluation proceeds as follows:
- If transaction-level permission is granted, the function immediately returns tesSUCCESS.
- If transaction-level permission is not granted, the function checks whether the transaction matches the granular permission template defined in permissions.macro. If it does, it then calls checkGranularSemantics to perform any additional, fine-grained validation.
Definition at line 261 of file Transactor.h.