如何为 NFT 定价
作者:Alchemy Team
关于如何为你的 NFT 定价的指南
另外,别忘了查看我们 NFT 教程系列的其余部分:
你刚刚创建了一个 NFT,想把它卖给其他 NFT 爱好者。为此,我们需要给这个 NFT 定价,主要有两种定价方式:
- 在智能合约中定价(本指南)
- 将 NFT 上架到 NFT 交易平台 或其他平台(更常见的做法)
在合约中设置 NFT 价格
在铸造时要求收取费用
注意:以下内容不是一个开箱即用的方案。在 NFT 创建教程 的 第 10 步 中,我们需要修改 Solidity 代码以支持接收铸造费用,这意味着任何用于调用铸造功能的前端 web3 / ethers.js 逻辑都需要包含 msg.value 参数,以便转移 ETH。
这种收费模式是完全去中心化的,因为它发生在合约内部,将收费机制直接融入铸造流程本身。要实现铸造时的收费,你需要修改智能合约以加入这一行为。概括来说,可以通过将 mint 函数设为 payable,并要求用户在触发 NFT 转移给买家之前支付一定数量的 ETH,来实现 NFT 铸造收费。
下面是这种铸造方式的一段示例代码:
function mintToken(address to, uint256 tokenId, string uri) public virtual payable
- 为了让用户支付 ETH 来铸造 NFT,我们需要将这个函数设为 public 且 payable。public 函数可以在内部调用,也可以通过消息调用,从而允许任何人与该函数交互。(我们不希望这个函数只能被合约所有者调用,否则会把潜在买家挡在外面!)
require(msg.value >= 10, "Not enough ETH sent; check price!");
- 这条 require 语句要求 payable 函数至少收到 10 wei,否则函数会失败并回滚。
msg.value参数是随铸造函数一起发送的 ETH 数量。
mint(to, tokenId);
- 这会调用 OpenZepplin 的 ERC721 合约文件中包含的 mint 函数,将选定的 NFT 实例化/转移给买家。
_setTokenURI(tokenId, uri);
- 这会调用 OpenZepplin 的 ERC721 合约文件中包含的
\_setTokenURIfunction,将 NFT URI 设置为某个特定的端点。
为铸造合约添加收费机制的实现方式有很多种。上面列出的是最简单的一种,但许多协议也会使用复杂得多的收费模式。
通过拍卖平台设置 NFT 价格
将 NFT 上架到 OpenSea 或其他 NFT 拍卖平台
一种无需编写代码的替代方式,就是直接把你刚铸造的 NFT 上架到 OpenSea 或其他 NFT 拍卖网站,让你可以为它定价。OpenSea 运行在 NFT 之上的 UI 层,让你可以设定价格、接受出价,或使用其他更复杂的拍卖方式,所有相关逻辑都由平台处理。
对于 Ethereum 主网,使用:https://opensea.io/
对于测试网,使用:https://testnets.opensea.io/
Alchemy 新闻通讯
第一时间获取发布信息
订阅我们的新闻通讯
获取 Alchemy 的最新产品更新和资源
填写您的电子邮箱地址即表示您同意接收我们的营销通讯和产品更新。您确认 Alchemy 按照我们的隐私声明处理我们收到的信息。您可以随时取消订阅。


