文章來源:「火幣區塊鏈大數據」
報告發布時間 2018 年 9 月 4 日
作者:袁煜明、杜海、施俊晶、肖曉

摘要

由於比特幣採用基於公鑰的錢包地址作爲用戶在區塊鏈網絡上的身份,且錢包地址由用戶自由生成,與用戶身份特徵無關,因此比特幣的匿名性導致人們很難推測用戶的真實身份信息。

目前爲止,有許多嘗試推測比特幣地址身份的方法,其中最常用的推測方法是基於多輸入交易地址和挖礦交易地址,通過遞歸算法的進行的判斷,準確率幾乎可以達到 100%,是非常有效的追尋比特幣地址擁有者的方法。

但是隨着比特幣在全球範圍內的普及,目前比特幣的整個區塊已非常龐大(截止 2018 年 8 月 28 日,區塊高度爲 538862,大小接近 180G),如果使用該方法所依靠的遞歸算法對整個區塊鏈上的地址進行計算,需要消耗大量計算資源和時間,限制了對該方法的使用範圍;另外這種方法只能通過設置一定條件追蹤部分滿足條件的比特幣地址擁有者,而無法涵蓋所有比特幣地址。

火幣研究院在該算法的研究成果上,通過從比特幣區塊鏈中提取特徵分析不同賬戶的鏈上轉賬信息,使用隨機森林(Random Forest)的機器學習算法對地址類別進行歸類。該機器學習算法並非替代原有的聚類算法,而是對原有的聚類方法應用範圍的補充。犧牲一小部分的準確性,以適用於更廣泛的比特幣區塊鏈轉賬研究。

本文主要分爲兩個部分:第一部分 1)簡述比特幣交易系統及交易過程 2)基於多輸入交易地址以及挖礦交易地址的分類方法 3)通過隨機森林算法建模對地址類別進行歸類方法 4)兩種算法的比較。第二部分利用模型進行實例分析。目的是爲讀者提供將比特幣地址擁有者進行分類的思路,以便在不同的應用場景下,選擇更爲高效的方法對比特幣區塊鏈數據進行多維度分析。

文章的第二部分,我們通過分析 2018 年 8 月 8 日至 8 月 15 日所有的比特幣地址與轉賬記錄,基於分類算法得出活躍地址數的分佈:

活躍地址中,44% 爲交易所地址,30% 爲服務商地址,19% 爲個人錢包地址,6% 爲博彩公司,1% 爲礦池。

再進一步分析新建地址數和轉賬明細得出:

1)  交易所和服務商新增地址數在這幾周內變化不大,但是新建個人錢包地址數卻呈現明顯下降趨勢。

2)  比特幣由個人地址轉入交易所的量遠遠大於從交易所轉入個人地址的量。

最後推測該周比特幣價格大幅下挫原因可能有:

1) 新入場的投資者人數的減少。

2) 很有可能是有大量用戶將個人錢包中的比特幣轉入交易所進行拋售。

報告正文

第一部分 模型簡介

1. 比特幣的交易過程和特點

比特幣交易有三個特點:1)所有交易記錄大衆可見,2)一筆交易可以有多個輸入(inputs)和多個輸出(outputs) 3)每筆交易都通過公鑰-私鑰對來識別交易的付款人和收款人。

圖 1 爲真實出現在比特幣網絡的交易流,每個頂點代表一個比特幣地址,頂點之間的連線和箭頭代表一筆交易。正如以上提到的比特幣的第二個特點,一筆交易可以有多個輸入(圖中交易 A,B,C),基於多輸入交易地址以及挖礦交易地址的歸類方法正是使用了這個特點。

分類算法解析推測比特幣持有者類別與流向

2. 基於多輸入交易地址和挖礦地址的歸類(算法 1)

2.1  多輸入交易地址

通過 Fergal Reid,MAO H L,MAN H 等人的研究,得出結論:當用戶支付額度超過了用戶錢包中每一個可用地址中比特幣的數量時,爲了避免執行多筆交易完成支付造成交易費用方面的損失,用戶會從錢包中選擇多個比特幣地址聚合在一起進行匹配支付,實現多輸入交易。而又由於比特幣交易中使用每一個地址中的資金都需要單獨簽名,所以我們可以反過來認爲一個多輸入交易中的所有輸入地址來源於同一個用戶。(準確率可以近似達到 100%)。

因此我們可以認爲圖 1 中,3 與 4 爲同一用戶,同理:8,9 與 10,以及 5 與 6 都爲同一用戶。

2.2  挖礦交易地址

同樣,對於沒有輸入地址的交易(也就是俗稱的挖礦交易),由於挖礦的本質是在一臺服務器上運行比特幣挖礦程序,可以認爲一個產量交易中的輸出地址是由同一個用戶進行配置。所以如果一個或多個地址是同一個挖礦交易的輸出,可以認爲它們被同一個用戶控制。

對於用戶自行挖礦模式的情況,挖礦交易地址聚類的準確率可達 100%。對於「礦池」模式,多數情況下,出塊獎勵會在產量交易中轉入「礦主」的私有收益地址,然後根據礦池用戶的算力貢獻進行二次收益分配,因此同樣可以認爲產量交易輸出地址屬於同一用戶。

2.3  歸類流程

歸類算法的框架如圖 2 所示,迭代的次數越多,查到的地址數就會越多,全面性就越好,但是迭代次數的增多同時也會降低聚類效率。

分類算法解析推測比特幣持有者類別與流向

以上,我們描述了基於多輸入交易地址和挖礦地址的歸類模型及其實現方法,該模型可以非常準確地對同一用戶的地址進行聚類,且隨着迭代次數的增多,得到的同一用戶地址數量非常可觀:例如,如果我們知道某交易所一些熱錢包地址,通過該算法可以得出大量的這個交易所其他的熱錢包地址,且準確率近似 100%。

然而該算法缺點是有一定的侷限性:我們無法瞭解比特幣網絡的所有地址的擁有者,對於一個不在數據表的地址,我們無法對其進行歸類。

火幣研究院在研究了該算法的基礎上,通過從比特幣區塊鏈中提取不同類別比特幣地址的特徵,建立地址歸類模型,能夠對更爲廣泛的匿名比特幣地址進行歸類。

3. 基於隨機森林的比特幣地址分類(算法 2)

3.1  標記類別和樣本選取

我們爲建模隨機抽樣選取了 8045 條樣本,並分爲五個類別標記:交易所(1591),礦池(1684),服務商(1669),博彩公司(1601),個人(1500)。

建模所用的地址標籤信息主要來自於 WalletExplorer (www.walletexplorer.com),該網站已經通過以上方法,分類了數萬個地址,有五個不同的類別(交易所,礦池,服務商,博彩公司,舊地址),其中舊地址類別現已很少有交易記錄,我們將此類別刪除。其餘四個類別爲了保持每個標籤數據的數量維持在同一水平,以免出現數據不平衡情況,我們採用了隨機抽樣的方法,將每個分類的樣本數保持在 1500 左右。

除了以上四個類別外,我們還加入了「個人」比特幣地址這一分類,數據來源於 blockchain.info 上已標記的個人地址,隨機抽取 1500 個。

3.2 特徵選擇

通過經驗判斷和反覆觀察和實驗,我們選取以下地址的特徵作爲建模的特徵:

1)該地址作爲 input 的交易數量(總轉出筆數)

2)該地址作爲 output 的交易數量(總轉入筆數)

3)該地址作爲 input 的 BTC 總量(總轉出 BTC)

4)該地址作爲 output 的 BTC 總量(總轉入 BTC)

5)該作爲 Input 時,每筆交易 Input 總數平均數

6)該作爲 Output 時,每筆交易 Input 總數平均數

7)轉入筆數 / 轉出筆數 比例

8)(轉入筆數-轉出筆數)/(轉入筆數+轉出筆數)

9)平均每筆轉入 BTC 數量

10)平均每筆轉出 BTC 數量

11)是否有過一次或以上的挖礦交易(Coinbase)

12)該地址作爲 Input 的總礦工費(轉出總交易手續費)

13)該地址作爲 Output 的總礦工費(轉入總交易手續費)

14)轉出平均每筆交易費

15)轉入平均每筆交易費

16)平均每天轉出筆數

17)平均每天轉入筆數

以上鍊上數據火幣研究院通過 BlockSCI 工具,在服務器上搭建 BTC 節點後,使用 Jupyter notebook 進行抓取。

3.3 模型選擇

在監督學習的模型選擇上,通過比較與測試,我們最終選擇 Random Forest (隨機森林)作爲我們此次搭建的模型。

該模型主要有以下四個優點:

1)在當前所有算法中,具有極好的準確率。

2)能夠處理具有高維特徵的輸入樣本,而且不需要降維。(我們的數據一共有 17 個維度的特徵)

3)適用於多分類問題(5 個不同的分類)。

4)對於缺省值問題也能夠獲得很好的結果(有些地址只有轉入沒有轉出記錄,無法計算出轉出相關的數據)。

3.4 建模過程

建模過程如圖 3 所示。其中網格搜索的參數主要爲:

1) 隨機森林中的樹的數量(n_estimators)

2) 樹的深度最大值(Max_depth)

3) 拆分內部節點所需的最小樣本數(Min_samples_split)

4) 葉子節點所需的最小樣本數(Min_samples_leaf)

分類算法解析推測比特幣持有者類別與流向

方案使通過 Python3 語言實現,使用了 Scikit-learn 中的 RandomForestClassifier (隨機森林分類),GridSearchCV (網格搜索),train_test_split (分離測試集和訓練集),confusion_matrix (混淆矩陣),K-Fold (K 折)等 API 模塊。

訓練集和測試集按照 2:1 的比例進行分割。

3.5 模型得分

最後經過調試,模型在最終測試集上準確度爲 90%。

混淆矩陣如圖 4,除去交易所和服務商的預測混淆的相對較多,整體效果還是較爲理想的。

分類算法解析推測比特幣持有者類別與流向

4. 兩種方法對比

火幣研究院的比特幣分類算法(算法 2)並非替代多輸入交易地址和挖礦地址分類算法(算法 1),而使用算法 1 運行結果作爲地址的標籤,在算法 1 的基礎上對其應用範圍進行補充。通過犧牲一小部分的準確性,提高其普適性以應用於更宏觀的鏈上數據分析。

兩者的區別主要有:

4.1 算法類型不同

算法 1 是已知標籤地址的情況下,通過多次迭代找尋同時出現在同一個轉賬中 input 的地址過程,目的是發現和已知標籤地址同屬於同一用戶的地址,本質上屬於一種遞歸算法,迭代次數越多,獲得的具有標記的地址數越多。

而算法 2 屬於機器學習中的監督學習算法,首先將大量帶有標記的數據來訓練產生一個具有推斷功能分類器。有了這個分類器以後,可以根據任何新的個體的特徵對該個體進行分類。

4.2 標籤來源不同

算法 1 和算法 2 都是從比特幣區塊鏈中提取數據,但標籤的來源有所不同:

算法 1 的標籤來源可以通過實際觀察。例如,如果要獲取某交易所的熱錢包地址,可以實際在交易所進行充提幣交易,交易所充幣和提幣地址即該交易所的錢包地址;而算法 2 由於需求的標籤數量巨大(至少幾千個地址),所以直接引用算法 1 的結果,比如有些網站如 WalletExplorer 可直接提供所需標籤。

4.3 應用場景不同

算法 1

優點:

1)準確率非常高(接近 100%)

2)有具體標籤(具體到火幣熱錢包,OKEX 熱錢包等)

3)可解釋性強

缺點:

1)普適性差(無法爲所有地址打上標籤)

2)遞歸算法所消耗大量計算資源

該算法適用於追蹤某個人(黑客,比特幣盜竊者),或者某團體(交易所,服務商)的比特幣流向。

算法 2

優點:

1)普適性強(給定任意一個地址及其鏈上特徵,可以推測該地址的類別)

2)除了建模需要消耗一定計算資源,在歸類時消耗非常少量計算資源。

缺點:

1) 準確率無法和算法 1 相比(目前只能達到 90%)。

2) 無具體標籤(只能歸類成五個類別,無法具體到某個交易所或者機構)。

3)標籤可能會隨着行爲發生變化(可能一個地址最開始被標籤爲個人地址,但可能未來會更改成交易所地址)

4)可解釋性差(隨機森林是個黑盒子)。

該算法適用於對數據準確度要求略低的宏觀的鏈上數據分析(例如目前所有比特幣約中有百分之多少在交易所,百分之多少在個人錢包等),以及根據一個地址,迅速判斷該地址類別(例如某日比特幣鏈上發生大額轉賬進入某地址,根據歸類算法可以推測該地址屬於什麼類別)

實際分析中,關於算法 2 如何提高準確率的問題,我們的解決方法是:將算法 2 與算法 1 相結合,在算力條件充足的情況下,使用算法 1 對儘量多的地址進行歸類,(特別是對有大量持幣或者大量轉賬的地址,無法聚類再網上搜尋標籤)。將剩餘的無法歸類的地址再使用算法 2 進行分類。可以有效地提高數據準確性。

第二部分 實際案例

1. 活躍地址聚類

我們選取 2018 年 8 月 8 日至 8 月 15 日的所有的比特幣地址與轉賬記錄進行分析。首先對該周出現在 input 和 output 的所有地址先使用算法 1 對已知地址進行聚類,再使用算法 2 對剩餘的地址進行了分類。

該周的活躍地址數共 332 萬個,根據算法的推測,其中 143 萬個爲交易所地址,99 萬個爲服務商地址,62 萬個爲個人地址,博彩公司 18 萬,礦池 4 萬。分佈如圖 5 所示。其中交易所,服務商和個人錢包地址佔了總地址數的 93%。

分類算法解析推測比特幣持有者類別與流向

2. 新增地址數分解

我們又往前抓取了四周的鏈上數據進行分析:從新增地址數(圖 6)來看,這幾周新增地址數有所減少;

分類算法解析推測比特幣持有者類別與流向

我們再將新增地址數用我們的算法進行分類(圖 7),可以發現:雖然交易所和服務商新增地址數在這幾周內變化不大,但是新建個人錢包地址數卻呈現明顯下降趨勢,直接導致了整體新建地址數下降。可以通過新建的個人錢包地址數減少判斷,新進入市場的投資者人數有所減少。

3. 交易量分析

另外,除了對地址分析外,我們對該周的交易數據進行了分析。得到結果如圖 8 所示。這周內一共有 691 萬 BTC 的交易量,個人地址中的比特幣轉入交易所的量遠遠大於從交易所轉入個人地址的量(相差 14 萬 BTC,約 8.4 億美金), 很大概率是有大量用戶將個人錢包中的比特幣轉入交易所進行拋售,可能也是導致該周比特幣價格下挫的原因之一。

分類算法解析推測比特幣持有者類別與流向

4. 比特幣價格下挫原因分析

2018 年 8 月 8 日至 8 月 15 日數字貨幣整體低迷,比特幣價格更是下挫 15%。通過以上分析,該周比特幣價格大幅下挫可能與兩方面因素有關:

1)個人的新建地址數的減少,說明新入場的投資者人數的減少。

2)個人地址中的比特幣轉入交易所的量遠遠大於從交易所轉入個人地址的量,很大概率是有大量用戶將個人錢包中的比特幣轉入交易所進行拋售。

參考文獻

[1]Fergal Reid and Martin Harrigan:An Analysis of Anonymity in the Bitcoin System IEEE Third International Conference on Privacy,Security,Risk and Trust. Boston: IEEE,2011: 1318-1326.

[2]MAO Hong-liang,0 WU Zhen , HE Min , TANG Ji-qiang , SHEN Meng :Heuristic Approaches Based Clustering of Bitcoin Addresses Journal of Beijing University of Posts and Telecommunications:TN911. 4 A

[3]Man H A,Liu J K,Fang J,et al. :A new payment system for enhancing location privacy of electric vehicles IEEE Transactions on Vehicular Technology,2014,63 (1):3-18.

[4]Harry Kalodner, Steven Goldfeder, Alishah Chator, Malte Möser, Arvind Narayanan : BlockSci: Design and applications of a blockchain analysis platform Cryptography and SecurityarXiv:1709.02489

[5]wikipedia:Random Forest https://en.wikipedia.org/wiki/Random_forest

來源鏈接:www.jianshu.com