xrpld
Toggle main menu visibility
Loading...
Searching...
No Matches
libxrpl
tx
transactors
dex
AMMDelete.cpp
1
#include <xrpl/tx/transactors/dex/AMMDelete.h>
2
3
#include <xrpl/basics/Log.h>
4
#include <xrpl/beast/utility/Zero.h>
5
#include <xrpl/ledger/Sandbox.h>
6
#include <xrpl/ledger/helpers/AMMHelpers.h>
7
#include <xrpl/protocol/AMMCore.h>
8
#include <xrpl/protocol/Feature.h>
9
#include <xrpl/protocol/Indexes.h>
10
#include <xrpl/protocol/MPTIssue.h>
11
#include <xrpl/protocol/SField.h>
12
#include <xrpl/protocol/STLedgerEntry.h>
13
#include <xrpl/protocol/STTx.h>
14
#include <xrpl/protocol/TER.h>
15
#include <xrpl/protocol/XRPAmount.h>
16
#include <xrpl/tx/Transactor.h>
17
18
namespace
xrpl
{
19
20
bool
21
AMMDelete::checkExtraFeatures
(
PreflightContext
const
& ctx)
22
{
23
if
(!
ammEnabled
(ctx.
rules
))
24
return
false
;
25
26
return
ctx.
rules
.
enabled
(featureMPTokensV2) ||
27
(!ctx.
tx
[sfAsset].holds<
MPTIssue
>() && !ctx.
tx
[sfAsset2].holds<
MPTIssue
>());
28
}
29
30
NotTEC
31
AMMDelete::preflight
(
PreflightContext
const
& ctx)
32
{
33
return
tesSUCCESS
;
34
}
35
36
TER
37
AMMDelete::preclaim
(
PreclaimContext
const
& ctx)
38
{
39
auto
const
ammSle = ctx.
view
.
read
(
keylet::amm
(ctx.
tx
[sfAsset], ctx.
tx
[sfAsset2]));
40
if
(!ammSle)
41
{
42
JLOG(ctx.
j
.
debug
()) <<
"AMM Delete: Invalid asset pair."
;
43
return
terNO_AMM
;
44
}
45
46
auto
const
lpTokensBalance = (*ammSle)[sfLPTokenBalance];
47
if
(lpTokensBalance !=
beast::kZero
)
48
return
tecAMM_NOT_EMPTY
;
49
50
return
tesSUCCESS
;
51
}
52
53
TER
54
AMMDelete::doApply
()
55
{
56
// This is the ledger view that we work against. Transactions are applied
57
// as we go on processing transactions.
58
Sandbox
sb(&
ctx_
.view());
59
60
auto
const
ter =
deleteAMMAccount
(sb,
ctx_
.tx[sfAsset],
ctx_
.tx[sfAsset2],
j_
);
61
if
(
isTesSuccess
(ter) || ter ==
tecINCOMPLETE
)
62
sb.
apply
(
ctx_
.rawView());
63
64
return
ter;
65
}
66
67
void
68
AMMDelete::visitInvariantEntry
(
bool
,
SLE::ConstRef
,
SLE::ConstRef
)
69
{
70
// No transaction-specific invariants yet (future work).
71
}
72
73
bool
74
AMMDelete::finalizeInvariants
(
STTx
const
&,
TER
,
XRPAmount
,
ReadView
const
&,
beast::Journal
const
&)
75
{
76
// No transaction-specific invariants yet (future work).
77
return
true
;
78
}
79
80
}
// namespace xrpl
beast::Journal
A generic endpoint for log messages.
Definition
Journal.h:44
beast::Journal::debug
Stream debug() const
Definition
Journal.h:344
xrpl::AMMDelete::preclaim
static TER preclaim(PreclaimContext const &ctx)
Definition
AMMDelete.cpp:37
xrpl::AMMDelete::doApply
TER doApply() override
Definition
AMMDelete.cpp:54
xrpl::AMMDelete::checkExtraFeatures
static bool checkExtraFeatures(PreflightContext const &ctx)
Definition
AMMDelete.cpp:21
xrpl::AMMDelete::finalizeInvariants
bool finalizeInvariants(STTx const &tx, TER result, XRPAmount fee, ReadView const &view, beast::Journal const &j) override
Check transaction-specific post-conditions after all entries have been visited.
Definition
AMMDelete.cpp:74
xrpl::AMMDelete::preflight
static NotTEC preflight(PreflightContext const &ctx)
Definition
AMMDelete.cpp:31
xrpl::AMMDelete::visitInvariantEntry
void visitInvariantEntry(bool isDelete, SLE::ConstRef before, SLE::ConstRef after) override
Inspect a single ledger entry modified by this transaction.
Definition
AMMDelete.cpp:68
xrpl::MPTIssue
Definition
MPTIssue.h:23
xrpl::ReadView
A view into a ledger.
Definition
ReadView.h:41
xrpl::ReadView::read
virtual SLE::const_pointer read(Keylet const &k) const =0
Return the state item associated with a key.
xrpl::Rules::enabled
bool enabled(UInt256 const &feature) const
Returns true if a feature is enabled.
Definition
Rules.cpp:182
xrpl::STLedgerEntry::ConstRef
std::shared_ptr< STLedgerEntry const > const & ConstRef
Definition
STLedgerEntry.h:37
xrpl::STTx
Definition
STTx.h:43
xrpl::Sandbox
Discardable, editable view to a ledger.
Definition
Sandbox.h:18
xrpl::Sandbox::apply
void apply(RawView &to)
Definition
Sandbox.h:38
xrpl::Transactor::j_
beast::Journal const j_
Definition
Transactor.h:164
xrpl::Transactor::ctx_
ApplyContext & ctx_
Definition
Transactor.h:162
xrpl::XRPAmount
Definition
XRPAmount.h:28
beast::kZero
constexpr Zero kZero
Definition
Zero.h:30
xrpl::keylet::amm
Keylet amm(Asset const &issue1, Asset const &issue2) noexcept
AMM entry.
Definition
Indexes.cpp:471
xrpl
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition
algorithm.h:5
xrpl::terNO_AMM
@ terNO_AMM
Definition
TER.h:228
xrpl::ammEnabled
bool ammEnabled(Rules const &)
Return true if required AMM amendment is enabled.
Definition
AMMCore.cpp:129
xrpl::deleteAMMAccount
TER deleteAMMAccount(Sandbox &view, Asset const &asset, Asset const &asset2, beast::Journal j)
Delete trustlines to AMM.
Definition
AMMHelpers.cpp:748
xrpl::NotTEC
TERSubset< CanCvtToNotTEC > NotTEC
Definition
TER.h:614
xrpl::isTesSuccess
bool isTesSuccess(TER x) noexcept
Definition
TER.h:683
xrpl::TER
TERSubset< CanCvtToTER > TER
Definition
TER.h:654
xrpl::tecAMM_NOT_EMPTY
@ tecAMM_NOT_EMPTY
Definition
TER.h:341
xrpl::tecINCOMPLETE
@ tecINCOMPLETE
Definition
TER.h:343
xrpl::tesSUCCESS
@ tesSUCCESS
Definition
TER.h:250
xrpl::PreclaimContext
State information when determining if a tx is likely to claim a fee.
Definition
Transactor.h:92
xrpl::PreclaimContext::view
ReadView const & view
Definition
Transactor.h:95
xrpl::PreclaimContext::tx
STTx const & tx
Definition
Transactor.h:98
xrpl::PreclaimContext::j
beast::Journal const j
Definition
Transactor.h:100
xrpl::PreflightContext
State information when preflighting a tx.
Definition
Transactor.h:39
xrpl::PreflightContext::rules
Rules const rules
Definition
Transactor.h:43
xrpl::PreflightContext::tx
STTx const & tx
Definition
Transactor.h:42
Generated by
1.17.0