如何花10分鐘創(chuàng)建和部署NFT智能合約
本文轉(zhuǎn)載自微信公眾號「區(qū)塊鏈研究實驗室」,作者鏈三豐 。轉(zhuǎn)載本文請聯(lián)系區(qū)塊鏈研究實驗室公眾號。
什么是NFT
NFT代表不可替代的令牌,例如,一個美元鈔票是可替代的,因為您可以將其交換為另一個美元鈔票(并且您不必?fù)?dān)心美元鈔票的序列號)。同樣,比特幣是一個可替代的代幣,因為兩個不同的比特幣完全相同。
那么,不可替代的事物就是那些唯一且不能與其他事物互換的事物。不可替代的令牌本質(zhì)上是在區(qū)塊鏈上跟蹤的唯一令牌。
不可替代的代幣具有以下特征:
- 它們是唯一的:每個不可替代的令牌都代表數(shù)字或現(xiàn)實世界中的某個對象,并且即使存在類似的對象也是唯一的。例如,即使有人“創(chuàng)造”了與NFT相同的數(shù)字藝術(shù)作品100件,每件都會在區(qū)塊鏈上被單獨(dú)跟蹤。
- 它們是可驗證的:這些NFT的歷史所有權(quán)記錄在公共分類帳中,并且所有人都可以看到。這使得難以“復(fù)制”并且相對簡單地證明真實性。
- 它們是可交易的:與其他加密資產(chǎn)一樣,它們也是可交易的,盡管通常在特殊交易所交易。
大多數(shù)NFT都建立在以太坊區(qū)塊鏈之上,如今不可替代令牌(NFT)風(fēng)行一時,作為開發(fā)人員,您可能想知道如何創(chuàng)建自己的NFT。本文將解釋如何以最簡單的方式做到這一點(diǎn),以便您在短短幾分鐘內(nèi)就可以啟動并運(yùn)行。
我們將使用標(biāo)準(zhǔn)的OpenZeppelin ERC721合約,這是智能合約的黃金標(biāo)準(zhǔn)。有許多用于部署智能合約的工具,但是在本文中,我們將使用web3 CLI工具,因為它是編譯和部署合約的最快,最簡單的工具。
搭建環(huán)境
在F? llowing東西只是必須做一次,然后就可以部署和互動就像你想不再次做這個東西。
1.安裝CLI工具
這個襯板將安裝該工具,因此您可以立即開始使用它。如果您擔(dān)心install.sh的功能,請隨時閱讀。
- curl -LSs https://raw.githubusercontent.com/gochain/web3/master/install.sh| SH
2.設(shè)置網(wǎng)絡(luò)
我們將在這里使用GoChain,因此我們不必支付10美元來部署合同,然后再為每個NFT投入10美元。使用GoChain,我們只需要支付一分錢的一小部分,并且100%與以太坊兼容,因此我們可以像使用以太坊一樣使用它。當(dāng)然,您可以更改下面的行以指向以太坊,并根據(jù)需要支付額外的費(fèi)用。
- export WEB3_NETWORK=gochain
- # for ethereum:
- # export WEB3_NETWORK=ethereum
3.添加/獲取氣體
您將需要使用帶有一些供氣的a來進(jìn)行這些交易,或者創(chuàng)建一個新的供其使用的供氣。這將是GoChain上的$ GO或以太坊上的$ ETH。
要創(chuàng)建一個新帳戶,請運(yùn)行:
- web3 account create
這將打?。?/p>
- Private key: 0xABC123
- Public address: 0xXYZ456
發(fā)送一些$ GO到“公共地址”。如果您需要一些$ GO入門,請進(jìn)入我們的電報并詢問,那里有人會很好地向您發(fā)送一兩個$ GO。
復(fù)制“私鑰”(或根據(jù)需要使用現(xiàn)有的私鑰)并運(yùn)行:
- export WEB3_PRIVATE_KEY=0xABC123
另外,請將此私鑰的副本保存在安全的地方,以便下次使用。
部署工作
既然我們都已設(shè)置好網(wǎng)絡(luò)集,并且我們的私鑰中設(shè)置了一些加油鍵,我們就可以開始玩得開心了。
創(chuàng)建合同
該WEB3 CLI已經(jīng)內(nèi)置代碼生成器常見的合同,如ERC20和ERC721的。趕緊跑:
- web3 generate contract erc721 --symbol KATS --name "Krypto Kats" --base-uri https://kryptokats.com/token/
這將生成一個名為的文件KATS.sol,該文件是您新的NFT合同的統(tǒng)一程序。
1.部署合同
從這里,我們只需要編譯和部署它。同樣,web3 CLI使此部分變得容易:
- web3 contract build KATS.sol
- web3 contract deploy KATS.bin
這將打印出您的新合同地址。您現(xiàn)在已經(jīng)部署了NFT合同!
現(xiàn)在已經(jīng)部署了合同,我們只需要創(chuàng)建新合同即可。鑄造NFT時,您需要提供擁有此新NFT的人員的地址:
- web3 contract call --wait --abi KATS.abi --gas-limit 2000000 --function mint 0xABC
此功能產(chǎn)生一個全新的NFT,并將其分配給地址0xABC。ERC721的新OpenZeppelin預(yù)設(shè)具有自動遞增的ID,因此您將在輸出中看到新的令牌ID。例如:
- Parsed Logs: [
- {
- "name": "Transfer",
- "fields": {
- "from": "0x00000",
- "to": "0x000ABC",
- "tokenId": "0x00001"
- }
- }
- ]
該輸出已被截斷,刪除了一堆零,但是您可以看到新的令牌ID是number 1。
轉(zhuǎn)移NFT
現(xiàn)在,如果您擁有NFT并想轉(zhuǎn)讓它,則可以調(diào)用該transferFrom函數(shù):
- web3 contract call --wait --abi KATS.abi --gas-limit 2000000 --function transferFrom 0xABC 0xXYZ 1
這會將ID為1的令牌轉(zhuǎn)讓給位于的新所有者0xXYZ。您可以在GoChain Explorer中查看和搜索令牌。