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 satisfiesAvgQ (Quality const &quality, Number const &out) const
 Return whether out produces at least 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 26 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 89 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.

◆ satisfiesAvgQ()

bool xrpl::QualityFunction::satisfiesAvgQ ( Quality const & quality,
Number const & out ) const
nodiscard

Return whether out produces at least the requested average quality.

Parameters
qualityrequested average quality (quality limit)
outoutput amount to test

Definition at line 49 of file QualityFunction.cpp.

◆ isConst()

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

Return true if the quality function is constant.

Definition at line 76 of file QualityFunction.h.

◆ quality()

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

Definition at line 82 of file QualityFunction.h.

Member Data Documentation

◆ m_

Number xrpl::QualityFunction::m_
private

Definition at line 30 of file QualityFunction.h.

◆ b_

Number xrpl::QualityFunction::b_
private

Definition at line 32 of file QualityFunction.h.

◆ quality_

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

Definition at line 34 of file QualityFunction.h.