mintExtensionExisting doesn't allow minting existing tokens


According to ERC1155CreatorImplementation, mintExtensionExisting doesn’t allow minting with an extension a token which was not created by the extension.

require(_tokenExtension(tokenIds[i]) == address(msg.sender), "Token not created by this extension");

Use-case: artist already created a token for a new mint drop, but now he wants to add an extension so holders of his old collection can burn those tokens to mint for free in the new contract.

I wonder if there’s a way around this, or someone can explain what’s the reason behind this? Shouldn’t we let the creator’s decide if they want to add additional minting mechanics for already existing tokens?

Howdy vmark!

Good to see a fellow wizard out in these parts.

So you are correct, an 1155 token minted by an extension can only continue to be minted by said extension with mintExtensionExisting, and that is forever.

On the flip side, creators of any Creator Core 1155 contract can always mint more of any token that was not minted by an extension using mintBaseExisting. Admins as well. With those two functions you can get pretty clever and I believe achieve what you might be looking for.


1 Like