如何使用SQL分析Web3中的資料​?

語言: CN / TW / HK

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

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

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

  • Web3資料流和景觀。瞭解Web3,去中心化的資料儲存。
  • 用於解碼交易資料的工具:與Web3資料棧一起的工具概述,以及如何利用它們

讓我們開始吧!

Web3的資料流和景觀

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

上圖:

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

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

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

通過 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費用(如果有)。
  • 該交易被廣播到網路上,並由願意執行目標智慧合約中指定功能的礦工拾取。
  • 如果執行成功,智慧合約會發出事件,標誌著某些里程碑的完成。由此產生的事件資料結構被稱為 "日誌"。
  • 目標智慧合約可以向其他智慧合約發起內部交易(額外呼叫)。這些內部事務建立的資料結構被稱為 "軌跡",也可能在各自的執行過程中發出額外的日誌事件。

上圖: 代幣傳輸的資料生命週期。來源:

http://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,在這種情況下,它是。
  • `交易費用=交易使用的氣體*氣體價格`,你可以在這裡找到更多與以太坊氣體有關的細節。(http://ethereum.org/en/developers/docs/gas/#post-london)
  • 輸入資料包含關於交易的額外資訊。在這種情況下,它是一個轉移函式,細節包括交易的地址和價值。

  • 資料本身是位元組碼,在Dune上有資料型別`bytea`。
  • 前8個字元`0xa22cb465`是函式簽名的`MethodId`,它不總是唯一的(但應該是)。
  • 之後的每64個字元是一個不同的輸入變數。這裡我們有兩個,分別對應於`to address`和`value`。

基於以上資訊,我們可以使用以下查詢來拉取 Dune 上的資料(

http://dune.xyz/queries/601249)——

訪問和處理Web3資料的工具

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

Block Explorers

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

儘管區塊鏈探索者對於詢問區塊鏈賬本內的單個記錄很有幫助,但他們對於回答需要聚合或轉換資料的問題並不擅長。例如,如果你想知道過去3個月有多少NFT通過Opensea交易所售出,或者如果有人想知道交易從 "Coinbase "流向 "Axie Infinity "的頻率,只用區塊探索器就很難回答。為此,人們將需要直接訪問資料。這在我的上一篇文章中已經介紹過了(

http://thisgoke.medium.com/getting-into-web3-as-a-data-scientist-machine-learning-engineer-f77c450b4e83)。

分析資料

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

  • Solana NFT交易概覽(http://dune.xyz/sealaunch/Solana-Transactions)
  • OpenSea市場分析(http://dune.xyz/hildobby/OpenSea-Market-Analytics)
  • Eth2號流動性質押(http://dune.xyz/eliasimos/Eth2-Liquid-Staking)

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

  • 內聯Ethereum地址。當在Dune中工作時,Ethereum地址被儲存為PostgresSQL位元組數,當你在Etherscan上查詢時,它被編碼為`x`字首,而不是通常的`0x`。
  • 識別交易中的合約地址。當試圖區分合約地址和普通地址時,你可以通過檢查`CREATE`操作碼是否在`traces`中被呼叫來實現,比如說

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

http://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 等區塊瀏覽器上的資料耗盡情況以及閱讀智慧合約原始碼,是制定正確的資料分析策略的關鍵必要條件。