singnet / snet-upgradeable-owners-minting-policy

1 stars 1 forks source link

NFT script - Audit #5

Open zmrocze opened 4 months ago

zmrocze commented 4 months ago

NFT Script

Protocol Requirements

After creation, there is always single NFT token in existence.

The mint of an NFT token demands spending of a specific UTXO. Therefore there can be only one such token minted. The NFT token should be locked at the UpgradeableOwners validator. Importantly this is not ensured by the policy. If the NFT token gets indeed locked at the UpgradeableOwners validator, then the validator ensures that whenever it is spent it is also recreated in the continuing output.

The token is always held only at UpgradeableOwners script.

This is not checked by the NFT policy in the initial transaction, but later is enforced in all UpgradeableOwners transactions.

Initialization creates a correct datum.

This is not the case in the sense that it is not enforced by the policy. It is a role of offchain code to create a correct initialization transaction and up to the users to verify the protocol they are using was initialized correctly.