xrpld
Toggle main menu visibility
Loading...
Searching...
No Matches
include
xrpl
tx
invariants
AMMInvariant.h
1
#pragma once
2
3
#include <xrpl/beast/utility/Journal.h>
4
#include <xrpl/ledger/ReadView.h>
5
#include <xrpl/protocol/AccountID.h>
6
#include <xrpl/protocol/STAmount.h>
7
#include <xrpl/protocol/STLedgerEntry.h>
8
#include <xrpl/protocol/STTx.h>
9
#include <xrpl/protocol/TER.h>
10
#include <xrpl/protocol/XRPAmount.h>
11
12
#include <
optional
>
13
14
namespace
xrpl
{
15
16
class
ValidAMM
17
{
18
std::optional<AccountID>
ammAccount_
;
19
std::optional<STAmount>
lptAMMBalanceAfter_
;
20
std::optional<STAmount>
lptAMMBalanceBefore_
;
21
std::optional<STAmount>
lptAMMBalanceBeforeDeletion_
;
22
bool
ammPoolChanged_
{
false
};
23
bool
ammDeleted_
{
false
};
24
25
public
:
26
enum class
ZeroAllowed
:
bool
{
No
=
false
,
Yes
=
true
};
27
28
ValidAMM
() =
default
;
29
void
30
visitEntry
(
bool
,
SLE::ConstRef
,
SLE::ConstRef
);
31
32
bool
33
finalize
(
STTx
const
&,
TER
const
,
XRPAmount
const
,
ReadView
const
&,
beast::Journal
const
&);
34
35
private
:
36
[[nodiscard]]
bool
37
finalizeBid
(
bool
enforce,
beast::Journal
const
&)
const
;
38
[[nodiscard]]
bool
39
finalizeVote
(
bool
enforce,
beast::Journal
const
&)
const
;
40
[[nodiscard]]
bool
41
finalizeCreate
(
STTx
const
&,
ReadView
const
&,
bool
enforce,
beast::Journal
const
&)
const
;
42
[[nodiscard]]
bool
43
finalizeDelete
(
bool
enforce,
bool
enforceAMMDelete,
TER
res,
beast::Journal
const
&)
const
;
44
[[nodiscard]]
bool
45
finalizeDeposit
(
STTx
const
&,
ReadView
const
&,
bool
enforce,
beast::Journal
const
&)
const
;
46
// Includes clawback
47
[[nodiscard]]
bool
48
finalizeWithdraw
(
49
STTx
const
&,
50
ReadView
const
&,
51
bool
enforce,
52
bool
enforceAMMDelete,
53
beast::Journal
const
&)
const
;
54
[[nodiscard]]
bool
55
finalizeDEX
(
bool
enforce,
beast::Journal
const
&)
const
;
56
[[nodiscard]]
bool
57
generalInvariant
(
STTx
const
&,
ReadView
const
&,
ZeroAllowed
zeroAllowed,
beast::Journal
const
&)
58
const
;
59
};
60
61
}
// namespace xrpl
beast::Journal
A generic endpoint for log messages.
Definition
Journal.h:44
xrpl::ReadView
A view into a ledger.
Definition
ReadView.h:41
xrpl::STLedgerEntry::ConstRef
std::shared_ptr< STLedgerEntry const > const & ConstRef
Definition
STLedgerEntry.h:37
xrpl::STTx
Definition
STTx.h:43
xrpl::ValidAMM::ammAccount_
std::optional< AccountID > ammAccount_
Definition
AMMInvariant.h:18
xrpl::ValidAMM::finalize
bool finalize(STTx const &, TER const, XRPAmount const, ReadView const &, beast::Journal const &)
Definition
AMMInvariant.cpp:338
xrpl::ValidAMM::finalizeBid
bool finalizeBid(bool enforce, beast::Journal const &) const
Definition
AMMInvariant.cpp:104
xrpl::ValidAMM::ValidAMM
ValidAMM()=default
xrpl::ValidAMM::finalizeDelete
bool finalizeDelete(bool enforce, bool enforceAMMDelete, TER res, beast::Journal const &) const
Definition
AMMInvariant.cpp:176
xrpl::ValidAMM::finalizeCreate
bool finalizeCreate(STTx const &, ReadView const &, bool enforce, beast::Journal const &) const
Definition
AMMInvariant.cpp:132
xrpl::ValidAMM::finalizeWithdraw
bool finalizeWithdraw(STTx const &, ReadView const &, bool enforce, bool enforceAMMDelete, beast::Journal const &) const
Definition
AMMInvariant.cpp:314
xrpl::ValidAMM::finalizeDEX
bool finalizeDEX(bool enforce, beast::Journal const &) const
Definition
AMMInvariant.cpp:235
xrpl::ValidAMM::finalizeDeposit
bool finalizeDeposit(STTx const &, ReadView const &, bool enforce, beast::Journal const &) const
Definition
AMMInvariant.cpp:291
xrpl::ValidAMM::generalInvariant
bool generalInvariant(STTx const &, ReadView const &, ZeroAllowed zeroAllowed, beast::Journal const &) const
Definition
AMMInvariant.cpp:250
xrpl::ValidAMM::lptAMMBalanceBeforeDeletion_
std::optional< STAmount > lptAMMBalanceBeforeDeletion_
Definition
AMMInvariant.h:21
xrpl::ValidAMM::ammPoolChanged_
bool ammPoolChanged_
Definition
AMMInvariant.h:22
xrpl::ValidAMM::lptAMMBalanceAfter_
std::optional< STAmount > lptAMMBalanceAfter_
Definition
AMMInvariant.h:19
xrpl::ValidAMM::finalizeVote
bool finalizeVote(bool enforce, beast::Journal const &) const
Definition
AMMInvariant.cpp:86
xrpl::ValidAMM::visitEntry
void visitEntry(bool, SLE::ConstRef, SLE::ConstRef)
Definition
AMMInvariant.cpp:27
xrpl::ValidAMM::ammDeleted_
bool ammDeleted_
Definition
AMMInvariant.h:23
xrpl::ValidAMM::ZeroAllowed
ZeroAllowed
Definition
AMMInvariant.h:26
xrpl::ValidAMM::ZeroAllowed::Yes
@ Yes
Definition
AMMInvariant.h:26
xrpl::ValidAMM::ZeroAllowed::No
@ No
Definition
AMMInvariant.h:26
xrpl::ValidAMM::lptAMMBalanceBefore_
std::optional< STAmount > lptAMMBalanceBefore_
Definition
AMMInvariant.h:20
xrpl::XRPAmount
Definition
XRPAmount.h:28
xrpl
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition
algorithm.h:5
xrpl::TER
TERSubset< CanCvtToTER > TER
Definition
TER.h:654
optional
Generated by
1.17.0