什么是NFT
NFT代表不可替代的令牌,例如,一个美元钞票是可替代的,因为您可以将其交换为另一个美元钞票(并且您不必担心美元钞票的序列号)。同样,比特币是一个可替代的代币,因为两个不同的比特币完全相同。
那么,不可替代的事物就是那些唯一且不能与其他事物互换的事物。不可替代的令牌本质上是在区块链上跟踪的唯一令牌。
不可替代的代币具有以下特征:
它们是唯一的:每个不可替代的令牌都代表数字或现实世界中的某个对象,并且即使存在类似的对象也是唯一的。例如,即使有人“创造”了与NFT相同的数字艺术作品100件,每件都会在区块链上被单独跟踪。
它们是可验证的:这些NFT的历史所有权记录在公共分类帐中,并且所有人都可以看到。这使得难以“复制”并且相对简单地证明真实性。
它们是可交易的:与其他加密资产一样,它们也是可交易的,尽管通常在特殊交易所交易。
大多数NFT都建立在以太坊区块链之上,如今不可替代令牌(NFT)风行一时,作为开发人员,您可能想知道如何创建自己的NFT。本文将解释如何以最简单的方式做到这一点,以便您在短短几分钟内就可以启动并运行。
我们将使用标准的OpenZeppelin ERC721合约,这是智能合约的黄金标准。有许多用于部署智能合约的工具,但是在本文中,我们将使用web3 CLI工具,因为它是编译和部署合约的最快,最简单的工具。
在FØ llowing东西只是必须做一次,然后就可以部署和互动就像你想不再次做这个东西。
这个衬板将安装该工具,因此您可以立即开始使用它。如果您担心install.sh的功能,请随时阅读。
curl -LSs https://raw.githubusercontent.com/gochain/web3/master/install.sh| SH
我们将在这里使用GoChain,因此我们不必支付10美元来部署合同,然后再为每个NFT投入10美元。使用GoChain,我们只需要支付一分钱的一小部分,并且100%与以太坊兼容,因此我们可以像使用以太坊一样使用它。当然,您可以更改下面的行以指向以太坊,并根据需要支付额外的费用。
export WEB3_NETWORK=gochain# for ethereum:# export WEB3_NETWORK=ethereum
您将需要使用带有一些供气的a来进行这些交易,或者创建一个新的供其使用的供气。这将是GoChain上的$ GO或以太坊上的$ ETH。
要创建一个新帐户,请运行:
web3 account create
这将打印:
Private key: 0xABC123Public address: 0xXYZ456
发送一些$ GO到“公共地址”。如果您需要一些$ GO入门,请进入我们的电报并询问,那里有人会很好地向您发送一两个$ GO。
复制“私钥”(或根据需要使用现有的私钥)并运行:
export WEB3_PRIVATE_KEY=0xABC123
另外,请将此私钥的副本保存在安全的地方,以便下次使用。
既然我们都已设置好网络集,并且我们的私钥中设置了一些加油键,我们就可以开始玩得开心了。
该WEB3 CLI已经内置代码生成器常见的合同,如ERC20和ERC721的。赶紧跑:
web3 generate contract erc721 --symbol KATS --name "Krypto Kats" --base-uri https://kryptokats.com/token/
这将生成一个名为的文件KATS.sol,该文件是您新的NFT合同的统一程序。
从这里,我们只需要编译和部署它。同样,web3 CLI使此部分变得容易:
web3 contract build KATS.solweb3 contract deploy KATS.bin
这将打印出您的新合同地址。您现在已经部署了NFT合同!
现在已经部署了合同,我们只需要创建新合同即可。铸造NFT时,您需要提供拥有此新NFT的人员的地址:
web3 contract call --wait --abi KATS.abi --gas-limit 2000000 --function mint 0xABC
此功能产生一个全新的NFT,并将其分配给地址0xABC。ERC721的新OpenZeppelin预设具有自动递增的ID,因此您将在输出中看到新的令牌ID。例如:
Parsed Logs: [ { "name": "Transfer", "fields": { "from": "0x00000", "to": "0x000ABC", "tokenId": "0x00001" } }]
该输出已被截断,删除了一堆零,但是您可以看到新的令牌ID是number 1。
现在,如果您拥有NFT并想转让它,则可以调用该transferFrom函数:
web3 contract call --wait --abi KATS.abi --gas-limit 2000000 --function transferFrom 0xABC 0xXYZ 1
这会将ID为1的令牌转让给位于的新所有者0xXYZ。您可以在GoChain Explorer中查看和搜索令牌。