Freeze

Issuers have the ability to freeze and unfreeze leaves. To initiate this, the Issuer Wallet signs a payload containing the public key of the owner whose funds are to be frozen. This request is then sent to each Spark Operator (SO) via the FreezeTokens() call.

Upon receiving the request, each SO validates and confirms the freeze, maintaining an internal list of frozen public keys. If the owner of a frozen leaf attempts to transfer funds, the SO will reject the request during the SignTokenTransaction() step, returning an exception and preventing the transaction from proceeding.