This commit is contained in:
tequ
2026-03-23 11:59:46 +09:00
parent 64f699a974
commit 5280a185d0
3 changed files with 15 additions and 3 deletions

View File

@@ -352,7 +352,8 @@ inline constexpr FlagValue tfMPTPaymentMask = ~(tfUniversal | tfPartialPayment);
inline constexpr FlagValue tfTrustSetPermissionMask =
~(tfUniversal | tfSetfAuth | tfSetFreeze | tfClearFreeze);
inline constexpr FlagValue tfSponsorshipSetPermissionMask =
~(tfUniversal | tfSponsorshipSetRequireSignForFee | tfSponsorshipSetRequireSignForReserve);
~(tfUniversal | tfSponsorshipSetRequireSignForFee | tfSponsorshipSetRequireSignForReserve |
tfSponsorshipClearRequireSignForFee | tfSponsorshipClearRequireSignForReserve);
// MPTokenIssuanceCreate MutableFlags:
// Indicating specific fields or flags may be changed after issuance.

View File

@@ -112,9 +112,10 @@ SponsorshipSet::checkPermission(ReadView const& view, STTx const& tx)
loadGranularPermission(sle, ttSPONSORSHIP_SET, granularPermissions);
auto const sponsoringFee = tx.isFieldPresent(sfFeeAmount) || tx.isFieldPresent(sfMaxFee) ||
txFlags & tfSponsorshipSetRequireSignForFee;
(txFlags & (tfSponsorshipSetRequireSignForFee | tfSponsorshipClearRequireSignForFee));
auto const sponsoringReserve =
tx.isFieldPresent(sfReserveCount) || txFlags & tfSponsorshipSetRequireSignForReserve;
tx.isFieldPresent(sfReserveCount) ||
(txFlags & (tfSponsorshipSetRequireSignForReserve | tfSponsorshipClearRequireSignForReserve));
if (sponsoringFee && !granularPermissions.contains(SponsorFee))
return terNO_DELEGATE_PERMISSION;

View File

@@ -5138,6 +5138,11 @@ public:
sponsor::sponseeAcc(bob),
delegate::as(carol),
ter(result));
// ClearRequireSignForFee flag
env(sponsor::set(alice, tfSponsorshipClearRequireSignForFee),
sponsor::sponseeAcc(bob),
delegate::as(carol),
ter(result));
env.close();
};
@@ -5182,6 +5187,11 @@ public:
sponsor::sponseeAcc(bob),
delegate::as(carol),
ter(result));
// ClearRequireSignForReserve flag
env(sponsor::set(alice, tfSponsorshipClearRequireSignForReserve),
sponsor::sponseeAcc(bob),
delegate::as(carol),
ter(result));
env.close();
};