Skip to content

Conversation

@Tapanito
Copy link
Collaborator

Extends the VaultClawback transaction to allow the Vault Owner to force burn depositor shares when the vault has no assets remaining.

Problem

A vault can become permanently stuck when Vault.AssetsTotal and Vault.AssetsAvailable are both zero, but shares still exist. This situation may arise when a loan issued for the total of the vault's assets defaults. In this state:

Deposits cannot settle the balance
The Vault object becomes non-deletable

Solution

The VaultClawback transaction can now be submitted by:

Asset Issuer (existing functionality): Clawback funds from the vault, specifying Amount as the vault's asset (IOU or MPT).

Vault Owner (new functionality): Force burn worthless shares when both Vault.AssetsTotal and Vault.AssetsAvailable are zero. The Amount must be specified as the vault's share (MPT), and partial burns are not permitted—the Vault Owner must burn all shares held by the Holder.

Changes

Updated VaultClawback transaction description to document both use cases
Added Amount field documentation clarifying the expected asset type per submitter
Updated failure conditions to authorize Vault Owner and enforce the zero-asset requirement


- If `Vault.Asset` is an `IOU` and:
- The `Issuer` account is not the submitter of the transaction.
- If the submitter is the **Asset Issuer** and `Vault.Asset` is an `IOU`:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- If the submitter is the **Asset Issuer** and `Vault.Asset` is an `IOU`:
- If the submitter is the **Asset Issuer** and `Vault.Asset` is an `IOU` and:

Otherwise there might be confusion about whether to fail if the submitter is issuer and asset is an IOU, and nothing else.


- If `Vault.Asset` is an `MPT` and:
- `MPTokenIssuance.Issuer` is not the submitter of the transaction.
- If the submitter is the **Asset Issuer** and `Vault.Asset` is an `MPT`:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- If the submitter is the **Asset Issuer** and `Vault.Asset` is an `MPT`:
- If the submitter is the **Asset Issuer** and `Vault.Asset` is an `MPT` and:

- `MPTokenIssuance.Issuer` is not the submitter of the transaction.
- If the submitter is the **Asset Issuer** and `Vault.Asset` is an `MPT`:
- `MPTokenIssuance.lsfMPTCanClawback` flag is not set (the asset does not support clawback).
- If the `MPTokenIssuance.lsfMPTCanLock` flag is NOT set (the asset cannot be locked).
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we've established that lsfMPTCanLock is not required for MPT clawbacks.

##### 3.3.1.1 Failure conditions
- **Asset Issuer**: The `Amount` must be specified as the Vault's asset type (IOU or MPT). The transaction will clawback up to `Amount` of assets from the `Holder`'s shares, sending the funds to the Issuer's account.

- **Vault Owner**: The `Amount` must be specified as the Vault's share type (MPT), where `mpt_issuance_id` matches `Vault.MPTokenIssuanceID`. Since the Vault Owner can only submit this transaction when `Vault.AssetsTotal` and `Vault.AssetsAvailable` are both zero, no assets are transferred—only shares are destroyed. Partial burns are not permitted, the Vault Owner must burn all shares held by the `Holder`. The `Amount` can be specified as either:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why not make it simpler by just making amount absent in this case? This would imply burning all shares assuming all other conditions are met.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants