diff --git a/include/xrpl/protocol/LedgerFormats.h b/include/xrpl/protocol/LedgerFormats.h index 4e2806b6f0..8e063e25e9 100644 --- a/include/xrpl/protocol/LedgerFormats.h +++ b/include/xrpl/protocol/LedgerFormats.h @@ -174,7 +174,7 @@ enum LedgerEntryType : std::uint16_t { LSF_FLAG(lsfMPTCanTrade, 0x00000010) \ LSF_FLAG(lsfMPTCanTransfer, 0x00000020) \ LSF_FLAG(lsfMPTCanClawback, 0x00000040) \ - LSF_FLAG(lsfMPTCanPrivacy, 0x00000080)) \ + LSF_FLAG(lsfMPTCanConfidentialAmount, 0x00000080)) \ \ LEDGER_OBJECT(MPTokenIssuanceMutable, \ LSF_FLAG(lsmfMPTCanMutateCanLock, 0x00000002) \ @@ -185,7 +185,7 @@ enum LedgerEntryType : std::uint16_t { LSF_FLAG(lsmfMPTCanMutateCanClawback, 0x00000040) \ LSF_FLAG(lsmfMPTCanMutateMetadata, 0x00010000) \ LSF_FLAG(lsmfMPTCanMutateTransferFee, 0x00020000) \ - LSF_FLAG(lsmfMPTCannotMutatePrivacy, 0x00040000)) \ + LSF_FLAG(lsmfMPTCannotMutateCanConfidentialAmount, 0x00040000)) \ \ LEDGER_OBJECT(MPToken, \ LSF_FLAG2(lsfMPTLocked, 0x00000001) \ diff --git a/include/xrpl/protocol/TxFlags.h b/include/xrpl/protocol/TxFlags.h index 42cade072c..b90e48a3b8 100644 --- a/include/xrpl/protocol/TxFlags.h +++ b/include/xrpl/protocol/TxFlags.h @@ -139,7 +139,7 @@ inline constexpr FlagValue tfUniversalMask = ~tfUniversal; TF_FLAG(tfMPTCanTrade, lsfMPTCanTrade) \ TF_FLAG(tfMPTCanTransfer, lsfMPTCanTransfer) \ TF_FLAG(tfMPTCanClawback, lsfMPTCanClawback) \ - TF_FLAG(tfMPTCanPrivacy, lsfMPTCanPrivacy), \ + TF_FLAG(tfMPTCanConfidentialAmount, lsfMPTCanConfidentialAmount), \ MASK_ADJ(0)) \ \ TRANSACTION(MPTokenAuthorize, \ @@ -348,11 +348,12 @@ inline constexpr FlagValue tmfMPTCanMutateCanTransfer = lsmfMPTCanMutateCanTrans inline constexpr FlagValue tmfMPTCanMutateCanClawback = lsmfMPTCanMutateCanClawback; inline constexpr FlagValue tmfMPTCanMutateMetadata = lsmfMPTCanMutateMetadata; inline constexpr FlagValue tmfMPTCanMutateTransferFee = lsmfMPTCanMutateTransferFee; -inline constexpr FlagValue tmfMPTCannotMutatePrivacy = lsmfMPTCannotMutatePrivacy; -inline constexpr FlagValue tmfMPTokenIssuanceCreateMutableMask = - ~(tmfMPTCanMutateCanLock | tmfMPTCanMutateRequireAuth | tmfMPTCanMutateCanEscrow | - tmfMPTCanMutateCanTrade | tmfMPTCanMutateCanTransfer | tmfMPTCanMutateCanClawback | - tmfMPTCanMutateMetadata | tmfMPTCanMutateTransferFee | tmfMPTCannotMutatePrivacy); +inline constexpr FlagValue tmfMPTCannotMutateCanConfidentialAmount = + lsmfMPTCannotMutateCanConfidentialAmount; +inline constexpr FlagValue tmfMPTokenIssuanceCreateMutableMask = ~( + tmfMPTCanMutateCanLock | tmfMPTCanMutateRequireAuth | tmfMPTCanMutateCanEscrow | + tmfMPTCanMutateCanTrade | tmfMPTCanMutateCanTransfer | tmfMPTCanMutateCanClawback | + tmfMPTCanMutateMetadata | tmfMPTCanMutateTransferFee | tmfMPTCannotMutateCanConfidentialAmount); // MPTokenIssuanceSet MutableFlags: // Set or Clear flags. @@ -369,13 +370,13 @@ inline constexpr FlagValue tmfMPTSetCanTransfer = 0x00000100; inline constexpr FlagValue tmfMPTClearCanTransfer = 0x00000200; inline constexpr FlagValue tmfMPTSetCanClawback = 0x00000400; inline constexpr FlagValue tmfMPTClearCanClawback = 0x00000800; -inline constexpr FlagValue tmfMPTSetPrivacy = 0x00001000; -inline constexpr FlagValue tmfMPTClearPrivacy = 0x00002000; +inline constexpr FlagValue tmfMPTSetCanConfidentialAmount = 0x00001000; +inline constexpr FlagValue tmfMPTClearCanConfidentialAmount = 0x00002000; inline constexpr FlagValue tmfMPTokenIssuanceSetMutableMask = ~(tmfMPTSetCanLock | tmfMPTClearCanLock | tmfMPTSetRequireAuth | tmfMPTClearRequireAuth | tmfMPTSetCanEscrow | tmfMPTClearCanEscrow | tmfMPTSetCanTrade | tmfMPTClearCanTrade | tmfMPTSetCanTransfer | tmfMPTClearCanTransfer | tmfMPTSetCanClawback | - tmfMPTClearCanClawback | tmfMPTSetPrivacy | tmfMPTClearPrivacy); + tmfMPTClearCanClawback | tmfMPTSetCanConfidentialAmount | tmfMPTClearCanConfidentialAmount); // Prior to fixRemoveNFTokenAutoTrustLine, transfer of an NFToken between accounts allowed a // TrustLine to be added to the issuer of that token without explicit permission from that issuer. diff --git a/include/xrpl/protocol/detail/ledger_entries.macro b/include/xrpl/protocol/detail/ledger_entries.macro index 589668c7e0..a5f9681b7e 100644 --- a/include/xrpl/protocol/detail/ledger_entries.macro +++ b/include/xrpl/protocol/detail/ledger_entries.macro @@ -398,8 +398,8 @@ LEDGER_ENTRY(ltMPTOKEN_ISSUANCE, 0x007e, MPTokenIssuance, mpt_issuance, ({ {sfPreviousTxnLgrSeq, soeREQUIRED}, {sfDomainID, soeOPTIONAL}, {sfMutableFlags, soeDEFAULT}, - {sfIssuerElGamalPublicKey, soeOPTIONAL}, - {sfAuditorElGamalPublicKey, soeOPTIONAL}, + {sfIssuerEncryptionKey, soeOPTIONAL}, + {sfAuditorEncryptionKey, soeOPTIONAL}, {sfConfidentialOutstandingAmount, soeDEFAULT}, })) @@ -419,7 +419,7 @@ LEDGER_ENTRY(ltMPTOKEN, 0x007f, MPToken, mptoken, ({ {sfConfidentialBalanceVersion, soeDEFAULT}, {sfIssuerEncryptedBalance, soeOPTIONAL}, {sfAuditorEncryptedBalance, soeOPTIONAL}, - {sfHolderElGamalPublicKey, soeOPTIONAL}, + {sfHolderEncryptionKey, soeOPTIONAL}, })) /** A ledger object which tracks Oracle diff --git a/include/xrpl/protocol/detail/sfields.macro b/include/xrpl/protocol/detail/sfields.macro index 86c20efd34..7a18f27ff3 100644 --- a/include/xrpl/protocol/detail/sfields.macro +++ b/include/xrpl/protocol/detail/sfields.macro @@ -302,8 +302,8 @@ TYPED_SFIELD(sfCredentialType, VL, 31) TYPED_SFIELD(sfConfidentialBalanceInbox, VL, 32) TYPED_SFIELD(sfConfidentialBalanceSpending, VL, 33) TYPED_SFIELD(sfIssuerEncryptedBalance, VL, 34) -TYPED_SFIELD(sfIssuerElGamalPublicKey, VL, 35) -TYPED_SFIELD(sfHolderElGamalPublicKey, VL, 36) +TYPED_SFIELD(sfIssuerEncryptionKey, VL, 35) +TYPED_SFIELD(sfHolderEncryptionKey, VL, 36) TYPED_SFIELD(sfZKProof, VL, 37) TYPED_SFIELD(sfHolderEncryptedAmount, VL, 38) TYPED_SFIELD(sfIssuerEncryptedAmount, VL, 39) @@ -311,7 +311,7 @@ TYPED_SFIELD(sfSenderEncryptedAmount, VL, 40) TYPED_SFIELD(sfDestinationEncryptedAmount, VL, 41) TYPED_SFIELD(sfAuditorEncryptedBalance, VL, 42) TYPED_SFIELD(sfAuditorEncryptedAmount, VL, 43) -TYPED_SFIELD(sfAuditorElGamalPublicKey, VL, 44) +TYPED_SFIELD(sfAuditorEncryptionKey, VL, 44) TYPED_SFIELD(sfBlindingFactor, VL, 45) TYPED_SFIELD(sfAmountCommitment, VL, 46) TYPED_SFIELD(sfBalanceCommitment, VL, 47) diff --git a/include/xrpl/protocol/detail/transactions.macro b/include/xrpl/protocol/detail/transactions.macro index 94aed8a797..d25627b92b 100644 --- a/include/xrpl/protocol/detail/transactions.macro +++ b/include/xrpl/protocol/detail/transactions.macro @@ -722,8 +722,8 @@ TRANSACTION(ttMPTOKEN_ISSUANCE_SET, 56, MPTokenIssuanceSet, {sfMPTokenMetadata, soeOPTIONAL}, {sfTransferFee, soeOPTIONAL}, {sfMutableFlags, soeOPTIONAL}, - {sfIssuerElGamalPublicKey, soeOPTIONAL}, - {sfAuditorElGamalPublicKey, soeOPTIONAL}, + {sfIssuerEncryptionKey, soeOPTIONAL}, + {sfAuditorEncryptionKey, soeOPTIONAL}, })) /** This transaction type authorizes a MPToken instance */ @@ -1071,7 +1071,7 @@ TRANSACTION(ttCONFIDENTIAL_MPT_CONVERT, 85, ConfidentialMPTConvert, ({ {sfMPTokenIssuanceID, soeREQUIRED}, {sfMPTAmount, soeREQUIRED}, - {sfHolderElGamalPublicKey, soeOPTIONAL}, + {sfHolderEncryptionKey, soeOPTIONAL}, {sfHolderEncryptedAmount, soeREQUIRED}, {sfIssuerEncryptedAmount, soeREQUIRED}, {sfAuditorEncryptedAmount, soeOPTIONAL}, diff --git a/include/xrpl/tx/invariants/MPTInvariant.h b/include/xrpl/tx/invariants/MPTInvariant.h index eb341ecdba..23609c96b0 100644 --- a/include/xrpl/tx/invariants/MPTInvariant.h +++ b/include/xrpl/tx/invariants/MPTInvariant.h @@ -37,7 +37,7 @@ public: * Cannot delete if sfIssuerEncryptedBalance exists * Cannot delete if sfConfidentialBalanceInbox and sfConfidentialBalanceSpending exist * - Privacy flag consistency: - * MPToken can only have encrypted fields if lsfMPTCanPrivacy is set on + * MPToken can only have encrypted fields if lsfMPTCanConfidentialAmount is set on * issuance. * - Encrypted field existence consistency: * If sfConfidentialBalanceSpending/sfConfidentialBalanceInbox exists, then diff --git a/src/libxrpl/tx/invariants/MPTInvariant.cpp b/src/libxrpl/tx/invariants/MPTInvariant.cpp index 9fff9451d8..432826edf1 100644 --- a/src/libxrpl/tx/invariants/MPTInvariant.cpp +++ b/src/libxrpl/tx/invariants/MPTInvariant.cpp @@ -350,11 +350,11 @@ ValidConfidentialMPToken::finalize( // Privacy flag consistency if (checks.requiresPrivacyFlag) { - if (!issuance->isFlag(lsfMPTCanPrivacy)) + if (!issuance->isFlag(lsfMPTCanConfidentialAmount)) { JLOG(j.fatal()) << "Invariant failed: MPToken has encrypted " "fields but Issuance does not have " - "lsfMPTCanPrivacy set"; + "lsfMPTCanConfidentialAmount set"; return false; } } diff --git a/src/libxrpl/tx/transactors/token/ConfidentialMPTClawback.cpp b/src/libxrpl/tx/transactors/token/ConfidentialMPTClawback.cpp index 46174841fa..8acefb9cfd 100644 --- a/src/libxrpl/tx/transactors/token/ConfidentialMPTClawback.cpp +++ b/src/libxrpl/tx/transactors/token/ConfidentialMPTClawback.cpp @@ -61,7 +61,7 @@ ConfidentialMPTClawback::preclaim(PreclaimContext const& ctx) return tefINTERNAL; // LCOV_EXCL_LINE // Check if issuance has issuer ElGamal public key - if (!sleIssuance->isFieldPresent(sfIssuerElGamalPublicKey)) + if (!sleIssuance->isFieldPresent(sfIssuerEncryptionKey)) return tecNO_PERMISSION; // Check if clawback is allowed @@ -90,7 +90,7 @@ ConfidentialMPTClawback::preclaim(PreclaimContext const& ctx) return verifyClawbackEqualityProof( amount, ctx.tx[sfZKProof], - (*sleIssuance)[sfIssuerElGamalPublicKey], + (*sleIssuance)[sfIssuerEncryptionKey], (*sleHolderMPToken)[sfIssuerEncryptedBalance], contextHash); } @@ -109,8 +109,8 @@ ConfidentialMPTClawback::doApply() auto const clawAmount = ctx_.tx[sfMPTAmount]; - Slice const holderPubKey = (*sleHolderMPToken)[sfHolderElGamalPublicKey]; - Slice const issuerPubKey = (*sleIssuance)[sfIssuerElGamalPublicKey]; + Slice const holderPubKey = (*sleHolderMPToken)[sfHolderEncryptionKey]; + Slice const issuerPubKey = (*sleIssuance)[sfIssuerEncryptionKey]; // After clawback, the balance should be encrypted zero. auto const encZeroForHolder = encryptCanonicalZeroAmount(holderPubKey, holder, mptIssuanceID); @@ -131,10 +131,10 @@ ConfidentialMPTClawback::doApply() { // Sanity check: the issuance must have an auditor public key if // auditing is enabled. - if (!sleIssuance->isFieldPresent(sfAuditorElGamalPublicKey)) + if (!sleIssuance->isFieldPresent(sfAuditorEncryptionKey)) return tecINTERNAL; // LCOV_EXCL_LINE - Slice const auditorPubKey = (*sleIssuance)[sfAuditorElGamalPublicKey]; + Slice const auditorPubKey = (*sleIssuance)[sfAuditorEncryptionKey]; auto encZeroForAuditor = encryptCanonicalZeroAmount(auditorPubKey, holder, mptIssuanceID); diff --git a/src/libxrpl/tx/transactors/token/ConfidentialMPTConvert.cpp b/src/libxrpl/tx/transactors/token/ConfidentialMPTConvert.cpp index 4b86b34bb4..61960a5326 100644 --- a/src/libxrpl/tx/transactors/token/ConfidentialMPTConvert.cpp +++ b/src/libxrpl/tx/transactors/token/ConfidentialMPTConvert.cpp @@ -25,9 +25,9 @@ ConfidentialMPTConvert::preflight(PreflightContext const& ctx) if (ctx.tx[sfBlindingFactor].size() != ecBlindingFactorLength) return temMALFORMED; - if (ctx.tx.isFieldPresent(sfHolderElGamalPublicKey)) + if (ctx.tx.isFieldPresent(sfHolderEncryptionKey)) { - if (!isValidCompressedECPoint(ctx.tx[sfHolderElGamalPublicKey])) + if (!isValidCompressedECPoint(ctx.tx[sfHolderEncryptionKey])) return temMALFORMED; // proof of knowledge of the secret key corresponding to the provided @@ -66,7 +66,7 @@ ConfidentialMPTConvert::preclaim(PreclaimContext const& ctx) if (!sleIssuance) return tecOBJECT_NOT_FOUND; - if (!sleIssuance->isFlag(lsfMPTCanPrivacy)) + if (!sleIssuance->isFlag(lsfMPTCanConfidentialAmount)) return tecNO_PERMISSION; // already checked in preflight, but should also check that issuer on the @@ -75,11 +75,11 @@ ConfidentialMPTConvert::preclaim(PreclaimContext const& ctx) return tefINTERNAL; // LCOV_EXCL_LINE // issuer has not uploaded their pub key yet - if (!sleIssuance->isFieldPresent(sfIssuerElGamalPublicKey)) + if (!sleIssuance->isFieldPresent(sfIssuerEncryptionKey)) return tecNO_PERMISSION; bool const hasAuditor = ctx.tx.isFieldPresent(sfAuditorEncryptedAmount); - bool const requiresAuditor = sleIssuance->isFieldPresent(sfAuditorElGamalPublicKey); + bool const requiresAuditor = sleIssuance->isFieldPresent(sfAuditorEncryptionKey); // tx must include auditor ciphertext if the issuance has enabled // auditing, and must not include it if auditing is not enabled @@ -104,8 +104,8 @@ ConfidentialMPTConvert::preclaim(PreclaimContext const& ctx) return tecINSUFFICIENT_FUNDS; } - auto const hasHolderKeyOnLedger = sleMptoken->isFieldPresent(sfHolderElGamalPublicKey); - auto const hasHolderKeyInTx = ctx.tx.isFieldPresent(sfHolderElGamalPublicKey); + auto const hasHolderKeyOnLedger = sleMptoken->isFieldPresent(sfHolderEncryptionKey); + auto const hasHolderKeyInTx = ctx.tx.isFieldPresent(sfHolderEncryptionKey); // must have pk to convert if (!hasHolderKeyOnLedger && !hasHolderKeyInTx) @@ -118,7 +118,7 @@ ConfidentialMPTConvert::preclaim(PreclaimContext const& ctx) Slice holderPubKey; if (hasHolderKeyInTx) { - holderPubKey = ctx.tx[sfHolderElGamalPublicKey]; + holderPubKey = ctx.tx[sfHolderEncryptionKey]; auto const contextHash = getConvertContextHash(account, issuanceID, ctx.tx.getSeqProxy().value()); @@ -131,7 +131,7 @@ ConfidentialMPTConvert::preclaim(PreclaimContext const& ctx) } else { - holderPubKey = (*sleMptoken)[sfHolderElGamalPublicKey]; + holderPubKey = (*sleMptoken)[sfHolderEncryptionKey]; } std::optional auditor; @@ -139,14 +139,14 @@ ConfidentialMPTConvert::preclaim(PreclaimContext const& ctx) { auditor.emplace( ConfidentialRecipient{ - (*sleIssuance)[sfAuditorElGamalPublicKey], ctx.tx[sfAuditorEncryptedAmount]}); + (*sleIssuance)[sfAuditorEncryptionKey], ctx.tx[sfAuditorEncryptedAmount]}); } return verifyRevealedAmount( amount, ctx.tx[sfBlindingFactor], {holderPubKey, ctx.tx[sfHolderEncryptedAmount]}, - {(*sleIssuance)[sfIssuerElGamalPublicKey], ctx.tx[sfIssuerEncryptedAmount]}, + {(*sleIssuance)[sfIssuerEncryptionKey], ctx.tx[sfIssuerEncryptedAmount]}, auditor); } @@ -166,8 +166,8 @@ ConfidentialMPTConvert::doApply() auto const amtToConvert = ctx_.tx[sfMPTAmount]; auto const amt = (*sleMptoken)[~sfMPTAmount].value_or(0); - if (ctx_.tx.isFieldPresent(sfHolderElGamalPublicKey)) - (*sleMptoken)[sfHolderElGamalPublicKey] = ctx_.tx[sfHolderElGamalPublicKey]; + if (ctx_.tx.isFieldPresent(sfHolderEncryptionKey)) + (*sleMptoken)[sfHolderEncryptionKey] = ctx_.tx[sfHolderEncryptionKey]; // Converting decreases regular balance and increases confidential outstanding. // The confidential outstanding tracks total tokens in confidential form globally. @@ -231,7 +231,7 @@ ConfidentialMPTConvert::doApply() // Spending balance starts at zero. Must use canonical zero encryption // (deterministic ciphertext) so the ledger state is reproducible. auto zeroBalance = encryptCanonicalZeroAmount( - (*sleMptoken)[sfHolderElGamalPublicKey], account_, mptIssuanceID); + (*sleMptoken)[sfHolderEncryptionKey], account_, mptIssuanceID); if (!zeroBalance) return tecINTERNAL; // LCOV_EXCL_LINE diff --git a/src/libxrpl/tx/transactors/token/ConfidentialMPTConvertBack.cpp b/src/libxrpl/tx/transactors/token/ConfidentialMPTConvertBack.cpp index 6776a89c17..38b2dab6d1 100644 --- a/src/libxrpl/tx/transactors/token/ConfidentialMPTConvertBack.cpp +++ b/src/libxrpl/tx/transactors/token/ConfidentialMPTConvertBack.cpp @@ -61,14 +61,14 @@ verifyProofs( std::shared_ptr const& issuance, std::shared_ptr const& mptoken) { - if (!mptoken->isFieldPresent(sfHolderElGamalPublicKey)) + if (!mptoken->isFieldPresent(sfHolderEncryptionKey)) return tecINTERNAL; // LCOV_EXCL_LINE auto const mptIssuanceID = tx[sfMPTokenIssuanceID]; auto const account = tx[sfAccount]; auto const amount = tx[sfMPTAmount]; auto const blindingFactor = tx[sfBlindingFactor]; - auto const holderPubKey = (*mptoken)[sfHolderElGamalPublicKey]; + auto const holderPubKey = (*mptoken)[sfHolderEncryptionKey]; auto const contextHash = getConvertBackContextHash( account, @@ -78,12 +78,12 @@ verifyProofs( // Prepare Auditor Info std::optional auditor; - bool const hasAuditor = issuance->isFieldPresent(sfAuditorElGamalPublicKey); + bool const hasAuditor = issuance->isFieldPresent(sfAuditorEncryptionKey); if (hasAuditor) { auditor.emplace( ConfidentialRecipient{ - (*issuance)[sfAuditorElGamalPublicKey], tx[sfAuditorEncryptedAmount]}); + (*issuance)[sfAuditorEncryptionKey], tx[sfAuditorEncryptedAmount]}); } // Run all verifications before returning any error to prevent timing attacks @@ -95,7 +95,7 @@ verifyProofs( amount, blindingFactor, {holderPubKey, tx[sfHolderEncryptedAmount]}, - {(*issuance)[sfIssuerElGamalPublicKey], tx[sfIssuerEncryptedAmount]}, + {(*issuance)[sfIssuerEncryptionKey], tx[sfIssuerEncryptedAmount]}, auditor); !isTesSuccess(ter)) { @@ -176,11 +176,11 @@ ConfidentialMPTConvertBack::preclaim(PreclaimContext const& ctx) if (!sleIssuance) return tecOBJECT_NOT_FOUND; - if (!sleIssuance->isFlag(lsfMPTCanPrivacy)) + if (!sleIssuance->isFlag(lsfMPTCanConfidentialAmount)) return tecNO_PERMISSION; bool const hasAuditor = ctx.tx.isFieldPresent(sfAuditorEncryptedAmount); - bool const requiresAuditor = sleIssuance->isFieldPresent(sfAuditorElGamalPublicKey); + bool const requiresAuditor = sleIssuance->isFieldPresent(sfAuditorEncryptionKey); // tx must include auditor ciphertext if the issuance has enabled // auditing @@ -202,7 +202,7 @@ ConfidentialMPTConvertBack::preclaim(PreclaimContext const& ctx) return tecOBJECT_NOT_FOUND; if (!sleMptoken->isFieldPresent(sfConfidentialBalanceSpending) || - !sleMptoken->isFieldPresent(sfHolderElGamalPublicKey)) + !sleMptoken->isFieldPresent(sfHolderEncryptionKey)) { return tecNO_PERMISSION; } diff --git a/src/libxrpl/tx/transactors/token/ConfidentialMPTMergeInbox.cpp b/src/libxrpl/tx/transactors/token/ConfidentialMPTMergeInbox.cpp index f69191ae07..33f8f2dd54 100644 --- a/src/libxrpl/tx/transactors/token/ConfidentialMPTMergeInbox.cpp +++ b/src/libxrpl/tx/transactors/token/ConfidentialMPTMergeInbox.cpp @@ -28,7 +28,7 @@ ConfidentialMPTMergeInbox::preclaim(PreclaimContext const& ctx) if (!sleIssuance) return tecOBJECT_NOT_FOUND; - if (!sleIssuance->isFlag(lsfMPTCanPrivacy)) + if (!sleIssuance->isFlag(lsfMPTCanConfidentialAmount)) return tecNO_PERMISSION; // already checked in preflight, but should also check that issuer on the @@ -43,7 +43,7 @@ ConfidentialMPTMergeInbox::preclaim(PreclaimContext const& ctx) if (!sleMptoken->isFieldPresent(sfConfidentialBalanceInbox) || !sleMptoken->isFieldPresent(sfConfidentialBalanceSpending) || - !sleMptoken->isFieldPresent(sfHolderElGamalPublicKey)) + !sleMptoken->isFieldPresent(sfHolderEncryptionKey)) return tecNO_PERMISSION; return tesSUCCESS; @@ -60,7 +60,7 @@ ConfidentialMPTMergeInbox::doApply() // sanity check if (!sleMptoken->isFieldPresent(sfConfidentialBalanceSpending) || !sleMptoken->isFieldPresent(sfConfidentialBalanceInbox) || - !sleMptoken->isFieldPresent(sfHolderElGamalPublicKey)) + !sleMptoken->isFieldPresent(sfHolderEncryptionKey)) { return tecINTERNAL; // LCOV_EXCL_LINE } @@ -77,8 +77,8 @@ ConfidentialMPTMergeInbox::doApply() // Reset inbox to encrypted zero. Must use canonical zero encryption // (deterministic ciphertext) so the ledger state is reproducible. - auto zeroEncryption = encryptCanonicalZeroAmount( - (*sleMptoken)[sfHolderElGamalPublicKey], account_, mptIssuanceID); + auto zeroEncryption = + encryptCanonicalZeroAmount((*sleMptoken)[sfHolderEncryptionKey], account_, mptIssuanceID); if (!zeroEncryption) return tecINTERNAL; // LCOV_EXCL_LINE diff --git a/src/libxrpl/tx/transactors/token/ConfidentialMPTSend.cpp b/src/libxrpl/tx/transactors/token/ConfidentialMPTSend.cpp index d89b8959d5..07617f99af 100644 --- a/src/libxrpl/tx/transactors/token/ConfidentialMPTSend.cpp +++ b/src/libxrpl/tx/transactors/token/ConfidentialMPTSend.cpp @@ -126,16 +126,15 @@ verifySendProofs( recipients.reserve(recipientCount); recipients.push_back( - {(*sleSenderMPToken)[sfHolderElGamalPublicKey], ctx.tx[sfSenderEncryptedAmount]}); + {(*sleSenderMPToken)[sfHolderEncryptionKey], ctx.tx[sfSenderEncryptedAmount]}); recipients.push_back( - {(*sleDestinationMPToken)[sfHolderElGamalPublicKey], ctx.tx[sfDestinationEncryptedAmount]}); - recipients.push_back( - {(*sleIssuance)[sfIssuerElGamalPublicKey], ctx.tx[sfIssuerEncryptedAmount]}); + {(*sleDestinationMPToken)[sfHolderEncryptionKey], ctx.tx[sfDestinationEncryptedAmount]}); + recipients.push_back({(*sleIssuance)[sfIssuerEncryptionKey], ctx.tx[sfIssuerEncryptedAmount]}); if (hasAuditor) { recipients.push_back( - {(*sleIssuance)[sfAuditorElGamalPublicKey], ctx.tx[sfAuditorEncryptedAmount]}); + {(*sleIssuance)[sfAuditorEncryptionKey], ctx.tx[sfAuditorEncryptedAmount]}); } // Prepare the context hash @@ -162,7 +161,7 @@ verifySendProofs( if (auto const ter = verifyAmountPcmLinkage( amountLinkageProof, ctx.tx[sfSenderEncryptedAmount], - (*sleSenderMPToken)[sfHolderElGamalPublicKey], + (*sleSenderMPToken)[sfHolderEncryptionKey], ctx.tx[sfAmountCommitment], contextHash); !isTesSuccess(ter)) @@ -174,7 +173,7 @@ verifySendProofs( if (auto const ter = verifyBalancePcmLinkage( balanceLinkageProof, (*sleSenderMPToken)[sfConfidentialBalanceSpending], - (*sleSenderMPToken)[sfHolderElGamalPublicKey], + (*sleSenderMPToken)[sfHolderEncryptionKey], ctx.tx[sfBalanceCommitment], contextHash); !isTesSuccess(ter)) @@ -242,15 +241,15 @@ ConfidentialMPTSend::preclaim(PreclaimContext const& ctx) return tecNO_AUTH; // Check if issuance allows confidential transfer - if (!sleIssuance->isFlag(lsfMPTCanPrivacy)) + if (!sleIssuance->isFlag(lsfMPTCanConfidentialAmount)) return tecNO_PERMISSION; // Check if issuance has issuer ElGamal public key - if (!sleIssuance->isFieldPresent(sfIssuerElGamalPublicKey)) + if (!sleIssuance->isFieldPresent(sfIssuerEncryptionKey)) return tecNO_PERMISSION; bool const hasAuditor = ctx.tx.isFieldPresent(sfAuditorEncryptedAmount); - bool const requiresAuditor = sleIssuance->isFieldPresent(sfAuditorElGamalPublicKey); + bool const requiresAuditor = sleIssuance->isFieldPresent(sfAuditorEncryptionKey); // Tx must include auditor ciphertext if the issuance has enabled // auditing, and must not include it if auditing is not enabled @@ -267,7 +266,7 @@ ConfidentialMPTSend::preclaim(PreclaimContext const& ctx) return tecOBJECT_NOT_FOUND; // Check sender's MPToken has necessary fields for confidential send - if (!sleSenderMPToken->isFieldPresent(sfHolderElGamalPublicKey) || + if (!sleSenderMPToken->isFieldPresent(sfHolderEncryptionKey) || !sleSenderMPToken->isFieldPresent(sfConfidentialBalanceSpending) || !sleSenderMPToken->isFieldPresent(sfIssuerEncryptedBalance)) return tecNO_PERMISSION; @@ -283,7 +282,7 @@ ConfidentialMPTSend::preclaim(PreclaimContext const& ctx) return tecOBJECT_NOT_FOUND; // Check destination's MPToken has necessary fields for confidential send - if (!sleDestinationMPToken->isFieldPresent(sfHolderElGamalPublicKey) || + if (!sleDestinationMPToken->isFieldPresent(sfHolderEncryptionKey) || !sleDestinationMPToken->isFieldPresent(sfConfidentialBalanceInbox) || !sleDestinationMPToken->isFieldPresent(sfIssuerEncryptedBalance)) return tecNO_PERMISSION; diff --git a/src/libxrpl/tx/transactors/token/MPTokenIssuanceCreate.cpp b/src/libxrpl/tx/transactors/token/MPTokenIssuanceCreate.cpp index 676e11ec82..051816fb0a 100644 --- a/src/libxrpl/tx/transactors/token/MPTokenIssuanceCreate.cpp +++ b/src/libxrpl/tx/transactors/token/MPTokenIssuanceCreate.cpp @@ -16,12 +16,13 @@ MPTokenIssuanceCreate::checkExtraFeatures(PreflightContext const& ctx) if (ctx.tx.isFieldPresent(sfMutableFlags) && !ctx.rules.enabled(featureDynamicMPT)) return false; - if (ctx.tx.isFlag(tfMPTCanPrivacy) && !ctx.rules.enabled(featureConfidentialTransfer)) + if (ctx.tx.isFlag(tfMPTCanConfidentialAmount) && + !ctx.rules.enabled(featureConfidentialTransfer)) return false; - // can not set tmfMPTCannotMutatePrivacy without featureConfidentialTransfer + // can not set tmfMPTCannotMutateCanConfidentialAmount without featureConfidentialTransfer auto const mutableFlags = ctx.tx[~sfMutableFlags]; - if (mutableFlags && (*mutableFlags & tmfMPTCannotMutatePrivacy) && + if (mutableFlags && (*mutableFlags & tmfMPTCannotMutateCanConfidentialAmount) && !ctx.rules.enabled(featureConfidentialTransfer)) return false; diff --git a/src/libxrpl/tx/transactors/token/MPTokenIssuanceSet.cpp b/src/libxrpl/tx/transactors/token/MPTokenIssuanceSet.cpp index 27c01342c0..ac1ba58530 100644 --- a/src/libxrpl/tx/transactors/token/MPTokenIssuanceSet.cpp +++ b/src/libxrpl/tx/transactors/token/MPTokenIssuanceSet.cpp @@ -40,7 +40,11 @@ static constexpr std::array mptMutabilityFlags = { {tmfMPTSetCanTrade, tmfMPTClearCanTrade, lsmfMPTCanMutateCanTrade, lsfMPTCanTrade}, {tmfMPTSetCanTransfer, tmfMPTClearCanTransfer, lsmfMPTCanMutateCanTransfer, lsfMPTCanTransfer}, {tmfMPTSetCanClawback, tmfMPTClearCanClawback, lsmfMPTCanMutateCanClawback, lsfMPTCanClawback}, - {tmfMPTSetPrivacy, tmfMPTClearPrivacy, lsmfMPTCannotMutatePrivacy, lsfMPTCanPrivacy, true}}}; + {tmfMPTSetCanConfidentialAmount, + tmfMPTClearCanConfidentialAmount, + lsmfMPTCannotMutateCanConfidentialAmount, + lsfMPTCanConfidentialAmount, + true}}}; NotTEC MPTokenIssuanceSet::preflight(PreflightContext const& ctx) @@ -49,12 +53,12 @@ MPTokenIssuanceSet::preflight(PreflightContext const& ctx) auto const metadata = ctx.tx[~sfMPTokenMetadata]; auto const transferFee = ctx.tx[~sfTransferFee]; auto const isMutate = mutableFlags || metadata || transferFee; - auto const hasIssuerElGamalKey = ctx.tx.isFieldPresent(sfIssuerElGamalPublicKey); - auto const hasAuditorElGamalKey = ctx.tx.isFieldPresent(sfAuditorElGamalPublicKey); + auto const hasIssuerElGamalKey = ctx.tx.isFieldPresent(sfIssuerEncryptionKey); + auto const hasAuditorElGamalKey = ctx.tx.isFieldPresent(sfAuditorEncryptionKey); auto const txFlags = ctx.tx.getFlags(); - auto const mutatePrivacy = - mutableFlags && ((*mutableFlags & (tmfMPTSetPrivacy | tmfMPTClearPrivacy))); + auto const mutatePrivacy = mutableFlags && + ((*mutableFlags & (tmfMPTSetCanConfidentialAmount | tmfMPTClearCanConfidentialAmount))); auto const hasDomain = ctx.tx.isFieldPresent(sfDomainID); auto const hasHolder = ctx.tx.isFieldPresent(sfHolder); @@ -133,10 +137,10 @@ MPTokenIssuanceSet::preflight(PreflightContext const& ctx) if (hasAuditorElGamalKey && !hasIssuerElGamalKey) return temMALFORMED; - if (hasIssuerElGamalKey && !isValidCompressedECPoint(ctx.tx[sfIssuerElGamalPublicKey])) + if (hasIssuerElGamalKey && !isValidCompressedECPoint(ctx.tx[sfIssuerEncryptionKey])) return temMALFORMED; - if (hasAuditorElGamalKey && !isValidCompressedECPoint(ctx.tx[sfAuditorElGamalPublicKey])) + if (hasAuditorElGamalKey && !isValidCompressedECPoint(ctx.tx[sfAuditorEncryptionKey])) return temMALFORMED; return tesSUCCESS; @@ -244,13 +248,14 @@ MPTokenIssuanceSet::preclaim(PreclaimContext const& ctx) })) return tecNO_PERMISSION; - if ((*mutableFlags & tmfMPTSetPrivacy) || (*mutableFlags & tmfMPTClearPrivacy)) + if ((*mutableFlags & tmfMPTSetCanConfidentialAmount) || + (*mutableFlags & tmfMPTClearCanConfidentialAmount)) { std::uint64_t const confidentialOA = (*sleMptIssuance)[~sfConfidentialOutstandingAmount].value_or(0); // If there's any confidential outstanding amount, disallow toggling - // the lsfMPTCanPrivacy flag + // the lsfMPTCanConfidentialAmount flag if (confidentialOA > 0) return tecNO_PERMISSION; } @@ -273,34 +278,34 @@ MPTokenIssuanceSet::preclaim(PreclaimContext const& ctx) } // cannot update issuer public key - if (ctx.tx.isFieldPresent(sfIssuerElGamalPublicKey) && - sleMptIssuance->isFieldPresent(sfIssuerElGamalPublicKey)) + if (ctx.tx.isFieldPresent(sfIssuerEncryptionKey) && + sleMptIssuance->isFieldPresent(sfIssuerEncryptionKey)) { return tecNO_PERMISSION; } // cannot update auditor public key - if (ctx.tx.isFieldPresent(sfAuditorElGamalPublicKey) && - sleMptIssuance->isFieldPresent(sfAuditorElGamalPublicKey)) + if (ctx.tx.isFieldPresent(sfAuditorEncryptionKey) && + sleMptIssuance->isFieldPresent(sfAuditorEncryptionKey)) { return tecNO_PERMISSION; // LCOV_EXCL_LINE } - if (ctx.tx.isFieldPresent(sfIssuerElGamalPublicKey) && - !sleMptIssuance->isFlag(lsfMPTCanPrivacy)) + if (ctx.tx.isFieldPresent(sfIssuerEncryptionKey) && + !sleMptIssuance->isFlag(lsfMPTCanConfidentialAmount)) { return tecNO_PERMISSION; } - if (ctx.tx.isFieldPresent(sfAuditorElGamalPublicKey) && - !sleMptIssuance->isFlag(lsfMPTCanPrivacy)) + if (ctx.tx.isFieldPresent(sfAuditorEncryptionKey) && + !sleMptIssuance->isFlag(lsfMPTCanConfidentialAmount)) { return tecNO_PERMISSION; } // cannot upload key if there's circulating supply of COA - if ((ctx.tx.isFieldPresent(sfIssuerElGamalPublicKey) || - ctx.tx.isFieldPresent(sfAuditorElGamalPublicKey)) && + if ((ctx.tx.isFieldPresent(sfIssuerEncryptionKey) || + ctx.tx.isFieldPresent(sfAuditorEncryptionKey)) && sleMptIssuance->isFieldPresent(sfConfidentialOutstandingAmount)) { return tecNO_PERMISSION; // LCOV_EXCL_LINE @@ -393,24 +398,24 @@ MPTokenIssuanceSet::doApply() } } - if (auto const pubKey = ctx_.tx[~sfIssuerElGamalPublicKey]) + if (auto const pubKey = ctx_.tx[~sfIssuerEncryptionKey]) { // This is enforced in preflight. XRPL_ASSERT( sle->getType() == ltMPTOKEN_ISSUANCE, "MPTokenIssuanceSet::doApply : modifying MPTokenIssuance"); - sle->setFieldVL(sfIssuerElGamalPublicKey, *pubKey); + sle->setFieldVL(sfIssuerEncryptionKey, *pubKey); } - if (auto const pubKey = ctx_.tx[~sfAuditorElGamalPublicKey]) + if (auto const pubKey = ctx_.tx[~sfAuditorEncryptionKey]) { // This is enforced in preflight. XRPL_ASSERT( sle->getType() == ltMPTOKEN_ISSUANCE, "MPTokenIssuanceSet::doApply : modifying MPTokenIssuance"); - sle->setFieldVL(sfAuditorElGamalPublicKey, *pubKey); + sle->setFieldVL(sfAuditorEncryptionKey, *pubKey); } view().update(sle); diff --git a/src/test/app/ConfidentialTransfer_test.cpp b/src/test/app/ConfidentialTransfer_test.cpp index 4325e502f6..ad467484a3 100644 --- a/src/test/app/ConfidentialTransfer_test.cpp +++ b/src/test/app/ConfidentialTransfer_test.cpp @@ -103,7 +103,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite mptAlice.create({ .ownerCount = 1, - .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanPrivacy, + .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanConfidentialAmount, }); mptAlice.authorize({ @@ -148,7 +148,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite mptAlice.create({ .ownerCount = 1, - .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanPrivacy, + .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanConfidentialAmount, }); mptAlice.authorize({ @@ -183,7 +183,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite mptAlice.create({ .ownerCount = 1, - .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanPrivacy, + .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanConfidentialAmount, }); mptAlice.authorize({ @@ -246,7 +246,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite mptAlice.create({ .ownerCount = 1, - .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanPrivacy, + .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanConfidentialAmount, }); mptAlice.authorize({ @@ -294,7 +294,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite MPTTester mptAlice(env, alice); mptAlice.create({ - .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanPrivacy, + .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanConfidentialAmount, }); mptAlice.generateKeyPair(alice); @@ -464,7 +464,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite mptAlice.create({ .ownerCount = 1, - .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanPrivacy, + .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanConfidentialAmount, }); mptAlice.authorize({ @@ -513,7 +513,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite mptAlice.create({ .ownerCount = 1, - .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanPrivacy, + .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanConfidentialAmount, }); mptAlice.authorize({ @@ -585,7 +585,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite mptAlice.create({ .ownerCount = 1, - .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanPrivacy, + .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanConfidentialAmount, }); mptAlice.authorize({ @@ -657,7 +657,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite Account const bob("bob"); MPTTester mptAlice(env, alice, {.holders = {bob}}); - // no tfMPTCanPrivacy flag enabled + // no tfMPTCanConfidentialAmount flag enabled mptAlice.create({ .ownerCount = 1, .flags = tfMPTCanTransfer | tfMPTCanLock, @@ -685,7 +685,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite testcase("Convert preclaim"); using namespace test::jtx; - // tfMPTCanPrivacy is not set on issuance + // tfMPTCanConfidentialAmount is not set on issuance { Env env{*this, features}; Account const alice("alice"); @@ -713,7 +713,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite }); } - // issuer has not uploaded their sfIssuerElGamalPublicKey + // issuer has not uploaded their sfIssuerEncryptionKey { Env env{*this, features}; Account const alice("alice"); @@ -722,7 +722,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite mptAlice.create({ .ownerCount = 1, - .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanPrivacy, + .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanConfidentialAmount, }); mptAlice.authorize({ @@ -750,7 +750,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite mptAlice.create({ .ownerCount = 1, - .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanPrivacy, + .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanConfidentialAmount, }); mptAlice.authorize({ @@ -780,7 +780,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite mptAlice.create({ .ownerCount = 1, - .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanPrivacy, + .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanConfidentialAmount, }); mptAlice.generateKeyPair(alice); @@ -805,7 +805,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite mptAlice.create({ .ownerCount = 1, - .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanPrivacy, + .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanConfidentialAmount, }); mptAlice.authorize({ @@ -844,7 +844,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite mptAlice.create({ .ownerCount = 1, - .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanPrivacy, + .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanConfidentialAmount, }); mptAlice.authorize({ @@ -875,7 +875,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite mptAlice.create({ .ownerCount = 1, - .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanPrivacy, + .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanConfidentialAmount, }); mptAlice.authorize({ @@ -909,7 +909,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite mptAlice.create({ .ownerCount = 1, - .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanPrivacy, + .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanConfidentialAmount, }); mptAlice.authorize({ @@ -958,7 +958,8 @@ class ConfidentialTransfer_test : public beast::unit_test::suite mptAlice.create({ .ownerCount = 1, - .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTRequireAuth | tfMPTCanPrivacy, + .flags = + tfMPTCanTransfer | tfMPTCanLock | tfMPTRequireAuth | tfMPTCanConfidentialAmount, }); mptAlice.authorize({ @@ -1020,7 +1021,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite mptAlice.create({ .ownerCount = 1, - .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanPrivacy, + .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanConfidentialAmount, }); mptAlice.authorize({ @@ -1057,7 +1058,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite mptAlice.create({ .ownerCount = 1, - .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanPrivacy, + .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanConfidentialAmount, }); mptAlice.authorize({ @@ -1096,7 +1097,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite }); mptAlice.create({ - .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanPrivacy, + .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanConfidentialAmount, }); mptAlice.authorize({ @@ -1131,7 +1132,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite mptAlice.create({ .ownerCount = 1, - .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanPrivacy, + .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanConfidentialAmount, }); mptAlice.authorize({ @@ -1166,7 +1167,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite mptAlice.create({ .ownerCount = 1, - .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanPrivacy, + .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanConfidentialAmount, }); mptAlice.authorize({ @@ -1203,7 +1204,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite mptAlice.create({ .ownerCount = 1, - .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanPrivacy, + .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanConfidentialAmount, }); mptAlice.authorize({ @@ -1252,7 +1253,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite mptAlice.create({ .ownerCount = 1, - .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanPrivacy, + .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanConfidentialAmount, }); mptAlice.authorize({ @@ -1271,7 +1272,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite }); } - // tfMPTCanPrivacy is not set on issuance + // tfMPTCanConfidentialAmount is not set on issuance { Env env{*this, features}; Account const alice("alice"); @@ -1306,7 +1307,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite mptAlice.create({ .ownerCount = 1, - .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanPrivacy, + .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanConfidentialAmount, }); mptAlice.generateKeyPair(alice); @@ -1328,7 +1329,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite mptAlice.create({ .ownerCount = 1, - .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanPrivacy, + .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanConfidentialAmount, }); mptAlice.authorize({ @@ -1362,7 +1363,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite mptAlice.create({ .ownerCount = 1, - .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanPrivacy, + .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanConfidentialAmount, }); mptAlice.authorize({ @@ -1443,7 +1444,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite mptAlice.create({ .ownerCount = 1, - .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanPrivacy, + .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanConfidentialAmount, }); mptAlice.authorize({ @@ -1550,7 +1551,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite mptAlice.create({ .ownerCount = 1, - .flags = tfMPTCanTransfer | tfMPTCanPrivacy, + .flags = tfMPTCanTransfer | tfMPTCanConfidentialAmount, }); mptAlice.authorize({ @@ -1730,7 +1731,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite mptAlice.create({ .ownerCount = 1, - .flags = tfMPTCanTransfer | tfMPTCanPrivacy, + .flags = tfMPTCanTransfer | tfMPTCanConfidentialAmount, }); mptAlice.authorize({ @@ -1805,7 +1806,8 @@ class ConfidentialTransfer_test : public beast::unit_test::suite // authorize bob, carol, dave (not eve) mptAlice.create({ - .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTRequireAuth | tfMPTCanPrivacy, + .flags = + tfMPTCanTransfer | tfMPTCanLock | tfMPTRequireAuth | tfMPTCanConfidentialAmount, }); mptAlice.authorize({ .account = bob, @@ -1870,7 +1872,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite MPTTester mptAlice(env, alice, {.holders = {bob, carol}}); mptAlice.create({ - .flags = tfMPTCanTransfer | tfMPTCanPrivacy, + .flags = tfMPTCanTransfer | tfMPTCanConfidentialAmount, }); mptAlice.authorize({ .account = bob, @@ -2106,7 +2108,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite mptAlice.create({ .ownerCount = 1, - .flags = tfMPTCanLock | tfMPTCanPrivacy, + .flags = tfMPTCanLock | tfMPTCanConfidentialAmount, }); mptAlice.authorize({ @@ -2169,7 +2171,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite mptAlice.create({ .ownerCount = 1, - .flags = tfMPTCanLock | tfMPTCanPrivacy | tfMPTCanTransfer, + .flags = tfMPTCanLock | tfMPTCanConfidentialAmount | tfMPTCanTransfer, }); mptAlice.authorize({ @@ -2248,7 +2250,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite mptAlice.create({ .ownerCount = 1, - .flags = tfMPTCanTransfer | tfMPTCanPrivacy, + .flags = tfMPTCanTransfer | tfMPTCanConfidentialAmount, }); mptAlice.authorize({ @@ -2308,7 +2310,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite mptAlice.create({ .ownerCount = 1, - .flags = tfMPTCanLock | tfMPTCanPrivacy | tfMPTCanTransfer, + .flags = tfMPTCanLock | tfMPTCanConfidentialAmount | tfMPTCanTransfer, }); mptAlice.authorize({ .account = bob, @@ -2417,7 +2419,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite mptAlice.create({ .ownerCount = 1, - .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanPrivacy, + .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanConfidentialAmount, }); mptAlice.authorize({ @@ -2454,7 +2456,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite mptAlice.create({ .ownerCount = 1, - .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanPrivacy, + .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanConfidentialAmount, }); mptAlice.authorize({ @@ -2501,7 +2503,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite mptAlice.create({ .ownerCount = 1, - .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanPrivacy, + .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanConfidentialAmount, }); mptAlice.authorize({ @@ -2535,7 +2537,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite mptAlice.create({ .ownerCount = 1, - .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanPrivacy, + .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanConfidentialAmount, }); mptAlice.authorize({ @@ -2570,7 +2572,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite mptAlice.create({ .ownerCount = 1, - .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanPrivacy, + .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanConfidentialAmount, }); mptAlice.authorize({ @@ -2622,7 +2624,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite mptAlice.create({ .ownerCount = 1, - .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanPrivacy, + .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanConfidentialAmount, }); mptAlice.authorize({ @@ -2666,7 +2668,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite mptAlice.create({ .ownerCount = 1, - .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanPrivacy, + .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanConfidentialAmount, }); mptAlice.authorize({ @@ -2708,7 +2710,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite mptAlice.create({ .ownerCount = 1, - .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanPrivacy, + .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanConfidentialAmount, }); mptAlice.authorize({ @@ -2738,7 +2740,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite jv[jss::TransactionType] = jss::ConfidentialMPTConvert; jv[sfMPTokenIssuanceID] = to_string(mptAlice.issuanceID()); jv[sfMPTAmount.jsonName] = std::to_string(maxMPTokenAmount); - jv[sfHolderElGamalPublicKey.jsonName] = strHex(*mptAlice.getPubKey(bob)); + jv[sfHolderEncryptionKey.jsonName] = strHex(*mptAlice.getPubKey(bob)); jv[sfHolderEncryptedAmount.jsonName] = strHex(convertHolderCiphertext); jv[sfIssuerEncryptedAmount.jsonName] = strHex(convertIssuerCiphertext); jv[sfBlindingFactor.jsonName] = strHex(convertBlindingFactor); @@ -2834,7 +2836,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite mptAlice.create({ .ownerCount = 1, - .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanPrivacy, + .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanConfidentialAmount, }); mptAlice.authorize({ @@ -2908,7 +2910,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite mptAlice.create({ .ownerCount = 1, - .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanPrivacy, + .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanConfidentialAmount, }); mptAlice.authorize({ @@ -3040,7 +3042,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite mptAlice.create({ .ownerCount = 1, - .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanPrivacy, + .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanConfidentialAmount, }); mptAlice.authorize({ @@ -3060,7 +3062,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite }); } - // tfMPTCanPrivacy is not set on issuance + // tfMPTCanConfidentialAmount is not set on issuance { Env env{*this, features}; Account const alice("alice"); @@ -3096,7 +3098,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite mptAlice.create({ .ownerCount = 1, - .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanPrivacy, + .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanConfidentialAmount, }); mptAlice.generateKeyPair(alice); @@ -3120,7 +3122,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite mptAlice.create({ .ownerCount = 1, - .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanPrivacy, + .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanConfidentialAmount, }); mptAlice.authorize({ @@ -3151,7 +3153,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite mptAlice.create({ .ownerCount = 1, - .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanPrivacy, + .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanConfidentialAmount, }); mptAlice.authorize({ @@ -3202,7 +3204,8 @@ class ConfidentialTransfer_test : public beast::unit_test::suite mptAlice.create({ .ownerCount = 1, - .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTRequireAuth | tfMPTCanPrivacy, + .flags = + tfMPTCanTransfer | tfMPTCanLock | tfMPTRequireAuth | tfMPTCanConfidentialAmount, }); mptAlice.authorize({ @@ -3285,7 +3288,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite mptAlice.create({ .ownerCount = 1, - .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanPrivacy, + .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanConfidentialAmount, }); mptAlice.authorize({ .account = bob, @@ -3331,7 +3334,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite mptAlice.create({ .ownerCount = 1, - .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanPrivacy, + .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanConfidentialAmount, }); mptAlice.authorize({ .account = bob, @@ -3373,7 +3376,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite }); mptAlice.create({ - .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanPrivacy, + .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanConfidentialAmount, }); mptAlice.authorize({ .account = bob, @@ -3449,7 +3452,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite auto setupMPT = [&](Env& env, MPTTester& mpt) { mpt.create({ .ownerCount = 1, - .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanPrivacy, + .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanConfidentialAmount, }); mpt.authorize({ .account = bob, @@ -3658,7 +3661,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite auto setupBasic = [&](Env& env, MPTTester& mpt) { mpt.create({ .ownerCount = 1, - .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanPrivacy, + .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanConfidentialAmount, }); mpt.authorize({ .account = bob, @@ -3824,7 +3827,8 @@ class ConfidentialTransfer_test : public beast::unit_test::suite MPTTester mptAlice(env, alice, {.holders = {bob, carol, dave}}); mptAlice.create({ - .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanClawback | tfMPTCanPrivacy, + .flags = + tfMPTCanTransfer | tfMPTCanLock | tfMPTCanClawback | tfMPTCanConfidentialAmount, }); mptAlice.authorize({ .account = bob, @@ -3933,7 +3937,8 @@ class ConfidentialTransfer_test : public beast::unit_test::suite }); mptAlice.create({ - .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanClawback | tfMPTCanPrivacy, + .flags = + tfMPTCanTransfer | tfMPTCanLock | tfMPTCanClawback | tfMPTCanConfidentialAmount, }); mptAlice.authorize({ .account = bob, @@ -4063,7 +4068,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite mptAlice.create({ .ownerCount = 1, - .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanPrivacy, + .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanConfidentialAmount, }); mptAlice.authorize({ @@ -4147,7 +4152,8 @@ class ConfidentialTransfer_test : public beast::unit_test::suite MPTTester mptAlice(env, alice, {.holders = {bob, carol, dave}}); mptAlice.create({ - .flags = tfMPTCanTransfer | tfMPTCanClawback | tfMPTRequireAuth | tfMPTCanPrivacy, + .flags = tfMPTCanTransfer | tfMPTCanClawback | tfMPTRequireAuth | + tfMPTCanConfidentialAmount, }); mptAlice.authorize({ .account = bob, @@ -4220,7 +4226,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite MPTTester mptAlice(env, alice, {.holders = {bob}}); mptAlice.create({ - .flags = tfMPTCanTransfer | tfMPTCanPrivacy, + .flags = tfMPTCanTransfer | tfMPTCanConfidentialAmount, }); mptAlice.authorize({ .account = bob, @@ -4243,7 +4249,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite Account const bob("bob"); MPTTester mptAlice(env, alice, {.holders = {bob}}); mptAlice.create({ - .flags = tfMPTCanClawback | tfMPTCanPrivacy, + .flags = tfMPTCanClawback | tfMPTCanConfidentialAmount, }); mptAlice.authorize({ .account = bob, @@ -4265,7 +4271,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite Account const bob("bob"); MPTTester mptAlice(env, alice, {.holders = {bob}}); mptAlice.create({ - .flags = tfMPTCanClawback | tfMPTCanPrivacy, + .flags = tfMPTCanClawback | tfMPTCanConfidentialAmount, }); mptAlice.authorize({ .account = bob, @@ -4295,7 +4301,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite mptAlice.create({ .flags = tfMPTCanTransfer | tfMPTCanClawback | tfMPTRequireAuth | tfMPTCanLock | - tfMPTCanPrivacy, + tfMPTCanConfidentialAmount, }); mptAlice.authorize({ .account = bob, @@ -4410,7 +4416,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite MPTTester mptAlice(env, alice, {.holders = {bob, carol}}); mptAlice.create({ - .flags = tfMPTCanTransfer | tfMPTCanClawback | tfMPTCanPrivacy, + .flags = tfMPTCanTransfer | tfMPTCanClawback | tfMPTCanConfidentialAmount, }); for (auto const& [acct, amt] : {std::pair{bob, 1000}, {carol, 2000}}) @@ -4585,10 +4591,10 @@ class ConfidentialTransfer_test : public beast::unit_test::suite void testMutatePrivacy(FeatureBitset features) { - testcase("mutate lsfMPTCanPrivacy"); + testcase("mutate lsfMPTCanConfidentialAmount"); using namespace test::jtx; - // can not create mpt issuance with tmfMPTCannotMutatePrivacy + // can not create mpt issuance with tmfMPTCannotMutateCanConfidentialAmount // when featureDynamicMPT is disabled { Env env{*this, features - featureDynamicMPT}; @@ -4598,12 +4604,12 @@ class ConfidentialTransfer_test : public beast::unit_test::suite mptAlice.create({ .ownerCount = 0, - .mutableFlags = tmfMPTCannotMutatePrivacy, + .mutableFlags = tmfMPTCannotMutateCanConfidentialAmount, .err = temDISABLED, }); } - // can not create mpt issuance with tmfMPTCannotMutatePrivacy when + // can not create mpt issuance with tmfMPTCannotMutateCanConfidentialAmount when // featureConfidentialTransfer is disabled { Env env{*this, features - featureConfidentialTransfer}; @@ -4613,13 +4619,13 @@ class ConfidentialTransfer_test : public beast::unit_test::suite mptAlice.create({ .ownerCount = 0, - .mutableFlags = tmfMPTCannotMutatePrivacy, + .mutableFlags = tmfMPTCannotMutateCanConfidentialAmount, .err = temDISABLED, }); } - // if lsmfMPTCannotMutatePrivacy is set, can not set/clear - // lsfMPTCanPrivacy + // if lsmfMPTCannotMutateCanConfidentialAmount is set, can not set/clear + // lsfMPTCanConfidentialAmount { Env env{*this, features}; Account const alice("alice"); @@ -4629,23 +4635,23 @@ class ConfidentialTransfer_test : public beast::unit_test::suite mptAlice.create({ .ownerCount = 1, .flags = tfMPTCanTransfer, - .mutableFlags = tmfMPTCannotMutatePrivacy, + .mutableFlags = tmfMPTCannotMutateCanConfidentialAmount, }); mptAlice.set({ .account = alice, - .mutableFlags = tmfMPTSetPrivacy, + .mutableFlags = tmfMPTSetCanConfidentialAmount, .err = tecNO_PERMISSION, }); mptAlice.set({ .account = alice, - .mutableFlags = tmfMPTClearPrivacy, + .mutableFlags = tmfMPTClearCanConfidentialAmount, .err = tecNO_PERMISSION, }); } - // Toggle lsfMPTCanPrivacy + // Toggle lsfMPTCanConfidentialAmount { Env env{*this, features}; Account const alice("alice"); @@ -4654,7 +4660,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite mptAlice.create({ .ownerCount = 1, - .flags = tfMPTCanTransfer | tfMPTCanPrivacy, + .flags = tfMPTCanTransfer | tfMPTCanConfidentialAmount, .mutableFlags = tmfMPTCanMutateCanLock, }); @@ -4699,33 +4705,33 @@ class ConfidentialTransfer_test : public beast::unit_test::suite } }; - // set lsfMPTCanPrivacy, but no effect because lsfMPTCanPrivacy + // set lsfMPTCanConfidentialAmount, but no effect because lsfMPTCanConfidentialAmount // was already set mptAlice.set({ .account = alice, - .mutableFlags = tmfMPTSetPrivacy, + .mutableFlags = tmfMPTSetCanConfidentialAmount, }); verifyToggle(tesSUCCESS, 10); - // clear lsfMPTCanPrivacy + // clear lsfMPTCanConfidentialAmount mptAlice.set({ .account = alice, - .mutableFlags = tmfMPTClearPrivacy, + .mutableFlags = tmfMPTClearCanConfidentialAmount, }); verifyToggle(tecNO_PERMISSION, 10); - // can clear lsfMPTCanPrivacy again but has no effect + // can clear lsfMPTCanConfidentialAmount again but has no effect // for privacy settings mptAlice.set({ .account = alice, - .mutableFlags = tmfMPTClearPrivacy | tmfMPTSetCanLock, + .mutableFlags = tmfMPTClearCanConfidentialAmount | tmfMPTSetCanLock, }); verifyToggle(tecNO_PERMISSION, 20); - // set lsfMPTCanPrivacy again + // set lsfMPTCanConfidentialAmount again mptAlice.set({ .account = alice, - .mutableFlags = tmfMPTSetPrivacy, + .mutableFlags = tmfMPTSetCanConfidentialAmount, }); verifyToggle(tesSUCCESS, 30); } @@ -4738,11 +4744,11 @@ class ConfidentialTransfer_test : public beast::unit_test::suite Account const bob("bob"); MPTTester mptAlice(env, alice, {.holders = {bob}}); - // lsmfMPTCannotMutatePrivacy is false by default, - // so that lsfMPTCanPrivacy can be mutated + // lsmfMPTCannotMutateCanConfidentialAmount is false by default, + // so that lsfMPTCanConfidentialAmount can be mutated mptAlice.create({ .ownerCount = 1, - .flags = tfMPTCanTransfer | tfMPTCanPrivacy, + .flags = tfMPTCanTransfer | tfMPTCanConfidentialAmount, }); mptAlice.authorize({ @@ -4757,16 +4763,16 @@ class ConfidentialTransfer_test : public beast::unit_test::suite // bob convert 50 to confidential mptAlice.convert({.account = bob, .amt = 50, .holderPubKey = mptAlice.getPubKey(bob)}); - // set or clear lsfMPTCanPrivacy should fail because of + // set or clear lsfMPTCanConfidentialAmount should fail because of // confidential outstanding balance mptAlice.set({ .account = alice, - .mutableFlags = tmfMPTSetPrivacy, + .mutableFlags = tmfMPTSetCanConfidentialAmount, .err = tecNO_PERMISSION, }); mptAlice.set({ .account = alice, - .mutableFlags = tmfMPTClearPrivacy, + .mutableFlags = tmfMPTClearCanConfidentialAmount, .err = tecNO_PERMISSION, }); @@ -4781,14 +4787,14 @@ class ConfidentialTransfer_test : public beast::unit_test::suite .amt = 50, }); - // now clear lsfMPTCanPrivacy should succeed, + // now clear lsfMPTCanConfidentialAmount should succeed, // because there's no confidential outstanding balance mptAlice.set({ .account = alice, - .mutableFlags = tmfMPTClearPrivacy, + .mutableFlags = tmfMPTClearCanConfidentialAmount, }); - // bob can not convert because lsfMPTCanPrivacy was cleared + // bob can not convert because lsfMPTCanConfidentialAmount was cleared // successfully mptAlice.convert({ .account = bob, @@ -4797,11 +4803,11 @@ class ConfidentialTransfer_test : public beast::unit_test::suite .err = tecNO_PERMISSION, }); - // can set lsfMPTCanPrivacy again when there's no confidential + // can set lsfMPTCanConfidentialAmount again when there's no confidential // outstanding balance mptAlice.set({ .account = alice, - .mutableFlags = tmfMPTSetPrivacy, + .mutableFlags = tmfMPTSetCanConfidentialAmount, }); mptAlice.convert({ .account = bob, @@ -4824,7 +4830,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite mptAlice.create({ .ownerCount = 1, .holderCount = 0, - .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanPrivacy, + .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanConfidentialAmount, }); mptAlice.authorize({ @@ -5090,7 +5096,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite mptAlice.create({ .ownerCount = 1, .holderCount = 0, - .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanPrivacy, + .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanConfidentialAmount, }); mptAlice.authorize({ @@ -5297,7 +5303,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite mptAlice.create({ .ownerCount = 1, .holderCount = 0, - .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanPrivacy, + .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanConfidentialAmount, }); mptAlice.authorize({ @@ -5456,7 +5462,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite mptAlice.create({ .ownerCount = 1, .holderCount = 0, - .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanPrivacy, + .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanConfidentialAmount, }); mptAlice.authorize({ @@ -5540,7 +5546,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite mptAlice.create({ .ownerCount = 1, .holderCount = 0, - .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanPrivacy, + .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanConfidentialAmount, }); mptAlice.authorize({ @@ -5639,7 +5645,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite mptAlice.create( {.ownerCount = 1, .holderCount = 0, - .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanPrivacy}); + .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanConfidentialAmount}); mptAlice.authorize({.account = bob}); mptAlice.pay(alice, bob, 100); @@ -5733,7 +5739,8 @@ class ConfidentialTransfer_test : public beast::unit_test::suite MPTTester mptAlice(env, alice, {.holders = {bob, carol}}); mptAlice.create( - {.ownerCount = 1, .flags = tfMPTCanLock | tfMPTCanPrivacy | tfMPTCanTransfer}); + {.ownerCount = 1, + .flags = tfMPTCanLock | tfMPTCanConfidentialAmount | tfMPTCanTransfer}); mptAlice.authorize({.account = bob}); mptAlice.authorize({.account = carol}); @@ -5812,7 +5819,7 @@ class ConfidentialTransfer_test : public beast::unit_test::suite mptAlice.create( {.ownerCount = 1, .holderCount = 0, - .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanPrivacy}); + .flags = tfMPTCanTransfer | tfMPTCanLock | tfMPTCanConfidentialAmount}); mptAlice.authorize({.account = bob}); mptAlice.pay(alice, bob, 10); diff --git a/src/test/app/Invariants_test.cpp b/src/test/app/Invariants_test.cpp index c6d3f1ad40..8a43ac8bed 100644 --- a/src/test/app/Invariants_test.cpp +++ b/src/test/app/Invariants_test.cpp @@ -3807,7 +3807,7 @@ class Invariants_test : public beast::unit_test::suite auto const precloseConfidential = [&mptID](Account const& A1, Account const& A2, Env& env) -> bool { MPTTester mpt(env, A1, {.holders = {A2}, .fund = false}); - mpt.create({.flags = tfMPTCanTransfer | tfMPTCanPrivacy}); + mpt.create({.flags = tfMPTCanTransfer | tfMPTCanConfidentialAmount}); mptID = mpt.issuanceID(); mpt.authorize({.account = A2}); @@ -3862,7 +3862,7 @@ class Invariants_test : public beast::unit_test::suite auto const precloseNoPrivacy = [&mptID]( Account const& A1, Account const& A2, Env& env) -> bool { MPTTester mpt(env, A1, {.holders = {A2}, .fund = false}); - // completely omitted the tfMPTCanPrivacy flag here. + // completely omitted the tfMPTCanConfidentialAmount flag here. mpt.create({.flags = tfMPTCanTransfer}); mptID = mpt.issuanceID(); mpt.authorize({.account = A2}); @@ -3871,7 +3871,8 @@ class Invariants_test : public beast::unit_test::suite }; doInvariantCheck( - {"MPToken has encrypted fields but Issuance does not have lsfMPTCanPrivacy set"}, + {"MPToken has encrypted fields but Issuance does not have lsfMPTCanConfidentialAmount " + "set"}, [&mptID](Account const& A1, Account const& A2, ApplyContext& ac) { auto sleToken = ac.view().peek(keylet::mptoken(mptID, A2.id())); if (!sleToken) @@ -3947,7 +3948,7 @@ class Invariants_test : public beast::unit_test::suite auto const precloseOrphan = [&mptID]( Account const& A1, Account const& A2, Env& env) -> bool { MPTTester mpt(env, A1, {.holders = {A2}, .fund = false}); - mpt.create({.flags = tfMPTCanTransfer | tfMPTCanPrivacy}); + mpt.create({.flags = tfMPTCanTransfer | tfMPTCanConfidentialAmount}); mptID = mpt.issuanceID(); mpt.authorize({.account = A2}); diff --git a/src/test/app/MPToken_test.cpp b/src/test/app/MPToken_test.cpp index 7cafaae9bd..b639d4b603 100644 --- a/src/test/app/MPToken_test.cpp +++ b/src/test/app/MPToken_test.cpp @@ -2674,7 +2674,7 @@ class MPToken_test : public beast::unit_test::suite tmfMPTSetCanTrade | tmfMPTClearCanTrade, tmfMPTSetCanTransfer | tmfMPTClearCanTransfer, tmfMPTSetCanClawback | tmfMPTClearCanClawback, - tmfMPTSetPrivacy | tmfMPTClearPrivacy, + tmfMPTSetCanConfidentialAmount | tmfMPTClearCanConfidentialAmount, tmfMPTSetCanLock | tmfMPTClearCanLock | tmfMPTClearCanTrade, tmfMPTSetCanTransfer | tmfMPTClearCanTransfer | tmfMPTSetCanEscrow | tmfMPTClearCanClawback}; diff --git a/src/test/jtx/impl/mpt.cpp b/src/test/jtx/impl/mpt.cpp index dd3afdc79f..5fd7ba4a02 100644 --- a/src/test/jtx/impl/mpt.cpp +++ b/src/test/jtx/impl/mpt.cpp @@ -356,9 +356,9 @@ MPTTester::setJV(MPTSet const& arg) if (arg.metadata) jv[sfMPTokenMetadata] = strHex(*arg.metadata); if (arg.issuerPubKey) - jv[sfIssuerElGamalPublicKey] = strHex(*arg.issuerPubKey); + jv[sfIssuerEncryptionKey] = strHex(*arg.issuerPubKey); if (arg.auditorPubKey) - jv[sfAuditorElGamalPublicKey] = strHex(*arg.auditorPubKey); + jv[sfAuditorEncryptionKey] = strHex(*arg.auditorPubKey); jv[sfTransactionType] = jss::MPTokenIssuanceSet; return jv; @@ -428,10 +428,10 @@ MPTTester::set(MPTSet const& arg) else if (*arg.mutableFlags & tmfMPTClearCanTransfer) flags &= ~lsfMPTCanTransfer; - if (*arg.mutableFlags & tmfMPTSetPrivacy) - flags |= lsfMPTCanPrivacy; - else if (*arg.mutableFlags & tmfMPTClearPrivacy) - flags &= ~lsfMPTCanPrivacy; + if (*arg.mutableFlags & tmfMPTSetCanConfidentialAmount) + flags |= lsfMPTCanConfidentialAmount; + else if (*arg.mutableFlags & tmfMPTClearCanConfidentialAmount) + flags &= ~lsfMPTCanConfidentialAmount; } } env_.require(mptflags(*this, flags, holder)); @@ -452,7 +452,7 @@ MPTTester::set(MPTSet const& arg) if (!issuerPubKey) Throw("MPTTester::set: issuer's pubkey is not set"); - return strHex((*sle)[sfIssuerElGamalPublicKey]) == strHex(*issuerPubKey); + return strHex((*sle)[sfIssuerEncryptionKey]) == strHex(*issuerPubKey); } return false; }); @@ -473,7 +473,7 @@ MPTTester::set(MPTSet const& arg) Throw( "MPTTester::set: auditor's pubkey is not set"); - return strHex((*sle)[sfAuditorElGamalPublicKey]) == strHex(*auditorPubKey); + return strHex((*sle)[sfAuditorEncryptionKey]) == strHex(*auditorPubKey); } return false; }); @@ -712,7 +712,7 @@ MPTTester::getClawbackProof( if (ciphertextBlob.size() != ecGamalEncryptedTotalLength) return std::nullopt; - auto const pubKeyBlob = sleIssuance->getFieldVL(sfIssuerElGamalPublicKey); + auto const pubKeyBlob = sleIssuance->getFieldVL(sfIssuerEncryptionKey); if (pubKeyBlob.size() != ecPubKeyLength) return std::nullopt; @@ -1086,7 +1086,7 @@ MPTTester::convert(MPTConvert const& arg) if (arg.amt) jv[sfMPTAmount.jsonName] = std::to_string(*arg.amt); if (arg.holderPubKey) - jv[sfHolderElGamalPublicKey.jsonName] = strHex(*arg.holderPubKey); + jv[sfHolderEncryptionKey.jsonName] = strHex(*arg.holderPubKey); Buffer holderCiphertext; Buffer issuerCiphertext; @@ -1192,8 +1192,7 @@ MPTTester::convert(MPTConvert const& arg) "MPTTester::convert: holder's pubkey is " "not set"); - return strHex((*sle)[sfHolderElGamalPublicKey]) == - strHex(*holderPubKey); + return strHex((*sle)[sfHolderEncryptionKey]) == strHex(*holderPubKey); } return false; },