Skip to content

Updated Transactions

The Confidential Transfers amendment updates the following transactions to support configuring confidential transfer capabilities:

(Requires the ConfidentialTransfers amendment )

MPTokenIssuanceCreate

MPTokenIssuanceCreate Flags

In addition to the existing MPTokenIssuanceCreate flags, confidential MPTokenIssuanceCreate transactions support:

Flag NameHex ValueDecimal ValueDescription
tfMPTCanConfidentialAmount0x00000080128If enabled, the MPT issuance supports confidential transfers.

MPTokenIssuanceCreate Mutable Flags

Confidential MPTokenIssuanceCreate transactions support the following value in the MutableFlags field:

Flag NameHex ValueDecimal ValueDescription
tmfMPTCannotMutateCanConfidentialAmount0x00040000262144If enabled, issuers cannot change the Can Confidential Amount flag after the token is issued.

MPTokenIssuanceSet

This transaction is the only way to register issuer and auditor public keys or modify the privacy status of an MPT issuance.

MPTokenIssuanceSet Fields

In addition to the existing MPTokenIssuanceSet transaction fields, confidential MPTokenIssuanceSet transactions support:

FieldJSON TypeInternal TypeRequired?Description
IssuerEncryptionKeyStringBlobNoThe 33-byte EC-ElGamal public key used for the issuer's mirror balances.
AuditorEncryptionKeyStringBlobNoOptional 33-byte EC-ElGamal public key used for regulatory oversight. Must be provided together with IssuerEncryptionKey in the same transaction.
MutableFlagsNumberUInt32NoFlags to enable or disable mutable properties of the MPT issuance.

MPTokenIssuanceSet Mutable Flags

The MutableFlags field allows an issuer to enable or disable specific flags on an MPT issuance. For confidential MPTs, the following flags are relevant:

Flag NameHex ValueDecimal ValueDescription
tmfMPTSetCanConfidentialAmount0x000010004096Enable confidential transfers for this MPT issuance by enabling the Can Confidential Amount flag. Can only be used if the Cannot Mutate Can Confidential Amount flag is disabled and there is no existing confidential outstanding amount.
tmfMPTClearCanConfidentialAmount0x000020008192Disable confidential transfers for this MPT issuance by disabling the Can Confidential Amount flag. Can only be used if the Cannot Mutate Can Confidential Amount flag is disabled and there is no existing confidential outstanding amount.

Error Cases

Besides errors that can occur for all transactions, MPTokenIssuanceSet transactions can result in the following transaction result codes:

Error CodeDescription
temINVALID_FLAGBoth tmfMPTSetCanConfidentialAmount and tmfMPTClearCanConfidentialAmount flags were specified in the same transaction, which is not allowed.
temMALFORMEDThe AuditorEncryptionKey was provided without IssuerEncryptionKey, or the public key length is incorrect (must be 33 bytes).
tecNO_PERMISSIONOne of the following occurred:
  • Attempted to update a public key that has already been set.
  • Attempted to change the privacy flag when the Cannot Mutate Can Confidential Amount flag is enabled.
  • Attempted to set public keys when the Can Confidential Amount flag is disabled.
  • Attempted to change the privacy setting when confidential balances already exist.
  • Attempted to set public keys when the ConfidentialOutstandingAmount field is present.