原文標題:《 怎麼通過看懂 Etherscan 瞭解 NFT 項目情況? 》
原文作者:今天有更懂這個世界一點了嗎
本文來自微信公衆號:今天有更懂這個世界一點了嗎
看懂 Etherscan 是成爲區塊鏈老炮入門的必要條件。
Etherscan 區塊鏈瀏覽器包含了交易、區塊、錢包地址、智能合約等所有區塊鏈公開數據,通過這些信息你可以明白誰在什麼時候做了什麼事情。
我們今天以 Doodles 爲案例,帶領大家走一遍分析 Doodles 數據的全流程。
首先打開 Etherscan 官網,可以在輸入框中輸入地址進行檢索。
如果你知道 Doodles 的地址可以直接粘貼進去,如果不知道可以打開 Opensea 進入 Doodles 的某個具體 NFT 主頁後,在左側的 details 中點擊 contract address 跳轉至 Etherscan 詳情頁。
詳情頁如下圖所示,一般你只需要關注合約餘額、合約交互記錄和合約代碼三部分就足以瞭解該項目的大部分信息。
balance 表示該地址所存放的 ETH 數額,我們在 mint 某個 NFT 項目的時候,繳納的費用實際上是先到了 NFT 合約地址,然後再由項目方進行一步提款的動作將 ETH 轉移至自己的個人地址,通過它你可以知道項目方賺了多少錢,是否進行了提款。
transactions 存儲了這個地址從誕生至今所有與智能合約交互的行爲記錄,通過它你可以知道項目方、用戶在什麼時間進行了什麼操作。
若項目方將合約進行開源,你可以在 contract 中查看到智能合約代碼,以及可以對智能合約進行讀寫操作,其中寫操作是需要 owner 權限纔可進行。
首先從 transactions 開始,先看一下表頭這些字段的含義:
Txn Hash:交易哈希,這一次交易的唯一標識
Method:本次交易執行的動作
Block:當前交易所屬的區塊
Age:交易時間
From:發起交易的賬戶
to:接收交易的賬戶
Value:該交易中包含的 ETH
Txn fee:交易中使用的 gas 費
我們先來看排在最上面最新的一次交易,可見其執行了 SafeTransferFrom 動作,該動作意味着持有人將其 NFT 轉移給另外一個人,交易已經被打包進第 11434814 區塊中,是在 50 分鐘前進行的,交易發起者的地址是 0x002...,這次交易中沒有包含 ETH,gas 費爲 0.0015。
到這裏你已經讀懂了一行交易信息在表達什麼,但是這還不夠,我們點擊 Txn hash 下鑽該交易詳細數據。
進入新的頁面後,你需要關注的有價值的信息是 Transaction Action,右側這句話表示「一個 tokenId 爲 108 的 DoodlesNFT 從 0x002... 轉移到了 0x271...」 ,所以現在你知道了這一次交易具體是誰把哪個 NFT 在什麼時候轉移給了誰。
我們再點擊發起者的地址下鑽到其詳情頁,可以看到他的餘額有 0.1 個 ETH,小戶。
我們再看一下他的交易記錄,可以看到他所有的 NFT 與虛擬幣的交易情況,其中 out 表示賣出,in 表示買入。
剛纔分析了轉移 NFT 的一個交易記錄,我們再看一個類型叫 setApproveForAll,它代表的是授權某個地址可以轉移走你的 NFT,我們在 Opensea 對自己的 NFT 賣出時,就是使用了這個接口,將自己的 NFT 的轉移權授權給 Opensea,當有人在 Opensea 購買時,Opensea 擁有轉移權限可以將你的 NFT 轉移給購買者。
如下圖所示,大家在 Opensea 出售 NFT 的時候,會顯示 set approval for all,所以大家一定要注意如果有在某個非權威網站進行操作時,如果出現了這個顯示要非常謹慎,因爲同意之後對方就可以轉移走你的 NFT。
我們翻到最早的第一條交易,看看它做了什麼。
可以看到它執行的方法名不是可讀的而是一串字符,這是因爲這個函數操作沒有被識別不是標準函數,那它是什麼呢,我們再看最右邊的 gas 費很高 0.3ETH,合約部署時或者其他需要寫入大量數據才需要這麼多 gas 費,這是第一條交易,所以可以得出這是部署合約的操作。
我們再點擊 Txn hash 進入詳情,可以看到地址爲 0x2b3 的人備註爲 Deployer,他就是 Doodles 項目的合約部署人,現在應該已經自由了吧...
Doodles 合約部署之後又發生了什麼呢?第二個交易是 set provenance,這個稍微解釋一下,之前的文章中當你在買 NFT 時,你買到的究竟是什麼?我講過每個 NFT 的表現層是外部存儲的,項目方具有修改的權限,set provenance 則是將表現層的數據生成 hash 存儲進鏈中,並且只能存一次,從而保障後續不可能再進行數據更改,因爲 hash 的原數據只要有變更所產生新的 hasf 也會完全不同,從而實現校驗項目方是否修改過 matedata,可見 Doodles 還是很良心的用這個方法保證自己不會動數據。
然後我們可以看到進行了 Set Base URI,即設置了 NFT 的 matedata 元數據,所以是先將元數據生成 hash 存進去,然後再將 matedata 的 uri 存了進去。
接着他使用 Set Allow List 設置了 3 次白名單。
然後產生了幾個 mint 操作,但是都沒有成功,這是咋回事呢?
我們點進交易詳情看到說 Sale 必須要打開纔可以 mint
這裏我們要提前透支一下後面的課程了,先看Doodles 的代碼,可以看到在 mint 函數中有一個 saleIsActive 參數校驗,這個參數若爲 false 則無法進行 mint,所以這是管理員開啓 mint 的參數,現在知道爲什麼那些 mint 失敗了嗎,因爲管理員還沒有開啓 mint,所以交易被攔截了。
然後我們一直向上翻,看到有一個交易叫 Set Is Allow List Active,這意味着管理員開啓了 mint。
至此 Doodles 產生了一望無際的 mint 交易,開始了印錢模式 ......
相信你現在已經學會如何讀懂一個項目方的交易信息了,並能從中讀出一些自己的理解出來,其實多看看有些項目方的交易數據還是很有趣的,尤其是一開始的數據,比如能發現很多項目方偷雞摸狗的行爲哈哈。
這篇文章有點長,還有合約部分沒講,請耐心繼續往下看。
我們進入 Contract,可以看到該項目的合約代碼,這裏我就不再帶着大家讀代碼了,後面有機會單獨出欄目帶大家閱讀合約代碼。
Read Contract 表示讀取合約數據,即合約代碼對外暴露出的讀取接口軍科院在這裏進行查詢。
數量太多了,我挑幾個重要的給大家講講,如下圖,每個接口分爲接口名和具體的值,接口名大家根據語義直接理解就可以,比如 MAX PUBLIC MINT 表示每個人最多可以 mint 的數量,那數量是多少呢?下面顯示了 5。
部分接口是需要寫入參數的,比如 balanceOf 表示查詢某個人持有的 NFT 數量,我們隨便輸入一個地址進去,得到的結果是 0,即沒有持有 Doodles。
剩下的太多了就不一一給大家演示了,請大家打開頁面後自己試着點一點,琢磨理解其中的含義。
然後我們點擊 Write Contract,這裏的接口都是對合約進行寫入操作的,即改變合約數據,其中部分接口是需要校驗管理員權限纔可以執行的,比如開啓 mint、設置 mint 價格,如果你不是管理員則無法執行,部分接口如 mint 則是不需要校驗權限的。
部分項目方代碼會出現漏洞,把一些需要權限的接口忘了設置權限,比如我聽說一個項目方把轉移管理員權限這個接口沒有設置管理員權限.... 導致自己的合約可以被所有人轉移權限,這種錯誤犯了整個項目都哭了。
以上就是本篇文章的內容,有點長,如果你看到了這裏說明很有耐心並且願意花費時間學習 web3 知識,加油!
大家可以關注我的公衆號《今天有更懂這個世界一點了嗎 》查閱往期文章,與我進行更深度的交流探討,也可以關注我的推特:jason_chen998
原文鏈接
歡迎加入律動 BlockBeats 官方社群:
Telegram 訂閱群:https://t.me/theblockbeats
Telegram 交流群:https://t.me/BlockBeats_App
Twitter 官方帳號:https://twitter.com/BlockBeatsAsia