Skip to content

ConfidentialMPTClawback

[Source]

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 )

Example ConfidentialMPTClawback JSON

{
  "TransactionType": "ConfidentialMPTClawback",
  "Account": "rIssuerAccount...",
  "Holder": "rMaliciousHolder...",
  "MPTokenIssuanceID": "610F33B8EBF7EC795F822A454FB852156AEFE50BE0CB8326338A81CD74801864",
  "MPTAmount": "1000",
  "ZKProof": "a1b2...",
  "Fee": "12",
  "Sequence": 2470665,
  "Flags": 2147483648
}

ConfidentialMPTClawback Fields

In addition to the common fields, ConfidentialMPTClawback transactions use the following fields:

FieldJSON TypeInternal TypeRequired?Description
HolderStringAccountIDYesThe account from which funds are being clawed back.
MPTokenIssuanceIDStringUInt192YesThe unique identifier for the MPT issuance.
MPTAmountStringUInt64YesThe plaintext total amount being removed.
ZKProofStringBlobYesAn Equality Proof validating the amount.

Error Cases

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

Error CodeDescription
temDISABLEDThe ConfidentialTransfer amendment is not enabled.
temMALFORMEDThe transaction is malformed. This can occur if:
  • The Account is not the issuer of the MPTokenIssuanceID.
  • The Account is attempting to claw back from itself.
  • The ZKProof length is incorrect.
temBAD_AMOUNTMPTAmount is zero or exceeds the maximum limits.
tecNO_TARGETThe Holder account does not exist.
tecOBJECT_NOT_FOUNDThe MPTokenIssuance or the holder's MPToken object does not exist.
tecNO_PERMISSIONThe transaction lacks the required permissions. This can occur if:
  • The issuance does not have the Can Clawback flag set.
  • The issuance is missing the sfIssuerEncryptionKey.
  • The holder's MPToken is missing the sfIssuerEncryptedBalance.
tecINSUFFICIENT_FUNDSThe MPTAmount exceeds the global sfConfidentialOutstandingAmount.
tecBAD_PROOFThe ZKP fails to prove that the sfIssuerEncryptedBalance (the mirror balance) encrypts the plaintext MPTAmount.