如何给 NFT 定价
原文:https://www.web3.university/tracks/build-your-first-nft/how-to-set-a-price-on-a-nft
你刚刚创作了一幅 NFT,你想把它卖给你的 NFT 爱好者伙伴们。为此,我们必须对 NFT 进行定价,有两种主要的定价方法:
- 在智能合同内(本指南)
- 在 NFT 市场或平台上列出 NFT(更受欢迎的方法)
在合同中设定 NFT 价格
铸造时需要费用
注意:以下部分不是一个交钥匙解决方案。在 NFT 创建教程的步骤 10 中,我们需要改变 Solidity 来接受铸造的付款,这意味着任何指示铸造的 frontendweb3 / ethers.jslogic 都需要包含它们的 SG . value 参数,以允许 ETH 的转移。
这种收费模式是完全分散的,因为它发生在合同内,并将收费机制融入铸造过程本身。要实现铸造价格,您需要修改您的智能合约以包含此行为。作为高层次的总结,可以通过使铸币功能可支付并要求用户在触发将 NFT 转移给买方之前支付特定数量的 ETH 来制定 NFT 铸币价格。
下面是这种铸造过程的一段示例代码:
-- CODE language-js line-numbers --
function mintToken(address to, uint256 tokenId, string uri) public virtual payable {
require(msg.value >= 10, "Not enough ETH sent; check price!");
mint(to, tokenId);
_setTokenURI(tokenId, uri);
}
函数 mintToken(address to,uint256 tokenId,string uri)公共虚拟应付款
- 为了允许用户向 ETH 付费来铸造一个 NFT,我们需要使这个功能成为公共的和可支付的。公共函数可以在内部调用或通过消息调用,以允许任何人与该函数进行交互。(我们不希望这个函数只能被合同的所有者调用,因为这会将潜在的买家拒之门外!)
require(msg.value > = 10,"发送的 ETH 不够;查价格!”);
- 这个 require 语句要求 payable 函数至少接收 10 个 wei,否则函数将失败并恢复。msg.value 参数是与 mint 函数一起发送的 amount 的 ETH 值。
mint(to,token id);
- 这将调用 OpenZepplin 的 ERC721 契约文件中包含的 mint 函数,并将选定的 NFT 实例化/传输给买方。
_ settoknuri(token id,uri);
- 这将调用 OpenZepplin 的 ERC721 协定文件中包含的 _ setTokenURIfunction,并将 NFT URI 设置为特定的端点。
There 有许多不同的变种来实现铸造合同中的费用。上面列出的是最简单的一种,但是许多协议也使用非常复杂的费用模式。
通过拍卖平台设定 NFT 价格
在 OpenSea 或其他 NFT 拍卖平台上拍卖 NFT
一个非编码的选择是简单地在 OpenSea 或另一个 NFT 拍卖网站上列出你新铸造的 NFT,这样你就可以给它定价了。OpenSea 的 UI 层运行在 NFT 之上,允许你定价、接受出价或其他更复杂的拍卖方法,并为你处理所有的逻辑。
对于以太坊主网,使用:https://opensea.io/
对于测试网,使用:https://testnets.opensea.io/
注意: NFT 拍卖平台通常会对拍卖过程的挂牌和处理收费。与不同的平台保持同步,以找到有竞争力的价格,并最大限度地提高您的 NFT 销售额。和 SuperRare 是两个替代平台,也为 OpenSea 提供类似的服务。