交易所數據不透明?一文帶你探尋交易所地址挖掘全過程
ChainInfo
2019-12-10 11:00
本文约4926字,阅读全文需要约20分钟
如何解決信息不對稱,了解交易所真實資產狀況?

2018年12 月, 區塊鏈透明度研究機構(BTI)發布的報告指出, CoinMarketCap 上交易量排名前25 的交易所的總成交量為25 億美元,而實際成交量僅有3.24 億美元,比CoinMarketCap上公佈的數據少87% ,而美國頭部交易所Coinbase 甚至沒有進入CoinMarketCap 的前25 名,交易所刷量的行業“潛規則”也引起了公眾對於交易所數據的質疑。

二級標題

二級標題

交易所地址分類

為了介紹交易所地址挖掘原理,首先要清楚交易所地址的分類。通常來說,交易所的地址可以分為普通充幣地址、熱錢包和冷錢包三類,它們的流通方式大致如圖所示。


(1)普通充幣地址

這類地址佔比大概是交易所的地址總數的99.9%以上,是每個用戶的充幣地址,用戶可以通過這些地址將交易所外的Bitcoin充入這個交易所。之後,這些地址裡的錢會去向兩個方向:向外輸出(有人提幣),或者是匯入熱錢包。

(2)熱錢包

熱錢包是屬於交易所的聯網錢包,主要作用是負責普通充幣地址和冷錢包之間的資金流通以及用戶提幣。也就是說,普通充幣地址與冷錢包不能進行直接的資金流通,用戶提幣交易是從熱錢包轉出的。

與普通充幣錢包相比,熱錢包佔比極小,大致數量也就是10到30之間,但是它的交易數(地址的交易數指這個地址作為輸入地址或輸出地址的所有交易的次數,下同)極大,與普通充幣地址和冷錢包的交易數相差很大的數量級。可以通過這個特徵將熱錢包和其他地址很好地區分開。

二級標題

二級標題

交易結構介紹

Bitcoin的交易使用UTXO(Unspent Transaction Output)模型。 UTXO即未花費交易輸出,每一個UTXO屬於一個地址,一個地址可以包含多個UTXO,每一個UTXO是不可拆分的。在交易時,發起交易的用戶使用屬於自己的UTXO作為交易輸入,構造新的UTXO作為交易輸出。交易發起者使用私鑰解鎖並花費自己的UTXO,使用其他地址的公鑰將新構造的UTXO與這個地址鎖定。每個UTXO在被作為交易輸入使用過之後就被移出UTXO集合。除了比較特殊的coinbase交易,普通的交易都包含一個或多個輸入以及一個或多個輸出。

為了方便理解,我們用一個實際的交易為例進行講解:

這是一筆普通的交易,左側有一個輸入地址1B3AHCVxKkRern499D5DXQdZ6R3qH6asY6(以下簡稱1B),右側有兩個輸出地址19TAUBkne9x3CrPVYDUtwCNuEDsZrY1ddu(以下簡稱19)和35hK24tcLEWcgNA4JxpvbkNkoAcDGqQPsP(以下簡稱35)。

我們假設地址1B的私鑰屬於某一個用戶U1,地址35的私鑰屬於另一個用戶U2。當U1想要向另一個用戶U2轉賬0.005BTC時,U1使用地址1B的一個金額為1BTC的UTXO作為交易輸入,利用地址35的公鑰將一個金額為0.005BTC的UTXO鎖定到地址35。這樣,用戶U2就多了一個金額為0.005BTC的UTXO,也就是說用戶U2的餘額多了0.005BTC,而作為交易輸入的UTXO已經被花費,不再屬於UTXO集合,也就是說用戶U1的餘額少了1BTC。

這樣的交易還不完整,交易的輸入金額為1BTC,交易的輸出金額目前只有0.005BTC,那麼剩餘的0.995BTC去哪兒了呢?如果不需要交易費,那麼0.995BTC將作為找零金額找回屬於U1的地址中。但實際上,交易發起者U1還需要支付一定的交易費,所以就像圖中一樣,一個金額為0.9949853BTC的UTXO被鎖定到地址19中,地址19是一個找零地址,由此我們可以知道地址19也屬於用戶U1。

二級標題

二級標題

地址挖掘技術原理

為了理解交易所地址挖掘原理,還要了解Bitcoin地址挖掘的技術原理。 Bitcoin地址挖掘包括縱向挖掘、前向挖掘和後向挖掘。縱向挖掘是被挖掘地址作為交易的輸入地址,挖掘同為輸入的其他地址;前向挖掘是被挖掘地址作為交易的輸入地址時,挖掘輸出側的特徵地址;後向挖掘是被挖掘地址作為交易的輸出地址,挖掘輸入側的特徵地址。

(1)縱向挖掘

例如:txid=25836a89ee24ce0b3ca7c62a525139fa59aebce0ffd222474b484bb73802c76f

例如:txid=25836a89ee24ce0b3ca7c62a525139fa59aebce0ffd222474b484bb73802c76f

(2)前向挖掘

(2)前向挖掘

例如:txid=20c0430466a876e84d75a8319cfe9dcf9a36b2f8773c7bbfb14489919bbb29c0

例如:txid=20c0430466a876e84d75a8319cfe9dcf9a36b2f8773c7bbfb14489919bbb29c0

紅框內的地址是被挖掘地址,它出現在輸入一側,而且輸入側地址數不為2。輸出側地址數為2,且有一個輸出地址的bitcoin值擁有4位以上小數,符合前向挖掘的條件,那麼黃框內的地址和紅框內的地址屬於同一個主體。

前向挖掘很好理解,其實這是一筆普通的轉賬找零交易,擁有4位以上小數的輸出地址其實是找零地址(由於只有一個輸入,且交易費必須要輸入方承擔,交易費通常金額較小,所以扣除交易費後的找零金額通常有4位以上小數)。找零地址和輸入地址屬於同一個主體,由此可以挖掘出特徵地址。

(3)後向挖掘

例如:txid= ade2be579a0c58d38a6a812ce85ed96980313c3aca59d762a1779233bd64ede4

例如:txid= ade2be579a0c58d38a6a812ce85ed96980313c3aca59d762a1779233bd64ede4

二級標題

二級標題

挖掘過程

有了前面的基礎,我們接下來可以正式開始介紹Bitcoin交易所的地址挖掘過程了。大致可以分為三個流程:

  • 挖掘交易所的所有普通充幣地址和熱錢包

  • 篩選出熱錢包

  • 挖掘出冷錢包

(1)挖掘交易所的所有普通充幣地址和熱錢包

交易所的充幣地址是很容易獲得的,我們將這個地址作為地址挖掘的突破口。利用縱向挖掘獲得一個樣本庫,再以這個樣本庫為藍本,繼續進行縱向挖掘,樣本庫會進一步擴充。不斷重複這個過程直到樣本庫不再擴大。此時,基本可以認為這個交易所的所有普通充幣地址和熱錢包都包含在這個樣本庫中(冷錢包不確定是否在這個庫裡,不過不重要,冷錢包,會有新的挖掘方案) 。

(2)篩選出熱錢包

在樣本庫中包含了交易所的所有普通充幣地址和熱錢包(可能還有冷錢包),通過熱錢包交易次數極大的特點,採用的是在樣本庫中找到區域最大值的方法,可以從樣本庫中篩選出熱錢包。

我們對火幣交易所挖掘到的地址以及地址對應的交易量數據進行如下處理:以每個地址編號為橫軸,以地址的交易數為縱軸,畫出地址與交易量的分佈圖,如下圖所示:

從圖中可以很明顯地看到,有橘黃色標註的地址為熱錢包,因為它們的交易數量遠遠大於其他地址(其他地址的交易數量很少,有些在圖中甚至無法看到)。

(3)挖掘出冷錢包

二級標題

二級標題

地址挖掘實例

在了解了挖掘過程之後,我們可以通過一個簡單的例子來加深對於交易所地址挖掘的理解,這個例子通過火幣的一個普通充幣地址找到了火幣的一個熱錢包和一個冷錢包,具體過程如下:

(1)通過普通充幣地址找到一個熱錢包

首先,我們獲得了一個火幣的普通充幣地址:12V9PLbaaewZmwFogen1bighovFZvMW138,之後,我們找到交易087e0449d86858ba15d4549235240e900c198bd030e2eb26a6418525135dbe4b

由縱向挖掘的原理可知,這個交易左側的地址可以認為都是火幣交易所的地址,在這些地址中,我們注意到黃框內的地址交易數遠遠高於其他地址,如圖所示

由此我們可以判斷該地址1LAnF8h3qMGx3TSwNUHVneBZUEpwE4gu3D是火幣交易所的一個熱錢包。

(2)通過熱錢包找到一個冷錢包

參考文獻

參考文獻

參考文獻

[1] Ermilov D, Panov M, Yanovich Y. Automatic Bitcoin address clustering[C]//2017 16th IEEE International Conference on Machine Learning and Applications (ICMLA). IEEE, 2017: 461-466.

ChainInfo
作者文库