本文详细介绍了如何在BNB智能链上创建和部署音乐NFT,包括使用Remix和MetaMask,以及如何将音乐文件上传至IPFS并生成元数据。文章结构清晰,步骤详尽,适合有区块链和智能合约基础的读者。
BNB Smart Chain 为创作者提供了一种快速且经济的将音乐上链的选择。此外,BSC 允许你使用 ERC721 标准规范,因此如果你之前在以太坊上处理过 NFT,这应该是一个熟悉的过程。这个过程类似于创建图像 NFT;唯一的区别在于文件类型。你可以在 这里 了解更多关于 ERC721 代币标准的信息。
在本指南中,你将使用 Remix 和 MetaMask 创建并部署一段音乐作为 ERC721 NFT 到 BSC 测试网。
你将把音乐文件上传到去中心化存储系统 (IFPS)
你将创建并上传 NFT 的元数据。
你将学习如何在 Remix 中创建、编译和部署智能合约。
要在 BNB Smart Chain 测试网上进行开发,你需要一个 API 端点来连接网络。你可以使用公共节点或部署和管理自己的基础设施;但是,如果你想要更快的响应时间,你可以把繁重的工作交给我们。你可以在 这里 注册一个免费账户。
复制你的 HTTP 提供者:
如果你在 MetaMask 中还没有 BNB Smart Chain 测试网,请使用以下设置添加它:
网络名称:BNB Smart Chain - 测试网
新 RPC URL:https://example.bsc.quiknode.pro/0123456/(用你的 HTTP 提供者更新)
ChainID:97
符号:BNB
区块浏览器 URL:https://testnet.bscscan.com
由于我们要在 BCS 测试网上部署智能合约,因此我们需要一些测试 BNB 代币来支付手续费。
访问 BNB Smart Chain Faucet,粘贴你的 BNB 钱包地址,然后点击“Give Me BNB”以接收 0.5 BNB:
在编写你的 NFT 合约之前,你必须托管你的音乐文件并创建一个元数据文件。我们将使用 IPFS,这是一个点对点的文件存储和共享分布式系统。根据你的操作系统,下载并安装 IPFS CLI,请遵循 IPFS 文档中的安装指南。
通过在终端/cmd 窗口中输入以下内容来启动 IPFS 仓库:
ipfs init
接下来,通过打开另一个终端/cmd 窗口并输入以下内容来启动 IPFS 守护进程:
ipfs daemon
最后,在你的第一个终端窗口中,将歌曲添加到 IPFS(确保你):
ipfs add <PATH_TO>/SpecialSong.mp3
上传成功后,终端将生成一个以 Qm 开头的哈希。复制从 Qm 开始的哈希,并添加前缀 “https://ipfs.io/ipfs/”。它应该类似于 https://ipfs.io/ipfs/QmYpgrCyfvEaec3DxwcQs5gaiw2dEEEcoaYKKYJ3j9fdF1,这将允许你在浏览器中收听你的歌曲:
创建一个 JSON 文件 nft.json,并按照以下步骤将其保存在与歌曲相同的目录中。在 nft.json 中粘贴以下代码:
{
"name": "My first Song NFT",
"description": "My first music NFT project.",
"song": "https://ipfs.io/ipfs/YOUR_Qm_HASH"
}
随意更新名称和描述,并确保更新 IPFS URI。
现在添加并上传 JSON 文件。在命令行中输入:
ipfs add nft.json
请注意终端中返回的哈希。你将在下一步骤中需要它。
前往以太坊 Remix IDE,新建一个 Solidity 文件,例如 - music.sol。
将以下代码粘贴到你的新 Solidity 脚本中:
// SPDX-License-Identifier: MIT
pragma solidity 0.8.0;
import "https://github.com/0xcert/ethereum-erc721/src/contracts/tokens/nf-token-metadata.sol";
import "https://github.com/0xcert/ethereum-erc721/src/contracts/ownership/ownable.sol";
contract musicNft is NFTokenMetadata, Ownable {
constructor() {
nftName = "Quick Music NFT";
nftSymbol = "QMNFT";
}
function mint(address _to, uint256 _tokenId, string calldata _uri) external onlyOwner {
super._mint(_to, _tokenId);
super._setTokenUri(_tokenId, _uri);
}
}
以下是上述代码的解释:
第 1 行:指定 SPDX 许可证类型,这是在 Solidity ^0.6.8 后的增加。当智能合约的源代码向公众发布时,这些许可证可以帮助解决/避免版权问题。如果你不希望指定任何许可证类型,可以使用特殊值 UNLICENSED 或简单地跳过整个注释(这不会导致错误,只是警告)。
第 2 行:声明 Solidity 版本。
第 4-5 行:导入 0xcert/ethereum-erc721 合约。
第 7 行:启动我们的合约,命名为 musicNft,并提到它扩展了 NFTokenMetadata 和 Ownable 合约。
第 9-12 行:初始化构造函数并设置代币的名称和符号。
第 14 行:声明 mint 函数,有三个参数:类型为 address 的变量 _to,将存储 NFT 代币接收者的地址;类型为 uint256 的变量 _tokenId,将保存代币 ID;类型为 string 的变量 _uri,将存储 JSON 文件的 URI。将 mint 声明为 external 意味着它可以从其他智能合约和外部的自我作用域访问。
第 15 行:使用接收者的地址和代币 ID 铸造代币。
第 16 行:使用代币 ID 和 JSON 文件的 URI 设置代币 URI。
一旦你对代码满意,点击 Compile Contract 以编译智能合约。
在左侧面板中单击 Deploy and Run Transactions 图标(看起来像以太坊标志和三角形)。
将你的环境设置为 Injected Web3,并选择 Smart Chain 测试网的钱包 Metamask。
点击 Deploy。
如果在部署之前收到错误信息“该合约可能是抽象的”,这意味着在合约选项卡下未选择正确的合约。你需要从 "Contract" 下拉菜单中选择带有你歌曲名称的合约名称。然后再次点击 Deploy。
系统将提示你从 Metamask 批准交易。接受它:
在 Metamask 中确认交易:
成功后,你将看到如下说明。
最后,在 Remix 的左侧边栏滚动到 “Deployed Contracts” 部分并展开已部署的合约。你将看到一些你可以在合约上调用的方法。展开 mint 函数并添加以下详细信息:
让我们铸造你的 NFT!
点击下拉箭头展开 Mint 方法。
将你的钱包地址输入到 _to 字段。
在 _tokenid 中输入一个整数值。我们使用 1。
在 _uri 字段中输入你之前创建的 .json 文件的 IPFS URI。
然后点击 Transact 并在 Metamask 中批准交易。
你应该能够在你的 Metamask 和区块浏览器中查看成功的交易:
你还可以通过向下滚动到 tokenURI 方法,双重检查你的元数据是否存储正确。在上面输入与 _tokenId 相同的值:
你应该看到包含你 .json 文件 URI 的响应!
干得好!你已经铸造了你的第一个音乐 NFT!
你现在拥有将音乐文件存储在去中心化存储并将其铸造成 NFT 的工具。
如果你有任何问题或想要联系我们,可以在 Discord 和 Twitter 上找到我们!
如果你对本指南有任何反馈或问题,请告诉我们。我们期待你的来信。
- 原文链接: quicknode.com/guides/oth...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!