相關閱讀:一文回顧2021 年Etherscan 新增的21 個功能
加密攻略是PANews推出的,供加密老司機公開分享他在加密世界的知識,經驗,見解的欄目,歡迎創作者投稿此類型主題的文章。
作者|twodam.eth
來源|【教程】Etherscan 查看賬戶類型、資產數據、合約以及交易
Etherscan 可以說是目前以太坊事實上的基礎設施,查詢鏈上地址和交易信息,在此基礎之上,他們還利用這些海量的數據實現各種好用的功能,今天在這篇文章簡單描述一些。
同時也希望幫助到更多非開發者的用戶,讓大家能夠知道如何通過區塊鏈瀏覽器去查詢確認一些數據,知道自己在做什麼,也知道項目方承諾的是否與鏈上行為相符等。
賬戶類型
以太坊上有兩種賬戶:EOA 以及合約,EOA 也就是一般大家使用的普通地址,通過私鑰控制;而合約就比較特殊,沒有私鑰,所有功能都通過寫在智能合約內的代碼執行,不能自主運行,一定要由EOA 地址發送交易才能觸發合約。
怎麼識別呢? Etherscan 上會顯示對應地址的類型以及一些標籤:
PolyNetwork 攻擊者
Uniswap V3 交易路由合約
可以看到左上方地址詳情會顯示前綴“Address“ 或“Contract“,對應的就是普通地址跟合約的區別了,普通地址是只要有私鑰就可以發起交易,而合約則要看情況,不同類型的實現版本會有不同的約束。
有的合約出現漏洞會影響所有用戶,有的合約則安全性良好,推特上一般也會有人去研究各種熱門合約,不懂開發的用戶也可以多看看報告,重視資產風險。
這些標籤都是可以點進去查看的,例如Heist 是那些盜取了很多ETH 或Token 的地址/交易,Blocked 是被託管穩定幣提供商(例如USDT 和USDC )屏蔽。
資產數據
目前Etherscan 已經對ERC20 / ERC721 / ERC1155 這三種標準有了很好地支持,前兩種對應的就是我們常見的Token 和NFT,ERC 1155 是一種相對較新的協議,可以說是融合了Token 和NFT 的特性,支持一個合約多種類型代幣。
地址詳情頁資產詳情
相比之前下拉菜單中簡略的餘額展示,這個詳情頁面還會列出合約地址、價格和24h 價格變動,對於流動性倉位以及NFT 類資產,Etherscan 也能分類展示其資料。
流動性倉位及NFT 類資產
最近Etherscan 針對NFT 的詳情頁做了更新,可以看到當前圖像、擁有者並通過Blockscan 進行通信。在NFT 交易的最後點擊View NFT 就可以進入這個頁面:
ERC721 交易列表
NFT 詳情頁賬戶分析
Etherscan 上可以查詢ETH 或Token 的餘額以及轉入轉出的趨勢數據,也可以看到作為發送方和接收方時所使用的Gas 費用。
賬戶分析合約
智能合約是以太坊上很重要的一個組成部分,基於EVM 編寫的代碼形成鏈上合約,是如今鏈上各種應用的基礎。智能合約的應用如Gnosis 多簽用於管理資產,Uniswap 路由用於去中心化交易,Token 和NFT 作為治理和會員憑證以及資產的上鍊等。
鏈上資產越來越多樣化,形形色色的應用越來越多,作為鏈上邏輯層的智能合約,安全性是一個很大的問題。提交給專門的機構去做合約審計是一個基本的保障,但有審計報告不意味著絕對安全,是否安全很大程度上取決於背後開發團隊的能力和安全意識。
下面用Uniswap V3 的路由合約來舉例說明:
合約信息代碼查看與定位
開發者應該熟悉GitHub 這個開源代碼協作平台,每個項目都會自己的代碼倉庫。
以太坊上的智能合約是編譯成EVM 指令,以字節碼形式存儲的。為了公開給所有人查看,確認以及審計,Etherscan 提供了驗證合約的方法,源代碼編譯後符合鏈上數據,就可以通過驗證。
可以使用搜索框和Ctrl + F 網頁搜索關鍵字快速定位到指定代碼片段。
查詢與執行合約
一般的項目都是智能合約搭配網站頁面,其實如果知道執行什麼方法和傳遞什麼參數,直接在Etherscan 上也是可以連接錢包執行合約指定方法的。
我看有些教程會教怎麼繞過網頁,直接去鑄造一些NFT,這也是一個使用場景。進階一點,可以去搭配各種工具如使用Flashbot 提交隱私交易(避免被搶跑等)等。
多簽錢包也是一種智能合約,之前寫過一篇詳細教程,這裡不再贅述。
執行合約方法交易
區塊鏈上的一個重要概念就是Transaction 交易了,一筆交易包含發送方、接收方、區塊信息、Gas 費用、傳遞的數據、觸發的事件以及各種內部交易。
還是拿Uniswap V3: Router 2 舉例,在交易列表可以根據交易是否確認,該地址作為發起方還是接收方等信息來過濾交易信息。
交易列表
接下來我們看一個具體的交易:
交易詳情
常見的數據大家應該都熟悉,消耗多少Gas,交易是否成功,交易對像是誰。
這裡註意下,大家平時使用MetaMask 等錢包是可以看到地址和交易ID 的,推特上有些人會推薦每次都新建錢包去嘗試新的協議,如果大家懂的話,在交易前後也可以在錢包或區塊瀏覽器上檢查:
交易對像地址是否正確,會不會出現明明應該跟合約交互,但實際收款對象卻是一個普通地址?
交易是否成功?當然有時錢包提示確認,區塊瀏覽器卻還在索引,這個是正常現象,節點同步需要時間。
這筆交易實際執行的是合約的什麼方法?參數對不對?會不會張冠李戴,最終受益方是其他人?
不過執行的方法這點有時候很難看出來,尤其是Uniswap 這種multicall 的方式:
Multicall
Don’t trust, verify.
這篇文章到這裡就告一段落啦,最近意識到並不是所有用戶都是開發者,也不是所有人都有能力去驗證合約邏輯和交易數據。再加上行業早期,這種造福效應以及FOMO 情緒,很多時候人們可能並不在乎項目是否真的有價值,有機會賺到錢才是動力,不一定會花時間驗證。
讓交易/簽名這種交互更加具有可讀性,是錢包、區塊瀏覽器以及各種協議正在努力的方向。