Rename sfMPTokenIssuanceID in Vault to sfShareMPTID

This commit is contained in:
Bronek Kozicki
2025-03-31 16:40:46 +01:00
parent b67d8e676b
commit a1c21a06bc
13 changed files with 22 additions and 30 deletions

View File

@@ -475,11 +475,11 @@ LEDGER_ENTRY(ltVAULT, 0x0083, Vault, vault, ({
{sfAccount, soeREQUIRED}, {sfAccount, soeREQUIRED},
{sfData, soeOPTIONAL}, {sfData, soeOPTIONAL},
{sfAsset, soeREQUIRED}, {sfAsset, soeREQUIRED},
{sfAssetsTotal, soeREQUIRED}, {sfAssetsTotal, soeREQUIRED},
{sfAssetsAvailable, soeREQUIRED}, {sfAssetsAvailable, soeREQUIRED},
{sfAssetsMaximum, soeDEFAULT}, {sfAssetsMaximum, soeDEFAULT},
{sfLossUnrealized, soeREQUIRED}, {sfLossUnrealized, soeREQUIRED},
{sfMPTokenIssuanceID, soeREQUIRED}, // sfShare {sfShareMPTID, soeREQUIRED},
{sfWithdrawalPolicy, soeREQUIRED}, {sfWithdrawalPolicy, soeREQUIRED},
// no SharesTotal ever (use MPTIssuance.sfOutstandingAmount) // no SharesTotal ever (use MPTIssuance.sfOutstandingAmount)
// no PermissionedDomainID ever (use MPTIssuance.sfDomainID) // no PermissionedDomainID ever (use MPTIssuance.sfDomainID)

View File

@@ -155,6 +155,7 @@ TYPED_SFIELD(sfTakerGetsIssuer, UINT160, 4)
// 192-bit (common) // 192-bit (common)
TYPED_SFIELD(sfMPTokenIssuanceID, UINT192, 1) TYPED_SFIELD(sfMPTokenIssuanceID, UINT192, 1)
TYPED_SFIELD(sfShareMPTID, UINT192, 2)
// 256-bit (common) // 256-bit (common)
TYPED_SFIELD(sfLedgerHash, UINT256, 1) TYPED_SFIELD(sfLedgerHash, UINT256, 1)

View File

@@ -89,7 +89,6 @@ JSS(SettleDelay); // in: TransactionSign
JSS(SendMax); // in: TransactionSign JSS(SendMax); // in: TransactionSign
JSS(Sequence); // in/out: TransactionSign; field. JSS(Sequence); // in/out: TransactionSign; field.
JSS(SetFlag); // field. JSS(SetFlag); // field.
JSS(Share); // out: Vault
JSS(SharesTotal); // out: Vault JSS(SharesTotal); // out: Vault
JSS(Signer); // field. JSS(Signer); // field.
JSS(Signers); // field. JSS(Signers); // field.

View File

@@ -142,8 +142,6 @@ STLedgerEntry::getJson(JsonOptions options) const
if (getType() == ltMPTOKEN_ISSUANCE) if (getType() == ltMPTOKEN_ISSUANCE)
ret[jss::mpt_issuance_id] = to_string( ret[jss::mpt_issuance_id] = to_string(
makeMptID(getFieldU32(sfSequence), getAccountID(sfIssuer))); makeMptID(getFieldU32(sfSequence), getAccountID(sfIssuer)));
else if (getType() == ltVAULT)
ret[jss::Share] = to_json(MPTIssue(getFieldH192(sfMPTokenIssuanceID)));
return ret; return ret;
} }

View File

@@ -873,7 +873,7 @@ class Vault_test : public beast::unit_test::suite
// accounts for the issued shares. // accounts for the issued shares.
auto v = env.le(keylet); auto v = env.le(keylet);
BEAST_EXPECT(v); BEAST_EXPECT(v);
MPTID share = (*v)[sfMPTokenIssuanceID]; MPTID share = (*v)[sfShareMPTID];
auto issuance = env.le(keylet::mptIssuance(share)); auto issuance = env.le(keylet::mptIssuance(share));
BEAST_EXPECT(issuance); BEAST_EXPECT(issuance);
Number outstandingShares = issuance->at(sfOutstandingAmount); Number outstandingShares = issuance->at(sfOutstandingAmount);
@@ -1240,18 +1240,13 @@ class Vault_test : public beast::unit_test::suite
BEAST_EXPECT(checkString(sfAssetsMaximum, "1000")); BEAST_EXPECT(checkString(sfAssetsMaximum, "1000"));
BEAST_EXPECT(checkString(sfAssetsTotal, "50")); BEAST_EXPECT(checkString(sfAssetsTotal, "50"));
BEAST_EXPECT(checkString(sfLossUnrealized, "0")); BEAST_EXPECT(checkString(sfLossUnrealized, "0"));
BEAST_EXPECT(checkString( BEAST_EXPECT(
sfMPTokenIssuanceID, strHex(sle->at(sfMPTokenIssuanceID)))); checkString(sfShareMPTID, strHex(sle->at(sfShareMPTID))));
BEAST_EXPECT(checkString(sfOwner, toBase58(owner.id()))); BEAST_EXPECT(checkString(sfOwner, toBase58(owner.id())));
BEAST_EXPECT(checkInt(sfSequence, sequence)); BEAST_EXPECT(checkInt(sfSequence, sequence));
BEAST_EXPECT( BEAST_EXPECT(
checkInt(sfWithdrawalPolicy, vaultStrategyFirstComeFirstServe)); checkInt(sfWithdrawalPolicy, vaultStrategyFirstComeFirstServe));
// This field is injected in STLedgerEntry::getJson
BEAST_EXPECT(
node.isMember(jss::Share) && node[jss::Share].isObject() &&
node[jss::Share] == to_json(sle->at(sfMPTokenIssuanceID)));
// This field is injected in RPC::supplementJson<ltVAULT> // This field is injected in RPC::supplementJson<ltVAULT>
BEAST_EXPECT( BEAST_EXPECT(
node.isMember(jss::SharesTotal) && node.isMember(jss::SharesTotal) &&

View File

@@ -119,7 +119,7 @@ VaultClawback::doApply()
if (!vault) if (!vault)
return tefINTERNAL; // Enforced in preclaim return tefINTERNAL; // Enforced in preclaim
auto const mptIssuanceID = (*vault)[sfMPTokenIssuanceID]; auto const mptIssuanceID = (*vault)[sfShareMPTID];
auto const sleIssuance = view().read(keylet::mptIssuance(mptIssuanceID)); auto const sleIssuance = view().read(keylet::mptIssuance(mptIssuanceID));
if (!sleIssuance) if (!sleIssuance)
return tefINTERNAL; return tefINTERNAL;
@@ -139,7 +139,7 @@ VaultClawback::doApply()
STAmount assets, shares; STAmount assets, shares;
if (amount == beast::zero) if (amount == beast::zero)
{ {
Asset share = *(*vault)[sfMPTokenIssuanceID]; Asset share = *(*vault)[sfShareMPTID];
shares = accountHolds( shares = accountHolds(
view(), view(),
holder, holder,

View File

@@ -199,7 +199,7 @@ VaultCreate::doApply()
// Leave default values for AssetTotal and AssetAvailable, both zero. // Leave default values for AssetTotal and AssetAvailable, both zero.
if (auto value = tx[~sfAssetsMaximum]) if (auto value = tx[~sfAssetsMaximum])
vault->at(sfAssetsMaximum) = *value; vault->at(sfAssetsMaximum) = *value;
vault->at(sfMPTokenIssuanceID) = share; vault->at(sfShareMPTID) = share;
if (auto value = tx[~sfData]) if (auto value = tx[~sfData])
vault->at(sfData) = *value; vault->at(sfData) = *value;
// Required field, default to vaultStrategyFirstComeFirstServe // Required field, default to vaultStrategyFirstComeFirstServe

View File

@@ -84,7 +84,7 @@ VaultDelete::doApply()
// The operator-> gives the underlying STAccount, // The operator-> gives the underlying STAccount,
// whose value function returns a const&. // whose value function returns a const&.
{.account = vault->at(sfAccount)->value(), {.account = vault->at(sfAccount)->value(),
.issuanceID = vault->at(sfMPTokenIssuanceID)})) .issuanceID = vault->at(sfShareMPTID)}))
return ter; return ter;
// The psuedo-account's directory should have been deleted already. // The psuedo-account's directory should have been deleted already.

View File

@@ -70,7 +70,7 @@ VaultDeposit::preclaim(PreclaimContext const& ctx)
if (isFrozen(ctx.view, account, vaultAsset)) if (isFrozen(ctx.view, account, vaultAsset))
return tecFROZEN; return tecFROZEN;
auto const share = MPTIssue(vault->at(sfMPTokenIssuanceID)); auto const share = MPTIssue(vault->at(sfShareMPTID));
// Cannot deposit if the shares of the vault are frozen // Cannot deposit if the shares of the vault are frozen
if (isFrozen(ctx.view, account, share)) if (isFrozen(ctx.view, account, share))
return tecFROZEN; return tecFROZEN;
@@ -126,7 +126,7 @@ VaultDeposit::doApply()
auto const assets = ctx_.tx[sfAmount]; auto const assets = ctx_.tx[sfAmount];
// Make sure the depositor can hold shares. // Make sure the depositor can hold shares.
auto const mptIssuanceID = (*vault)[sfMPTokenIssuanceID]; auto const mptIssuanceID = (*vault)[sfShareMPTID];
auto const sleIssuance = view().read(keylet::mptIssuance(mptIssuanceID)); auto const sleIssuance = view().read(keylet::mptIssuance(mptIssuanceID));
if (!sleIssuance) if (!sleIssuance)
return tefINTERNAL; return tefINTERNAL;

View File

@@ -86,7 +86,7 @@ VaultSet::preclaim(PreclaimContext const& ctx)
if (ctx.tx[sfAccount] != vault->at(sfOwner)) if (ctx.tx[sfAccount] != vault->at(sfOwner))
return tecNO_PERMISSION; return tecNO_PERMISSION;
auto const mptIssuanceID = (*vault)[sfMPTokenIssuanceID]; auto const mptIssuanceID = (*vault)[sfShareMPTID];
auto const sleIssuance = ctx.view.read(keylet::mptIssuance(mptIssuanceID)); auto const sleIssuance = ctx.view.read(keylet::mptIssuance(mptIssuanceID));
if (!sleIssuance) if (!sleIssuance)
return tefINTERNAL; return tefINTERNAL;
@@ -124,7 +124,7 @@ VaultSet::doApply()
if (!vault) if (!vault)
return tefINTERNAL; // Enforced in preclaim return tefINTERNAL; // Enforced in preclaim
auto const mptIssuanceID = (*vault)[sfMPTokenIssuanceID]; auto const mptIssuanceID = (*vault)[sfShareMPTID];
auto const sleIssuance = view().peek(keylet::mptIssuance(mptIssuanceID)); auto const sleIssuance = view().peek(keylet::mptIssuance(mptIssuanceID));
if (!sleIssuance) if (!sleIssuance)
return tefINTERNAL; return tefINTERNAL;

View File

@@ -79,7 +79,7 @@ VaultWithdraw::preclaim(PreclaimContext const& ctx)
auto const assets = ctx.tx[sfAmount]; auto const assets = ctx.tx[sfAmount];
auto const asset = vault->at(sfAsset); auto const asset = vault->at(sfAsset);
auto const share = vault->at(sfMPTokenIssuanceID); auto const share = vault->at(sfShareMPTID);
if (assets.asset() != asset && assets.asset() != share) if (assets.asset() != asset && assets.asset() != share)
return tecWRONG_ASSET; return tecWRONG_ASSET;
@@ -117,7 +117,7 @@ VaultWithdraw::doApply()
if (!vault) if (!vault)
return tefINTERNAL; // Enforced in preclaim return tefINTERNAL; // Enforced in preclaim
auto const mptIssuanceID = (*vault)[sfMPTokenIssuanceID]; auto const mptIssuanceID = (*vault)[sfShareMPTID];
auto const sleIssuance = view().read(keylet::mptIssuance(mptIssuanceID)); auto const sleIssuance = view().read(keylet::mptIssuance(mptIssuanceID));
if (!sleIssuance) if (!sleIssuance)
return tefINTERNAL; return tefINTERNAL;

View File

@@ -2533,8 +2533,7 @@ assetsToSharesDeposit(
assets.asset() == vault->at(sfAsset), assets.asset() == vault->at(sfAsset),
"ripple::assetsToSharesDeposit : assets and vault match"); "ripple::assetsToSharesDeposit : assets and vault match");
Number assetTotal = vault->at(sfAssetsTotal); Number assetTotal = vault->at(sfAssetsTotal);
STAmount shares{ STAmount shares{vault->at(sfShareMPTID), static_cast<Number>(assets)};
vault->at(sfMPTokenIssuanceID), static_cast<Number>(assets)};
if (assetTotal == 0) if (assetTotal == 0)
return shares; return shares;
Number shareTotal = issuance->at(sfOutstandingAmount); Number shareTotal = issuance->at(sfOutstandingAmount);
@@ -2553,7 +2552,7 @@ assetsToSharesWithdraw(
"ripple::assetsToSharesWithdraw : assets and vault match"); "ripple::assetsToSharesWithdraw : assets and vault match");
Number assetTotal = vault->at(sfAssetsTotal); Number assetTotal = vault->at(sfAssetsTotal);
assetTotal -= vault->at(sfLossUnrealized); assetTotal -= vault->at(sfLossUnrealized);
STAmount shares{vault->at(sfMPTokenIssuanceID)}; STAmount shares{vault->at(sfShareMPTID)};
if (assetTotal == 0) if (assetTotal == 0)
return shares; return shares;
Number shareTotal = issuance->at(sfOutstandingAmount); Number shareTotal = issuance->at(sfOutstandingAmount);
@@ -2568,7 +2567,7 @@ sharesToAssetsWithdraw(
STAmount const& shares) STAmount const& shares)
{ {
XRPL_ASSERT( XRPL_ASSERT(
shares.asset() == vault->at(sfMPTokenIssuanceID), shares.asset() == vault->at(sfShareMPTID),
"ripple::sharesToAssetsWithdraw : shares and vault match"); "ripple::sharesToAssetsWithdraw : shares and vault match");
Number assetTotal = vault->at(sfAssetsTotal); Number assetTotal = vault->at(sfAssetsTotal);
assetTotal -= vault->at(sfLossUnrealized); assetTotal -= vault->at(sfLossUnrealized);

View File

@@ -160,7 +160,7 @@ supplementJson<ltVAULT>(
vault->getType() == ltVAULT, vault->getType() == ltVAULT,
"ripple::RPC::supplementJson<ltVAULT> : matching type"); "ripple::RPC::supplementJson<ltVAULT> : matching type");
auto const share = vault->at(sfMPTokenIssuanceID); auto const share = vault->at(sfShareMPTID);
auto const sleIssuance = view.read(keylet::mptIssuance(share)); auto const sleIssuance = view.read(keylet::mptIssuance(share));
if (!sleIssuance) if (!sleIssuance)
return; return;