当前位置: 首页 > 科技观察

如何在10分钟内创建和部署NFT智能合约

时间:2023-03-16 11:06:40 科技观察

本文转载自微信公众号《区块链研究实验室》,作者连三丰。转载本文请联系区块链研究实验室公众号。什么是NFTNFT代表不可替代的令牌,例如一张美元钞票是可替代的,因为你可以用它换取另一张美元钞票(而且你不必担心美元钞票的序列号)。同样,比特币是一种可替代的代币,因为两个不同的比特币是相同的。那么,不可替代的东西就是那些独一无二的,不能与其他东西互换的东西。不可替代的令牌本质上是在区块链上跟踪的唯一令牌。Non-fungibletoken具有以下特点:它们是唯一的:每个Non-fungibletoken代表数字或现实世界中的某个对象,即使存在类似的对象也是唯一的。例如,即使有人“创造”了100件与NFT相同的数字艺术作品,每件作品都会在区块链上被单独追踪。它们是可验证的:这些NFT的历史所有权记录在公共分类账上,并且对所有人可见。这使得难以“复制”并且证明真实性相对简单。它们是可交易的:与其他加密资产一样,它们是可交易的,尽管通常在特殊交易所进行。大多数NFT都建立在以太坊区块链之上,不可替代代币(NFT)如今风靡一时,作为开发人员,您可能想知道如何创建自己的代币。本文将解释如何以最简单的方式进行操作,以便您可以在几分钟内启动并运行。我们将使用标准的OpenZeppelinERC721合约,这是智能合约的黄金标准。部署智能合约的工具有很多,但在本文中,我们将使用web3CLI工具,因为它是编译和部署合约最快、最简单的工具。在F中设置环境?让某件事只需要做一次,然后您就可以随心所欲地进行部署和交互,而无需再次做这件事。1.安装CLI工具这一行将安装该工具,因此您可以立即开始使用它。如果您担心install.sh的作用,请随时阅读。curl-LSshttps://raw.githubusercontent.com/gochain/web3/master/install.sh|SH2。设置网络我们将在这里使用GoChain,这样我们就不必支付10美元来部署合约,然后为每个NFT10美元花费它。使用GoChain,我们只需要支付零星的费用,并且100%兼容以太坊,可以像以太坊一样使用。当然,您可以将下面的行更改为指向以太坊,并根据需要支付额外费用。exportWEB3_NETWORK=gochain#forethereum:#exportWEB3_NETWORK=ethereum3。添加/获取气体您将需要为这些交易使用一些气体供应,或创建一个新的供其使用。这将是GoChain上的$GO或以太坊上的$ETH。要创建一个新帐户,请运行:web3accountcreate这将打印:Privatekey:0xABC123Publicaddress:0xXYZ456将一些$GO发送到“公共地址”。如果您需要一些$GO才能开始,请进入我们的电报并询问,那里的人会好心地给您发送一两个$GO。复制“私钥”(或根据需要使用现有的私钥)并运行:exportWEB3_PRIVATE_KEY=0xABC123此外,将此私钥的副本保存在安全的地方以备下次使用。部署现在我们已经设置好我们的网络并在我们的私钥中设置了一些gas密钥,我们可以开始玩得开心了。创建合约WEB3CLI内置了常见合约的代码生成器,例如ERC20和ERC721。只需运行:web3generatecontracterc721--symbolKATS--name"KryptoKats"--base-urihttps://kryptokats.com/token/这将生成一个名为KATS.sol的文件,这是新NFT合约的统一程序。1.部署合约从这里开始,我们只需要编译和部署它。同样,web3CLI使这部分变得简单:web3contractbuildKATS.solweb3contractdeployKATS.bin这将打印出您的新合同地址。您现在已经部署了您的NFT合约!现在合约已部署,我们只需要创建一个新合约。铸造NFT时,您需要提供拥有此新NFT的人的地址:web3contractcall--wait--abiKATS.abi--gas-limit2000000--functionmint0xABC此函数生成一个全新的NFT并将其分配给地址0xABC。ERC721的新OpenZeppelin预设有一个自动递增的ID,因此您将在输出中看到新的令牌ID。例如:ParsedLogs:[{"name":"Transfer","fields":{"from":"0x00000","to":"0x000ABC","tokenId":"0x00001"}}]这个输出已经被截断了,删除了一堆零,但是你可以看到新的代币ID是数字1。转移NFT现在,如果你拥有一个NFT并想转移它,你可以调用transferFrom函数:web3contractcall--wait--abiKATS.abi--gas-limit2000000--functiontransferFrom0xABC0xXYZ1这会将ID为1的代币转移给新所有者0xXYZ。您可以在GoChainExplorer中查看和搜索代币。