BlockETL軟體包用于比特币區塊鍊資料分析中的資料抽取/轉換/加載(ETL),可以從原始的比特币區塊檔案中抽取區塊與交易資料并加載入通用SQL資料庫,以便于後續的資料分析處理,非常适合區塊鍊資料分析相關的畢業設計或課題研究項目。BlockETL官方下載下傳位址: http://sc.hubwiz.com/codebag/blocketl-java/ 。
1、軟體包概述
BlockETL軟體包的主要特性如下:
- 直接讀取原始區塊檔案,抽取速度快
- 将原始區塊和交易資料加載至SQL資料庫,便于後續的區塊鍊資料分析
- 支援多流水線并行處理,可自己控制并發流水線數量
- 結構設計清晰,代碼便于擴充
BlockETL軟體包采用Java開發,支援Windows、OSX和Linux等多種作業系統,目前版本1.0.0,主要類/接口及關系如下圖所示:

BlockETL軟體包的目錄組織及主要代碼檔案清單如下:
代碼檔案 | 說明 |
---|---|
build.gradle | Gradle根項目建構檔案 |
settings.gradle | Gradle根項目配置檔案 |
blocketl/ | blocketl庫代碼目錄 |
blocketl/build.gradle | blocket庫gradle建構檔案 |
blocketl/src/main/java/blocketl/IPipe.java | ETL流水線管道接口定義 |
blocketl/src/main/java/blocketl/Pipeline.java | ETL流水線模型類 |
blocketl/src/main/java/blocketl/Kit.java | ETL流水線并發管理類 |
blocketl/src/main/java/blocketl/btc/FileExtractor.java | Bitcoin區塊檔案抽取管道實作類 |
blocketl/src/main/java/blocketl/btc/DummyTransformer.java | Bitoin區塊及交易資料轉換實作類 |
blocketl/src/main/java/blocketl/btc/SqlLoader.java | SQL資料庫加載類 |
sql/ | SQL腳本目錄 |
sql/ddl.sql | 資料庫及表結構定義SQL腳本 |
sql/index.sql | 資料表索引建構SQL腳本 |
sql/stats.sql | 分析統計示範SQL腳本 |
demo/ | blocketl庫使用示範代碼目錄 |
demo/build.gradle | 示範應用gradle建構檔案 |
demo/src/App.java | 示範應用主檔案 |
demo/src/log4j.properties | log4j日志配置檔案 |
2、軟體包使用方法
在開始使用軟體包之前,請先安裝好gradle 6、jdk 8和所選擇的SQL資料庫。下面以MySQL為例說明使用過程:
- 安裝mysql伺服器,參考文檔: Install and Upgrading MySQL
- 安裝jdk 8,參考文檔: JDK 8 Installation
- 安裝gradle 6,參考文檔: Gradle Installation
2.1 初始化資料庫/表結構
進入軟體包的
sql
目錄,使用
ddl.sql
腳本建立資料庫和基礎表結構:
mysql -u root -p < ddl.sql
上述指令會要求互動輸入root使用者的密碼,也可以使用其他有足夠權限的使用者名/密碼。成功執行後,上述指令将建立資料庫bitcoin_analysis和基礎資料表:
- blocks:比特币區塊頭資料表
- transactions:比特币交易頭資料表
- tx_inputs:比特币交易輸入資料表
- tx_output:比特币交易輸出資料表
2.2 抽取流程配置
首先根據自己的基礎環境配置,修改demo/src/App.java檔案中的區塊目錄和資料庫連接配接資訊并儲存:
String dataDir = "…"; //區塊資料檔案目錄
String dbUrl = "jdbc:…. "; //SQL資料庫連接配接URL
String dbUser = "…", //SQL資料庫使用者名
String dbPassword = "…"; //SQL資料庫密碼
String network = "mainnet"; //主網:mainnet,測試網:testnet
2.3 資料抽取與加載
進入軟體包的demo目錄,使用
gradle run
或
gradle.bat run
指令啟動示範應用,可以看到螢幕輸出的資料加載進度:
軟體包的
demo
應用除了在螢幕輸出日志,也會記錄到目前目錄下的
app.log
檔案中,可以利用此檔案排查故障。
要長時間無人值守運作,可以使用
gradle distZip
打包後再執行編譯好的程式。
2.4 資料分析
一旦完成區塊鍊資料的抽取并加載到SQL資料庫中,就可以進行資料分析了。
為了提高資料加載速度,在之前的
ddl.sql
中沒有定義資料表的索引,是以在進行資料分析之前,首先要使用
index.sql
來建立資料表索引以加速統計查詢的執行。進入sql目錄執行如下指令完成索引建構,根據要求輸入密碼:
mysql -u root -p < index.sql
索引建立之後,就可以利用SQL進行資料分析了。預置的stats.sql提供了幾個基本的分析,可以作為參考。
官方下載下傳位址:
BlockETL - 彙智網