Claw back a holder's entire confidential balance (inbox and spending), removing it from circulation.
Unlike a regular Clawback, confidential balances are encrypted, so the issuer must provide the plaintext total amount to claw back and a Zero-Knowledge Proof (ZKP) validating the amount.
(Requires the ConfidentialTransfers amendment )
{
"TransactionType": "ConfidentialMPTClawback",
"Account": "rIssuerAccount...",
"Holder": "rMaliciousHolder...",
"MPTokenIssuanceID": "610F33B8EBF7EC795F822A454FB852156AEFE50BE0CB8326338A81CD74801864",
"MPTAmount": "1000",
"ZKProof": "a1b2...",
"Fee": "12",
"Sequence": 2470665,
"Flags": 2147483648
}In addition to the common fields, ConfidentialMPTClawback transactions use the following fields:
| Field | JSON Type | Internal Type | Required? | Description |
|---|---|---|---|---|
Holder | String | AccountID | Yes | The account from which funds are being clawed back. |
MPTokenIssuanceID | String | UInt192 | Yes | The unique identifier for the MPT issuance. |
MPTAmount | String | UInt64 | Yes | The plaintext total amount being removed. |
ZKProof | String | Blob | Yes | An Equality Proof validating the amount. |
Besides errors that can occur for all transactions, ConfidentialMPTClawback transactions can result in the following transaction result codes:
| Error Code | Description |
|---|---|
temDISABLED | The ConfidentialTransfer amendment is not enabled. |
temMALFORMED | The transaction is malformed. This can occur if:
|
temBAD_AMOUNT | MPTAmount is zero or exceeds the maximum limits. |
tecNO_TARGET | The Holder account does not exist. |
tecOBJECT_NOT_FOUND | The MPTokenIssuance or the holder's MPToken object does not exist. |
tecNO_PERMISSION | The transaction lacks the required permissions. This can occur if:
|
tecINSUFFICIENT_FUNDS | The MPTAmount exceeds the global sfConfidentialOutstandingAmount. |
tecBAD_PROOF | The ZKP fails to prove that the sfIssuerEncryptedBalance (the mirror balance) encrypts the plaintext MPTAmount. |