NFT英文全稱(chēng)為Non-Fungible Token,翻譯成中文就是:非同質(zhì)化代幣,具有不可分割、不可替代、獨(dú)一無(wú)二等特點(diǎn)。NFT由于其非同質(zhì)化、不可拆分的特性,使得它可以和現(xiàn)實(shí)世界中的一些商品綁定。換言之,其實(shí)就是發(fā)行在區(qū)塊鏈上的數(shù)字資產(chǎn),這個(gè)資產(chǎn)可以是游戲道具、數(shù)字藝術(shù)品、門(mén)票等,并且具有唯一性和不可復(fù)制性。由于NFT具備天然的收藏屬性和便于交易,加密藝術(shù)家們可以利用NFT創(chuàng)造出獨(dú)一無(wú)二的數(shù)字藝術(shù)品。
NFT 是類(lèi)似于 ERC20 的區(qū)塊鏈token標(biāo)準(zhǔn),如 AAVE、SNX 和 LINK(技術(shù)上為 ERC677)。ERC20 是“可替代”的代幣,意思是“可替換”或“可互換”。
例如,無(wú)論您使用什么美元紙幣,您的美元紙幣都將值 1 美元。美元鈔票上的序列號(hào)可能不同,但鈔票是可以互換的,無(wú)論如何它們都值 1 美元。
另一方面,NFT 是“不可替代的”,它們遵循自己的代幣標(biāo)準(zhǔn) ERC721。例如,蒙娜麗莎是“不可替代的”。即使有人可以復(fù)制它,但永遠(yuǎn)只有一個(gè)蒙娜麗莎。如果蒙娜麗莎是在區(qū)塊鏈上創(chuàng)建的,它將是 NFT。
NFT 通過(guò)將合約永久地部署在鏈上,讓創(chuàng)作者、藝術(shù)家、游戲設(shè)計(jì)師等創(chuàng)造價(jià)值。
你將永遠(yuǎn)知道誰(shuí)創(chuàng)造了 NFT,誰(shuí)擁有 NFT,它來(lái)自哪里等等,這種獨(dú)特性讓他們比傳統(tǒng)藝術(shù)更有價(jià)值。在傳統(tǒng)藝術(shù)中,理解什么是“假貨”可能很棘手,而鏈上的歷史很容易追溯。
由于智能合約和 NFT 是 100% 可編程的,NFT 還可以添加內(nèi)置的版稅和任何其他功能。補(bǔ)償藝術(shù)家一直是一個(gè)問(wèn)題,因?yàn)橥ǔK囆g(shù)家的作品在沒(méi)有任何歸屬的情況下四處傳播。
越來(lái)越多的藝術(shù)家和工程師開(kāi)始利用這一巨大的附加值,因?yàn)檫@最終成為藝術(shù)家獲得工作報(bào)酬的好方法。不僅如此,NFT 還是一種展示您的創(chuàng)造力并成為數(shù)字世界收藏家的有趣方式。
NFT 已經(jīng)走過(guò)了漫長(zhǎng)的道路,我們不斷看到 NFT 的銷(xiāo)售額創(chuàng)下紀(jì)錄,例如下面這幅名為“每天:前 5,000 天”的畫(huà)作售價(jià)為 6930 萬(wàn)美元。
NFT也是在數(shù)字世界中創(chuàng)造藝術(shù)和了解智能合約創(chuàng)建的一種有趣、動(dòng)態(tài)和引人入勝的方式。所以現(xiàn)在將教你制作 NFT 所需的一切知識(shí)。
現(xiàn)在,制作 NFT 的最簡(jiǎn)單方法就是前往 Opensea、Rarible 或 Mintible 等平臺(tái),并按照他們的分步指南在他們的平臺(tái)上進(jìn)行部署即可。
你可以 100% 走這條路,但是你可能會(huì)被平臺(tái)綁定。你無(wú)法實(shí)現(xiàn)無(wú)限的定制,或者真正利用 NFT 的任何優(yōu)勢(shì)。
如果你想用代碼來(lái)實(shí)現(xiàn),學(xué)習(xí)一些扎實(shí)的知識(shí),并有能力以無(wú)限的創(chuàng)造力創(chuàng)造出一些東西,那么請(qǐng)繼續(xù)閱讀!
首先介紹NFT Brownie Mix。這是一個(gè)包含大量樣板代碼的工作倉(cāng)庫(kù)。
https://github.com/PatrickAlphaC/nft-mix
先決條件
我們需要安裝一些東西才能開(kāi)始:
如果您不熟悉 Metamask,您可以按照下面教程進(jìn)行設(shè)置。
https://docs.chain.link/docs/install-metamask/
Rinkeby Testnet ETH 和 LINK
我們還將部署在 Rinkeby 以太坊測(cè)試鏈上!
測(cè)試鏈?zhǔn)菧y(cè)試我們的智能合約在現(xiàn)實(shí)世界中表現(xiàn)的好方法。我們需要 Rinkeby ETH 和 Rinkeby LINK,我們可以從 Chainlink 文檔中最新水龍頭的鏈接中免費(fèi)獲得它們。
我們還需要將 rinkeby LINK 的token添加到metamask中,我們可以按照 LINK 文檔進(jìn)行操作。
https://docs.chain.link/docs/acquire-link/
注意一定要使用 Rinkeby 而不是 Ropsten。在使用像以太坊這樣的智能合約平臺(tái)時(shí),我們需要支付一點(diǎn) ETH,而從鏈下獲取數(shù)據(jù)時(shí),我們需要支付一點(diǎn) LINK。這就是我們需要獲取測(cè)試鏈上的LINK 和 ETH 的原因。
下面這件作品就是我們要部署到 OpenSea 的 NFT。
https://testnets.opensea.io/assets/0x8acb7ca932892eb83e4411b59309d44dddbc4cdf/0
git clone https: //github.com/PatrickAlphaC/nft-mix cd nft-mix
現(xiàn)在我們需要安裝 ganache-cli 和 eth-brownie。
pip install eth-brownie npm install -g ganache-cli
現(xiàn)在我們可以設(shè)置我們的環(huán)境變量。如果您不熟悉環(huán)境變量,只需將它們添加到 .env 文件中,然后運(yùn)行:
source .env
.env的示例應(yīng)該在你剛剛克隆的 repo 中,并注釋掉了環(huán)境變量。請(qǐng)確保取消注釋以使用它們!
您需要一個(gè) WEB3_INFURA_PROJECT_ID和一個(gè) PRIVATE_KEY 。WEB3_INFURA_PROJECT_ID 可以在注冊(cè)免費(fèi) Infura 帳戶時(shí)找到。這將為我們提供一種將交易發(fā)送到區(qū)塊鏈的方法。
我們還需要一個(gè)私鑰,您可以從您的 Metamask 中獲取。點(diǎn)擊 3 個(gè)小點(diǎn),然后單擊帳戶詳細(xì)信息和導(dǎo)出私鑰。如果您投入現(xiàn)金進(jìn)去,請(qǐng)不要與任何人分享此密鑰!
export PRIVATE_KEY=YOUR_KEY_HERE export WEB3_INFURA_PROJECT_ID=YOUR_PROJECT_ID_HERE
現(xiàn)在我們可以部署我們的 NFT 合約并使用以下兩個(gè)命令創(chuàng)建我們的第一個(gè)收藏品。
brownie run scripts/simple_collectible/deploy_simple.py --network rinkeby brownie run scripts/simple_collectible/create_collectible.py --network rinkeby
第一個(gè)腳本將我們的 NFT 合約部署到 Rinkeby 區(qū)塊鏈,第二個(gè)腳本創(chuàng)建了我們的第一個(gè)收藏品。
您剛剛部署了第一個(gè)智能合約!
它根本沒(méi)有什么作用,但別擔(dān)心——我將在本教程的高級(jí)部分向您展示如何在 OpenSea 上渲染它。首先,讓我們看看 ERC721 代幣標(biāo)準(zhǔn)。
我們來(lái)看看我們剛剛部署的合約,在 SimpleCollectible.sol 文件中。
我們將 OpenZeplin 包用于 ERC721 token。導(dǎo)入的這個(gè)包允許我們使用典型 ERC721 token的所有功能。這定義了我們的代幣將具有的所有功能,例如 transfer——將代幣轉(zhuǎn)移給新用戶, safeMint——?jiǎng)?chuàng)建新代幣,等等。
您可以通過(guò)查看 OpenZepplin ERC721 代幣合約找到賦予我們合約的所有功能。我們的合約在下面一行繼承了這些功能:
https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC721/ERC721.sol
contract SimpleCollectible is ERC721 {
這就是 Solidity 繼承的方式。當(dāng)我們部署一個(gè)合約時(shí),構(gòu)造函數(shù)會(huì)被自動(dòng)調(diào)用,它需要一些參數(shù)。
我們還使用了 ERC721 的構(gòu)造函數(shù),在我們的構(gòu)造函數(shù)中,我們只需要給它一個(gè)名稱(chēng)和一個(gè)符號(hào)。在我們的例子中,它是“Dogie”和“DOG”。這意味著我們創(chuàng)建的每個(gè) NFT 都將是 Dogie/DOG 類(lèi)型。
這就像每張口袋妖怪卡仍然是口袋妖怪,或者交易卡上的每個(gè)棒球運(yùn)動(dòng)員仍然是棒球運(yùn)動(dòng)員。每個(gè)棒球運(yùn)動(dòng)員都是獨(dú)一無(wú)二的,但他們?nèi)匀欢际前羟蜻\(yùn)動(dòng)員。我們只是使用 DOG 類(lèi)型。
我們?cè)陧敳坑?tokenCounter 來(lái)計(jì)算我們創(chuàng)建了多少這種類(lèi)型的 NFT。每個(gè)新token都會(huì)根據(jù)當(dāng)前的 tokenCounter 獲得一個(gè) tokenId。
實(shí)際上可以使用 createCollectible 函數(shù)創(chuàng)建 NFT。這就是我們?cè)?create_collectible.py 腳本中所寫(xiě)的。
_safeMint函數(shù)創(chuàng)建新的 NFT,并將其分配給調(diào)用 createdCollectible的人,也就是 msg.sender,并使用從 tokenCounter 派生的 newItemId。這就是我們?nèi)绾瓮ㄟ^(guò)檢查 tokenId的所有者來(lái)跟蹤誰(shuí)擁有什么。
您會(huì)注意到我們還調(diào)用了 _setTokenURI。讓我們來(lái)看一下。
當(dāng)創(chuàng)建智能合約和創(chuàng)建 NFT 時(shí),人們很快意識(shí)到將大量數(shù)據(jù)部署到區(qū)塊鏈?zhǔn)欠浅0嘿F的。小至 1 KB 的圖像的存儲(chǔ)成本很容易超過(guò) 100 萬(wàn)美元。
這顯然是 NFT 的一個(gè)問(wèn)題,因?yàn)閾碛袆?chuàng)意藝術(shù)意味著您必須將這些信息存儲(chǔ)在某個(gè)地方。他們還想要一種輕量級(jí)的方式來(lái)存儲(chǔ)有關(guān) NFT 的屬性——這就是 tokenURI 和元數(shù)據(jù)發(fā)揮作用的地方。
NFT 上的 tokenURI 是token“外觀”的唯一標(biāo)識(shí)符。URI 可以是通過(guò) HTTPS 的 API 調(diào)用、IPFS 哈希值或任何其他獨(dú)特的東西。
它們遵循顯示元數(shù)據(jù)的標(biāo)準(zhǔn),如下所示:
這些顯示了 NFT 的外觀及其屬性。圖像部分指向 NFT 外觀的另一個(gè) URI。這使得 Opensea、Rarible 和 Mintable 等 NFT 平臺(tái)可以輕松地在其平臺(tái)上呈現(xiàn) NFT,因?yàn)樗鼈兌荚趯ふ疫@種元數(shù)據(jù)。
現(xiàn)在你可能會(huì)想“等等......如果元數(shù)據(jù)不在鏈上,這是否意味著我的 NFT 可能會(huì)在某個(gè)時(shí)候消失”?你是對(duì)的。
您認(rèn)為鏈下元數(shù)據(jù)意味著您不能使用該元數(shù)據(jù)讓您的智能合約相互交互也是正確的。
這就是為什么我們要專(zhuān)注于鏈上元數(shù)據(jù),以便我們可以對(duì) NFT 進(jìn)行編程以相互交互。
但是,我們?nèi)匀恍枰溝略獢?shù)據(jù)的圖像部分,因?yàn)槲覀儧](méi)有一種很好的方法來(lái)在鏈上存儲(chǔ)大圖像。但是別擔(dān)心,我們?nèi)匀豢梢酝ㄟ^(guò)使用 IPFS 在去中心化網(wǎng)絡(luò)上免費(fèi)做到這一點(diǎn)。
這是來(lái)自 IPFS 的 imageURI示例,它顯示了在龍與地下城教程中創(chuàng)建的 ChainlinkElf。
https://blog.chain.link/build-deploy-and-sell-your-own-dynamic-nft/
我們沒(méi)有為簡(jiǎn)單的 NFT 設(shè)置 tokenURI,因?yàn)槲覀冎幌胝故疽粋€(gè)基本示例。
下一篇將講解 NFT 進(jìn)階知識(shí),這樣就可以看到我們用鏈上元數(shù)據(jù)實(shí)現(xiàn)的一些驚人功能,在 opeansea 上渲染 NFT,并讓我們的狗狗振作起來(lái)!
以上就是如何用用Python制作NFT區(qū)塊鏈作品的詳細(xì)內(nèi)容,更多關(guān)于Python制作NFT區(qū)塊鏈作品的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
標(biāo)簽:怒江 岳陽(yáng) 安慶 吉林 長(zhǎng)春 清遠(yuǎn) 泉州 洛陽(yáng)
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《如何用用Python制作NFT區(qū)塊鏈作品》,本文關(guān)鍵詞 如何,用用,Python,制作,NFT,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。