成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

用 Python 制作 NFT 區塊鏈作品(上)

開發 后端 區塊鏈
在本文中,我們將學習如何使用 Brownie、Python 和 Chainlink 來制作非同質化的 NFT 作品,并在 OpenSea NFT 市場上展示和銷售我們的成果。

[[405577]]

 在本文中,我們將學習如何使用 Brownie、Python 和 Chainlink 來制作非同質化的 NFT 作品,并在 OpenSea NFT 市場上展示和銷售我們的成果。

什么是 NFT?

NFT英文全稱為Non-Fungible Token,翻譯成中文就是:非同質化代幣,具有不可分割、不可替代、獨一無二等特點。NFT由于其非同質化、不可拆分的特性,使得它可以和現實世界中的一些商品綁定。換言之,其實就是發行在區塊鏈上的數字資產,這個資產可以是游戲道具、數字藝術品、門票等,并且具有唯一性和不可復制性。由于NFT具備天然的收藏屬性和便于交易,加密藝術家們可以利用NFT創造出獨一無二的數字藝術品。

ERC20 與 ERC721

NFT 是類似于 ERC20 的區塊鏈token標準,如 AAVE、SNX 和 LINK(技術上為 ERC677)。ERC20 是“可替代”的代幣,意思是“可替換”或“可互換”。

例如,無論您使用什么美元紙幣,您的美元紙幣都將值 1 美元。美元鈔票上的序列號可能不同,但鈔票是可以互換的,無論如何它們都值 1 美元。

另一方面,NFT 是“不可替代的”,它們遵循自己的代幣標準 ERC721。例如,蒙娜麗莎是“不可替代的”。即使有人可以復制它,但永遠只有一個蒙娜麗莎。如果蒙娜麗莎是在區塊鏈上創建的,它將是 NFT。

[[405578]]

NFT 有什么用?

NFT 通過將合約永久地部署在鏈上,讓創作者、藝術家、游戲設計師等創造價值。

你將永遠知道誰創造了 NFT,誰擁有 NFT,它來自哪里等等,這種獨特性讓他們比傳統藝術更有價值。在傳統藝術中,理解什么是“假貨”可能很棘手,而鏈上的歷史很容易追溯。

由于智能合約和 NFT 是 100% 可編程的,NFT 還可以添加內置的版稅和任何其他功能。補償藝術家一直是一個問題,因為通常藝術家的作品在沒有任何歸屬的情況下四處傳播。

越來越多的藝術家和工程師開始利用這一巨大的附加值,因為這最終成為藝術家獲得工作報酬的好方法。不僅如此,NFT 還是一種展示您的創造力并成為數字世界收藏家的有趣方式。

NFT 的價值

NFT 已經走過了漫長的道路,我們不斷看到 NFT 的銷售額創下紀錄,例如下面這幅名為“每天:前 5,000 天”的畫作售價為 6930 萬美元。

NFT也是在數字世界中創造藝術和了解智能合約創建的一種有趣、動態和引人入勝的方式。所以現在將教你制作 NFT 所需的一切知識。

如何制作 NFT

現在,制作 NFT 的最簡單方法就是前往 Opensea、Rarible 或 Mintible 等平臺,并按照他們的分步指南在他們的平臺上進行部署即可。

你可以 100% 走這條路,但是你可能會被平臺綁定。你無法實現無限的定制,或者真正利用 NFT 的任何優勢。

如果你想用代碼來實現,學習一些扎實的知識,并有能力以無限的創造力創造出一些東西,那么請繼續閱讀!

如何進行無限定制的 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 文檔進行操作。 

  1. https://docs.chain.link/docs/acquire-link/ 

注意一定要使用 Rinkeby 而不是 Ropsten。在使用像以太坊這樣的智能合約平臺時,我們需要支付一點 ETH,而從鏈下獲取數據時,我們需要支付一點 LINK。這就是我們需要獲取測試鏈上的LINK 和 ETH 的原因。

下面這件作品就是我們要部署到 OpenSea 的 NFT。

https://testnets.opensea.io/assets/0x8acb7ca932892eb83e4411b59309d44dddbc4cdf/0

快速上手 

  1. git clone https://github.com/PatrickAlphaC/nft-mix  
  2. cd nft-mix 

現在我們需要安裝 ganache-cli 和 eth-brownie。 

  1. pip install eth-brownie  
  2. npm install -g ganache-cli 

現在我們可以設置我們的環境變量。如果您不熟悉環境變量,只需將它們添加到 .env 文件中,然后運行:   

  1. source .env 

.env的示例應該在你剛剛克隆的 repo 中,并注釋掉了環境變量。請確保取消注釋以使用它們!

您需要一個 WEB3_INFURA_PROJECT_ID和一個 PRIVATE_KEY 。WEB3_INFURA_PROJECT_ID 可以在注冊免費 Infura 帳戶時找到。這將為我們提供一種將交易發送到區塊鏈的方法。

我們還需要一個私鑰,您可以從您的 Metamask 中獲取。點擊 3 個小點,然后單擊帳戶詳細信息和導出私鑰。如果您投入現金進去,請不要與任何人分享此密鑰! 

  1. export PRIVATE_KEY=YOUR_KEY_HERE  
  2. export WEB3_INFURA_PROJECT_ID=YOUR_PROJECT_ID_HERE 

現在我們可以部署我們的 NFT 合約并使用以下兩個命令創建我們的第一個收藏品。   

  1. brownie run scripts/simple_collectible/deploy_simple.py --network rinkeby  
  2. brownie run scripts/simple_collectible/create_collectible.py --network rinkeby 

第一個腳本將我們的 NFT 合約部署到 Rinkeby 區塊鏈,第二個腳本創建了我們的第一個收藏品。

您剛剛部署了第一個智能合約!

它根本沒有什么作用,但別擔心——我將在本教程的高級部分向您展示如何在 OpenSea 上渲染它。首先,讓我們看看 ERC721 代幣標準。

ERC721 代幣標準

我們來看看我們剛剛部署的合約,在 SimpleCollectible.sol 文件中。 

  1. // SPDX-License-Identifier: MIT  
  2. pragma solidity 0.6.6;  
  3. import"@openzeppelin/contracts/token/ERC721/ERC721.sol";  
  4. contract SimpleCollectibleis ERC721 {  
  5.     uint256 public tokenCounter;  
  6.     constructor () public ERC721 ("Dogie", "DOG"){  
  7.         tokenCounter = 0 
  8.  
  9. function createCollectible(string memory tokenURI) public returns (uint256) {  
  10.         uint256 newItemId = tokenCounter 
  11.         _safeMint(msg.sender, newItemId); 
  12.         _setTokenURI(newItemId, tokenURI);  
  13.         tokenCountertokenCounter = tokenCounter + 1;  
  14. return newItemId;  

我們將 OpenZeplin 包用于 ERC721 token。導入的這個包允許我們使用典型 ERC721 token的所有功能。這定義了我們的代幣將具有的所有功能,例如 transfer——將代幣轉移給新用戶, safeMint——創建新代幣,等等。

您可以通過查看 OpenZepplin ERC721 代幣合約找到賦予我們合約的所有功能。我們的合約在下面一行繼承了這些功能:

https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC721/ERC721.sol   

  1. contract SimpleCollectibleis ERC721 { 

這就是 Solidity 繼承的方式。當我們部署一個合約時,構造函數會被自動調用,它需要一些參數。 

  1. constructor () public ERC721 ("Dogie", "DOG"){  
  2.         tokenCounter = 0 

我們還使用了 ERC721 的構造函數,在我們的構造函數中,我們只需要給它一個名稱和一個符號。在我們的例子中,它是“Dogie”和“DOG”。這意味著我們創建的每個 NFT 都將是 Dogie/DOG 類型。

這就像每張口袋妖怪卡仍然是口袋妖怪,或者交易卡上的每個棒球運動員仍然是棒球運動員。每個棒球運動員都是獨一無二的,但他們仍然都是棒球運動員。我們只是使用 DOG 類型。

我們在頂部有 tokenCounter 來計算我們創建了多少這種類型的 NFT。每個新token都會根據當前的 tokenCounter 獲得一個 tokenId。

實際上可以使用 createCollectible 函數創建 NFT。這就是我們在 create_collectible.py 腳本中所寫的。 

  1. function createCollectible(string memory tokenURI) public returns (uint256) {  
  2.          uint256 newItemId = tokenCounter 
  3.          _safeMint(msg.sender, newItemId);  
  4.          _setTokenURI(newItemId, tokenURI);  
  5.          tokenCountertokenCounter = tokenCounter + 1; 
  6.   return newItemId;  
  7.  } 

_safeMint函數創建新的 NFT,并將其分配給調用 createdCollectible的人,也就是 msg.sender,并使用從 tokenCounter 派生的 newItemId。這就是我們如何通過檢查 tokenId的所有者來跟蹤誰擁有什么。

您會注意到我們還調用了 _setTokenURI。讓我們來看一下。

什么是 NFT 元數據和 TokenURI?

當創建智能合約和創建 NFT 時,人們很快意識到將大量數據部署到區塊鏈是非常昂貴的。小至 1 KB 的圖像的存儲成本很容易超過 100 萬美元。

這顯然是 NFT 的一個問題,因為擁有創意藝術意味著您必須將這些信息存儲在某個地方。他們還想要一種輕量級的方式來存儲有關 NFT 的屬性——這就是 tokenURI 和元數據發揮作用的地方。

TokenURI

NFT 上的 tokenURI 是token“外觀”的唯一標識符。URI 可以是通過 HTTPS 的 API 調用、IPFS 哈希值或任何其他獨特的東西。

它們遵循顯示元數據的標準,如下所示: 

  1.  
  2.  "name": "name",  
  3.  "description": "description",  
  4.  "image": "https://ipfs.io/ipfs/QmTgqnhFBMkfT9s8PHKcdXBn1f5bG3Q5hmBaR4U6hoTvb1?filename=Chainlink_Elf.png",  
  5.  "attributes": [  
  6.  {  
  7.  "trait_type": "trait",  
  8.  "value": 100  
  9.  }  
  10.  ]  
  11.  } 

這些顯示了 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,因為我們只想展示一個基本示例。

下一篇將講解 NFT 進階知識,這樣就可以看到我們用鏈上元數據實現的一些驚人功能,在 opeansea 上渲染 NFT,并讓我們的狗狗振作起來! 

 

責任編輯:龐桂玉 來源: Python中文社區 (ID:python-china)
相關推薦

2021-06-15 10:30:57

PythonNFT區塊鏈

2022-06-02 15:19:18

加密貨幣穩定幣數字貨幣

2022-06-01 13:57:05

區塊鏈NFT游戲

2022-05-30 15:27:48

數字資產NFT區塊鏈

2022-04-28 06:49:39

區塊鏈NFT

2022-06-08 15:44:51

區塊鏈NFT金融

2022-05-06 14:03:18

區塊鏈NFT加密貨幣

2022-04-15 13:57:40

區塊鏈元宇宙NFT

2022-07-07 11:14:12

MetaNFT數字收藏品

2022-04-19 14:15:08

區塊鏈元宇宙NFT

2022-06-17 11:05:33

區塊鏈NFT加密貨幣

2022-06-03 23:35:31

區塊鏈元宇宙NFT

2022-05-09 14:28:31

NFT區塊鏈代幣

2021-03-07 00:56:05

區塊鏈Python安全

2022-05-03 23:52:25

NFT虛擬幣品牌

2022-07-29 15:21:38

加密貨幣區塊鏈NFT

2022-03-04 14:24:21

區塊鏈技術供應鏈

2022-03-26 22:26:21

區塊鏈NFT技術

2019-02-27 15:32:59

電子證據司法互聯網

2018-01-16 11:00:25

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 成人免费视频网站在线观看 | 久久国产精品网 | 一区二区高清 | 国产成人精品一区二区 | 国产电影一区二区 | 色姑娘av| 亚洲精品1| 国产粉嫩尤物极品99综合精品 | 免费在线观看黄视频 | 国产三级电影网站 | 色婷婷亚洲国产女人的天堂 | 欧美1区 | 中文字幕一区二区三区四区五区 | 亚洲精品视频免费看 | 久久伊| 中文字幕国产一区 | 天天干b| 久久国产区| 免费日韩网站 | 欧美精品在线一区 | 国产成人综合亚洲欧美94在线 | 国产日韩欧美中文 | se婷婷| 在线观看免费av网 | 在线免费观看成人 | 1区2区视频 | 激情六月丁香婷婷 | 夜夜夜夜夜夜曰天天天 | 狠狠婷婷综合久久久久久妖精 | 在线视频 亚洲 | 国产色99精品9i | 欧美一级片久久 | 亚洲国产欧美一区二区三区久久 | 亚洲精品一区二区三区免 | 成人三级影院 | 日本不卡一区 | 免费在线国产视频 | 91网站视频在线观看 | 欧美精产国品一二三区 | 国产偷久久一级精品60部 | 欧美一区二区视频 |