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
#include <xrpld/ledger/ReadView.h>
27
#include <xrpld/ledger/View.h>
28
29
#include <xrpl/basics/Log.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:36
ripple::Number
Definition:
Number.h:36
ripple::ReadView
A view into a ledger.
Definition:
ReadView.h:52
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:26
ripple::QualityDirection::in
@ in
ripple::QualityDirection::out
@ out
std::optional
Generated by
1.9.5