NFT 智能合约是一种定义非同质化代币的所有权记录、转移协议、版税和元数据的数字协议。
非同质化代币 (NFT) 是区块链上可验证所有权的数字资产。“非同质化”一词意味着每个代币都是独一无二的,不能直接与另一个代币交换,因为它们不具有相同的属性或价值。这就像比较两件艺术品——每件都是不同的,其价值取决于艺术家和作品的特殊性。
从本质上讲,NFT 是由智能合约实现的。这些是去中心化网络上的自动执行协议,这使得它们安全、防篡改且可公开访问。智能合约有多种类型,但 NFT 智能合约是最广泛使用的智能合约之一。想象一下,你创造了一件可以无限复制的数字艺术品。NFT 智能合约增加了可验证的真实性印章和任何人都可以检查的所有权记录。
本文提供了 NFT 智能合约的全面指南,重点关注 EVM 生态系统,包括其工作方式、其代币标准、部署方法、特性和潜力。
什么是 NFT 智能合约?
NFT 智能合约是定义非同质化代币的所有权记录、转移协议、版税和元数据的数字协议。以太坊上的大多数智能合约都是用 Solidity 编写的,并在以太坊或 Base 等与EVM 兼容的区块链上运行。
NFT 智能合约制定了追踪所有权的规则,确保每项资产都是独一无二的、不可复制的。一些 NFT 智能合约还可以定义不同的规则和功能。让我们来看看支持 NFT 的最常见的智能合约类型。
NFT 代币标准:使用的智能合约类型
ERC-721
ERC -721标准是大多数 NFT 的基础,可确保每个代币都是唯一的,具有自己独特的所有权和元数据。该标准于 2018 年在EIP-721中推出,通常用于数字收藏品、艺术品和游戏内资产。它包括一些关键功能:
一个代币,一个所有者:每个代币在任何时候都由一个个人或实体拥有。
核心功能:提供
ownerOf
(检查所有权)和tokenURI
(访问元数据)等功能。转移批准:允许代币所有者批准其他人转移他们的代币。
ERC-721A
ERC -721A标准是 ERC-721 的一种节省 gas 的实现,旨在显著降低在单笔交易中铸造多个 NFT 时的成本。对于专注于改善用户体验并在需求高峰期将 gas 费用降至最低的项目来说,它已成为一种热门选择。
ERC-721A 的主要特点:
批量铸造:铸造多个 NFT 所需的 Gas 成本与单个 NFT 几乎相同。
优化存储:减少冗余存储更新,提高效率。
向后兼容性:与现有的 ERC-721 基础设施完全兼容。
ERC-721C
ERC-721C标准支持可执行的链上版税和可定制的转让政策,让创作者能够管理他们的 NFT 的交易方式,同时保持与 ERC-721 的向后兼容。
ERC-721C 的主要特点:
可强制执行的版税:确保创作者通过转让政策获得版税。
自定义转账规则:允许将特定平台和地址列入白名单。
打击洗盘交易:有助于减少 NFT 市场的操纵交易行为。
ERC-1155
ERC -1155标准是一个多代币框架,允许单个智能合约管理各种代币类型,包括可替代代币、不可替代代币和半可替代代币。它广泛用于游戏、收藏品和需要高效代币管理的平台。
ERC-1155 的主要特点:
批量转账:在一次交易中转移多种代币类型,降低 gas 成本。
灵活的设计:在同一个合同中结合可替代和不可替代的代币。
高效存储:使用单一合约来代表多种代币类型,优化区块链的使用。
每个代币标准都解决了特定的痛点,并改进了以前的实现。引入标准化不仅简化了这些智能合约的未来开发,还缩短了构建时间并最大限度地降低了漏洞的可能性。
但重要的是,标准化并不意味着限制:开发人员还可以使用这些合约作为基础并添加自定义功能。让我们探索 NFT 智能合约的一些潜在功能。
NFT 智能合约的潜在特征
特许权使用费
NFT 智能合约中的版税可确保创作者获得一定比例的二级销售收入。这对于希望从作品中获得稳定收入的艺术家和内容创作者来说尤其有用。某些标准甚至在 ERC721-C 等市场上强制执行版税,并且只要遵循正确的指南,部署它们就非常容易。
动态元数据
允许 NFT 随着时间的推移改变属性,通常基于用户交互或外部事件。
部分所有权
一些 NFT 智能合约还允许你将 NFT 划分为更小的可交易部分,从而使更广泛的受众能够共享单一资产的所有权,而不会失去对其份额的控制权。
可解锁内容
可解锁内容提供隐藏福利,例如文件或专属体验,仅供 NFT 所有者使用,例如增加访问某些虚拟空间、私人会面和问候等的能力。这些只是潜在用途和功能的几个例子,但可能性仅受开发人员想象力的限制。
那么,这些功能如何应用于 NFT 智能合约呢?大多数 NFT 都是用 Solidity 编写的,所以让我们深入研究用这种语言实现的 NFT 的基础功能。
NFT 智能合约如何运作?
基础 EIP-721 提案概述了智能合约必须包含的基本功能,才能被视为 NFT。让我们探索最常见的功能。
NFT 智能合约中的常见函数及调用
代币元数据:存储和检索 NFT 的唯一属性。
solidityCopy codefunction tokenURI(uint256 tokenId) public view override returns (string memory) { return metadata[tokenId];}
转移:实现钱包之间 NFT 的安全转移。
function transferFrom(address from, address to, uint256 tokenId) public { _transfer(from, to, tokenId);}
铸造:创建新的 NFT 并将所有权分配给特定钱包。
function mint(address to, uint256 tokenId) public { _safeMint(to, tokenId);}
元数据和 IPFS 集成
回顾一下历史:当第一批 NFT 被部署到以太坊主网时,开发人员很快意识到将所有资产元数据存储在链上的成本过高,导致交易的gas 费用过高。
为了解决这个问题,开发人员选择不直接在链上存储资产元数据。相反,他们引入了一个引用系统TokenURI
——指向元数据的链接。
这些元数据文件通常使用去中心化存储解决方案托管,例如 IPFS(星际文件系统),这既确保了可访问性,又确保了去中心化。另一个流行的选择是 Arweave,它为文件和数据库提供去中心化托管和永久存储。
元数据也可以通过将图像等资产编码为字符串直接存储在链上。这种方法确保了不变性,避免了链下解决方案可能出现的链接断开等问题。如果您需要在链上管理集合属性(例如 Web3 游戏),这种方法就特别有用。然而,这种方法会显著增加 gas 成本,因此根据项目的优先级在链上和链下数据之间取得适当的平衡非常重要。
元数据 JSON 示例:
jsonCopy code{ "name": "MyNFT", "description": "A unique NFT", "image": "ipfs://QmExampleHash"}
URI 存储在智能合约中,可通过类似 的调用进行访问tokenURI
。
如何使用 thirdweb 创建和部署 NFT Drop 合约
thirdweb 提供了一种无缝的方式来创建和部署 NFT 智能合约,而无需大量的编码专业知识。以下是启动 NFT 投放合约的分步指南:
步骤 1:注册并登录
安装一个web3钱包并将其连接到您喜欢的区块链网络,例如以太坊或Polygon,创建一个thirdweb账户并连接您的钱包。
第 2 步:访问 thirdweb 的仪表板
访问thirdweb 仪表板,导航到“合同”子菜单并点击“部署合同”。
步骤 3:从列表中选择一个 NFT 合约
通过thirdweb Explore,您可以选择多种NFT 智能合约模板。在本例中,我们将选择NFTDrop 721合约模板。
步骤 4:配置你的合约
命名您的收藏并定义详细信息,例如代币符号、最大供应量、版税费用和收件人钱包地址。
步骤 5:上传元数据
为您的 NFT 准备元数据文件(JSON),并使用 thirdweb 的集成工具将资产上传到 IPFS。
步骤 6:将 NFT 智能合约部署到区块链
选择您想要的区块链网络并确认在您的 web3 钱包中部署。
步骤 7:管理铸造和掉落
使用 thirdweb 仪表板直接安排投放或铸造 NFT。
NFT 智能合约:潜力
NFT 不仅仅是创造具有可验证所有权的数字收藏品,它们还是一个创新框架。虽然它们主要用于数字艺术收藏和游戏内资产,但其潜在应用范围要广泛得多。随着现实世界资产的代币化,NFT 可以简化需要验证所有权的流程。想象一下,使用 NFT 作为您房屋的安全、防篡改的数字契约、可验证的机票,甚至是稀有实物所有权的证明。随着技术的发展,NFT 有可能成为要求透明度、安全性和信任的系统的组成部分。