市值: $2.607T 0.90%
成交额(24h): $88.5549B -12.29%
恐惧与贪婪指数:

64 - 贪婪

  • 市值: $2.607T 0.90%
  • 成交额(24h): $88.5549B -12.29%
  • 恐惧与贪婪指数:
  • 市值: $2.607T 0.90%
加密货币
话题
百科
资讯
加密话题
视频
热门加密百科

选择语种

选择语种

选择货币

加密货币
话题
百科
资讯
加密话题
视频

如何编写NFT智能合约? (坚固性基础知识)

ERC-721 is Ethereum’s NFT standard, ensuring uniqueness via `tokenId`, enforcing ownership with `ownerOf`/`transferFrom`, and supporting metadata through `tokenURI`.

2026/02/27 05:40

了解 ERC-721 标准

1. ERC-721是广泛采用的以太坊代币标准,专为不可替代代币设计。

2.定义了ownerOftransferFromapprove等核心函数来管理唯一的资产所有权。

3. 每个 ERC-721 合约必须实现IERC721接口并发出标准化事件,例如TransferApproval

4. 通过tokenURI函数的元数据支持允许将每个 NFT 链接到包含名称、描述和图像 URL 的 JSON 文件。

5. 该标准通过为同一合约中的每个代币分配不同的uint256 tokenId来强制执行唯一性。

设置开发环境

1. 安装 Node.js 和 npm 来管理依赖项并运行 Hardhat 或 Truffle 等本地工具。

2. 使用npm init初始化一个新项目,并使用npm install @openzeppelin/contracts安装 OpenZeppelin Contracts。

3. 使用npx Hardhat配置 Hardhat 项目,选择示例项目选项来生成样板文件。

4. 在contracts/下创建一个Solidity文件,命名为MyNFT.sol ,并导入OpenZeppelin的ERC721实现。

5. 使用 Hardhat Network 设置本地测试网络,或通过 Alchemy 或 Infura API 密钥连接到公共测试网络(如 Sepolia)。

编写核心合约逻辑

1. 声明合约MyNFT 为 ERC721、ERC721URIStorage来继承基本功能和元数据存储。

2. 定义一个构造函数,将名称和符号参数传递给父 ERC721 构造函数并设置所有者地址。

3. 实现一个mint函数,该函数使用_safeMint将新的 tokenId 分配给指定地址,并通过_setTokenURI存储其 URI。

4. 使用 OpenZeppelin 的Ownable修饰符添加访问控制,以便只有合约所有者才能调用mint

5. 通过使用私有uint256变量跟踪总供应量并在超出上限时恢复来强制执行铸币限制。

测试和部署注意事项

1. 使用 Hardhat 内置的ethers库用 JavaScript 或 TypeScript 编写测试脚本来模拟铸造、转移和查询代币。

2. 通过断言检查ownerOf返回正确的地址和tokenURI与预期的元数据路径匹配来验证行为。

3. 配置网络凭据后,使用 Hardhat 的npx hardhat run scripts/deploy.js --network sepolia命令部署合约。

4. 使用 Etherscan 的验证工具提交源代码、编译器版本和构造函数参数以实现公开透明。

5. 将所有令牌 URI 存储在 IPFS 或 Arweave 等去中心化基础设施上,以确保元数据永久、防篡改的可用性。

常见问题解答

问:铸造后我可以更改 tokenURI 吗?答:是的,如果您的合约继承了ERC721URIStorage并且您实现了一个具有适当访问控制的函数来调用_setTokenURI

问:如果同一个合约中两个代币具有相同的 tokenId,会发生什么情况?答:不可能——ERC-721要求每个tokenId在合约内全局唯一;重复的分配将被恢复。

问:我需要编写自己的supportsInterface函数吗?答:否 — OpenZeppelin 的ERC721实现包括一个兼容的supportsInterface ,它为 0x80ac58cd (ERC-721) 和 0x5b5e139f (ERC-721Metadata) 返回 true。

问:在不检查审批状态的情况下使用transferFrom是否安全?答:OpenZeppelin ERC721实现在内部处理所有批准验证;如果使用正确,直接调用transferFrom是安全的。

免责声明:info@kdj.com

所提供的信息并非交易建议。根据本文提供的信息进行的任何投资,kdj.com不承担任何责任。加密货币具有高波动性,强烈建议您深入研究后,谨慎投资!

如您认为本网站上使用的内容侵犯了您的版权,请立即联系我们(info@kdj.com),我们将及时删除。

相关百科

什么是 NFT 生态系统代币?为什么NFT项目要推出自己的代币?

什么是 NFT 生态系统代币?为什么NFT项目要推出自己的代币?

2026-08-25 21:59:57

定义和核心功能1. NFT 生态系统代币是由在更广泛的不可替代代币空间内运行的平台、市场或协议发行的本机实用程序或治理代币。 2. 这些代币通常构建在标准化智能合约框架上,例如以太坊上的 ERC-20 或 Solana 上的 SPL,从而实现与去中心化交易所和借贷协议等 DeFi 基础设施的互操作性...

什么是 NFT 实用程序?除了数字资产你还能得到什么?

什么是 NFT 实用程序?除了数字资产你还能得到什么?

2026-08-21 09:40:07

Bitcoin 减半机制1. Bitcoin 的协议强制执行固定的发行时间表,其中大约每 210,000 个区块,区块奖励就会减少一半。 2. 该事件大约每四年发生一次,直接减少每个区块新进入流通的 BTC 数量。 3.截至2020年减半,矿工每区块获得6.25 BTC;下一次减少将使其达到 3.1...

什么是动态 NFT? NFT 的图像或元数据会随着时间的推移而改变吗?

什么是动态 NFT? NFT 的图像或元数据会随着时间的推移而改变吗?

2026-08-31 18:20:08

定义及核心机制1. 动态 NFT 是一种不可替代的代币,其元数据在铸造后可以通过编程方式可变。 2. 与引用 IPFS 或集中式服务器上托管的不可变 JSON 文件的静态 NFT 不同,动态 NFT 指向由可更新智能合约控制的 URI 端点。 3. 可以重写ERC-721或ERC-1155合约中的t...

什么是 NFT 掉落?如何在新的 NFT 系列售完之前找到它们?

什么是 NFT 掉落?如何在新的 NFT 系列售完之前找到它们?

2026-08-23 02:40:00

Bitcoin 减半机制1. Bitcoin 的协议强制执行固定的发行时间表,其中大约每 210,000 个区块,区块奖励就会减少一半。 2. 该事件大约每四年发生一次,直接减少了新进入流通的 BTC 数量。 3.截至2020年减半,矿工每区块获得6.25 BTC;下一次减少将达到 3.125 BT...

什么是免费的 NFT 铸币厂?扣除 Gas 费后“免费”真的免费吗?

什么是免费的 NFT 铸币厂?扣除 Gas 费后“免费”真的免费吗?

2026-08-22 10:00:29

市场波动模式1. Bitcoin 在 ETF 批准公告或重大交易所中断等高流动性事件期间,24 小时窗口内价格波动通常超过 5%。 2. 当第 2 层升级提案进入最终治理投票阶段时,以太坊的波动性指数会飙升,特别是在多个竞争性汇总同时获得开发人员支持的情况下。 3. 稳定币脱钩事件(例如 2023 ...

什么是 NFT 铸币通证?为什么有些项目在铸造之前需要一个?

什么是 NFT 铸币通证?为什么有些项目在铸造之前需要一个?

2026-08-29 09:00:30

Bitcoin 减半机制1. Bitcoin 的协议强制规定 2100 万枚代币的固定供应上限,并通过区块奖励引入新单位。 2. 每 210,000 个区块(大约每四年),区块奖励就会减少一半,这个过程称为减半。 3. 最近一次减半发生在 2024 年 4 月,每个区块的奖励从 6.25 BTC 减...

什么是 NFT 生态系统代币?为什么NFT项目要推出自己的代币?

什么是 NFT 生态系统代币?为什么NFT项目要推出自己的代币?

2026-08-25 21:59:57

定义和核心功能1. NFT 生态系统代币是由在更广泛的不可替代代币空间内运行的平台、市场或协议发行的本机实用程序或治理代币。 2. 这些代币通常构建在标准化智能合约框架上,例如以太坊上的 ERC-20 或 Solana 上的 SPL,从而实现与去中心化交易所和借贷协议等 DeFi 基础设施的互操作性...

什么是 NFT 实用程序?除了数字资产你还能得到什么?

什么是 NFT 实用程序?除了数字资产你还能得到什么?

2026-08-21 09:40:07

Bitcoin 减半机制1. Bitcoin 的协议强制执行固定的发行时间表,其中大约每 210,000 个区块,区块奖励就会减少一半。 2. 该事件大约每四年发生一次,直接减少每个区块新进入流通的 BTC 数量。 3.截至2020年减半,矿工每区块获得6.25 BTC;下一次减少将使其达到 3.1...

什么是动态 NFT? NFT 的图像或元数据会随着时间的推移而改变吗?

什么是动态 NFT? NFT 的图像或元数据会随着时间的推移而改变吗?

2026-08-31 18:20:08

定义及核心机制1. 动态 NFT 是一种不可替代的代币,其元数据在铸造后可以通过编程方式可变。 2. 与引用 IPFS 或集中式服务器上托管的不可变 JSON 文件的静态 NFT 不同,动态 NFT 指向由可更新智能合约控制的 URI 端点。 3. 可以重写ERC-721或ERC-1155合约中的t...

什么是 NFT 掉落?如何在新的 NFT 系列售完之前找到它们?

什么是 NFT 掉落?如何在新的 NFT 系列售完之前找到它们?

2026-08-23 02:40:00

Bitcoin 减半机制1. Bitcoin 的协议强制执行固定的发行时间表,其中大约每 210,000 个区块,区块奖励就会减少一半。 2. 该事件大约每四年发生一次,直接减少了新进入流通的 BTC 数量。 3.截至2020年减半,矿工每区块获得6.25 BTC;下一次减少将达到 3.125 BT...

什么是免费的 NFT 铸币厂?扣除 Gas 费后“免费”真的免费吗?

什么是免费的 NFT 铸币厂?扣除 Gas 费后“免费”真的免费吗?

2026-08-22 10:00:29

市场波动模式1. Bitcoin 在 ETF 批准公告或重大交易所中断等高流动性事件期间,24 小时窗口内价格波动通常超过 5%。 2. 当第 2 层升级提案进入最终治理投票阶段时,以太坊的波动性指数会飙升,特别是在多个竞争性汇总同时获得开发人员支持的情况下。 3. 稳定币脱钩事件(例如 2023 ...

什么是 NFT 铸币通证?为什么有些项目在铸造之前需要一个?

什么是 NFT 铸币通证?为什么有些项目在铸造之前需要一个?

2026-08-29 09:00:30

Bitcoin 减半机制1. Bitcoin 的协议强制规定 2100 万枚代币的固定供应上限,并通过区块奖励引入新单位。 2. 每 210,000 个区块(大约每四年),区块奖励就会减少一半,这个过程称为减半。 3. 最近一次减半发生在 2024 年 4 月,每个区块的奖励从 6.25 BTC 减...

查看所有文章

User not found or password invalid

Your input is correct