metaplex-foundation / mpl-bubblegum

Create and manage Metaplex compressed NFTs
https://developers.metaplex.com/bubblegum
Other
76 stars 41 forks source link

cNFTs that cannot be transferred can be minted #86

Closed solarnius closed 9 months ago

solarnius commented 9 months ago

Problem

Right now, there is an issue with spam cNFTs being minted using the mpl-bubblegum program. These cNFTs cannot be burned because their burn transactions exceed 1232 bytes:

image

This occurs because minting does not require the inclusion of a proof, while updating a leaf (burning/transferring) does. Therefore, these assets do not adhere to the standard for cNFTs and should not be able to be minted through Bubblegum.

There is also opportunity to implement checks for this at the DAS level, but I believe that implementing a fix for this in Bubblegum is the lowest hanging fruit.

I believe that this occurs when the size of the proof is greater than 756 bytes, but this should be double checked and tested. From my testing, when the treeDepth - canopyHeight >= 24, the cNFT cannot be burned or transferred.

Proposed Solution

An assertion should be added to process_mint_v1 in mint.rs that ensures that the tree proof length does not make leaf updating impossible.

I'd be happy to take a crack at implementing this, but I'd appreciate any comments from official maintainers/the metaplex team as to whether or not this would be a welcome change!

cc @danenbm since you seem to be the most active maintainer on this repo

danenbm commented 9 months ago

I personally agree with this sentiment that these types of cNFTs should not be considered valid assets. A MIP is in process for this change. Thank you for the testing info too, as we define this limit.

solarnius commented 9 months ago

I personally agree with this sentiment that these types of cNFTs should not be considered valid assets. A MIP is in process for this change. Thank you for the testing info too, as we define this limit.

glad to hear that an MIP is in process!

thanks for all of your hard work <3