xrpld
Toggle main menu visibility
Loading...
Searching...
No Matches
include
xrpl
tx
transactors
token
tx/transactors/token/MPTokenIssuanceCreate.h
1
#pragma once
2
3
#include <xrpl/basics/Slice.h>
4
#include <xrpl/basics/base_uint.h>
5
#include <xrpl/beast/utility/Journal.h>
6
#include <xrpl/core/ServiceRegistry.h>
7
#include <xrpl/ledger/ApplyView.h>
8
#include <xrpl/ledger/ReadView.h>
9
#include <xrpl/protocol/AccountID.h>
10
#include <xrpl/protocol/STTx.h>
11
#include <xrpl/protocol/TER.h>
12
#include <xrpl/protocol/UintTypes.h>
13
#include <xrpl/protocol/XRPAmount.h>
14
#include <xrpl/tx/ApplyContext.h>
15
#include <xrpl/tx/Transactor.h>
16
17
#include <
cstdint
>
18
#include <expected>
19
#include <
optional
>
20
21
namespace
xrpl
{
22
23
// NOLINTBEGIN(readability-redundant-member-init)
24
struct
MPTCreateArgs
25
{
26
std::optional<XRPAmount>
priorBalance
;
27
AccountID
const
&
account
;
28
std::uint32_t
sequence
= 0;
29
std::uint32_t
flags
= 0;
30
std::optional<std::uint64_t>
maxAmount
= std::nullopt;
31
std::optional<std::uint8_t>
assetScale
= std::nullopt;
32
std::optional<std::uint16_t>
transferFee
= std::nullopt;
33
std::optional<Slice>
const
&
metadata
{};
34
std::optional<UInt256>
domainId
= std::nullopt;
35
std::optional<std::uint32_t>
immutableFlags
= std::nullopt;
36
// Set only by callers that issue an MPT representing a wrapped asset
37
// (e.g. VaultCreate's share token). The keylet must point to an
38
// existing MPToken or RippleState owned by `account`. Surfaces on
39
// the resulting MPTokenIssuance via the optional sfReferenceHolding
40
// field. Used by readers (canTransfer, canTrade, freezing) to
41
// inherit the underlying asset's transferability.
42
std::optional<UInt256>
referenceHolding
= std::nullopt;
43
};
44
// NOLINTEND(readability-redundant-member-init)
45
46
class
MPTokenIssuanceCreate
:
public
Transactor
47
{
48
public
:
49
static
constexpr
auto
kConsequencesFactory
=
ConsequencesFactoryType::Normal
;
50
51
explicit
MPTokenIssuanceCreate
(
ApplyContext
& ctx) :
Transactor
(ctx)
52
{
53
}
54
55
static
bool
56
checkExtraFeatures
(
PreflightContext
const
& ctx);
57
58
static
std::uint32_t
59
getFlagsMask
(
PreflightContext
const
& ctx);
60
61
static
NotTEC
62
preflight
(
PreflightContext
const
& ctx);
63
64
TER
65
doApply
()
override
;
66
67
void
68
visitInvariantEntry
(
bool
isDelete,
SLE::ConstRef
before,
SLE::ConstRef
after
)
override
;
69
70
[[nodiscard]]
bool
71
finalizeInvariants
(
72
STTx
const
& tx,
73
TER
result,
74
XRPAmount
fee,
75
ReadView
const
&
view
,
76
beast::Journal
const
& j)
override
;
77
78
static
std::expected<MPTID, TER>
79
create
(
ApplyViewContext
ctx,
beast::Journal
journal,
MPTCreateArgs
const
& args);
80
};
81
82
}
// namespace xrpl
beast::Journal
A generic endpoint for log messages.
Definition
Journal.h:44
xrpl::ApplyContext
State information when applying a tx.
Definition
ApplyContext.h:28
xrpl::MPTokenIssuanceCreate::kConsequencesFactory
static constexpr auto kConsequencesFactory
Definition
tx/transactors/token/MPTokenIssuanceCreate.h:49
xrpl::MPTokenIssuanceCreate::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
MPTokenIssuanceCreate.cpp:238
xrpl::MPTokenIssuanceCreate::checkExtraFeatures
static bool checkExtraFeatures(PreflightContext const &ctx)
Definition
MPTokenIssuanceCreate.cpp:31
xrpl::MPTokenIssuanceCreate::getFlagsMask
static std::uint32_t getFlagsMask(PreflightContext const &ctx)
Definition
MPTokenIssuanceCreate.cpp:59
xrpl::MPTokenIssuanceCreate::preflight
static NotTEC preflight(PreflightContext const &ctx)
Definition
MPTokenIssuanceCreate.cpp:66
xrpl::MPTokenIssuanceCreate::visitInvariantEntry
void visitInvariantEntry(bool isDelete, SLE::ConstRef before, SLE::ConstRef after) override
Inspect a single ledger entry modified by this transaction.
Definition
MPTokenIssuanceCreate.cpp:232
xrpl::MPTokenIssuanceCreate::MPTokenIssuanceCreate
MPTokenIssuanceCreate(ApplyContext &ctx)
Definition
tx/transactors/token/MPTokenIssuanceCreate.h:51
xrpl::MPTokenIssuanceCreate::create
static std::expected< MPTID, TER > create(ApplyViewContext ctx, beast::Journal journal, MPTCreateArgs const &args)
Definition
MPTokenIssuanceCreate.cpp:123
xrpl::MPTokenIssuanceCreate::doApply
TER doApply() override
Definition
MPTokenIssuanceCreate.cpp:210
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::Transactor::ConsequencesFactoryType::Normal
@ Normal
Definition
Transactor.h:175
xrpl::Transactor::view
ApplyView & view()
Definition
Transactor.h:184
xrpl::Transactor::Transactor
Transactor(Transactor const &)=delete
xrpl::XRPAmount
Definition
XRPAmount.h:28
cstdint
std::uint32_t
xrpl
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition
algorithm.h:5
xrpl::NotTEC
TERSubset< CanCvtToNotTEC > NotTEC
Definition
TER.h:614
xrpl::after
bool after(NetClock::time_point now, std::uint32_t mark)
Has the specified time passed?
Definition
View.cpp:644
xrpl::AccountID
BaseUInt< 160, detail::AccountIDTag > AccountID
A 160-bit unsigned that uniquely identifies an account.
Definition
AccountID.h:34
xrpl::TER
TERSubset< CanCvtToTER > TER
Definition
TER.h:654
optional
xrpl::ApplyViewContext
Bundles the mutable ledger view and the transaction being applied.
Definition
ApplyView.h:451
xrpl::MPTCreateArgs
Definition
tx/transactors/token/MPTokenIssuanceCreate.h:25
xrpl::MPTCreateArgs::account
AccountID const & account
Definition
tx/transactors/token/MPTokenIssuanceCreate.h:27
xrpl::MPTCreateArgs::domainId
std::optional< UInt256 > domainId
Definition
tx/transactors/token/MPTokenIssuanceCreate.h:34
xrpl::MPTCreateArgs::maxAmount
std::optional< std::uint64_t > maxAmount
Definition
tx/transactors/token/MPTokenIssuanceCreate.h:30
xrpl::MPTCreateArgs::transferFee
std::optional< std::uint16_t > transferFee
Definition
tx/transactors/token/MPTokenIssuanceCreate.h:32
xrpl::MPTCreateArgs::immutableFlags
std::optional< std::uint32_t > immutableFlags
Definition
tx/transactors/token/MPTokenIssuanceCreate.h:35
xrpl::MPTCreateArgs::priorBalance
std::optional< XRPAmount > priorBalance
Definition
tx/transactors/token/MPTokenIssuanceCreate.h:26
xrpl::MPTCreateArgs::sequence
std::uint32_t sequence
Definition
tx/transactors/token/MPTokenIssuanceCreate.h:28
xrpl::MPTCreateArgs::referenceHolding
std::optional< UInt256 > referenceHolding
Definition
tx/transactors/token/MPTokenIssuanceCreate.h:42
xrpl::MPTCreateArgs::flags
std::uint32_t flags
Definition
tx/transactors/token/MPTokenIssuanceCreate.h:29
xrpl::MPTCreateArgs::metadata
std::optional< Slice > const & metadata
Definition
tx/transactors/token/MPTokenIssuanceCreate.h:33
xrpl::MPTCreateArgs::assetScale
std::optional< std::uint8_t > assetScale
Definition
tx/transactors/token/MPTokenIssuanceCreate.h:31
xrpl::PreflightContext
State information when preflighting a tx.
Definition
Transactor.h:39
Generated by
1.17.0