rippled
Loading...
Searching...
No Matches
xrpld
app
paths
AMMLiquidity.h
1
//------------------------------------------------------------------------------
2
/*
3
This file is part of rippled: https://github.com/ripple/rippled
4
Copyright (c) 2023 Ripple Labs Inc.
5
6
Permission to use, copy, modify, and/or distribute this software for any
7
purpose with or without fee is hereby granted, provided that the above
8
copyright notice and this permission notice appear in all copies.
9
10
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13
ANY SPECIAL , DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17
*/
18
//==============================================================================
19
20
#ifndef RIPPLE_APP_TX_AMMLIQUIDITY_H_INCLUDED
21
#define RIPPLE_APP_TX_AMMLIQUIDITY_H_INCLUDED
22
23
#include <xrpld/app/misc/AMMHelpers.h>
24
#include <xrpld/app/misc/AMMUtils.h>
25
#include <xrpld/app/paths/AMMContext.h>
26
27
#include <xrpl/basics/Log.h>
28
#include <xrpl/ledger/ReadView.h>
29
#include <xrpl/ledger/View.h>
30
#include <xrpl/protocol/Quality.h>
31
32
namespace
ripple
{
33
34
template
<
typename
TIn,
typename
TOut>
35
class
AMMOffer;
36
51
template
<
typename
TIn,
typename
TOut>
52
class
AMMLiquidity
53
{
54
private
:
55
inline
static
Number
const
InitialFibSeqPct
=
Number
(5) / 20000;
56
AMMContext
&
ammContext_
;
57
AccountID
const
ammAccountID_
;
58
std::uint32_t
const
tradingFee_
;
59
Issue
const
issueIn_
;
60
Issue
const
issueOut_
;
61
// Initial AMM pool balances
62
TAmounts<TIn, TOut>
const
initialBalances_
;
63
beast::Journal
const
j_
;
64
65
public
:
66
AMMLiquidity
(
67
ReadView
const
& view,
68
AccountID
const
& ammAccountID,
69
std::uint32_t
tradingFee
,
70
Issue
const
&
in
,
71
Issue
const
&
out
,
72
AMMContext
& ammContext,
73
beast::Journal
j);
74
~AMMLiquidity
() =
default
;
75
AMMLiquidity
(
AMMLiquidity
const
&) =
delete
;
76
AMMLiquidity
&
77
operator=
(
AMMLiquidity
const
&) =
delete
;
78
84
std::optional<AMMOffer<TIn, TOut>
>
85
getOffer
(
ReadView
const
& view,
std::optional<Quality>
const
& clobQuality)
86
const
;
87
88
AccountID
const
&
89
ammAccount
()
const
90
{
91
return
ammAccountID_
;
92
}
93
94
bool
95
multiPath
()
const
96
{
97
return
ammContext_
.
multiPath
();
98
}
99
100
std::uint32_t
101
tradingFee
()
const
102
{
103
return
tradingFee_
;
104
}
105
106
AMMContext
&
107
context
()
const
108
{
109
return
ammContext_
;
110
}
111
112
Issue
const
&
113
issueIn
()
const
114
{
115
return
issueIn_
;
116
}
117
118
Issue
const
&
119
issueOut
()
const
120
{
121
return
issueOut_
;
122
}
123
124
private
:
127
TAmounts<TIn, TOut>
128
fetchBalances
(
ReadView
const
& view)
const
;
129
137
TAmounts<TIn, TOut>
138
generateFibSeqOffer
(TAmounts<TIn, TOut>
const
& balances)
const
;
139
149
std::optional<AMMOffer<TIn, TOut>
>
150
maxOffer
(TAmounts<TIn, TOut>
const
& balances,
Rules
const
& rules)
const
;
151
};
152
153
}
// namespace ripple
154
155
#endif
// RIPPLE_APP_TX_AMMLIQUIDITY_H_INCLUDED
beast::Journal
A generic endpoint for log messages.
Definition
Journal.h:60
ripple::AMMContext
Maintains AMM info per overall payment engine execution and individual iteration.
Definition
AMMContext.h:36
ripple::AMMContext::multiPath
bool multiPath() const
Definition
AMMContext.h:64
ripple::AMMLiquidity
AMMLiquidity class provides AMM offers to BookStep class.
Definition
AMMLiquidity.h:53
ripple::AMMLiquidity::AMMLiquidity
AMMLiquidity(AMMLiquidity const &)=delete
ripple::AMMLiquidity::context
AMMContext & context() const
Definition
AMMLiquidity.h:107
ripple::AMMLiquidity::issueOut
Issue const & issueOut() const
Definition
AMMLiquidity.h:119
ripple::AMMLiquidity::InitialFibSeqPct
static Number const InitialFibSeqPct
Definition
AMMLiquidity.h:55
ripple::AMMLiquidity::ammAccountID_
AccountID const ammAccountID_
Definition
AMMLiquidity.h:57
ripple::AMMLiquidity::tradingFee
std::uint32_t tradingFee() const
Definition
AMMLiquidity.h:101
ripple::AMMLiquidity::multiPath
bool multiPath() const
Definition
AMMLiquidity.h:95
ripple::AMMLiquidity::issueIn
Issue const & issueIn() const
Definition
AMMLiquidity.h:113
ripple::AMMLiquidity::issueIn_
Issue const issueIn_
Definition
AMMLiquidity.h:59
ripple::AMMLiquidity::getOffer
std::optional< AMMOffer< TIn, TOut > > getOffer(ReadView const &view, std::optional< Quality > const &clobQuality) const
Generate AMM offer.
Definition
AMMLiquidity.cpp:150
ripple::AMMLiquidity::~AMMLiquidity
~AMMLiquidity()=default
ripple::AMMLiquidity::j_
beast::Journal const j_
Definition
AMMLiquidity.h:63
ripple::AMMLiquidity::fetchBalances
TAmounts< TIn, TOut > fetchBalances(ReadView const &view) const
Fetches current AMM balances.
Definition
AMMLiquidity.cpp:46
ripple::AMMLiquidity::ammAccount
AccountID const & ammAccount() const
Definition
AMMLiquidity.h:89
ripple::AMMLiquidity::operator=
AMMLiquidity & operator=(AMMLiquidity const &)=delete
ripple::AMMLiquidity::ammContext_
AMMContext & ammContext_
Definition
AMMLiquidity.h:56
ripple::AMMLiquidity::maxOffer
std::optional< AMMOffer< TIn, TOut > > maxOffer(TAmounts< TIn, TOut > const &balances, Rules const &rules) const
Generate max offer.
Definition
AMMLiquidity.cpp:122
ripple::AMMLiquidity::initialBalances_
TAmounts< TIn, TOut > const initialBalances_
Definition
AMMLiquidity.h:62
ripple::AMMLiquidity::issueOut_
Issue const issueOut_
Definition
AMMLiquidity.h:60
ripple::AMMLiquidity::tradingFee_
std::uint32_t const tradingFee_
Definition
AMMLiquidity.h:58
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:59
ripple::Issue
A currency issued by an account.
Definition
Issue.h:33
ripple::Number
Definition
Number.h:36
ripple::ReadView
A view into a ledger.
Definition
ReadView.h:51
ripple::Rules
Rules controlling protocol behavior.
Definition
Rules.h:38
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:25
ripple::QualityDirection::in
@ in
ripple::QualityDirection::out
@ out
std::optional
Generated by
1.9.8