rename MPToken -> MPTokenIssuance

This commit is contained in:
Mayukha Vadari
2026-03-21 23:01:17 -07:00
parent 7e62ecb63b
commit 6afcf51dee
21 changed files with 56 additions and 54 deletions

View File

@@ -14,10 +14,10 @@
namespace xrpl {
class MPToken : public virtual TokenBase
class MPTokenIssuance : public virtual TokenBase
{
public:
MPToken(ReadView const& view, MPTIssue const& mptIssue)
MPTokenIssuance(ReadView const& view, MPTIssue const& mptIssue)
: ReadOnlySLE(view.read(keylet::mptIssuance(mptIssue.getMptID())), view)
, TokenBase(view, view.read(keylet::mptIssuance(mptIssue.getMptID())))
, mptID_(mptIssue.getMptID())
@@ -25,7 +25,7 @@ public:
{
}
MPToken(ReadView const& view, MPTID const& mptID)
MPTokenIssuance(ReadView const& view, MPTID const& mptID)
: ReadOnlySLE(view.read(keylet::mptIssuance(mptID)), view)
, TokenBase(view, view.read(keylet::mptIssuance(mptID)))
, mptID_(mptID)
@@ -150,32 +150,32 @@ protected:
MPTIssue const mptIssue_;
};
class WritableMPToken : public virtual WritableTokenBase, public virtual MPToken
class WritableMPTokenIssuance : public virtual WritableTokenBase, public virtual MPTokenIssuance
{
public:
WritableMPToken(ApplyView& view, MPTIssue const& mptIssue)
WritableMPTokenIssuance(ApplyView& view, MPTIssue const& mptIssue)
: ReadOnlySLE(view.peek(keylet::mptIssuance(mptIssue.getMptID())), view)
, TokenBase(view, view.peek(keylet::mptIssuance(mptIssue.getMptID())))
, WritableSLE(view.peek(keylet::mptIssuance(mptIssue.getMptID())), view)
, WritableTokenBase(view, view.peek(keylet::mptIssuance(mptIssue.getMptID())))
, MPToken(view, mptIssue)
, MPTokenIssuance(view, mptIssue)
{
}
WritableMPToken(ApplyView& view, MPTID const& mptID)
WritableMPTokenIssuance(ApplyView& view, MPTID const& mptID)
: ReadOnlySLE(view.peek(keylet::mptIssuance(mptID)), view)
, TokenBase(view, view.peek(keylet::mptIssuance(mptID)))
, WritableSLE(view.peek(keylet::mptIssuance(mptID)), view)
, WritableTokenBase(view, view.peek(keylet::mptIssuance(mptID)))
, MPToken(view, mptID)
, MPTokenIssuance(view, mptID)
{
}
// Resolve ambiguity: use writable operator-> for non-const, read-only for const
using WritableSLE::operator->;
using MPToken::operator->;
using MPTokenIssuance::operator->;
using WritableSLE::operator*;
using MPToken::operator*;
using MPTokenIssuance::operator*;
//------------------------------------------------------------------------------
//

View File

@@ -22,7 +22,7 @@ namespace xrpl {
[[nodiscard]] std::optional<STAmount>
assetsToSharesDeposit(
std::shared_ptr<SLE const> const& vault,
MPToken const& issuance,
MPTokenIssuance const& issuance,
STAmount const& assets);
/** From the perspective of a vault, return the number of assets to take from
@@ -38,7 +38,7 @@ assetsToSharesDeposit(
[[nodiscard]] std::optional<STAmount>
sharesToAssetsDeposit(
std::shared_ptr<SLE const> const& vault,
MPToken const& issuance,
MPTokenIssuance const& issuance,
STAmount const& shares);
/** Controls whether to truncate shares instead of rounding. */
@@ -59,7 +59,7 @@ enum class TruncateShares : bool { no = false, yes = true };
[[nodiscard]] std::optional<STAmount>
assetsToSharesWithdraw(
std::shared_ptr<SLE const> const& vault,
MPToken const& issuance,
MPTokenIssuance const& issuance,
STAmount const& assets,
TruncateShares truncate = TruncateShares::no);
@@ -76,7 +76,7 @@ assetsToSharesWithdraw(
[[nodiscard]] std::optional<STAmount>
sharesToAssetsWithdraw(
std::shared_ptr<SLE const> const& vault,
MPToken const& issuance,
MPTokenIssuance const& issuance,
STAmount const& shares);
} // namespace xrpl

View File

@@ -27,7 +27,7 @@ private:
Expected<std::pair<STAmount, STAmount>, TER>
assetsToClawback(
std::shared_ptr<SLE> const& vault,
MPToken const& shareIssuance,
MPTokenIssuance const& shareIssuance,
AccountID const& holder,
STAmount const& clawbackAmount);
};

View File

@@ -49,7 +49,7 @@ isVaultPseudoAccountFrozen(
if (depth >= maxAssetCheckDepth)
return true; // LCOV_EXCL_LINE
auto mptIssuance = MPToken(view, mptShare);
auto mptIssuance = MPTokenIssuance(view, mptShare);
if (!mptIssuance.exists())
return false; // zero MPToken won't block deletion of MPTokenIssuance

View File

@@ -27,9 +27,9 @@ isLPTokenFrozen(
Issue const& asset2);
class IOUToken;
class MPToken;
class MPTokenIssuance;
class WritableIOUToken;
class WritableMPToken;
class WritableMPTokenIssuance;
std::unique_ptr<TokenBase>
makeTokenBase(ReadView const& view, Asset const& asset)
@@ -42,7 +42,7 @@ makeTokenBase(ReadView const& view, Asset const& asset)
}
else
{
return std::make_unique<MPToken>(view, issue);
return std::make_unique<MPTokenIssuance>(view, issue);
}
},
asset.value());
@@ -59,7 +59,7 @@ makeWritableTokenBase(ApplyView& view, Asset const& asset)
}
else
{
return std::make_unique<WritableMPToken>(view, issue);
return std::make_unique<WritableMPTokenIssuance>(view, issue);
}
},
asset.value());
@@ -812,7 +812,7 @@ rippleCreditMPT(
beast::Journal j)
{
// Do not check MPT authorization here - it must have been checked earlier
WritableMPToken mptIssuance(view, saAmount.get<MPTIssue>().getMptID());
WritableMPTokenIssuance mptIssuance(view, saAmount.get<MPTIssue>().getMptID());
auto const& issuer = saAmount.getIssuer();
if (!mptIssuance.exists())
return tecOBJECT_NOT_FOUND;
@@ -884,7 +884,7 @@ rippleSendMPT(
// Safe to get MPT since rippleSendMPT is only called by accountSendMPT
auto const& issuer = saAmount.getIssuer();
WritableMPToken mptIssuance(view, saAmount.get<MPTIssue>().getMptID());
WritableMPTokenIssuance mptIssuance(view, saAmount.get<MPTIssue>().getMptID());
if (!mptIssuance.exists())
return tecOBJECT_NOT_FOUND;
@@ -937,7 +937,7 @@ rippleSendMultiMPT(
// Safe to get MPT since rippleSendMultiMPT is only called by
// accountSendMultiMPT
auto const& issuer = mptIssue.getIssuer();
auto mptIssuance = MPToken(view, mptIssue);
auto mptIssuance = MPTokenIssuance(view, mptIssue);
if (!mptIssuance.exists())
return tecOBJECT_NOT_FOUND;

View File

@@ -9,7 +9,7 @@ namespace xrpl {
[[nodiscard]] std::optional<STAmount>
assetsToSharesDeposit(
std::shared_ptr<SLE const> const& vault,
MPToken const& issuance,
MPTokenIssuance const& issuance,
STAmount const& assets)
{
XRPL_ASSERT(!assets.negative(), "xrpl::assetsToSharesDeposit : non-negative assets");
@@ -36,7 +36,7 @@ assetsToSharesDeposit(
[[nodiscard]] std::optional<STAmount>
sharesToAssetsDeposit(
std::shared_ptr<SLE const> const& vault,
MPToken const& issuance,
MPTokenIssuance const& issuance,
STAmount const& shares)
{
XRPL_ASSERT(!shares.negative(), "xrpl::sharesToAssetsDeposit : non-negative shares");
@@ -62,7 +62,7 @@ sharesToAssetsDeposit(
[[nodiscard]] std::optional<STAmount>
assetsToSharesWithdraw(
std::shared_ptr<SLE const> const& vault,
MPToken const& issuance,
MPTokenIssuance const& issuance,
STAmount const& assets,
TruncateShares truncate)
{
@@ -89,7 +89,7 @@ assetsToSharesWithdraw(
[[nodiscard]] std::optional<STAmount>
sharesToAssetsWithdraw(
std::shared_ptr<SLE const> const& vault,
MPToken const& issuance,
MPTokenIssuance const& issuance,
STAmount const& shares)
{
XRPL_ASSERT(!shares.negative(), "xrpl::sharesToAssetsDeposit : non-negative shares");

View File

@@ -35,7 +35,8 @@ escrowCancelPreclaimHelper<Issue>(
return tecINTERNAL; // LCOV_EXCL_LINE
// If the issuer has requireAuth set, check if the account is authorized
if (auto const ter = IOUToken(ctx.view, amount.issue()).requireAuth(account); !isTesSuccess(ter))
if (auto const ter = IOUToken(ctx.view, amount.issue()).requireAuth(account);
!isTesSuccess(ter))
return ter;
return tesSUCCESS;
@@ -54,7 +55,7 @@ escrowCancelPreclaimHelper<MPTIssue>(
return tecINTERNAL; // LCOV_EXCL_LINE
// If the mpt does not exist, return tecOBJECT_NOT_FOUND
auto const mptIssuance = MPToken(ctx.view, amount.get<MPTIssue>());
auto const mptIssuance = MPTokenIssuance(ctx.view, amount.get<MPTIssue>());
if (!mptIssuance.exists())
return tecOBJECT_NOT_FOUND;

View File

@@ -236,7 +236,7 @@ escrowCreatePreclaimHelper<MPTIssue>(
return tecNO_PERMISSION;
// If the mpt does not exist, return tecOBJECT_NOT_FOUND
auto const mptIssuance = MPToken(ctx.view, amount.get<MPTIssue>());
auto const mptIssuance = MPTokenIssuance(ctx.view, amount.get<MPTIssue>());
if (!mptIssuance.exists())
return tecOBJECT_NOT_FOUND;

View File

@@ -149,7 +149,7 @@ escrowFinishPreclaimHelper<MPTIssue>(
AccountID const& dest,
STAmount const& amount)
{
auto const mptIssuance = MPToken(ctx.view, amount.get<MPTIssue>());
auto const mptIssuance = MPTokenIssuance(ctx.view, amount.get<MPTIssue>());
// If the issuer is the same as the dest, return tesSUCCESS
if (mptIssuance.getIssuer() == dest)
return tesSUCCESS;

View File

@@ -4,6 +4,7 @@
#include <xrpl/ledger/ApplyView.h>
#include <xrpl/ledger/View.h>
#include <xrpl/ledger/helpers/AccountRootHelpers.h>
#include <xrpl/ledger/helpers/MPTokenHelpers.h>
#include <xrpl/protocol/Feature.h>
#include <xrpl/protocol/Indexes.h>
#include <xrpl/protocol/MPTAmount.h>
@@ -180,7 +181,7 @@ escrowUnlockApplyHelper<MPTIssue>(
bool const senderIssuer = issuer == sender;
bool const receiverIssuer = issuer == receiver;
auto const mptIssuance = MPToken(view, amount.get<MPTIssue>());
auto const mptIssuance = MPTokenIssuance(view, amount.get<MPTIssue>());
auto const mptID = mptIssuance.getMptID();
if (!view.exists(keylet::mptoken(mptID, receiver)) && createAsset && !receiverIssuer)
{

View File

@@ -182,7 +182,7 @@ preclaimHelper<MPTIssue>(
SLE const& sleIssuer,
STAmount const& clawAmount)
{
MPToken const mptIssuance(ctx.view, clawAmount.get<MPTIssue>());
MPTokenIssuance const mptIssuance(ctx.view, clawAmount.get<MPTIssue>());
if (!mptIssuance)
return tecOBJECT_NOT_FOUND;

View File

@@ -463,7 +463,7 @@ Payment::doApply()
{
JLOG(j_.trace()) << " dstAmount=" << dstAmount.getFullText();
auto const& mptIssue = dstAmount.get<MPTIssue>();
MPToken mptToken(view(), mptIssue);
MPTokenIssuance mptToken(view(), mptIssue);
if (auto const ter = mptToken.requireAuth(accountID_); !isTesSuccess(ter))
return ter;

View File

@@ -78,7 +78,7 @@ MPTokenAuthorize::preclaim(PreclaimContext const& ctx)
}
// Now test when the holder wants to hold/create/authorize a new MPT
MPToken const mptIssuance(ctx.view, MPTIssue{ctx.tx[sfMPTokenIssuanceID]});
MPTokenIssuance const mptIssuance(ctx.view, MPTIssue{ctx.tx[sfMPTokenIssuanceID]});
if (!mptIssuance)
return tecOBJECT_NOT_FOUND;
@@ -96,7 +96,7 @@ MPTokenAuthorize::preclaim(PreclaimContext const& ctx)
if (AccountRoot const acctHolder(*holderID, ctx.view); !acctHolder)
return tecNO_DST;
MPToken const mptIssuance(ctx.view, MPTIssue{ctx.tx[sfMPTokenIssuanceID]});
MPTokenIssuance const mptIssuance(ctx.view, MPTIssue{ctx.tx[sfMPTokenIssuanceID]});
if (!mptIssuance)
return tecOBJECT_NOT_FOUND;
@@ -158,7 +158,7 @@ TER
MPTokenAuthorize::doApply()
{
auto const& tx = ctx_.tx;
WritableMPToken mptToken(ctx_.view(), tx[sfMPTokenIssuanceID]);
WritableMPTokenIssuance mptToken(ctx_.view(), tx[sfMPTokenIssuanceID]);
return mptToken.authorizeMPToken(
preFeeBalance_, accountID_, ctx_.journal, tx.getFlags(), tx[~sfHolder]);
}

View File

@@ -16,7 +16,7 @@ TER
MPTokenIssuanceDestroy::preclaim(PreclaimContext const& ctx)
{
// ensure that issuance exists
MPToken const mptIssuance(ctx.view, ctx.tx[sfMPTokenIssuanceID]);
MPTokenIssuance const mptIssuance(ctx.view, ctx.tx[sfMPTokenIssuanceID]);
if (!mptIssuance)
return tecOBJECT_NOT_FOUND;
@@ -37,7 +37,7 @@ MPTokenIssuanceDestroy::preclaim(PreclaimContext const& ctx)
TER
MPTokenIssuanceDestroy::doApply()
{
WritableMPToken mptIssuance(view(), ctx_.tx[sfMPTokenIssuanceID]);
WritableMPTokenIssuance mptIssuance(view(), ctx_.tx[sfMPTokenIssuanceID]);
if (accountID_ != mptIssuance.getIssuer())
return tecINTERNAL; // LCOV_EXCL_LINE

View File

@@ -150,7 +150,7 @@ TER
MPTokenIssuanceSet::preclaim(PreclaimContext const& ctx)
{
// ensure that issuance exists
MPToken const mptIssuance(ctx.view, MPTIssue{ctx.tx[sfMPTokenIssuanceID]});
MPTokenIssuance const mptIssuance(ctx.view, MPTIssue{ctx.tx[sfMPTokenIssuanceID]});
if (!mptIssuance)
return tecOBJECT_NOT_FOUND;

View File

@@ -72,7 +72,7 @@ VaultClawback::preclaim(PreclaimContext const& ctx)
auto const maybeAmount = ctx.tx[~sfAmount];
auto const mptIssuanceID = vault->at(sfShareMPTID);
MPTIssue const share{mptIssuanceID};
MPToken const shareIssuance(ctx.view, share);
MPTokenIssuance const shareIssuance(ctx.view, share);
if (!shareIssuance)
{
// LCOV_EXCL_START
@@ -173,7 +173,7 @@ VaultClawback::preclaim(PreclaimContext const& ctx)
[&]<ValidIssueType TIss>(TIss const& issue) -> TER {
if constexpr (std::is_same_v<TIss, MPTIssue>)
{
MPToken const mptIssuance(ctx.view, issue);
MPTokenIssuance const mptIssuance(ctx.view, issue);
if (!mptIssuance)
return tecOBJECT_NOT_FOUND;
@@ -214,7 +214,7 @@ VaultClawback::preclaim(PreclaimContext const& ctx)
Expected<std::pair<STAmount, STAmount>, TER>
VaultClawback::assetsToClawback(
std::shared_ptr<SLE> const& vault,
MPToken const& shareIssuance,
MPTokenIssuance const& shareIssuance,
AccountID const& holder,
STAmount const& clawbackAmount)
{
@@ -317,7 +317,7 @@ VaultClawback::doApply()
auto const mptIssuanceID = *vault->at(sfShareMPTID);
MPTIssue const share{mptIssuanceID};
MPToken const shareIssuance(view(), share);
MPTokenIssuance const shareIssuance(view(), share);
if (!shareIssuance)
{
// LCOV_EXCL_START

View File

@@ -220,7 +220,7 @@ VaultCreate::doApply()
view().insert(vault);
// Explicitly create MPToken for the vault owner
WritableMPToken mptToken(view(), mptIssuanceID);
WritableMPTokenIssuance mptToken(view(), mptIssuanceID);
if (auto const err = mptToken.authorizeMPToken(preFeeBalance_, accountID_, ctx_.journal);
!isTesSuccess(err))
return err;

View File

@@ -50,7 +50,7 @@ VaultDelete::preclaim(PreclaimContext const& ctx)
}
// Verify we can destroy MPTokenIssuance
MPToken const shareIssuance(ctx.view, vault->at(sfShareMPTID));
MPTokenIssuance const shareIssuance(ctx.view, vault->at(sfShareMPTID));
if (!shareIssuance)
{
@@ -105,7 +105,7 @@ VaultDelete::doApply()
// Destroy the share issuance. Do not use MPTokenIssuanceDestroy for this,
// no special logic needed. First run few checks, duplicated from preclaim.
auto const shareMPTID = *vault->at(sfShareMPTID);
WritableMPToken shareIssuance(view(), shareMPTID);
WritableMPTokenIssuance shareIssuance(view(), shareMPTID);
if (!shareIssuance)
{
// LCOV_EXCL_START

View File

@@ -62,7 +62,7 @@ VaultDeposit::preclaim(PreclaimContext const& ctx)
// LCOV_EXCL_STOP
}
auto const mptIssuance = MPToken(ctx.view, vaultShare);
auto const mptIssuance = MPTokenIssuance(ctx.view, vaultShare);
if (!mptIssuance)
{
// LCOV_EXCL_START
@@ -84,7 +84,7 @@ VaultDeposit::preclaim(PreclaimContext const& ctx)
return vaultAsset.holds<Issue>() ? tecFROZEN : tecLOCKED;
// Cannot deposit if the shares of the vault are frozen
if (MPToken(ctx.view, vaultShare).isFrozen(account))
if (MPTokenIssuance(ctx.view, vaultShare).isFrozen(account))
return tecLOCKED;
if (vault->isFlag(lsfVaultPrivate) && account != vault->at(sfOwner))
@@ -139,7 +139,7 @@ VaultDeposit::doApply()
auto const amount = ctx_.tx[sfAmount];
// Make sure the depositor can hold shares.
WritableMPToken mptoken(view(), (*vault)[sfShareMPTID]);
WritableMPTokenIssuance mptoken(view(), (*vault)[sfShareMPTID]);
if (!mptoken.exists())
{
// LCOV_EXCL_START

View File

@@ -72,7 +72,7 @@ VaultSet::preclaim(PreclaimContext const& ctx)
return tecNO_PERMISSION;
}
MPToken const shareIssuance(ctx.view, (*vault)[sfShareMPTID]);
MPTokenIssuance const shareIssuance(ctx.view, (*vault)[sfShareMPTID]);
if (!shareIssuance)
{
// LCOV_EXCL_START
@@ -126,7 +126,7 @@ VaultSet::doApply()
auto const vaultAsset = vault->at(sfAsset);
WritableMPToken shareIssuance(view(), (*vault)[sfShareMPTID]);
WritableMPTokenIssuance shareIssuance(view(), (*vault)[sfShareMPTID]);
if (!shareIssuance)
{
// LCOV_EXCL_START

View File

@@ -84,7 +84,7 @@ VaultWithdraw::preclaim(PreclaimContext const& ctx)
// Cannot return shares to the vault, if the underlying asset was frozen for
// the submitter
if (auto const ret = MPToken(ctx.view, vaultShare).checkFrozen(account))
if (auto const ret = MPTokenIssuance(ctx.view, vaultShare).checkFrozen(account))
return ret;
return tesSUCCESS;
@@ -99,7 +99,7 @@ VaultWithdraw::doApply()
auto const mptIssuanceID = *((*vault)[sfShareMPTID]);
MPTIssue const share{mptIssuanceID};
MPToken const shareIssuance(view(), mptIssuanceID);
MPTokenIssuance const shareIssuance(view(), mptIssuanceID);
if (!shareIssuance)
{
// LCOV_EXCL_START