本文為如何看懂 Etherscan 來了解 NFT 項目情況提供了數據分析流程。本文源自《怎麼通過看懂Etherscan 了解NFT 項目情況?》,由「今天有更懂這個世界一點了嗎」撰稿。
(前情提要:Etherscan再新增「View 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 轉移給另外一個人,交易已經被打包進第 11,434,814 區塊中,是在 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.3 ETH,合約部署時或者其他需要寫入大量數據才需要這麼多 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 )
📍相關報導📍
BAYC、Doodle…等 Discord 群遭駭,用戶該如何自保?必知的防詐騙守則、取消機器人授權
介紹 10 個以太坊區塊鏈瀏覽器 —— 你的選擇不只有 Etherscan
讓動區 Telegram 新聞頻道再次強大!!立即加入獲得第一手區塊鏈、加密貨幣新聞報導。
LINE 與 Messenger 不定期為大家服務