xrpld
Loading...
Searching...
No Matches
xrpl::QualityFunction Class Reference

Average quality of a path as a function of out: q(out) = m * out + b, where m = -1 / poolGets, b = poolPays / poolGets. More...

#include <QualityFunction.h>

Collaboration diagram for xrpl::QualityFunction:

Classes

struct  AMMTag
struct  CLOBLikeTag

Public Member Functions

 QualityFunction (Quality const &quality, CLOBLikeTag)
template<typename TIn, typename TOut>
 QualityFunction (TAmounts< TIn, TOut > const &amounts, std::uint32_t tfee, AMMTag)
void combine (QualityFunction const &qf)
 Combines QF with the next step QF.
std::optional< NumberoutFromAvgQ (Quality const &quality)
 Find output to produce the requested average quality.
bool isConst () const
 Return true if the quality function is constant.
std::optional< Quality > const & quality () const

Private Attributes

Number m_
Number b_
std::optional< Qualityquality_

Detailed Description

Average quality of a path as a function of out: q(out) = m * out + b, where m = -1 / poolGets, b = poolPays / poolGets.

If CLOB offer then m is equal to 0 b is equal to the offer's quality. The function is derived by substituting in in q = out / in with the swap out formula for in: in = [(poolGets * poolPays) / (poolGets - out) - poolPays] / (1 - tfee) and combining the function for multiple steps. The function is used to limit required output amount when quality limit is provided in one path optimization.

Definition at line 19 of file QualityFunction.h.

Constructor & Destructor Documentation

◆ QualityFunction() [1/2]

xrpl::QualityFunction::QualityFunction ( Quality const & quality,
QualityFunction::CLOBLikeTag  )

Definition at line 13 of file QualityFunction.cpp.

◆ QualityFunction() [2/2]

template<typename TIn, typename TOut>
xrpl::QualityFunction::QualityFunction ( TAmounts< TIn, TOut > const & amounts,
std::uint32_t tfee,
QualityFunction::AMMTag  )

Definition at line 70 of file QualityFunction.h.

Member Function Documentation

◆ combine()

void xrpl::QualityFunction::combine ( QualityFunction const & qf)

Combines QF with the next step QF.

Definition at line 22 of file QualityFunction.cpp.

◆ outFromAvgQ()

std::optional< Number > xrpl::QualityFunction::outFromAvgQ ( Quality const & quality)

Find output to produce the requested average quality.

Parameters
qualityrequested average quality (quality limit)

Definition at line 31 of file QualityFunction.cpp.

◆ isConst()

bool xrpl::QualityFunction::isConst ( ) const
nodiscard

Return true if the quality function is constant.

Definition at line 57 of file QualityFunction.h.

◆ quality()

std::optional< Quality > const & xrpl::QualityFunction::quality ( ) const
nodiscard

Definition at line 63 of file QualityFunction.h.

Member Data Documentation

◆ m_

Number xrpl::QualityFunction::m_
private

Definition at line 23 of file QualityFunction.h.

◆ b_

Number xrpl::QualityFunction::b_
private

Definition at line 25 of file QualityFunction.h.

◆ quality_

std::optional<Quality> xrpl::QualityFunction::quality_
private

Definition at line 27 of file QualityFunction.h.