|
| std::pair< TER, bool > | applyGuts (Sandbox &view) |
| |
| std::pair< TER, STAmount > | withdraw (Sandbox &view, AccountID const &ammAccount, STAmount const &amountWithdraw, STAmount const &amountBalance, 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. More...
|
| |
| std::pair< TER, STAmount > | equalWithdrawTokens (Sandbox &view, 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 . More...
|
| |
| std::pair< TER, STAmount > | equalWithdrawLimit (Sandbox &view, 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. More...
|
| |
| std::pair< TER, STAmount > | singleWithdraw (Sandbox &view, 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. More...
|
| |
| std::pair< TER, STAmount > | singleWithdrawTokens (Sandbox &view, 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. More...
|
| |
| std::pair< TER, STAmount > | singleWithdrawEPrice (Sandbox &view, 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. More...
|
| |
| std::pair< TER, XRPAmount > | reset (XRPAmount fee) |
| | Reset the context, discarding any changes made and adjust the fee. More...
|
| |
| TER | consumeSeqProxy (SLE::pointer const &sleAccount) |
| |
| TER | payFee () |
| |
AMMWithdraw implements AMM withdraw Transactor.
The withdraw transaction is used to remove liquidity from the AMM instance pool, thus redeeming some share of the pools that one owns in the form of LPTokens. If the trader withdraws proportional values of both assets without changing their relative pricing, no trading fee is charged on the transaction. The trader can specify different combination of the fields in the withdrawal. LPTokens - transaction assumes proportional withdrawal of pool assets for the amount of LPTokens. Asset1Out - transaction assumes withdrawal of single asset equivalent to the amount specified in Asset1Out. Asset1Out and Asset2Out - transaction assumes all assets withdrawal with the constraints on the maximum amount of each asset that the trader is willing to withdraw. Asset1Out and LPTokens - transaction assumes withdrawal of single asset specified in Asset1Out proportional to the share represented by the amount of LPTokens. Asset1Out and EPrice - transaction assumes withdrawal of single asset with the following constraints: 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. Following updates after a successful transaction: The withdrawn asset, if XRP, is transferred from AMM instance account to the account that initiated the transaction, thus changing the Balance field of each account. The withdrawn asset, if token, is balanced between the AMM instance account and the issuer account. The LPTokens ~ are balanced between the AMM instance account and the account that initiated the transaction. The pool composition is updated.
- See also
- XLS30d:AMMWithdraw transaction
Definition at line 65 of file AMMWithdraw.h.
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 649 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 691 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 724 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 768 of file AMMWithdraw.cpp.