|
rippled
|
AMMLiquidity class provides AMM offers to BookStep class. More...
#include <AMMLiquidity.h>

Public Member Functions | |
| AMMLiquidity (ReadView const &view, AccountID const &ammAccountID, std::uint32_t tradingFee, Issue const &in, Issue const &out, AMMContext &ammContext, beast::Journal j) | |
| ~AMMLiquidity ()=default | |
| AMMLiquidity (AMMLiquidity const &)=delete | |
| AMMLiquidity & | operator= (AMMLiquidity const &)=delete |
| std::optional< AMMOffer< TIn, TOut > > | getOffer (ReadView const &view, std::optional< Quality > const &clobQuality) const |
| Generate AMM offer. | |
| AccountID const & | ammAccount () const |
| bool | multiPath () const |
| std::uint32_t | tradingFee () const |
| AMMContext & | context () const |
| Issue const & | issueIn () const |
| Issue const & | issueOut () const |
Private Member Functions | |
| TAmounts< TIn, TOut > | fetchBalances (ReadView const &view) const |
| Fetches current AMM balances. | |
| TAmounts< TIn, TOut > | generateFibSeqOffer (TAmounts< TIn, TOut > const &balances) const |
| Generate AMM offers with the offer size based on Fibonacci sequence. | |
| std::optional< AMMOffer< TIn, TOut > > | maxOffer (TAmounts< TIn, TOut > const &balances, Rules const &rules) const |
| Generate max offer. | |
Private Attributes | |
| AMMContext & | ammContext_ |
| AccountID const | ammAccountID_ |
| std::uint32_t const | tradingFee_ |
| Issue const | issueIn_ |
| Issue const | issueOut_ |
| TAmounts< TIn, TOut > const | initialBalances_ |
| beast::Journal const | j_ |
Static Private Attributes | |
| static Number const | InitialFibSeqPct = Number(5) / 20000 |
AMMLiquidity class provides AMM offers to BookStep class.
The offers are generated in two ways. If there are multiple paths specified to the payment transaction then the offers are generated based on the Fibonacci sequence with a limited number of payment engine iterations consuming AMM offers. These offers behave the same way as CLOB offers in that if there is a limiting step, then the offers are adjusted based on their quality. If there is only one path specified in the payment transaction then the offers are generated based on the competing CLOB offer quality. In this case the offer's size is set in such a way that the new AMM's pool spot price quality is equal to the CLOB's offer quality.
Definition at line 33 of file AMMLiquidity.h.
| ripple::AMMLiquidity< TIn, TOut >::AMMLiquidity | ( | ReadView const & | view, |
| AccountID const & | ammAccountID, | ||
| std::uint32_t | tradingFee, | ||
| Issue const & | in, | ||
| Issue const & | out, | ||
| AMMContext & | ammContext, | ||
| beast::Journal | j | ||
| ) |
Definition at line 7 of file AMMLiquidity.cpp.
|
default |
|
delete |
|
delete |
| std::optional< AMMOffer< TIn, TOut > > ripple::AMMLiquidity< TIn, TOut >::getOffer | ( | ReadView const & | view, |
| std::optional< Quality > const & | clobQuality | ||
| ) | const |
Generate AMM offer.
Returns nullopt if clobQuality is provided and it is better than AMM offer quality. Otherwise returns AMM offer. If clobQuality is provided then AMM offer size is set based on the quality.
Definition at line 131 of file AMMLiquidity.cpp.
| AccountID const & ripple::AMMLiquidity< TIn, TOut >::ammAccount | ( | ) | const |
Definition at line 70 of file AMMLiquidity.h.
| bool ripple::AMMLiquidity< TIn, TOut >::multiPath | ( | ) | const |
Definition at line 76 of file AMMLiquidity.h.
| std::uint32_t ripple::AMMLiquidity< TIn, TOut >::tradingFee | ( | ) | const |
Definition at line 82 of file AMMLiquidity.h.
| AMMContext & ripple::AMMLiquidity< TIn, TOut >::context | ( | ) | const |
Definition at line 88 of file AMMLiquidity.h.
| Issue const & ripple::AMMLiquidity< TIn, TOut >::issueIn | ( | ) | const |
Definition at line 94 of file AMMLiquidity.h.
| Issue const & ripple::AMMLiquidity< TIn, TOut >::issueOut | ( | ) | const |
Definition at line 100 of file AMMLiquidity.h.
|
private |
Fetches current AMM balances.
Definition at line 27 of file AMMLiquidity.cpp.
|
private |
Generate AMM offers with the offer size based on Fibonacci sequence.
The sequence corresponds to the payment engine iterations with AMM liquidity. Iterations that don't consume AMM offers don't count. The number of iterations with AMM offers is limited. If the generated offer exceeds the pool balance then the function throws overflow exception.
Definition at line 40 of file AMMLiquidity.cpp.
|
private |
Generate max offer.
If fixAMMOverflowOffer is active, the offer is generated as: takerGets = 99% * balances.out takerPays = swapOut(takerGets). Return nullopt if takerGets is 0 or takerGets == balances.out.
If fixAMMOverflowOffer is not active, the offer is generated as: takerPays = max input amount; takerGets = swapIn(takerPays).
Definition at line 103 of file AMMLiquidity.cpp.
|
staticprivate |
Definition at line 36 of file AMMLiquidity.h.
|
private |
Definition at line 37 of file AMMLiquidity.h.
|
private |
Definition at line 38 of file AMMLiquidity.h.
|
private |
Definition at line 39 of file AMMLiquidity.h.
|
private |
Definition at line 40 of file AMMLiquidity.h.
|
private |
Definition at line 41 of file AMMLiquidity.h.
|
private |
Definition at line 43 of file AMMLiquidity.h.
|
private |
Definition at line 44 of file AMMLiquidity.h.