rippled
Loading...
Searching...
No Matches
xrpld
app
paths
AMMLiquidity.h
1
#ifndef XRPL_APP_TX_AMMLIQUIDITY_H_INCLUDED
2
#define XRPL_APP_TX_AMMLIQUIDITY_H_INCLUDED
3
4
#include <xrpld/app/misc/AMMHelpers.h>
5
#include <xrpld/app/misc/AMMUtils.h>
6
#include <xrpld/app/paths/AMMContext.h>
7
8
#include <xrpl/basics/Log.h>
9
#include <xrpl/ledger/ReadView.h>
10
#include <xrpl/ledger/View.h>
11
#include <xrpl/protocol/Quality.h>
12
13
namespace
ripple
{
14
15
template
<
typename
TIn,
typename
TOut>
16
class
AMMOffer;
17
32
template
<
typename
TIn,
typename
TOut>
33
class
AMMLiquidity
34
{
35
private
:
36
inline
static
Number
const
InitialFibSeqPct
=
Number
(5) / 20000;
37
AMMContext
&
ammContext_
;
38
AccountID
const
ammAccountID_
;
39
std::uint32_t
const
tradingFee_
;
40
Issue
const
issueIn_
;
41
Issue
const
issueOut_
;
42
// Initial AMM pool balances
43
TAmounts<TIn, TOut>
const
initialBalances_
;
44
beast::Journal
const
j_
;
45
46
public
:
47
AMMLiquidity
(
48
ReadView
const
& view,
49
AccountID
const
& ammAccountID,
50
std::uint32_t
tradingFee
,
51
Issue
const
&
in
,
52
Issue
const
&
out
,
53
AMMContext
& ammContext,
54
beast::Journal
j);
55
~AMMLiquidity
() =
default
;
56
AMMLiquidity
(
AMMLiquidity
const
&) =
delete
;
57
AMMLiquidity
&
58
operator=
(
AMMLiquidity
const
&) =
delete
;
59
65
std::optional<AMMOffer<TIn, TOut>
>
66
getOffer
(
ReadView
const
& view,
std::optional<Quality>
const
& clobQuality)
67
const
;
68
69
AccountID
const
&
70
ammAccount
()
const
71
{
72
return
ammAccountID_
;
73
}
74
75
bool
76
multiPath
()
const
77
{
78
return
ammContext_
.
multiPath
();
79
}
80
81
std::uint32_t
82
tradingFee
()
const
83
{
84
return
tradingFee_
;
85
}
86
87
AMMContext
&
88
context
()
const
89
{
90
return
ammContext_
;
91
}
92
93
Issue
const
&
94
issueIn
()
const
95
{
96
return
issueIn_
;
97
}
98
99
Issue
const
&
100
issueOut
()
const
101
{
102
return
issueOut_
;
103
}
104
105
private
:
108
TAmounts<TIn, TOut>
109
fetchBalances
(
ReadView
const
& view)
const
;
110
118
TAmounts<TIn, TOut>
119
generateFibSeqOffer
(TAmounts<TIn, TOut>
const
& balances)
const
;
120
130
std::optional<AMMOffer<TIn, TOut>
>
131
maxOffer
(TAmounts<TIn, TOut>
const
& balances,
Rules
const
& rules)
const
;
132
};
133
134
}
// namespace ripple
135
136
#endif
// XRPL_APP_TX_AMMLIQUIDITY_H_INCLUDED
beast::Journal
A generic endpoint for log messages.
Definition
Journal.h:41
ripple::AMMContext
Maintains AMM info per overall payment engine execution and individual iteration.
Definition
AMMContext.h:17
ripple::AMMContext::multiPath
bool multiPath() const
Definition
AMMContext.h:45
ripple::AMMLiquidity
AMMLiquidity class provides AMM offers to BookStep class.
Definition
AMMLiquidity.h:34
ripple::AMMLiquidity::AMMLiquidity
AMMLiquidity(AMMLiquidity const &)=delete
ripple::AMMLiquidity::context
AMMContext & context() const
Definition
AMMLiquidity.h:88
ripple::AMMLiquidity::issueOut
Issue const & issueOut() const
Definition
AMMLiquidity.h:100
ripple::AMMLiquidity::InitialFibSeqPct
static Number const InitialFibSeqPct
Definition
AMMLiquidity.h:36
ripple::AMMLiquidity::ammAccountID_
AccountID const ammAccountID_
Definition
AMMLiquidity.h:38
ripple::AMMLiquidity::tradingFee
std::uint32_t tradingFee() const
Definition
AMMLiquidity.h:82
ripple::AMMLiquidity::multiPath
bool multiPath() const
Definition
AMMLiquidity.h:76
ripple::AMMLiquidity::issueIn
Issue const & issueIn() const
Definition
AMMLiquidity.h:94
ripple::AMMLiquidity::issueIn_
Issue const issueIn_
Definition
AMMLiquidity.h:40
ripple::AMMLiquidity::getOffer
std::optional< AMMOffer< TIn, TOut > > getOffer(ReadView const &view, std::optional< Quality > const &clobQuality) const
Generate AMM offer.
Definition
AMMLiquidity.cpp:131
ripple::AMMLiquidity::~AMMLiquidity
~AMMLiquidity()=default
ripple::AMMLiquidity::j_
beast::Journal const j_
Definition
AMMLiquidity.h:44
ripple::AMMLiquidity::fetchBalances
TAmounts< TIn, TOut > fetchBalances(ReadView const &view) const
Fetches current AMM balances.
Definition
AMMLiquidity.cpp:27
ripple::AMMLiquidity::ammAccount
AccountID const & ammAccount() const
Definition
AMMLiquidity.h:70
ripple::AMMLiquidity::operator=
AMMLiquidity & operator=(AMMLiquidity const &)=delete
ripple::AMMLiquidity::ammContext_
AMMContext & ammContext_
Definition
AMMLiquidity.h:37
ripple::AMMLiquidity::maxOffer
std::optional< AMMOffer< TIn, TOut > > maxOffer(TAmounts< TIn, TOut > const &balances, Rules const &rules) const
Generate max offer.
Definition
AMMLiquidity.cpp:103
ripple::AMMLiquidity::initialBalances_
TAmounts< TIn, TOut > const initialBalances_
Definition
AMMLiquidity.h:43
ripple::AMMLiquidity::issueOut_
Issue const issueOut_
Definition
AMMLiquidity.h:41
ripple::AMMLiquidity::tradingFee_
std::uint32_t const tradingFee_
Definition
AMMLiquidity.h:39
ripple::AMMLiquidity::generateFibSeqOffer
TAmounts< TIn, TOut > generateFibSeqOffer(TAmounts< TIn, TOut > const &balances) const
Generate AMM offers with the offer size based on Fibonacci sequence.
Definition
AMMLiquidity.cpp:40
ripple::Issue
A currency issued by an account.
Definition
Issue.h:14
ripple::Number
Definition
Number.h:17
ripple::ReadView
A view into a ledger.
Definition
ReadView.h:32
ripple::Rules
Rules controlling protocol behavior.
Definition
Rules.h:19
ripple::base_uint< 160, detail::AccountIDTag >
std::uint32_t
ripple
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition
algorithm.h:6
ripple::QualityDirection::in
@ in
ripple::QualityDirection::out
@ out
std::optional
Generated by
1.9.8