通过灵魂绑定 NFT 学习 BuildBear 的使用, BuildBear 是一个非常方便测试节点平台。
译者注:BuildBear是一个很好平台,开发人员可以在BuildBear上创建自己的测试节点,并根据需求对其进行定制(如fork 主网),BuildBear 为测试节点提供了相应的浏览器,让我们了解交易背后发生了什么,使用BuildBear可以帮助团队一起进行大规模测试。
在编写SoulBound (灵魂绑定) NFT合约之前,让我们了解什么是SoulBound NFT以及它对我们有什么用。
Soulbound Token(SBT) 只是非同质的代币(NFT),一旦铸造,就不能转让或出售给其他人。
Soulbound Token可以帮助我们:
以及更多。
你可以使用SoulBound代币的想法:
因此,让我们不要再等待,现在就开始
1.1: 在你的CLI(命令行)上使用以下命令来初始化你的项目:
mkdir soulbound-NFT-with-buildbear && cd soulbound-NFT-with-buildbear
1.2: 在你的CLI上运行npx hardhat
命令,并选择创建一个Javascript对象
;在所有选项中选择是
。
一旦你成功地执行了上述命令,如果你在VS Code中打开这个repo,你应该有一个目录结构,类似于下面:
2.1: 在contracts
文件夹中创建一个名为Soulbound.sol
的文件。
2.2 我们使用了在另一篇文章中已经学到的ERC-721合约的代码。
你可以使用以下代码:
你甚至可以从我们的Github上获得上述代码,代码在这里
现在,让我们用 BuildBear 把它部署在私有的测试网上,来玩玩这个合约。
3.1: 在BuildBear上创建一个私有测试网🐻❄️ (你问为什么是BuildBear?请看一下这里。Where Localhost Fails和Win Web3 Hackathons, using BuildBear Testnet's analytics。
3.1.1: 访问BuildBear App。一旦你用你的Github账户登录,你会看到一个类似于下面添加的图片的页面
在这里,为我们的程序创建一个简单的节点,所以我们将点击创建一个端点(Create an endpoint),我们将被重定向到节点配置页面。但在本文中,我们将使用默认配置来创建我们的节点。
所以我们将简单地点击 "创建(create)"按钮,如下所示。
恭喜你! 你已经创建了你的私人testnet节点!
你的页面应该被更新为类似以下的内容。
点击RPC URL(复制或点击查看)以获得到你的私有测试网的RPC。
3.2: 为了进行交易,我们需要来自faucet的资金。不要担心! 我们不需要到处找水龙头来获取测试用的以太币。
点击打开水龙头选项,添加你选择你的账户。
之后,点击水龙头页面右角的添加到Metamask选项。
你的metamask将立即提供 1000BB ETH。
3.3: 将hardhat.config.js
更新为以下内容:
在网络中,我们已经创建了一个名为buildbear的网络,并在那里添加了我们的RPC URL,然后添加了metamask账户的私钥(请不要将你的私钥暴露给任何人,永远不要)。
现在我们的配置已经准备好了! 让我们来编写智能合约。
4.1: 使用下面的脚本来部署你的souolbound合约。
const { ethers } = require("hardhat");
const hre = require("hardhat");
async function main() {
const Soulbound = await hre.ethers.getContractFactory("Soulbound");
const soulbound = await Staking.deploy();
await soulbound.deployed();
console.log(
"Soulbound contract deployed to:", soulbound.address
);
}
main().catch((error) => {
console.error(error);
process.exitCode = 1;
});
打开你的CLI,运行以下命令:
npx hardhat run scripts/deploy.js --network buildbear
4.2 现在,如果你回到 BuildBear Explorer(链接可从 BuildBear App,一旦你创建了你的私人测试网)。你会看到你部署的合约。
4.3 现在打开你部署的地址,在合约标签下打开写合约标签
你可以看到在这里我们有所有的功能,我们已经包含在我们的合约中。
为了给我们的灵魂绑定代币铸币,我们将调用safeMint函数,它需要用户的地址和NFT的tokenURI,其中包括代币的所有元数据。
4.4 (可选): 如果你不知道如何在IPFS上上传tokenURI,那么你必须跟着做。
IPFS允许你在区块链上存储你的数据,如图片,和其他数据。为了存储你自己的数据,打开Pinata,这是一个为你提供在IPFS上存储数据的平台。
在你的系统上创建一个.json文件,并在其中添加以下数据:
{
"title": "John Doe",
"type": "Identity Card",
"properties": {
"age": {
"type": "string",
"description": "19"
},
"image": {
"type": "string",
"description": "hhttps://gateway.pinata.cloud/ipfs/QmQPo8X32C1NnpqjwckxyAHpmXyoJk1G1x4fu5GLcxLqVG"
},
"course": {
"type": "string",
"description": "Computer Science"
}
}
}
然后把这个文件上传到Pinata上。这将为你提供一个储存元数据的IPFS链接。
使用该链接来铸造你的NFT代币。
4.5 将你的钱包地址和tokenURI传给safeMint函数来铸造你的Soulbound token。
然后点击写按钮。
现在你可以看到我们的Soulbound代币已经被铸造了。使用提供的交易哈希值来查看代币的信息:
在这里你可以看到在Token transferred中,可以发现了ERC721转账。
4.6 如果你看到高级标签,你可以看到代币已经在用户提供的地址被铸造了。
你可以使用URI值并在浏览器上搜索,你会获得刚刚提供的代币的元数据:
SoulBond代币的USP。这就是SoulBond的 "SoulBond "之处
Soulbound 代币主要是作为身份代币,只能有一个主人。
但是,即使在身份代币中,我们也可能需要更新任何新的数据到其中。因此,我们不打算铸造一个新的代币,而是更新同一个代币的元数据。
让我们了解一下我们如何更新已铸造的代币的元数据。
4.7 打开Pinata,点击编辑元数据选项,添加你想添加到元数据的键值对。
这将在一定时间内将上述键值对添加到你的元数据中,你不需要再铸造一个代币来添加元数据😃。
Soulbounds代币不仅仅是简单的NFT,它有自己的优势,这使得它非常有吸引力。
要了解更多关于BuildBear的信息,请阅读这里文档
从这里获取上述Github代码。
BTW,如果你知道有谁会热衷于与BuildBear合作。请看一下这里!!
本翻译由 Duet Protocol 赞助支持。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!