Minting a billion NFTs for $100 and enforceable royalties
How LimitBreak built ERC721-C on top of ERC-2981 to put power back in the hands of creators in order to help the NFT market, push forward on-chain gaming, and improve the broken royalty system.
NFT Marketplaces can be no bueno
NFT marketplaces as we know them are broken. As art enjoyoors / collectors / investors alike, we may not pay as close attention, but creators know the pain all too well.
When a creator (artist, development team, collective, etc) lists their work on popular marketplaces like OpenSea or Blur, they may choose to add royalties so that they are paid in perpetuity for their work which helps the creators behind the work continue to build.
Unfortunately there hasn’t been a way to truly enforce royalties and are more or less suggestions that these marketplaces aren’t required to enforce. Gabriel Leydon (LimitBreak) said something to the degree of “These marketplaces don’t care about you, if they can make more money fucking you over they’ll do it.” I recommend listening to the hour-ish long spaces he hosted regarding ERC721-C.
A promising solution?
Now, in the year 2023 we finally have what could provide creators an opportunity to ensure they are receiving the royalties they’re earned with ERC721-C. Built on top of EIP-2981, ERC721-C works as any other NFT contract would with modifications to the _beforeTokenTransfer()
and _afterTokenTransfer()
hooks formerly used by OpenZeppelin before they transitioned to using an encompassing _update()
internal function.
/**
* @title ERC721C
* @author Limit Break, Inc.
* @notice Extends OpenZeppelin's ERC721 implementation with Creator Token functionality, which
* allows the contract owner to update the transfer validation logic by managing a security policy in
* an external transfer validation security policy registry. See {CreatorTokenTransferValidator}.
*/
abstract contract ERC721C is ERC721OpenZeppelin, CreatorTokenBase {
function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
return interfaceId == type(ICreatorToken).interfaceId || super.supportsInterface(interfaceId);
}
/// @dev Ties the open-zeppelin _beforeTokenTransfer hook to more granular transfer validation logic
function _beforeTokenTransfer(
address from,
address to,
uint256 firstTokenId,
uint256 batchSize) internal virtual override {
for (uint256 i = 0; i < batchSize;) {
_validateBeforeTransfer(from, to, firstTokenId + i);
unchecked {
++i;
}
}
}
/// @dev Ties the open-zeppelin _afterTokenTransfer hook to more granular transfer validation logic
function _afterTokenTransfer(
address from,
address to,
uint256 firstTokenId,
uint256 batchSize) internal virtual override {
for (uint256 i = 0; i < batchSize;) {
_validateAfterTransfer(from, to, firstTokenId + i);
unchecked {
++i;
}
}
}
}
In these two function overrides, the hooks validate the transfers which will check if the caller of transfer is authorized to do so.
The ERC721-C is able to enforce royalties through transfer security policies which are a combination of (the following list and image are from LimitBreak’s Medium Article):
A predefined transfer security level
An operator whitelist id that points to the desired whitelist
An optional permitted contract receivers allowlist id that points to a list of contracts permitted to receive token transfers
There are seven predefined transfer security levels:
There is plenty of opportunity to explore a variety of use-cases with this budding new standard, all which seem to benefit creators - and as the LimitBreak team mentions in their Medium article - also have the capacity to benefit community members which can serve to strengthen long term holders.
No Code? No Problem.
With the Minting Press from FreeNFT, creators with no code experience can also take advantage of the benefits of ERC721-C so they can share their art, games, and more with far less development time.
Through FreeNFT, Reservoir Tools, and use of ERC721-C, the LimitBreak team was able to mint 1 Billion NFTs for about $100 in fees through more efficient indexing of NFTs on a gigantic scale.
A bug or a feature?
From my initial dive on some of the contracts it seems that this possible new standard could have a kink in its armor - and that is the ease of which users can transfer their NFTs.
LimitBreak touts one of the advantages of the ERC721-C is that it curbs trader’s ability to farm tokens by wash-trading NFTs among their own wallets, but it seems that through some of these big benefits comes a double-edged sword:
From what I can tell, these new security measures could possibly help prevent wallets being drained of their NFTs (great for Bored Apes holders) but also makes an already illiquid market more illiquid by possibly decreasing trade volume.
All-in-all
The LimitBreak team are real ones for building something that could help onboard future crypto buildoors in gaming, art, and beyond by providing the security and enforced royalties that allow them to make a living from their work, without a marketplace effectively undercutting them.