Convert your confidential MPT balance back to a public balance. This debits the confidential spending balance and credits the public balance with the plaintext amount. For the issuer's second account, this returns confidential supply to the issuer account reserve.
Note
Only the spending balance can be converted back. Amounts in the inbox must first be merged into the spending balance using [ConfidentialMPTMergeInbox][].
(Requires the ConfidentialTransfers amendment )
{
"TransactionType": "ConfidentialMPTConvertBack",
"Account": "rUserAccount...",
"MPTokenIssuanceID": "610F33...",
"MPTAmount": "500",
"HolderEncryptedAmount": "AD3F...",
"IssuerEncryptedAmount": "BC2E...",
"AuditorEncryptedAmount": "C1A9...",
"BlindingFactor": "12AB...",
"ZKProof": "ABCD...",
"BalanceCommitment": "038A...",
"Fee": "12",
"Sequence": 2470665,
"Flags": 2147483648
}In addition to the common fields, ConfidentialMPTConvertBack transactions use the following fields:
| Field | JSON Type | Internal Type | Required? | Description |
|---|---|---|---|---|
MPTokenIssuanceID | String | UInt192 | Yes | The unique identifier for the MPT issuance. |
MPTAmount | String | UInt64 | Yes | The plaintext amount to credit to the public balance. |
HolderEncryptedAmount | String | Blob | Yes | 66-byte Ciphertext to be subtracted from the holder's sfConfidentialBalanceSpending. |
IssuerEncryptedAmount | String | Blob | Yes | 66-byte Ciphertext to be subtracted from the issuer's mirror balance. |
AuditorEncryptedAmount | String | Blob | No | 66-byte Ciphertext for the auditor. Required if sfAuditorEncryptionKey is present on the issuance. |
BlindingFactor | String | UInt256 | Yes | The 32-byte scalar value used to encrypt the amount. Used by validators to verify the ciphertexts match the plaintext MPTAmount. |
ZKProof | String | Blob | Yes | A bundle containing the Pedersen Linkage Proof (linking the ElGamal balance to the commitment) and the Range Proof. |
BalanceCommitment | String | Blob | Yes | A 33-byte cryptographic commitment to the user's confidential spending balance. |
Besides errors that can occur for all transactions, ConfidentialMPTConvertBack transactions can result in the following transaction result codes:
| Error Code | Description |
|---|---|
temDISABLED | The ConfidentialTransfer is not enabled. |
temMALFORMED | The account is the Issuer, or the BlindingFactor is not exactly 32 bytes. |
temBAD_CIPHERTEXT | Ciphertext lengths or formats are invalid. |
temBAD_AMOUNT | MPTAmount is zero or greater than the maximum allowable supply. |
tecOBJECT_NOT_FOUND | The MPToken or MPTokenIssuance does not exist. |
tecNO_PERMISSION | One of the following occurred:
|
tecINSUFFICIENT_FUNDS | The global sfConfidentialOutstandingAmount is less than the requested MPTAmount, or the user's confidential balance is insufficient. |
tecBAD_PROOF | One of the following occurred:
|
tecLOCKED | The MPT asset is locked for the account, or the asset is globally locked. |