您好,登錄后才能下訂單哦!
這篇文章主要介紹怎么使用Python制作NFT區塊鏈作品,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
什么是 NFT?
ERC20 與 ERC721
NFT 有什么用?
NFT 的價值
如何制作 NFT
如何進行無限定制的 NFT
快速上手
ERC721 代幣標準
什么是 NFT 元數據和 TokenURI?
TokenURI
鏈下元數據與鏈上元數據
NFT英文全稱為Non-Fungible Token,翻譯成中文就是:非同質化代幣,具有不可分割、不可替代、獨一無二等特點。NFT由于其非同質化、不可拆分的特性,使得它可以和現實世界中的一些商品綁定。換言之,其實就是發行在區塊鏈上的數字資產,這個資產可以是游戲道具、數字藝術品、門票等,并且具有唯一性和不可復制性。由于NFT具備天然的收藏屬性和便于交易,加密藝術家們可以利用NFT創造出獨一無二的數字藝術品。
NFT 是類似于 ERC20 的區塊鏈token標準,如 AAVE、SNX 和 LINK(技術上為 ERC677)。ERC20 是“可替代”的代幣,意思是“可替換”或“可互換”。
例如,無論您使用什么美元紙幣,您的美元紙幣都將值 1 美元。美元鈔票上的序列號可能不同,但鈔票是可以互換的,無論如何它們都值 1 美元。
另一方面,NFT 是“不可替代的”,它們遵循自己的代幣標準 ERC721。例如,蒙娜麗莎是“不可替代的”。即使有人可以復制它,但永遠只有一個蒙娜麗莎。如果蒙娜麗莎是在區塊鏈上創建的,它將是 NFT。
NFT 通過將合約永久地部署在鏈上,讓創作者、藝術家、游戲設計師等創造價值。
你將永遠知道誰創造了 NFT,誰擁有 NFT,它來自哪里等等,這種獨特性讓他們比傳統藝術更有價值。在傳統藝術中,理解什么是“假貨”可能很棘手,而鏈上的歷史很容易追溯。
由于智能合約和 NFT 是 100% 可編程的,NFT 還可以添加內置的版稅和任何其他功能。補償藝術家一直是一個問題,因為通常藝術家的作品在沒有任何歸屬的情況下四處傳播。
越來越多的藝術家和工程師開始利用這一巨大的附加值,因為這最終成為藝術家獲得工作報酬的好方法。不僅如此,NFT 還是一種展示您的創造力并成為數字世界收藏家的有趣方式。
NFT 已經走過了漫長的道路,我們不斷看到 NFT 的銷售額創下紀錄,例如下面這幅名為“每天:前 5,000 天”的畫作售價為 6930 萬美元。
NFT也是在數字世界中創造藝術和了解智能合約創建的一種有趣、動態和引人入勝的方式。所以現在將教你制作 NFT 所需的一切知識。
現在,制作 NFT 的最簡單方法就是前往 Opensea、Rarible 或 Mintible 等平臺,并按照他們的分步指南在他們的平臺上進行部署即可。
你可以 100% 走這條路,但是你可能會被平臺綁定。你無法實現無限的定制,或者真正利用 NFT 的任何優勢。
如果你想用代碼來實現,學習一些扎實的知識,并有能力以無限的創造力創造出一些東西,那么請繼續閱讀!
首先介紹NFT Brownie Mix。這是一個包含大量樣板代碼的工作倉庫。
https://github.com/PatrickAlphaC/nft-mix
先決條件
我們需要安裝一些東西才能開始:
Python
Nodejs 和 npm
Metamask
如果您不熟悉 Metamask,您可以按照下面教程進行設置。
https://docs.chain.link/docs/install-metamask/
Rinkeby Testnet ETH 和 LINK
我們還將部署在 Rinkeby 以太坊測試鏈上!
測試鏈是測試我們的智能合約在現實世界中表現的好方法。我們需要 Rinkeby ETH 和 Rinkeby LINK,我們可以從 Chainlink 文檔中最新水龍頭的鏈接中免費獲得它們。
我們還需要將 rinkeby LINK 的token添加到metamask中,我們可以按照 LINK 文檔進行操作。
https://docs.chain.link/docs/acquire-link/
注意一定要使用 Rinkeby 而不是 Ropsten。在使用像以太坊這樣的智能合約平臺時,我們需要支付一點 ETH,而從鏈下獲取數據時,我們需要支付一點 LINK。這就是我們需要獲取測試鏈上的LINK 和 ETH 的原因。
下面這件作品就是我們要部署到 OpenSea 的 NFT。
https://testnets.opensea.io/assets/0x8acb7ca932892eb83e4411b59309d44dddbc4cdf/0
git clone https: //github.com/PatrickAlphaC/nft-mix cd nft-mix
現在我們需要安裝 ganache-cli 和 eth-brownie。
pip install eth-brownie npm install -g ganache-cli
現在我們可以設置我們的環境變量。如果您不熟悉環境變量,只需將它們添加到 .env 文件中,然后運行:
source .env
.env的示例應該在你剛剛克隆的 repo 中,并注釋掉了環境變量。請確保取消注釋以使用它們!
您需要一個 WEB3_INFURA_PROJECT_ID和一個 PRIVATE_KEY 。WEB3_INFURA_PROJECT_ID 可以在注冊免費 Infura 帳戶時找到。這將為我們提供一種將交易發送到區塊鏈的方法。
我們還需要一個私鑰,您可以從您的 Metamask 中獲取。點擊 3 個小點,然后單擊帳戶詳細信息和導出私鑰。如果您投入現金進去,請不要與任何人分享此密鑰!
export PRIVATE_KEY=YOUR_KEY_HERE export WEB3_INFURA_PROJECT_ID=YOUR_PROJECT_ID_HERE
現在我們可以部署我們的 NFT 合約并使用以下兩個命令創建我們的第一個收藏品。
brownie run scripts/simple_collectible/deploy_simple.py --network rinkeby brownie run scripts/simple_collectible/create_collectible.py --network rinkeby
第一個腳本將我們的 NFT 合約部署到 Rinkeby 區塊鏈,第二個腳本創建了我們的第一個收藏品。
您剛剛部署了第一個智能合約!
它根本沒有什么作用,但別擔心——我將在本教程的高級部分向您展示如何在 OpenSea 上渲染它。首先,讓我們看看 ERC721 代幣標準。
我們來看看我們剛剛部署的合約,在 SimpleCollectible.sol 文件中。
我們將 OpenZeplin 包用于 ERC721 token。導入的這個包允許我們使用典型 ERC721 token的所有功能。這定義了我們的代幣將具有的所有功能,例如 transfer——將代幣轉移給新用戶, safeMint——創建新代幣,等等。
您可以通過查看 OpenZepplin ERC721 代幣合約找到賦予我們合約的所有功能。我們的合約在下面一行繼承了這些功能:
https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC721/ERC721.sol
contract SimpleCollectible is ERC721 {
這就是 Solidity 繼承的方式。當我們部署一個合約時,構造函數會被自動調用,它需要一些參數。
我們還使用了 ERC721 的構造函數,在我們的構造函數中,我們只需要給它一個名稱和一個符號。在我們的例子中,它是“Dogie”和“DOG”。這意味著我們創建的每個 NFT 都將是 Dogie/DOG 類型。
這就像每張口袋妖怪卡仍然是口袋妖怪,或者交易卡上的每個棒球運動員仍然是棒球運動員。每個棒球運動員都是獨一無二的,但他們仍然都是棒球運動員。我們只是使用 DOG 類型。
我們在頂部有 tokenCounter 來計算我們創建了多少這種類型的 NFT。每個新token都會根據當前的 tokenCounter 獲得一個 tokenId。
實際上可以使用 createCollectible 函數創建 NFT。這就是我們在 create_collectible.py 腳本中所寫的。
_safeMint函數創建新的 NFT,并將其分配給調用 createdCollectible的人,也就是 msg.sender,并使用從 tokenCounter 派生的 newItemId。這就是我們如何通過檢查 tokenId的所有者來跟蹤誰擁有什么。
您會注意到我們還調用了 _setTokenURI。讓我們來看一下。
當創建智能合約和創建 NFT 時,人們很快意識到將大量數據部署到區塊鏈是非常昂貴的。小至 1 KB 的圖像的存儲成本很容易超過 100 萬美元。
這顯然是 NFT 的一個問題,因為擁有創意藝術意味著您必須將這些信息存儲在某個地方。他們還想要一種輕量級的方式來存儲有關 NFT 的屬性——這就是 tokenURI 和元數據發揮作用的地方。
NFT 上的 tokenURI 是token“外觀”的唯一標識符。URI 可以是通過 HTTPS 的 API 調用、IPFS 哈希值或任何其他獨特的東西。
它們遵循顯示元數據的標準,如下所示:
這些顯示了 NFT 的外觀及其屬性。圖像部分指向 NFT 外觀的另一個 URI。這使得 Opensea、Rarible 和 Mintable 等 NFT 平臺可以輕松地在其平臺上呈現 NFT,因為它們都在尋找這種元數據。
現在你可能會想“等等......如果元數據不在鏈上,這是否意味著我的 NFT 可能會在某個時候消失”?你是對的。
您認為鏈下元數據意味著您不能使用該元數據讓您的智能合約相互交互也是正確的。
這就是為什么我們要專注于鏈上元數據,以便我們可以對 NFT 進行編程以相互交互。
但是,我們仍然需要鏈下元數據的圖像部分,因為我們沒有一種很好的方法來在鏈上存儲大圖像。但是別擔心,我們仍然可以通過使用 IPFS 在去中心化網絡上免費做到這一點。
這是來自 IPFS 的 imageURI示例,它顯示了在龍與地下城教程中創建的 ChainlinkElf。
https://blog.chain.link/build-deploy-and-sell-your-own-dynamic-nft/
我們沒有為簡單的 NFT 設置 tokenURI,因為我們只想展示一個基本示例。
以上是“怎么使用Python制作NFT區塊鏈作品”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。