一文了解 Limit Break 推出的链上 NFT 可选版税合约
编译:DeFi 之道
图片来源:由 Maze AI 生成
Limit Break 正在引入可选择的、向后兼容的、可编程的版税合约,其可通过新颖的质押解决方案运用到任何 ERC-721 合约。建立该方案最初的目标,是让创作者有权决定如何在智能合约层分配版税,但正如你将在下面读到的,该合约将允许大量应用,有可能从根本上重塑 NFT 格局。
重要的是,这些 on-chain 版税在单个 token 层面上是可执行的,这意味着每个 NFT 都可以有自己的可编程版税。该系统是选择加入的,所以如果一个新的或现有的 NFT 收藏集合决定实施该解决方案,它们的个人收藏者将保留权力决定是否选择加入或者选择退出。
版本 1 引入了“stake to opt-in”和“transfer whitelist”模型,版本 1.1 将全面实施可编程的版税和最低地板价。你可以阅读 Github 存储库中的代码和文档,以了解完整的技术细节。
NFT 领域的当前状态
非同质化代币 (NFTs) 是区块链采用的重大突破,其有助于 Web3 生态系统的兴起,并将大量新用户引入到区块链生态。但老实说,目前形式的大多数 NFT 都非常无聊。
当前的 NFT 市场充斥着指向 JPEG 的相同智能合约的简单复制品。除了一些值得注意的项目例外,几乎所有的 NFT 都仅限于三个功能:
它们可以被一个加密钱包拥有。
它们可以在 NFT 交易所进行交易。
它们指向一张图片或一段视频,旁边还有一些可选的特征。
尽管这种简单的格式,足以让 NFT 在 2021 年进入主流,但对于 2023 年即将到来的事情来说,这是不够的。
为什么 NFT 必须进化
NFT 艺术和 NFT “头像”市场在 2021 年爆发式增长后,在 2022 年遭遇了严重缩水。尽管这无疑和全球市场衰退(尤其是 crypto)有很大关系,但我们认为,这种建立在简单去中心化图像所有权基础上的早期 NFT 市场,永远不可能得到广泛采用,尤其是在 NFT 游戏领域。相反,我们需要一些技术更先进的东西。
即使玩家对基于 NFT 的游戏道具的所有权预计会增加,我们相信 NFT 技术从根本上改变游戏行业的潜力,只能通过大胆的技术变革来释放。我们认识到,缺乏对游戏内道具 NFT 经济边界的控制,会阻碍游戏设计师开发将 Web3 提升到一个新水平所需的各种平衡的游戏内经济。
使这些限制更加复杂的是,NFT 行业在 2022 年底经历了新的生存威胁,渴望流动性的 NFT 交易所在流动性争夺战中转向“零版税费用”或“可选版税费用”策略,这种行业转变暴露了 NFT 行业当前结构的两个根本缺陷。首先,尽管 Web3 具有去中心化和去信任化的精神,但权力结构从根本上偏向于众多创作者以及少数中心化交易所。 其次,现在即将消亡的通用创作者版税行业标准仅作为一种社会契约存在,而不是在链上强制执行的。 在目前这个轨道上,很多创作者会干脆离开这个领域,或者干脆避免进入这个领域。
Limit Break 决心推动 NFT 的发展,并深思熟虑地引领建立在区块链技术之上的游戏复兴。我们努力为 NFT 社区做出贡献,同时激励其他创新者开拓新形式的实用程序和新颖的机制,以推动游戏内经济以及与其他项目的互操作性。为此,Limit Break 发布了一个以创作者为中心的智能合约,这是一个 NFT 合约库,其具有一个可选的质押解决方案,将升级现有的 NFT 并为 Web3 游戏革命准备未来的 NFT 。
与创作者代币一起前进
在通过“创作者代币”构建一个新的行业转变范式的同时,Limit Break 优先考虑了两个与 Web3 精神保持一致的关键目标:向后兼容性和选择自由。这就是为什么我们确保这是一个选择加入的质押解决方案,允许现有的创作者采用该解决方案,同时让收藏者决定是否在单个 NFT 上选择加入。
以下部分描述了塑造创作者代币合约库的主要设计原则,然后是如何使用和扩展合约的指南。
设计原则
这个创作者代币合约库,是围绕三个主要准则精心设计的:(1) 创作者灵活性,(2) 不变性以及 (3) 简单性。
首先,开发者和创作者应该有权定义他们的 NFT 如何使用。 如果没有适当的机制来执行他们自己的智能合约规则,开发人员就无法可靠地确保用户体验或让代币实用程序按照其预期目的运行。 Transfer 白名单提供了一种可靠的机制来执行规则,这反过来又使开发复杂的新功能成为可能。
其次,NFT 智能合约应该是不可变和不可升级的,向用户保证他们不会被不断变化的规则收割,或者确保他们的代币不会被开发者盗窃。 然而,NFT 项目是动态的,收藏品需要随着时间的推移而灵活发展。 Staking 质押提供了一个向后兼容的选择加入系统,允许开发者和创作者不断升级他们的NFT 集合的功能,同时让用户自由选择是否同意升级。 要想取得成功,开发人员必须将激励措施与他们的社区结合起来,以鼓励他们的社区升级他们的代币。 从简单到复杂,创作者可以考虑的一些激励措施包括:
Reveal:用户铸造一个普通的 NFT,它不会被揭露,只能通过质押来揭露; 时间锁定或付费取消质押可用于实施重新滚动的揭示。
奖励:质押的代币有资格获得高级空投、claim 或其他社区奖励。
可出租性:质押旧收藏品以允许用户从代币所有者那里租用使用权。
保证最低地板价:质押代币仅将一个最低地板价合约列入白名单,以使定价边界可执行。
公平版税系统:无需信任的智能合约,允许前持有者 claim 一定比例的未来版税。
游戏内实用程序:例如,可以将 Limit Break 的 Adventure ERC721 系统添加到质押代币中,以支持任务和其他 Web3 游戏功能。
最后,合约库必须简单、优雅,避免特性蔓延,为开发人员的创造力和创新留出更多空间。
操作指南
以下部分旨在演示在不同场景中使用创作者代币合约( Creator Token Contracts) 的一些推荐工作流程。 在以下示例中,请注意元数据 URI、铸造、燃烧和其他扩展功能的实现由开发人员自行决定。 完整的合约和文档集可以在 Github 上找到。
场景 1:使用白名单 Transfers 发布新 NFT 集合
这是最简单的场景,创作者只需要基本的 ERC-721,但想要使用白名单来确定他们的代币可以在哪里交易。下面的工作流显示了使用一个 transfer 白名单开发、部署和配置新 NFT 集合的过程。
以下代码演示了一个部署新 NFT 集合的简单示例,该集合具有内置的 transfer 白名单功能。
pragma solidity ^0.8.4;
import "@limitbreak/creator-token-contracts/contracts/whitelist/WhitelistedTransferERC721.sol";
/// @dev By inheriting WhitelistedTransferERC721 and assigning the transfer whitelist registry
/// transfers are automatically restricted to callers that are in the whitelist.
contract MyCollection is WhitelistedTransferERC721 {
constructor() ERC721("MyCollection", "MC") {}
function ownerMint(address to, uint256 tokenId) external onlyOwner {
_mint(to, tokenId);
}
function burn(uint256 tokenId) external {
require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: caller is not token owner nor approved");
_burn(tokenId);
}
function _baseURI() internal view virtual override returns (string memory) {
return "https://my.nft.com/mycollection/metadata/";
}
}
场景 2:使用 Staking 质押升级旧 NFT 集合
在这种情况下,创作者希望将列入白名单的传输以及其他功能添加到旧的不可变 NFT 集合中。 代币持有者可以通过将旧的 NFT 质押来选择是否加入升级。下面的工作流显示了开发、部署和配置 NFT 集合升级的流程。
当用户选择升级时,他们真正做的是将他们的 NFT 放在 Creator ERC721 封装器合约中,并铸造包含升级功能的封装等效物。这是一个简单的两步过程,需要两笔交易。首先,用户批准 Creator ERC721 封装器合约来传输他们未升级的代币。其次,用户调用 stake(uint256 tokenId)
函数。这个质押函数使用相同的 id 铸造一个升级的 NFT 代币,并将前一个 token 锁定在合约中。这个过程如下图所示。
在设计升级后的合约时,创作者的一个关键决定,在于是否让质押的代币解除质押。 在开发人员允许的情况下,用户可以通过解除质押、销毁升级后的代币,并解锁原始 token 来降级他们的代币。 一般有五种选择:
永久升级代币——继承
PermanentCreatorERC721
通过解除质押的时间锁定可降级代币——继承
TimeLockedUnstakeCreatorERC721
通过解除质押支付可降级代币——继承
PaidUnstakeCreatorERC721
通过解除质押可自由降级的代币——继承
CreatorERC721
通过解除质押自定义降级机制——继承
CreatorERC721
并构建你自己的
下图描述了用户的解除质押/降级过程。
以下代码片段演示了如何扩展各种类型的 Creator ERC721 代币以升级 NFT 集合。
pragma solidity ^0.8.4;
import "@limitbreak/creator-token-contracts/contracts/presets/PermanentCreatorERC721.sol";
import "@limitbreak/creator-token-contracts/contracts/presets/PaidUnstakeCreatorERC721.sol";
import "@limitbreak/creator-token-contracts/contracts/presets/TimeLockedUnstakeCreatorERC721.sol";
/// @dev By inheriting PermanentCreatorERC721 and assigning the wrapped collection
/// address, a permanent token upgrade can be initiated by token holders.
contract MyUpgradedCollection is PermanentCreatorERC721 {
constructor(address myV1Collection) CreatorERC721(myV1Collection, "MyCollection (V2)", "MC") {}
function _baseURI() internal view virtual override returns (string memory) {
return "https://my.nft.com/mycollectionv2/metadata/";
}
/// TODO: Optionally, add additional utility/features here
}
/// @dev By inheriting PaidUnstakeCreatorERC721 and assigning the wrapped collection
/// address, a token upgrade can be initiated by token holders. Upgraded tokens can
/// be downgraded to the prior version by paying a fee.
contract MyUpgradedCollection is PaidUnstakeCreatorERC721 {
constructor(uint256 unstakePrice, address myV1Collection) PaidUnstakeCreatorERC721(unstakePrice, myV1Collection, "MyCollection (V2)", "MC") {}
function _baseURI() internal view virtual override returns (string memory) {
return "https://my.nft.com/mycollectionv2/metadata/";
}
/// TODO: Optionally, add additional utility/features here
}
/// @dev By inheriting TimeLockedUnstakeCreatorERC721 and assigning the wrapped collection
/// address, a token upgrade can be initiated by token holders. Upgraded tokens can
/// be downgraded to the prior version after a time lock expires.
contract MyUpgradedCollection is TimeLockedUnstakeCreatorERC721 {
constructor(uint256 timelockSeconds, address myV1Collection) PaidUnstakeCreatorERC721(timelockSeconds, myV1Collection, "MyCollection (V2)", "MC") {}
function _baseURI() internal view virtual override returns (string memory) {
return "https://my.nft.com/mycollectionv2/metadata/";
}
/// TODO: Optionally, add additional utility/features here
}
案例研究
将一个或多个可执行 transfer 的可信运营者列入白名单的模式,可以实现以前不可能实现的新的可组合功能。现在可以围绕 NFT 的传输构建新功能,而无需直接在 NFT 合约本身中构建自定义功能。此外,只需修改 transfer 白名单,就可以扩展或升级这些功能。围绕 NFT 传输构建的新功能,可能会改变 Web3 游戏以及整个 NFT 行业。在本节中,我们将重点介绍 Limit Break 在 1.1 版中使用此模式积极开发的两个新功能的案例研究。
案例 1 :最低地板价 Operator
专门的 Minimum Floor Operator 合约,将允许创作者在其收藏中针对单个代币或整个收藏定义 NFT 的最低销售价格。
享有盛誉的精英艺术家可能会避免创作 NFT 艺术作品,因为他们担心,如果他们的作品卖得低于传统艺术作品的价值,他们的品牌就会受损。由于传统艺术品通常缺乏流动性,因此这类用户可能不会担心伴随可执行的最低销售价格而出现的流动性下降。
最低地板价 Operator 如何为游戏开发者赋能的一些示例包括但不限于:
能够以 100 ETH 为武器等高价值游戏物品指定固定价格。这样的武器不会被轻易交易,从而加强了它在游戏中的高价值和稀有性。
围绕外部和宏观经济因素(如 ETH 价格和货币汇率)如何影响游戏内经济的平衡构建指南,这已经是一个具有挑战性的考验。
随着游戏条件的变化,而改变最小地板价的能力。
一个固定价格的物品,可保证玩家的物品价值不受投机行为的影响。
Minimum Floor Operator 最令人兴奋的方面,是通过在合约层强制执行链上版税来改变 NFT 行业的能力。即使最低地板价设置为零,强制执行来自市场销售的控制流和资金必须通过 Minimum Floor Operator 合约,确保使用 EIP-2981 在链上定义的市场费用和版税将以无无需信任的方式支付,这就是 NFT 版税应该一直工作的方式。
案例 2 : 可强制执行的版税分成
过去,可以以静态方式共享版税,方法是将版税路由到支付分配器合约,该合约必须用预先确定的一组受益人和份额一次性初始化。对于与 NFT 持有者或关联方共享版税的项目,支付更加集中,需要项目在链下重建 NFT 销售情况,以便计算每个人的份额,然后主动空投给用户或建立一个可认领的分红基金。
通过以一种保留交易情况的方式使版税在链上强制执行,这个 Minimum Floor Operator 合约解锁了新的可能性,其中智能合约可以管理一组动态变化的用户,这些用户有资格 claim 一部分版税,无论是在 NFT 集合还是个人 NFT 级别,都是根据开发人员确定的最适合他们自己社区的自定义规则。一般来说,该项目将能够分配一定比例的版税给创作者、附属机构和收藏家。
对于创作者和附属机构,可以使用具有预定受益人和份额的支付分配器进一步细分版税。而收藏家的版税可以通过许多有趣和动态的方式共享,包括但不限于:
代币铸造者获得该代币未来收藏者版税的 100%;
长期代币持有者(例如,持有代币超过一年的人)根据他们持有代币的时间长短,获得相等份额或相对份额的未来收藏者版税;
前持有者在未来有限数量的 NFT 销售中获得他们所持代币的收藏者版税,其中他们的相对份额是基于他们相对于其他人拥有代币的时间长度。
将收藏者纳为版税利益相关者,是创作者可以将激励与其 NFT 持有者社区联系起来的一种强有力的方式。这为 NFT 收藏者创造了以前不可能实现的价值,并将在智能合约的帮助下永久发挥作用。
Limit Break 的下一步是什么
Limit Break 寻求利用技术和去中心化,将 NFT 的力量掌握在创作者和收藏者手中。创作者代币合约(Creator Token Contracts) 的社区发布是朝着这个方向迈出的重要一步。DigiDaigaku 开发团队不断扩展集合的功能,并以有利于 Web3 游戏生态系统的方式构建智能合约平台。同时,Limit Break 正在与 NFT 交易所合作,巩固 Minimum Floor Operator 作为新的 NFT 市场标准,因为它有能力改变 NFT 行业。我们迫不及待地想看看创作者们将在 2023 年及以后建造什么!