Extensions
Currently, enabling an extension requires writing and deploying a customized smart contract with the desired extension functions and logic using a Solidity IDE like remix. Once deployed, the contract can be registered to a base Creator Core contract using the registerExtension function.
Writing Extensions
Any contract written in solidity on the Ethereum network can be registered as an extension to a base Creator Contract. The extension will only be recognized by your Creator Contract for the purpose of overriding various functions by implementing specific interfaces.
Override TokenURI Functionality
To override Token URI functionality implement interface ICreatorExtensionTokenURI. This is applicable to both ERC721 and ERC1155 contracts:
If you intend on using this functionality DO NOT pass in URI or baseURI values when you call mintExtension functions on the Creator Core contracts. Doing so will cause the Creator Core contracts to ignore the overridden tokenURI logic.
Receive a Burn Callback
To receive an onBurn callback (pre-burn hook) whenever a token the extension created is burned implement either the IERC721CreatorExtensionBurnable or IERC1155CreatorExtensionBurnable interface. Whenever a token created by the extension is burned using the Creator Core's burn function, this hook will fire.
ERC721
ERC1155
Receive a Transfer Callback
To receive a transfer callback (pre-transfer hook) whenever a token the extension created is transferred implement either the IERC721CreatorExtensionApproveTransfer or IERC1155CreatorExtensionApproveTransfer interface. Whenever a token created by the extension is transferred using the Creator Core's transfer function this hook will fire.
In order to add a pre-transfer hook you need to implement the appropriate (ERC721 or ERC1155) CreatorExtensionApproveTransfer interface AND have the extension call setApproveTransferExtenstion (enabled). See the suggested implementation below the CreatorExtensionApproveTransfer interfaces.
ERC721
ERC1155
Suggested implementation for extensions with a transfer callback
Adding and Removing Extensions
Once deployed on the Ethereum network, extensions can be added or removed using the registerExtension
and unregisterExtension
functions. An extension can also be blacklisted via the blacklistExtension
function, preventing future registrations of the address and destroying all references to metadata associate with tokens created by the extension.
For detailed extensions functions information see Extensions Functions.
Depending on how they've been written, some extensions may require configuration before registration (e.g. setting a token range or other piece of data). If you've incorporate custom interfaces that need configuration, be sure to do this before registration.
Last updated