分類演算法解析推測比特幣持有者類別與流向【數海拾趣3】

買賣虛擬貨幣

本報告所有資料均來自於火幣區塊鏈研究院資料團隊的抓取和加工,引用請註明來源“火幣區塊鏈大資料”。報告發布時間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


更多區塊鏈資訊:http://www.qukuaiwang.com.cn/news

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;