如何使用 SQL 分析 Web3 中的數據​

發表於 2022-05-22 15:14 作者: 老雅痞

你想知道如何在 Web3 中成爲一名高效的數據分析師嗎?還是,你只想構建一個Web3 分析儀來對感興趣的Web3數據感進行分析?不管怎樣,歡迎你閱讀本文。

作爲一個數據人,Web3數據中最具挑战性的部分是理解數據本身。根據我的經驗,有一件事讓我覺得很容易,那就是把每個人都看作是一個巨大的數據倉庫和以太坊區塊鏈上面的協議,作爲倉庫中包含多個表和視圖的各種模式。PS:這也適用於其他區塊鏈。

對於這篇文章,我將努力使事情變得簡潔,並使用這些主題突出它們:

  • Web3數據流和景觀。了解Web3,去中心化的數據存儲。

  • 用於解碼交易數據的工具:與Web3數據棧一起的工具概述,以及如何利用它們

讓我們开始吧!

Web3的數據流和景觀

Web3 的關鍵在於變得更加獨立和自主。這是通過區塊鏈和分布式對等網絡而不是服務器-客戶端關系來實現的。這使得數據流和格式與我們在 Web2 中習慣的不同。通過研究,我發現了像 Dune Analytics 和 Flipside Crypto 這樣的數據映射器,它們具有解碼的區塊鏈數據和內置的可視化工具,供對 Web3 感興趣的數據科學家使用和構建。

上面的圖片顯示了從不同的區塊鏈模式中提取數據進行分析的不同方式,在此以以太坊爲例。

如果你曾經在以太坊(或任何啓用智能合約的區塊鏈)上進行過交易,那么你可能已經在區塊資源管理器上查找過它,並看到了這種信息:

通過 Etherscan 區塊瀏覽器看到的以太坊區塊鏈上的交易示例

學會閱讀交易細節將是所有以太坊數據分析和知識的基礎,但了解代幣和交易數據的流向也很重要。

解讀Web3數據

我可能偏向於使用以太坊區塊鏈來解釋解密區塊鏈數據,但根據經驗,當你了解數據在智能合約上的存儲和管理方式時,以太坊更容易理解。既然如此,重要的是要注意,我將談論的許多概念將廣泛適用於所有與EVM兼容的鏈和智能合約,例如Polygon、Fantom Opera、BSC、Arbitrum One等。

一個智能合約交易相當於智能合約驅動的web3應用程序中的後台API調用。智能合約上的活動細節及其產生的應用狀態變化被記錄在稱爲交易、調用和日志的數據元素中。交易數據元素代表由用戶(或更准確的說是EOA)發起的功能調用,調用數據元素代表智能合約在交易中發起的額外功能調用,而日志數據元素代表交易執行期間發生的事件。

爲了了解以太坊區塊鏈上的交易數據,我們可以嘗試使用Etherscan(作爲交易實例的基礎,我使用了一個Mirror Crowdfund合約)。這就像檢查你的汽車儀表盤,以尋找修復汽車問題的指針,但作爲一個數據科學家,我們必須打开汽車的引擎蓋,了解幕後發生了什么。通常情況下,有3種不同類型的交易:

  • 以基礎貨幣的形式從一個用戶(EOA)轉移到另一個用戶,例如,張三在以太坊網絡上給李四發送了3個ETH

  • 由一個EOA創建一個智能合約,例如,張三將代碼提交給區塊鏈上的一個地址,創建一個智能合約,一旦一定數量的資源被轉移到賣方的账戶(或錢包),智能合約就會轉移NFT的所有權。

  • EOA對智能合約的調用,例如,張三調用李四的智能合約,用999ETH交換NFT。

當用戶在區塊鏈上提出請求時,在引擎蓋下發生的事情是:

  • 與用戶相關的EOA發起一項交易,指定目標智能合約地址、目標功能、該功能的參數、交易付款(如果有)以及它愿意支付的gas費用(如果有)。

  • 該交易被廣播到網絡上,並由愿意執行目標智能合約中指定功能的礦工拾取。

  • 如果執行成功,智能合約會發出事件,標志着某些裏程碑的完成。由此產生的事件數據結構被稱爲 "日志"。

  • 目標智能合約可以向其他智能合約發起內部交易(額外調用)。這些內部事務創建的數據結構被稱爲 "軌跡",也可能在各自的執行過程中發出額外的日志事件。

上圖:代幣傳輸的數據生命周期。來源:

https://docs.google.com/presentation/d/1I6vDOS52uMCmWg3KIbuKYe8lK-8_ol9bEksIUEHNNLI/edit#slide=id.gfac7071356_0_6

數據是如何結構化的

現在,你已經了解了發生在幕後的活動和相應的數據元素。現在是時候逐項列出構成web3景觀的各種元素了。交易和跟蹤數據結構包含了智能合約函數調用的細節,按照這個順序:

  • 在區塊鏈上,每筆交易都有一個獨特的哈希值`交易哈希值`,其中有各種交易細節。例如,我們可以在這裏查詢這個交易哈希值0xbe3b109b857e8897cbe3c2a261d8072546ae693662422a1b93fe1a3a990dfded

  • `From`是交易的發送方,`To`是交易的接收方,也可以是一個合約地址。在這個例子中,它是從`0x83ebd57bf4f22cba9c4a624a69c910d7c8619ee2`轉移到CROWDFUND_EDITIONS代幣的。

  • `Value`是被轉移的ETH值。有時ETH值可以是0,在這種情況下,它是。

  • `交易費用=交易使用的氣體*氣體價格`,你可以在這裏找到更多與以太坊氣體有關的細節。(https://ethereum.org/en/developers/docs/gas/#post-london)

  • 輸入數據包含關於交易的額外信息。在這種情況下,它是一個轉移函數,細節包括交易的地址和價值。

  • 數據本身是字節碼,在Dune上有數據類型`bytea`。

  • 前8個字符`0xa22cb465`是函數籤名的`MethodId`,它不總是唯一的(但應該是)。

  • 之後的每64個字符是一個不同的輸入變量。這裏我們有兩個,分別對應於`to address`和`value`。

基於以上信息,我們可以使用以下查詢來拉取 Dune 上的數據(
https://dune.xyz/queries/601249)——

訪問和處理Web3數據的工具

現在我們已經很好地理解了Web3數據的元素,它看起來像什么,並且已經在區塊鏈上查詢了我們的第一個交易數據,你可能想知道如何快速熟悉一個協議及其數據。有一系列很好的工具可以幫助我們做到這一點。

Block Explorers

如前所述,使用Block Explorers是深入了解區塊鏈上的交易的一個好方法。Block Explorers是在线瀏覽器,可以顯示區塊鏈網絡上曾經發生過的所有交易的細節。以上面的截圖爲例,重要的是要知道所有主要的區塊鏈都有探索器--突出的例子包括Etherscan、Polygonscan、BSCScan、Solana beach等。

盡管區塊鏈探索者對於詢問區塊鏈账本內的單個記錄很有幫助,但他們對於回答需要聚合或轉換數據的問題並不擅長。例如,如果你想知道過去3個月有多少NFT通過Opensea交易所售出,或者如果有人想知道交易從 "Coinbase "流向 "Axie Infinity "的頻率,只用區塊探索器就很難回答。爲此,人們將需要直接訪問數據。

分析數據

Dune analytics是訪問和分析區塊鏈數據的一個偉大資源。在寫這篇文章時,它有Ethereum、Solana、Xdai、Polygon、Optimism和BSC的原始和解碼數據。它提供了一個PostgreSQL界面來查詢數據集,以及一個簡單的點選界面來在查詢結果的基礎上創建簡單的儀表盤。Dune上的用戶社區也相當活躍,並產生了一個廣泛的查詢和儀表盤的例子庫,供人們學習。下面是在Dune上創建的幾個分析實例

  • Solana NFT交易概覽(https://dune.xyz/sealaunch/Solana-Transactions)

  • OpenSea市場分析(https://dune.xyz/hildobby/OpenSea-Market-Analytics)

  • Eth2號流動性質押(https://dune.xyz/eliasimos/Eth2-Liquid-Staking)

如果你對SQL完全陌生,我會推薦這些有用的Dune分析的提示和指南:

  • 內聯Ethereum地址。當在Dune中工作時,Ethereum地址被存儲爲PostgresSQL字節數,當你在Etherscan上查詢時,它被編碼爲`x`前綴,而不是通常的`0x`。

  • 識別交易中的合約地址。當試圖區分合約地址和普通地址時,你可以通過檢查`CREATE`操作碼是否在`traces`中被調用來實現,比如說

3. 充分利用Dune上的標籤。標籤是一塊關於地址的元數據,如果你愿意,是一個標籤或元數據。它以鍵-值對的形式出現。鍵是標籤類型,而值是標籤名稱。從本質上講,你可以使用標籤來查找地址,看看它們是什么(見下面的標籤表)。你可以在這裏(https://hackmd.io/k71ZUSTxQVKGqOcvR6OXnw?view#%F0%9F%AA%A7-What-is-a-label)獲得更多關於標籤是什么以及如何使用它們的見解

https://docs.dune.xyz/data-tables/data-tables/labels#what-labels-looks-like

如果你想獲取所查看地址的標籤,請使用此 UDF,你可以這樣做;

4. 表和列名的引號。PostgresSQL不能識別沒有引號的駱駝字母的列和表名。因此,在Postgres中,雙引號是爲表和列保留的,而單引號是爲值保留的,因此,如果你查詢表名中的大寫字母,Dune會拋出一個錯誤。

5. 去除小數。在處理代幣金額時,記得檢查`erc20. "tokens"`中的小數。

6. 生成時間序列。當處理一個具有不連續時間序列的數據集時,使用

希望這是一篇有用的討論文章,你已經知道了足夠的知識來做基本的Web3數據探索和分析,使用Dune上的SQL,它看起來像什么,以及如何與它合作。在分析web3中的經濟活動和用戶行爲時,重要的是要培養對特定智能合約工作方式的理解興趣,這就會繼續幫助你確定感興趣的指標中涉及的關鍵功能和事件。

Web3正在經歷快速發展和高變異,每天都有新的想法、產品、社區和實驗湧現。它目前觸及生活中的方方面面,包括但不限於支付、金融、藝術、音樂、遊戲、社區、治理和身份,這使得任何人都能參與其中,令人興奮。

所以請理解,結合實際使用 Web3 產品、檢查 Etherscan 等區塊瀏覽器上的數據耗盡情況以及閱讀智能合約源代碼,是制定正確的數據分析策略的關鍵必要條件。

標題:如何使用 SQL 分析 Web3 中的數據​

地址:https://www.coinsdeep.com/article/2916.html

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。

你可能還喜歡
熱門資訊