市值: $2.641T 0.40%
成交额(24h): $98.8166B 16.07%
恐惧与贪婪指数:

68 - 贪婪

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

选择语种

选择语种

选择货币

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

如何从头开始创建 NFT 合约(ERC-721)?

ERC-721 mandates unique token IDs, owner tracking, and Transfer events; optional metadata via tokenURI enables rich NFTs—implemented securely using OpenZeppelin contracts.

2026/01/22 03:40

了解 ERC-721 标准规范

1. ERC-721定义了每个合规合约必须实现的一组强制函数和事件,包括ownerOfsafeTransferFromapprove

2. 该标准强制执行唯一的代币标识符——每个 NFT 必须有一个独特的 uint256 ID,在任何给定时间映射到恰好一个所有者。

3. 元数据支持是可选的,但被广泛采用; tokenURI函数返回一个指向包含名称、描述和图像链接的 JSON 的 URI。

4. Transfer 事件必须发出带有 from、to 和 tokenId 参数的Transfer ,以确保钱包和浏览器兼容性。

5. 基本 ERC-721 不要求支持枚举,但许多实现添加了TotalSupplytokenByIndex来进行市场索引。

搭建开发环境

1. 安装 Node.js 和 npm 来管理 Hardhat 或 Foundry 等依赖项,以进行本地编译和测试。

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

3. 配置 Hardhat 配置文件以连接到 Sepolia 或本地 Anvil 网络以进行部署模拟。

4. 在contracts目录下创建一个名为MyNFT.sol的Solidity文件,并导入OpenZeppelin的ERC721Ownable模块。

5. 定义构造函数参数,例如名称和符号,然后使用这些值调用父 ERC721 构造函数。

编写核心合约逻辑

1. 添加_baseTokenURI状态变量来存储元数据的根路径,仅由合约所有者更新。

2. 重写tokenURI函数,将_baseTokenURI与 tokenId 字符串连接起来,确保 IPFS 或 HTTP 端点正确解析。

3. 实现一个mint函数,该函数使用_safeMint将新令牌专门分配给 msg.sender 并递增内部计数器。

4. 在setBaseURI等敏感函数上引入onlyOwner修饰符,以防止未经授权的元数据操作。

5. 包含supportsInterface覆盖,以针对0x80ac58cd (ERC-721) 和0x5b5e139f (ERC-721 元数据) 接口ID 返回true。

在测试网上编译和部署

1.运行npx Hardhatcompile生成ABI和字节码;验证没有出现语法或继承错误。

2. 编写一个部署脚本,以“CryptoPanda”和“CPANDA”作为参数调用合约构造函数。

3. 在为部署者地址提供资金后,使用npx hardhat run scripts/deploy.js --network sepolia广播交易。

4. 使用编译期间使用的相同编译器版本和优化设置在 Etherscan Sepolia 上验证合约。

5. 使用 Etherscan 的“Write as Proxy”或 MetaMask 连接的 dApp 接口与已部署的合约进行交互,以触发铸造和传输。

常见问题解答

问:铸造后我可以更改 tokenURI 吗?答:是的,如果您的合约允许通过仅限所有者的 setter 函数进行更改,但更改它会追溯影响所有之前铸造的代币,除非您存储每个代币的 URI。

问:如果两个代币共享相同的 ID 会发生什么?答:由于 OpenZeppelin 的_owners映射验证强制执行重复映射检查,合约将在铸造期间恢复。

问:ERC-721 的 Gas 成本是否比 ERC-20 更高?答:是的,ERC-721 操作需要对每个代币 ID 进行单独的存储写入,从而导致铸造和传输的 Gas 消耗量显着增加。

问:我需要在合同中落实特许权使用费吗?答:否——特许权使用费不属于 ERC-721 规范的一部分。如果通过 ERC-2981 实现,OpenSea 等平台会从RoyaltyInfo函数中读取版税信息。

免责声明:info@kdj.com

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

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

相关百科

如何查看DOGE期货成交量及持仓量?

如何查看DOGE期货成交量及持仓量?

2026-09-12 08:39:38

了解 DOGE 期货交易量1. 期货交易量是指在特定时间范围内交易的DOGE份期货合约的总数,通常以每天或每小时计算。 2. 高成交量通常表明市场参与度较高,并且可以表明潜在的趋势延续或逆转,具体取决于价格走势背景。 3. 交易者监控交易量峰值以及突破或崩溃,以评估合法性——交易量上升支持的持续价格...

如何查看BTC期货交易量和持仓量?

如何查看BTC期货交易量和持仓量?

2026-09-12 15:19:55

BTC期货指标的数据源1. CoinGlass API v4 提供 30 多个交易所的实时融资利率、清算热图和精细的未平仓合约细分。 2. 币安期货 API 提供对买卖深度、合约特定交易量历史记录和保证金比率快照的本机访问。 3. OKX 数据门户提供可下载的 CSV 档案,其中包含每日结算价格、按...

如何看懂DOGEUSDT永续合约图表?

如何看懂DOGEUSDT永续合约图表?

2026-09-11 19:19:48

了解 DOGEUSDT 永续图表上的价格走势1. 蜡烛图的形成揭示了直接的市场情绪——绿色蜡烛表示买盘占主导地位,而红色蜡烛则反映该区间内的抛售压力。 2. 实体上方和下方的灯芯信号拒绝更高或更低的价格;在波动较大的模因币市场中,长上影线通常先于短期反转。 3. 接近关键水平的连续小实体蜡烛表明在突...

如何阅读币安上的ETHUSDT期货图表?

如何阅读币安上的ETHUSDT期货图表?

2026-09-13 05:20:26

Bitcoin 减半机制1. 每产生 210,000 个区块,Bitcoin 个矿工的区块奖励减半。 2. 此事件大约每四年发生一次,并被硬编码到 Bitcoin 的协议中。 3. 最近一次减半将每个区块的奖励从 6.25 BTC 减少到 3.125 BTC。 4. 总供应上限仍固定在 2100 万...

如何在币安查看BTC合约资金费用?

如何在币安查看BTC合约资金费用?

2026-09-10 08:00:06

找到资金费率显示1. 进入币安合约交易界面,选择BTCUSDT永续合约。 2. 观察价格图表正下方或订单簿附近的区域——该区域包含一个标有资金费率的标签框。 3. 显示值实时更新,反映当前每小时的资金费率,无论是正数还是负数。 4. 单击资金费率框将打开一个弹出窗口,显示多个结算周期的历史资金价值。...

如何计算SOLUSDT期货盈亏?

如何计算SOLUSDT期货盈亏?

2026-09-10 19:19:37

了解 SOLUSDT 期货合约规格1、每张SOLUSDT期货合约均以USDT报价,以USDT结算,为线性永续合约。 2.基础资产为SOL,报价资产为USDT——所有盈亏计算均直接以USDT计价。 3. 价格变动的最小变动单位为0.01 USDT,合约乘数固定为每张合约1 SOL。 4. Bitget...

如何查看DOGE期货成交量及持仓量?

如何查看DOGE期货成交量及持仓量?

2026-09-12 08:39:38

了解 DOGE 期货交易量1. 期货交易量是指在特定时间范围内交易的DOGE份期货合约的总数,通常以每天或每小时计算。 2. 高成交量通常表明市场参与度较高,并且可以表明潜在的趋势延续或逆转,具体取决于价格走势背景。 3. 交易者监控交易量峰值以及突破或崩溃,以评估合法性——交易量上升支持的持续价格...

如何查看BTC期货交易量和持仓量?

如何查看BTC期货交易量和持仓量?

2026-09-12 15:19:55

BTC期货指标的数据源1. CoinGlass API v4 提供 30 多个交易所的实时融资利率、清算热图和精细的未平仓合约细分。 2. 币安期货 API 提供对买卖深度、合约特定交易量历史记录和保证金比率快照的本机访问。 3. OKX 数据门户提供可下载的 CSV 档案,其中包含每日结算价格、按...

如何看懂DOGEUSDT永续合约图表?

如何看懂DOGEUSDT永续合约图表?

2026-09-11 19:19:48

了解 DOGEUSDT 永续图表上的价格走势1. 蜡烛图的形成揭示了直接的市场情绪——绿色蜡烛表示买盘占主导地位,而红色蜡烛则反映该区间内的抛售压力。 2. 实体上方和下方的灯芯信号拒绝更高或更低的价格;在波动较大的模因币市场中,长上影线通常先于短期反转。 3. 接近关键水平的连续小实体蜡烛表明在突...

如何阅读币安上的ETHUSDT期货图表?

如何阅读币安上的ETHUSDT期货图表?

2026-09-13 05:20:26

Bitcoin 减半机制1. 每产生 210,000 个区块,Bitcoin 个矿工的区块奖励减半。 2. 此事件大约每四年发生一次,并被硬编码到 Bitcoin 的协议中。 3. 最近一次减半将每个区块的奖励从 6.25 BTC 减少到 3.125 BTC。 4. 总供应上限仍固定在 2100 万...

如何在币安查看BTC合约资金费用?

如何在币安查看BTC合约资金费用?

2026-09-10 08:00:06

找到资金费率显示1. 进入币安合约交易界面,选择BTCUSDT永续合约。 2. 观察价格图表正下方或订单簿附近的区域——该区域包含一个标有资金费率的标签框。 3. 显示值实时更新,反映当前每小时的资金费率,无论是正数还是负数。 4. 单击资金费率框将打开一个弹出窗口,显示多个结算周期的历史资金价值。...

如何计算SOLUSDT期货盈亏?

如何计算SOLUSDT期货盈亏?

2026-09-10 19:19:37

了解 SOLUSDT 期货合约规格1、每张SOLUSDT期货合约均以USDT报价,以USDT结算,为线性永续合约。 2.基础资产为SOL,报价资产为USDT——所有盈亏计算均直接以USDT计价。 3. 价格变动的最小变动单位为0.01 USDT,合约乘数固定为每张合约1 SOL。 4. Bitget...

查看所有文章

User not found or password invalid

Your input is correct