[黃福鴻 李高翔 卓采標 葉宇中]
BTC(比特幣)系統(tǒng)自2009 年1 月上線至今,仍然是區(qū)塊鏈技術最成功的應用場景之一。然而BTC 缺乏圖靈完備性,Ethereum(以太坊)結合智能合約打破了BTC的局限性。作為可編程區(qū)塊鏈的代表,Ethereum 是一個數(shù)據(jù)豐富多樣的大數(shù)據(jù)庫,目前Ethereum 區(qū)塊高度已超過1 800 萬,整鏈存檔空間已經(jīng)超過15 400 GB,且每天以10GB 左右的速度不斷增長。大數(shù)據(jù)時代的數(shù)據(jù)具有巨大價值,BTC、Ethereum 作為主流區(qū)塊鏈系統(tǒng),數(shù)據(jù)公開透明,只需搭建節(jié)點就可以進行數(shù)據(jù)同步?;趨^(qū)塊鏈的大數(shù)據(jù)分析前景廣闊,可以推進智能合約安全、DApps 開發(fā)、區(qū)塊鏈交易安全、區(qū)塊鏈網(wǎng)絡安全等方面的發(fā)展[1]。
然而目前以Ethereum 為代表的可編程區(qū)塊鏈大數(shù)據(jù)分析存在較多挑戰(zhàn),主要有以下幾個方面。
(1)建立本地節(jié)點,實現(xiàn)區(qū)塊鏈點對點節(jié)點之間的數(shù)據(jù)實時同步存在挑戰(zhàn)。目前全節(jié)點的同步數(shù)據(jù)超過15TB,即使搭建一個輕量級的節(jié)點,完全同步也需要至少一周時間以及多于800GB 的存儲空間。Ethereum 區(qū)塊鏈數(shù)據(jù)同步困難,阻礙了Ethereum 區(qū)塊鏈大數(shù)據(jù)分析。
(2)對Ethereum 全鏈數(shù)據(jù)讀取、解析、測量分析存在挑戰(zhàn)。目前大多數(shù)研究都只是提取了部分數(shù)據(jù)以完成某項特定分析工作,對于Ethereum 數(shù)據(jù)全貌和實時新增的數(shù)據(jù)讀取、解析、處理、測量分析的相關研究不多。
(3)缺乏對Ethereum 全鏈數(shù)據(jù)內容安全的探索。Ethereum具備較大冗余空間,探索Ethereum是否存在色情、詐騙、個人隱私等風險內容,究竟存在多少風險內容,這些風險內容的在Ethereum 鏈的準確位置是非常必要。
為解決上述問題,本文首先擬建立本地節(jié)點,開發(fā)多線程并發(fā)解析程序從節(jié)點中解析提取并構建大數(shù)據(jù)集。最后基于上述細化的數(shù)據(jù)集合進行統(tǒng)計測量分析,對Ethereum 區(qū)塊鏈中的內容風險內容進行發(fā)現(xiàn)與定位,并進行定性和定量分析。本文剩余部分結構安排如下。第二節(jié)概述相關背景,第三節(jié)詳細介紹了Ethereum 數(shù)據(jù)集構建與數(shù)據(jù)初步探索,第四節(jié)對風險內容進行分析,最后在第五節(jié)中進行了總結與展望。
Ethereum 是一個重要的區(qū)塊鏈平臺,是先進公有鏈的代表。整體架構如圖1 所示,主要分成三部分:底層服務、核心層、頂層應用。
圖1 Ethereum 架構
頂層應用包括Ethereum 客戶端、智能合約、ENS、錢包等等,通過Web3j 等API 與下層進行通信。核心層包含區(qū)塊鏈、共識算法、EVM 等核心部件,EVM 是Ethereum 主要創(chuàng)新,所有智能合約均運行在EVM 上,以實現(xiàn)復雜的代碼邏輯。底層服務包含密碼算法、LevelDB數(shù)據(jù)庫、P2P 網(wǎng)絡服務等。
不論是BTC 還是Ethereum 都存在可供自主寫入數(shù)據(jù)的冗余空間。中本聰在創(chuàng)世紀區(qū)塊的Coinbase 字段記錄下了第一條永久信息即泰晤士報當天的新聞頭條:“The Times 03/Jan/2009 Chancellor on brink of second bailout for banks”。此后不斷有各種信息被寫入到BTC,知名礦池F2Pool 將紐約時報新聞標題寫入BTC 第三次減半前最后區(qū)塊中,以致敬中本聰。除了coinbase 字段,Andrew Sward 在論文研究了各種將數(shù)據(jù)嵌入BTC 的方法,包括P2SH、P2FKH、OP_RETURN、P2FK 等數(shù)據(jù)嵌入,并對各種嵌入方法的效率做對比分析[2]。文獻[3]提出利用算術編碼將文本或其他數(shù)據(jù)嵌入到BTC 交易之中,以達到證明數(shù)據(jù)的真實性驗證和永久保存的目的。
凡事皆有兩面性,少部分用戶出于同樣也會將色情、政治、詐騙等垃圾信息寫入?yún)^(qū)塊鏈。然而目前業(yè)界對于區(qū)塊鏈內容安全的研究較少,Roman Matzutt 對BTC 全鏈的內容作了定性和定量分析[4],提取了1 557 個有內容意義的文件,并發(fā)現(xiàn)其中存在兒童色情內容的鏈接和政治敏感內容。相比于BTC,Ethereum 具備更多的冗余空間且所需權限更低,目前尚未發(fā)現(xiàn)有相關論文對Ethereum 全鏈內容做定性與定量分析,發(fā)現(xiàn)其風險內容,本文后面將闡述對Ethereum 內容安全的分析。
商業(yè)化的區(qū)塊鏈瀏覽器如Etherscan 可用于查看具體的區(qū)塊或者交易信息,并提供少量智能合約信息下載。此外,相關研究也提供了一些區(qū)塊鏈數(shù)據(jù)查詢工具與框架,例如論文[5]提出BlockSci 用于區(qū)塊鏈數(shù)據(jù)分析。論文[6]設計了查詢工具EtherQL 為Ethereumt 提供高效查詢,但該工具已經(jīng)停止維護更新。論文[7]提出利用Ethereum 內部機制的系統(tǒng)化、高保真數(shù)據(jù)探索框架DataEther。
然而,上述工具與框架要么停止更新要么對API 做了使用限制,無法用于構建Ethereum 的全量數(shù)據(jù)集。搭建個人本地節(jié)點可以解決上述問題。目前需要兩種客戶端來運行節(jié)點,分別是“執(zhí)行客戶端”和“共識客戶端”。執(zhí)行客戶端偵聽網(wǎng)絡中廣播的新交易,共識客戶端實現(xiàn)了PoS 共識算法,使網(wǎng)絡能夠根據(jù)來自執(zhí)行客戶端的經(jīng)過驗證的數(shù)據(jù)達成一致。本文使用Geth 作為執(zhí)行客戶端,Prysm 作為共識客戶端,搭建個人本地輕節(jié)點。
Geth 與Prysm 經(jīng)過大約一周時間的穩(wěn)定運行后,本地輕節(jié)點即可跟隨同步主網(wǎng)高度,此時節(jié)點占據(jù)本地存儲空間約930G。本文基于Web3j 框架豐富的Ethereum 接口提取解析了Ethereum 自上線以來的區(qū)塊數(shù)據(jù)和交易數(shù)據(jù),并將實時更新的區(qū)塊數(shù)據(jù)解析入庫。如表1 所示,解析的數(shù)據(jù)劃分為2 個大數(shù)據(jù)集(1)block_info 數(shù)據(jù)集、(2)transaction_info 數(shù)據(jù)集。
表1 數(shù)據(jù)集
基于3.2 節(jié)中的大數(shù)據(jù)集,我們對Ethereum 數(shù)據(jù)進行了初步測量與分析。
(1)交易數(shù)據(jù)
Ethereum 剛誕生時并不活躍,在創(chuàng)世紀區(qū)塊發(fā)生了8 893 筆交易之后,直到高度46 147 的區(qū)塊才記錄第一筆真正的交易。隨著區(qū)塊鏈技術的發(fā)展,Ethereum 社區(qū)也更加繁榮,交易不斷增加,最多的一筆交易價值超過1 千萬個Ether。如圖2 所示,Ethereum 前三年的交易數(shù)量呈現(xiàn)指數(shù)級別增長,在2021 年達到頂峰,該年度總交易量超過4.6 億次。
圖2 交易量增長曲線圖
(2)區(qū)塊數(shù)據(jù)
如圖3 所示,本文統(tǒng)計了區(qū)塊高度[0,18 000 000]中單個區(qū)塊中記錄的交易數(shù)量情況,數(shù)據(jù)顯示單個區(qū)塊寫入交易量為0 個的區(qū)塊為1 636 154 個,從時間戳來看全部位于Ethereum 誕生之初。單個區(qū)塊寫入交易量最多的區(qū)塊鏈高度為1 302 929,共計打包了1 431 筆交易。
圖3 單個區(qū)塊記錄的交易數(shù)量分布圖
(3)去中心化分析
目前以太坊區(qū)塊高度超過1 800 萬,其中高度區(qū)間[0,15 537 393]執(zhí)行PoW 共識算法,對該區(qū)間數(shù)據(jù)去重處理得到5 624 個礦工地址,即平均每個礦工挖出約2 762 個區(qū)塊。對礦工地址與挖出區(qū)塊數(shù)量的分布做進一步分析。如圖4 所示,橫坐標是挖出區(qū)塊數(shù)量的Top N 礦工地址,縱坐標是占比??梢钥吹絋op 20 的礦工挖出的區(qū)塊占比為80.00%,TOP50 的礦工挖出的區(qū)塊占比接近90%。其中隸屬于知名礦池Ethermine 的地址0xea674fdde714fd979 de3edf0f56aa9716b898ec8 挖出區(qū)塊數(shù)量最多,達到驚人的3 271 460 個,占比21.05%。
圖4 挖礦數(shù)量TopN 礦工CDF 分布圖
礦工的參與度直觀地衡量了區(qū)塊鏈去中心化程度,因此我們得到一個結論,在Ethereum 區(qū)塊鏈中,絕大部分區(qū)塊由極少部分礦工(礦池)挖出,區(qū)塊鏈的中心化程度已經(jīng)高到令人擔憂。當?shù)V池聯(lián)合起來算力完全可以超過51%,左右區(qū)塊鏈走向。
(3)共識算法轉換分析
2022 年9 月15 日Ethereum 網(wǎng)絡在區(qū)塊高度15 537 393觸發(fā)了重大升級,共識算法正式從PoW、PoS 混行轉為PoS。共識算法的轉換必定對Ethereum 產(chǎn)生重要影響,我們基于數(shù)據(jù)集做了相關分析。
首先分析共識算法轉換對于礦工的影響。測量統(tǒng)計數(shù)據(jù)如下,以高度15 537 393 為分界點,小于等于該高度的且成功挖到區(qū)塊的不同礦工地址僅有5 624 個,十天后礦工地址新增加了2 263 個,一個月后礦工地址新增加了3 879 個。短短數(shù)天礦工數(shù)量的增長數(shù)量超過了過去數(shù)年的的增長。因此Ethereum 升級共識算法為PoS 之后,降低了挖礦門檻,鼓勵了大量新的礦工加入Ethereum 網(wǎng)絡,加強了中心化。
其次分析共識算法轉換對于Ethereum 網(wǎng)絡TPS 的影響?;趖ransaction_info 數(shù)據(jù)集計算共識算法切換前后兩個階段的TPS 以及整體平均TPS 得到如圖5 所示。通過對數(shù)據(jù)計算證明,Ethereum 共識算法由PoW/PoS 混行轉換為PoS 后,網(wǎng)絡性能得到優(yōu)化,平均TPS 從7.6 提高至12.2,提高了60.5%。
圖5 升級前后TPS 對比示意圖
不可篡改是區(qū)塊鏈最重要的特性之一,因此很多用戶利用區(qū)塊鏈的冗余空間進行信息的自主寫入,已達到信息上鏈并存證的目的。根據(jù)Ethereum 數(shù)據(jù)結構可知,當區(qū)塊被挖出時,礦工擁有在該區(qū)塊的“extraData”字段自主寫入信息的權限。當Ethereum 交易為外部非合約調用時,用戶可以在該交易的“input”字段自主寫入一些附加數(shù)據(jù)。因此本文對于上鏈信息的分析主要基于extraData、input兩個字段內容。如圖6 所示,借助詞云進行直觀展示全量“extraData”字段內容,可以看到高頻詞匯均為礦池簽名、礦機型號等,從另一方面印證了章節(jié)3.3 中關于該礦池挖礦數(shù)量巨大的事實。
圖6 “extraData”字段詞云展示
由于區(qū)塊鏈的金融屬性,數(shù)字貨幣詐騙層出不窮并給區(qū)塊鏈發(fā)展帶來負面影響,一些Ethereum 用戶被騙后試圖挽回損失。然而由于區(qū)塊鏈的高度匿名性,受害者出于無奈只能通過交易的“input”字段向黑客發(fā)出請求或威脅,試圖要求對方返還Ether。因此我們通過分析“input”字段語義可以發(fā)現(xiàn)一些涉嫌欺詐的Ethereum 錢包地址。
例如,“0xa773603b139Ae1c52D05b35796DF3Ee76D 8a9A2F”是一個典型的詐騙Ethereum 錢包地址,如表2所示列出了3 個(僅列出小部分)不同受害者在“input”字段請求返還被騙的Ether,直接印證了該地址可能被用于接收詐騙到的Ether。
表2 疑似涉Ether 詐騙錢包地址
本文在Ethereum 中發(fā)現(xiàn)并提取了約100 萬個url 鏈接,其中圖片url 超過5 萬個,經(jīng)過爬取以及模型算法識別,發(fā)現(xiàn)指向色情內容的url 超過了200 個,其中指向知名成人網(wǎng)站pornhub.com 鏈接多達22 條。例如交易hash為0xb7d54a668f95d3e444e9306ed6b6164c21f4125d2804469 fe92d6525828817ee 記錄了1 個色情網(wǎng)站url。
Ethereum 無法直接存儲圖片、視頻、音頻等多媒體文件,因此一些用戶將文件進行編碼后寫入Ethereum。經(jīng)過我們的檢測,發(fā)現(xiàn)在Ethereum 至少已經(jīng)存在圖片編碼文件158 個,經(jīng)過解碼還原后,其中有9 張圖片屬于色情內容。交易hash 為0x57c2 a05bd95b0e3abf13108c2e220a8f99 4fcc173ef4497fb8a578adb3bb79d3的“input”字段經(jīng)解碼后如圖7所示(已馬賽克處理)。
圖7 Ethereum經(jīng)解碼后存在的色情內容
本文針對區(qū)塊鏈大數(shù)據(jù)分析存在的挑戰(zhàn),完成了以下三方面的工作。一是通過建立本地節(jié)點,實現(xiàn)了實時同步Ethereum 數(shù)據(jù)。二是實現(xiàn)高性能地讀取解析實時數(shù)據(jù)讀,從而將鏈上異構數(shù)據(jù)構建成良好和易于處理的實時大數(shù)據(jù)集,數(shù)據(jù)集總量超過20 億條。三是對Ethereum 全鏈數(shù)據(jù)進行探索分析,包括去中心化程度分析、TPS 分析、內容安全分析等。尤其是在風險內容分析方面,大量風險內容已經(jīng)存在Ethereum,我們對相關內容風險內容實現(xiàn)了精確定位,并進行定性和定量分析。整體來看,風險內容與在Ethereum 全部數(shù)據(jù)量中占比很小,但已經(jīng)足夠引起警惕。我們認為未來的區(qū)塊鏈設計必須主動應對風險內容,以避免惡意插入風險數(shù)據(jù)。