LOADING...
LOADING...
LOADING...
當前位置: 玩幣族首頁 > 區塊鏈資產 > 交易所數據不透明?別怕Chain.info帶你探尋交易所地址挖掘全過程

交易所數據不透明?別怕Chain.info帶你探尋交易所地址挖掘全過程

2019-12-06 ChainInfo 來源:區塊鏈網絡

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1

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

如何解決信息不對稱,了解交易所真實資產狀況?

通過交易所的一個(或多個)地址找到交易所的所有地址的過程叫做交易所的地址挖掘,本篇文章將會從交易所的地址分類和地址挖掘的技術原理入手,詳細闡釋交易所地址挖掘的具體過程。點擊閱讀原文,即可查看今日交易所鏈上比特幣余額排行榜!

交易所地址分類

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

640?wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1

(1)普通充幣地址

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

(2)熱錢包

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

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

(3)冷錢包

冷錢包是交易所的離線錢包,它的安全性要高于熱錢包,所以,交易所會將大部分的資產存儲在冷錢包中。冷錢包只與熱錢包進行資金流通,而且單次交易總額比較大(例如超過100BTC);另外,冷錢包的另一個特點是該地址交易總次數較小(例如小于1000次),該地址的合計總收入較大(例如大于10000BTC)。

交易結構介紹

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

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

640?wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1

這是一筆普通的交易,左側有一個輸入地址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。

這樣就是一個完整的轉賬找零交易,圖中左側地址為輸入地址,地址后的金額為這筆交易中花費的屬于該輸入地址的某個UTXO的金額;圖中右側地址為輸出地址,地址后的金額為新生成的鎖定在該輸出地址中的UTXO的金額。

如果用戶U1給U2轉賬的金額較大,U1的單個UTXO不足以支付這筆轉賬金額時,U1可以用其某個地址的多個UTXO或者多個地址的多個UTXO作為交易的輸入來完成交易,這就會出現下文中提到的輸入側有多個輸入,并且這些輸入都屬于同一個主體或者同一個地址的情況。

地址挖掘技術原理

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

(1)縱向挖掘

定義:以被挖掘地址為中心,挖掘作為同一個交易的輸入的其他地址。根據第2小節中的Bitcoin交易特性可知,一筆交易中出現在輸入側的多個地址通常屬于屬于同一個主體。因此,若在某個交易中,被挖掘地址出現在了輸入一側,和它一起出現在輸入側的其它地址,可以被認為是屬于同一個主體。縱向挖掘的詳細數學原理可見參考文獻[1]。

例如:txid=25836a89ee24ce0b3ca7c62a525139fa59aebce0ffd222474b484bb73802c76f

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1

紅框內的地址是被挖掘地址,黃框內的其他地址因為和被挖掘地址在同一個交易中一起作為了輸入方,所以認為它們的所有者是同一個主體。

(2)前向挖掘

?定義:被挖掘地址必須出現在輸入一側,且輸入側地址數不為二,輸出側地址數一定為二。其中,有一個輸出地址的bitcoin值擁有4位以上小數時,那么符合條件的這個地址,和輸入方一樣屬于同一個主體。

例如:txid=20c0430466a876e84d75a8319cfe9dcf9a36b2f8773c7bbfb14489919bbb29c0

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1

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

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

(3)后向挖掘

定義:被挖掘地址必須出現在輸出一側,且輸入側地址數為一,輸出側地址數一定為二。其中,輸出側的被挖掘地址是熱錢包地址(之后將給出熱錢包的挖掘方法),且在該筆交易中發送給熱錢包地址的金額一定要大于100個BTC,那么符合條件的交易中的三個地址屬于同一個主體,并且輸入側的地址可能是冷錢包地址。

例如:txid= ade2be579a0c58d38a6a812ce85ed96980313c3aca59d762a1779233bd64ede4

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1

紅框內是被挖掘地址,它是一個熱錢包地址,它出現在輸出一側,且輸入側地址數為1(多個輸入都是同一個地址,因為是同一個地址的不同UTXO),輸出側地址數為2,且轉入紅框地址的金額大于100個BTC。通過后向挖掘,可以知道黃框內的兩個地址和紅框內的地址屬于同一個主體,且輸入側的地址可能是冷錢包地址。

如何理解后向挖掘呢?其實這種交易是冷錢包向熱錢包轉賬的過程。在某些情況下,例如當用戶想要提幣而熱錢包的余額不夠時,交易所會將冷錢包中的bitcoin轉入熱錢包,這種交易的數量不多,但通常金額都比較大(例如大于100BTC),利用這種特征可以挖掘出交易所的冷錢包。

挖掘過程

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

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

(2)篩選出熱錢包

(3)挖掘出冷錢包

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

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

(2)篩選出熱錢包

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

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

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1

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

(3)挖掘出冷錢包

冷錢包的挖掘起點是熱錢包。首先,使用后向挖掘,也就是在一個交易中,作為唯一的輸入,向熱錢包里發送過超過100個BTC,這樣的輸入地址有可能是冷錢包地址。之后,根據冷錢包的另一個特點:該地址交易次數較小(一般小于1000),合計總收入較大(一般大于10000BTC)再做一次過濾,就能找到冷錢包,或者曾經使用過的冷錢包(balance < 10 個BTC)。最后,再根據前向挖掘原理和上述限制條件,就能繼續挖掘出更多的冷錢包。

通過以上步驟,我們就可以通過交易所的一個普通充幣地址找到該交易所的所有地址,并從中挖掘出該交易所的熱錢包和冷錢包。

地址挖掘實例

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

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

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

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1

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

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1

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

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

在熱錢包1LAnF8h3qMGx3TSwNUHVneBZUEpwE4gu3D的基礎上繼續挖掘,找到交易ade2be579a0c58d38a6a812ce85ed96980313c3aca59d762a1779233bd64ede4

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1&wx_co=1

在這個交易中,地址3Cbq7aT1tY8kMxWLbitaG7yT6bPbKChq64作為唯一的輸入,向熱錢包里發送過超過100個BTC,根據后向挖掘原理,可以知道這樣的輸入地址有可能是冷錢包地址,因此地址3Cbq7aT1tY8kMxWLbitaG7yT6bPbKChq64可能是火幣交易所的一個冷錢包。

參考文獻

[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

玩幣族申明:我們將尊重作者/譯者/網站的版權,促進行業健康發展,如有錯誤或不完整之處請與我們聯系。

LOADING...
LOADING...
新快3