The Confidential Transfers amendment updates the following transactions to support configuring confidential transfer capabilities:
- MPTokenIssuanceCreate - Set initial privacy flags when creating an MPT issuance.
- MPTokenIssuanceSet - Configure encryption keys and toggle privacy settings after creation.
(Requires the ConfidentialTransfers amendment )
In addition to the existing MPTokenIssuanceCreate flags, confidential MPTokenIssuanceCreate transactions support:
| Flag Name | Hex Value | Decimal Value | Description |
|---|---|---|---|
tfMPTCanConfidentialAmount | 0x00000080 | 128 | If enabled, the MPT issuance supports confidential transfers. |
Confidential MPTokenIssuanceCreate transactions support the following value in the MutableFlags field:
| Flag Name | Hex Value | Decimal Value | Description |
|---|---|---|---|
tmfMPTCannotMutateCanConfidentialAmount | 0x00040000 | 262144 | If enabled, issuers cannot change the Can Confidential Amount flag after the token is issued. |
This transaction is the only way to register issuer and auditor public keys or modify the privacy status of an MPT issuance.
In addition to the existing MPTokenIssuanceSet transaction fields, confidential MPTokenIssuanceSet transactions support:
| Field | JSON Type | Internal Type | Required? | Description |
|---|---|---|---|---|
IssuerEncryptionKey | String | Blob | No | The 33-byte EC-ElGamal public key used for the issuer's mirror balances. |
AuditorEncryptionKey | String | Blob | No | Optional 33-byte EC-ElGamal public key used for regulatory oversight. Must be provided together with IssuerEncryptionKey in the same transaction. |
MutableFlags | Number | UInt32 | No | Flags to enable or disable mutable properties of the MPT issuance. |
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 Name | Hex Value | Decimal Value | Description |
|---|---|---|---|
tmfMPTSetCanConfidentialAmount | 0x00001000 | 4096 | Enable 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. |
tmfMPTClearCanConfidentialAmount | 0x00002000 | 8192 | Disable 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. |
Besides errors that can occur for all transactions, MPTokenIssuanceSet transactions can result in the following transaction result codes:
| Error Code | Description |
|---|---|
temINVALID_FLAG | Both tmfMPTSetCanConfidentialAmount and tmfMPTClearCanConfidentialAmount flags were specified in the same transaction, which is not allowed. |
temMALFORMED | The AuditorEncryptionKey was provided without IssuerEncryptionKey, or the public key length is incorrect (must be 33 bytes). |
tecNO_PERMISSION | One of the following occurred:
|