1. 程式人生 > >An Empirical Analysis of Anonymity in Zcash

An Empirical Analysis of Anonymity in Zcash

摘要

在現在眾多來源於(derived from)比特幣的替代(alternative)加密貨幣中,Zcash經常被吹捧(touted)為具有最強匿名保證(guarantees)的加密貨幣,因為它是備受好評(well-regarded)的加密研究的基礎。 在本文中,我們將檢查(examine)在部署(deployed)的Zcash版本中實現匿名的程度(extent)。 我們在Zcash的交易中調查(investigate)匿名的所有方面,從透明交易(transparent transactions)到與其主要隱私特徵的互動(interactions),以及作為匿名集(anonymity set)的遮蔽池(shielded pool),用於希望私下(privately)花錢的使用者。 我們得出結論,雖然可以以私有方式使用

Zcash,但也可以通過基於可識別的(identifiable)用法(usage)模式(patterns)開發(developing)簡單的啟發式(heuristics)來大大縮小其匿名集。

1 介紹

自從2008年引入(introduction)比特幣[34]以來,加密貨幣(cryptocurrencies)變得越來越受歡迎,達到了近乎躁狂的程度,數千部署(deployed)的加密貨幣現在共同(collectively)吸引了數萬億(trillions)美元的投資(investment.)。雖然“區塊鏈”(即幾乎所有加密貨幣所依據(underlying)的公共分類賬(public decentralized ledger))的更廣泛(broader)的積極潛力(potential)仍然不明確(unclear,),儘管(despite)合法(legitimate)使用者數量不斷增加。參與(engaged)這些活動的犯罪分子(Criminals)可能會被比特幣吸引(drawn to),因為僅使用假名(pseudonyms)作為識別符號(identifiers,)進行國際支付(international payments)的摩擦(friction)相對(relatively)較低,但其交易分類賬的公共性(

public nature)提出了(raises)實際實現匿名程度的問題

確實(Indeed,),長期的研究[37,38,12,27,40]已經證明(demonstrated),在比特幣中使用假名地址並不能提供任何有意義的匿名水平。 除了學術研究,公司現在提供比特幣區塊鏈作為商業的分析[19]。這種型別的分析被用於與“絲綢之路[20]”被撤銷(takedown)有關的幾起逮捕行動(arrests associated)中,並鑑定(identify)了WanaCry黑客試圖將他們的贖金收入(ransom earnings)從比特幣轉移到Monero [17]的行為。

也許為了響應這種日益增長的意識(awareness),即大多數加密貨幣沒有強大的匿名保證

(guarantees),已經部署了許多替代(alternative)加密貨幣或其他隱私增強技術,目的是改進這些保證。屬於前一類別(即替代加密貨幣,this former category)的最值得注意(notable)的加密貨幣是Dash [2](2014年1月推出),Monero [3](2014年4月)和Zcash [7](2016年10月)。 在撰寫本文時,所有市值(market capitalization)都超過10億美元[1],這個數字是眾所周知(notoriously)的不穩定(volatile,),所以我們應該持懷疑態度(taken with a grain of salt)。

即使是在這類隱私增強的加密貨幣中,儘管(despiteZcash還相對(relative)年輕,但它在一定程度上(somewhat)是獨立的。從學術角度(perspective)來看,Zcash受到了高度重視(regarded)的研究[28,13]的支援(is backed by),因此具有(comes with)看似強大的匿名保證。實際上,原始(original)論文以加密方式(cryptographically)證明了Zcash(稱為遮蔽池)的主要隱私功能的安全性,使用者可以使用遮蔽幣(shielded coins)而不會洩露(revealing)他們花費的硬幣。 這些強有力的保證至少引起了一些罪犯對Zcash的關注:地下市場AlphaBay在其2017年7月關閉之前即將(on the verge of)接受Zcash [11],Shadow Brokers黑客組織於2017年5月開始接受Zcash(事實上他們的月度轉儲(dumps)在2017年9月完全接受Zcash)[16]。

儘管存在這些理論上的(theoretical)隱私保證,Zcash的部署(deployed)版本並不要求所有交易都發生在遮蔽池本身內:它還支援所謂的透明(transparent)交易,這與比特幣中的交易基本(essentially)相同,因為(in that)它們顯示(reveal)了發件人和收件人(recipients)的假名地址,以及傳送的金額。然而,它確實要求所有新生成(generated)的幣在進一步(further)使用之前經過(pass through)遮蔽池,從而確保所有幣至少被遮蔽一次。 這一要求使Zcash開發人員(developers)得出結論,使用者花費遮蔽幣的匿名集實際上是所有生成的幣,因此“Zcash相比(comparison),其他加密貨幣用於匿名的混合策略提供了相當(rather)小的[匿名集]” 並且“Zcash在交易隱私方面具有明顯(distinct)的優勢(advantage”[9]。

在本文中,我們提供了對Zcash中匿名性的第一次深入實證(empirical)分析,以便檢查(examine)這些主張(claims),並且更一般地提供關於Zcash如何演變(evolved)以及其主要參與者(participants)是誰的縱向(longitudinal)研究。我們從第4節開始,對Zcash區塊鏈進行了一般性檢查(examination),從中我們觀察到(observe)絕大多數(vast majorityZcash活動(activity)都在區塊鏈的透明(transparent)部分這意味著它根本(at all)不參與(engage)遮蔽池。 在第5節中,我們通過對已經為比特幣開發的分析進行調整(adapting)來探索(explore)Zcash的這個方面,並發現交易(exchanges)通常(typically)主導(dominate)區塊鏈的這一部分

然後,我們在第6節中討論(examining)與遮蔽池的互動(interactions)。我們發現,不出所料的(unsurprisingly),這樣做的主要參與者是創始人(founders)和礦工(miners),他們需要將所有新生成的幣直接放入其中。使用新開發的啟發式(heuristics)方法將交易歸屬於(attributing)創始人和礦工,我們發現從池中提取(withdrawn)的價值中有65.6%可以與創始人或礦工的存款(deposits)掛鉤。我們還實現(implement)了一種通用(general)啟發式方法,用於將其他型別的交易連結在一起,並使用此方法捕獲額外(additional3.5%的值。 因此,我們相對(relatively)簡單的啟發式方法將整體(overall)匿名集的大小減少了69.1

在第7節中,我們將檢視遮蔽池中發生的相對(relatively)較小比例的交易。在這裡,儘管我們確定了可能保證(warrant)進一步調查(investigation)的某些模式(certain patterns),我們發現(也許不足為奇)可以推斷出(inferred)的資訊相對較少。最後,我們在第8節中對Zcash中的Shadow Brokers的活動(activities)進行(perform)了一個小案例研究,並在第9節中得出結論(總結)。

在論文提交時,我們的所有結果都已經向Zcash的創作者披露(disclosed),並從那時起就與他們進行了廣泛(extensively)的討論。這導致他們關於Zcash的匿名的公開傳播(public communication)以及創始人的交易行為發生了變化。此外,我們分析的所有程式碼都可以作為開源儲存庫使用(https://github.com/manganese/zcash-empirical-analysis)。

2 相關工作

我們認為所有關注加密貨幣匿名性的工作都是相關的,要麼通過構建解決方案來實現更強的匿名保證,要麼通過證明(demonstrating)其侷限性

就前者而言(In terms of the former),在為現有加密貨幣提供解決方案方面進行了大量研究,允許感興趣的使用者以比常規交易更好的匿名方式混合他們的幣[15,41,21,24,39,14,22,25]。另一項研究重點是製作替代的隱私增強加密貨幣。最值得注意(notably)的是,Dash [2]在其PrivateSpend交易中融入(incorporates)了CoinJoin [24]的技術; Monero [3,35]使用環簽名來允許使用者建立“mix-ins”(即,在其自己的交易中包括其他使用者的金鑰作為提供更大匿名集的方式); Zcash [7,13]使用零知識證明,允許使用者花錢而不會洩露(revealing)哪些幣被花費

就後者而言,也有大量關於去匿名化(de-anonymizing)比特幣的研究[37,38,12,27,40]。幾乎(Almost)所有這些攻擊都遵循相同的模式(pattern):它們首先應用(apply)所謂的聚類啟發式(clustering heuristics)方法,根據(based on)共享所有權(ownership.)的一些證據(evidence),將多個不同的地址與一個單獨的實體相關聯(associate。最常見的假設(assumption)是交易中的所有輸入地址都屬於同一實體,一些論文[12,27]也包含(incorporating)一個額外的啟發式方法(additional heuristic),其中接收找零(change)的輸出地址也被連結。一旦形成(formed)這些叢集(clusters),重新識別(identification)攻擊”[27]就會標記(tags)特定地址,從而(thus)標記包含它們的叢集。這些技術也已應用於具有類似交易型別的替代加密貨幣,例如Ripple [30]。

可能與我們自己最接近的工作集中在上述去匿名化隱私解決方案,而不僅僅是比特幣。在這裡,有幾篇論文專注於分析所謂的比特幣隱私覆蓋(overlays)或混合服務[33,26,31,32],並考慮了他們的匿名程度以及參與者(participants)必須相互信任的程度(extent。由於其對CoinJoin的關注,這幾篇論文中的一些分析[32,26]也對Dash中的匿名性產生影響(implications。最近,Miller等人[29]和Kumar等人[23]Monero進行了研究(looked at)。他們都發現可以根據時間模式(temporal patterns)將交易連結在一起,也可以基於某些使用模式(certain patterns of usage,例如選擇使用0 mix-ins進行交易的使用者(在這種情況下(in which case),他們的環簽名不提供匿名,反過來(in turns)影響其他可能已經將他們的金鑰包含在他們自己mix-ins中的使用者)。最後,我們知道(aware of)有一項成就(effort)是通過Quesnelle [36]Zcash進行去匿名化。本文側重於根據幣的交易時間(timing)和交易金額(amount),將用於遮蔽和去遮蔽(deshield)幣的交易聯絡起來。相比之下(In comparison),我們的論文實現了這種啟發式方法,但也提供了對整個(entire)Zcash生態系統(ecosystem)的更廣泛的視角(broader perspective),以及對遮蔽池(包括內部)的所有互動的更深入分析。

3 背景

3.1 Zcash的工作原理

ZcashZEC)是一種替代加密貨幣,是比特幣(比特幣程式碼)的一個分支,旨在打破交易中傳送人和接收人之間的聯絡。在比特幣中,接收人將資金(funds)接收到地址(在交易中稱為(referred to as)vOut),並且當他們花費它們時,他們使用這些地址(在交易中稱為vIn)。因此,花費比特幣的行為(The act of)在傳送者和接收者之間建立了一個連結,當(as)比特幣繼續轉手時,這些連結可以被跟蹤。因此可以跟蹤(track)任何給定的比特幣,從其建立到其當前所有者

任何與Zcash中所謂的遮蔽池互動(interacts)的交易都是通過包含(inclusionvJoinSplit來實現的,該vJoinSplit指定(specifies)了幣的來源和去向要獲得資金,使用者可以提供透明地址(t-address)或遮蔽地址(z-address)。據稱在z-address中儲存(held)的幣位於遮蔽池中

為了指定(specify)資金的去向,vJoinSplit包含(1)輸出t-address列表,其中包含分配(assigned)給它們的資金(稱為zOut),(2)兩個遮蔽輸出,以及(3)加密備忘錄欄位(memo field)。zOut可以為空,在這種情況下,交易可以是遮蔽t-to-z)或者私有(z-to-z),具體取決於輸入。如果zOut列表包含未分配給任何地址的一些(a quantity of)ZEC,那麼我們仍然認為它是空的(因為這隻(simply)是礦工費用的分配(allocation))。每個遮蔽輸出包含未知數量的ZEC以及隱藏的雙花(double-spending)token。遮蔽輸出可以是虛擬(dummy)輸出(即,它包含零ZEC)以隱藏沒有遮蔽輸出的事實。加密備忘錄欄位 可用於將私有訊息傳送到遮蔽輸出的接收者。

為了指定資金的來源,vJoinSplit還包含(1)輸入t-address列表(稱為zIn),(2)兩個雙花(double-spending)token,以及(3)零知識證明。 zIn可以為空,在這種情況下,如果zOut不為空,則交易要麼去遮蔽z-to-t),要麼是私有(z-to-z)。每個雙花token要麼是屬於某些先前遮蔽輸出的唯一token,要麼是用於隱藏沒有遮蔽輸入這一事實的虛擬(dummy)值。雙花token不會顯示它屬於哪個遮蔽輸出。零知識證明保證了兩件事:首先,它證明了雙花token真正(genuinely)屬於以前的一些遮蔽輸出。其次,它證明了(1)zIn中地址中的值+(2)由雙花token表示(represented)的值=(1)分配給zOut中地址的值+(2)遮蔽輸出中的值+(3)礦工的費用。不同型別的交易的總結(summary)如圖1所示。

圖1:說明(illustrating)不同型別的Zcash交易的簡單圖。所有交易型別都是針對(with respect to)單個輸入和輸出進行描繪(depicted)和描述(described)的,但可以通用化(generalized)來處理多個輸入和輸出。 在t-to-t交易中,可見的(visible)ZEC量在可見的t-addresses之間移動(zIn,zOut ≠ 0)。 在t-to-z交易中,可見的ZEC量從可見的t-addresses移動到遮蔽池中,此時它屬於隱藏的z-addresses(zOut = 0)。 在z-to-z交易中,隱藏的ZEC量在隱藏的z-addresses之間移動(zIn,zOut=0)。 最後,在z-to-t交易中,隱藏的ZEC量從隱藏的z-addresses移出遮蔽池,此時可見的量屬於可見的t-addresses(zIn =0)。

3.2 Zcash生態系統的參與者

在本節中,我們將描述在Zcash網路中進行互動(interact)的四種類型的參與者(participants)。

創始人蔘與了Zcash的初始建立和釋出(release),並將獲得所有新生成的幣的20%(目前在12.5ZEC塊獎勵中獲得2.5 ZEC)。建立者地址在Zcash鏈引數[8]中被指定(specified)。

礦工參與維護(maintenance)分類賬,並在此過程中接收新生成的幣(12.5ZEC塊獎勵中的10個),以及他們挖(mine)的區塊中包含的交易的任何費用。許多礦工選擇不自己挖,而是加入礦池; 表4中列出了一個礦池列表。一個或多個礦工贏得每個區塊,區塊中的第一個交易是幣生成(coingen),它將新生成的幣 分配給他們的地址,以及創始人的地址。

服務是接受ZEC作為某種付款方式的實體。其中包括像Bitfinex這樣的交易所,它允許使用者用法定(fiat)貨幣(currencies)和其他加密貨幣交易(trade)ZEC(反之亦然),以及像ShapeShift [4]這樣的平臺,允許使用者在加密貨幣和其他數字資產(assets)內進行交易,無需註冊(without requiring registration)。

最後,使用者是參與者,他們在更加個人(individual)級別的ZEC中持有和交易(transact)。 除常規(regular)人員外,此類別(category)還包括可能選擇接受Zcash捐贈(donations)的慈善機構(charities)和其他組織。一個著名(notable)的使用者是Shadow Brokers,一個黑客組織,他們釋出(published)了幾個包含來自NSA(美國國家安全域性)的黑客工具和接受Zcash付款的洩漏(leaks)。我們將在第8節中探討(explore)它們對Zcash的使用。

4 一般區塊鏈統計(General Blockchain Statistics

我們使用zcashd客戶端下載Zcash區塊鏈,並將其資料庫表示(database representation)載入到Apache Spark中。然後,我們使用配備(equipped)PySpark的一組自定義(custom)Python指令碼(scripts)進行(performed)分析。我們上次在2018年1月21日解析(parsed)了區塊鏈,此時挖了258,472個區塊。 總的來說,自創世(genesis)區塊以來已經產生了3,106,643個ZEC,其中(out of which)有2,485,461個ZEC去了礦工那裡,其餘(rest)的(621,182個ZEC)去了創始人那裡。

4.1 交易

在所有區塊中(Across all blocks),有2,242,847筆交易。表1中描述了交易型別的完整分類(breakdown)(透明、幣生成、去遮蔽、遮蔽、混合、私有),並且描繪(depicting)每種交易型別隨時間的增長的圖表在圖2和3中。[我們使用術語“mixed”來表示同時具有vIn和vOut以及vJoinSplit的交易。]絕大多數(vast majority)交易是公開的(即,透明(transparent)或幣生成)。在與池進行互動(interact)的交易中(總共335,63014.96%),只有很小一部分是私人交易;即池內的交易。檢視圖2中隨時間變化的交易型別,我們可以看到coingen,遮蔽和去遮蔽交易的數量都以近似(approximately)線性的方式(linear fashion)增長。正如我們在6.2節中探討的那樣,這種相關性(correlation)很大程度上取決於礦工的習慣。看一下這個圖和圖3,我們可以看到,雖然(while)與池互動的交易數量以相對(relatively)線性的方式增長,但隨著時間的推移,它們攜帶的價值在所有塊中佔很小比例,因為(asZcash更為主流(因而透明)的使用增加了

圖3:每個塊中代表每種不同交易型別的價值的百分比(fraction),每天平均一次(averaged daily)。在這裡,'public'捕獲透明交易和混合交易的可見成份(visible components)。

4.2 地址

在所有交易中,使用了1,740,378個不同的(distinct)t-address。其中(Of these),8,727個曾在t-to-z交易中作為輸入,330,780個曾在z-to-t交易中作為輸出。正如我們在6.2節中探討的那樣,這種不對稱(asymmetry)的大部分原因是礦池的行為,它使用少量地址來收集區塊獎勵,但是大量地址(代表所有個體礦工)從池中支出。鑑於(Given)遮蔽池的性質(nature),不可能知道所使用的z-address的總數

圖4顯示了池中的總值隨時間的變化。雖然整體(overall)價值隨著時間的推移而增加,但是有一些(certain)遮蔽和去遮蔽模式(patterns)會產生峰值(spikes。正如我們在第6節中探討的那樣,這些峰值主要歸因於礦工和創始人的習慣。 在撰寫本文時,池中有112,235個ZEC,佔總貨幣(monetary)供應量的3.6%。

如果我們按地址的財富(wealth)對地址進行排名,我們首先觀察到所有t-address中只有25%具有非零餘額(balance)。其中,前1%佔全部ZEC78%。具有最高餘額的地址具有118,257.75 ZEC,這意味著最富有的地址具有比整個(entire)遮蔽池更高的餘額

5 T-Address聚類(Clustering

如第4節所述,Zcash上的大部分活動都不使用遮蔽池。這意味著它與比特幣基本相同(essentially identical),因此可以使用第2節中針對比特幣討論的相同技術對其進行去匿名化

5.1 聚類地址

為了識別(identify)透明地址的使用,我們首先回顧用於聚類比特幣地址的“多輸入(multi-input)”啟發式方法。在此啟發式中,用作同一交易的輸入的地址被分配給同一個叢集在比特幣中,這種啟發式方法可以應用於所有交易,因為它們都是透明的Zcash中,只要有多個輸入t-address,我們就會執行此聚類

啟發式1。如果在同一交易中輸入兩個或多個t-address(無論該交易是透明的,遮蔽的還是混合的),則它們由同一實體控制。

誤報(false positives)而言,我們認為Zcash至少與比特幣一樣不可能出現這種情況,因為Zcash是比特幣的直接分支,標準客戶端具有相同的行為。事實上,我們不知道(aware of)用於Zcash的任何輸入混合技術,比如CoinJoin[24](CoinJoin是用於Dash的),因此可能會認為(could argue that)誤報的風險甚至低於比特幣的風險由於這種啟發式方法已在比特幣中廣泛(extensively)使用,因此我們認為在Zcash中使用它是切合實際的(realistic

我們通過將每個t-address定義為圖中的節點,並在圖中已輸入到同一交易的地址之間新增(無向(undirected))邊來實現(implemented)此啟發式。然後,圖的連線成份形成叢集,這些叢集表示控制潛在(potentially)多個地址的不同(distinct)實體。 結果是一組560,319個叢集,其中97,539個叢集包含一個以上的地址。

與比特幣一樣,僅使用這一啟發式已經非常有效但不能捕獲找零地址的常見用法,其中交易將幣傳送給實際的收件人,然後還將輸入中遺留的任何幣傳送回發件人。Meiklejohn等[27]在他們的分析中使用基於這種行為的啟發式方法,但警告這個啟發式有些脆弱(fragile。 實際上,他們的啟發式似乎在很大程度上依賴於幾個大型比特幣服務的特定行為,因此我們選擇不以它的完整形式實現它。儘管如此(Nevertheless),我們在第8節中對Shadow Brokers的案例研究中確實使用了相關的(related)Zcash-specific(特定)啟發式方法。

啟發式2。如果一個(或多個)地址是vJoinSplit交易中的輸入t-address,而第二個地址是同一vJoinSplit交易中的輸出t-address,那麼如果zOut的大小為1(即,這是唯一的透明輸出 地址),第二個地址屬於控制輸入地址的同一個使用者。

為證明這種啟發式方法的合理性(justify),我們觀察到使用者在將幣放入池中時可能不想將所有幣存(deposit)入他們的地址,在這種情況下,他們必須進行找零誤報的唯一風險是,如果使用者使用一個z-address,一個t-address替代向兩個單獨的個人匯款。這個規則的一個值得注意的例外(notable exception)是zcash4win錢包的使用者。這裡,如果使用者決定支付開發者費用,則錢包操作員的地址是輸出t-address,因此對於將錢投入遮蔽池的使用者而言將產生這種型別的交易。但是,這個地址是可識別的(identifiable),因此我們的分析可以省略(omitted)這些型別的交易。然而(Nevertheless),由於擔心這種啟發式的安全性(即,它避免誤報的能力),我們選擇不將其納入(incorporate)我們下面的(below)一般(general)分析中。

5.2 標籤(Tagging)地址

現在我們已經獲得了一組叢集,我們接下來試圖(sought to)為它們分配名稱。 為了實現這一目標,我們執行(performed)了Meiklejohn等人[27]使用的技術的縮小版本(scaled-down)。 特別是(In particular),鑑於(given)Zcash仍然相對(relatively)較新,接受Zcash的服務種類並不多。因此,我們限制(restricted)自己與交易所(exchanges)的互動(interacting)。

我們首先根據交易(traded)量確定了前十大Zcash交易所[1]。 然後,我們為每個交易所建立了一個賬戶,並將少量ZEC存入(deposited)其中,我們將結果交易中的輸出t-address標記為屬於交易所。然後我們將這筆金額(amount)回收(withdrew)到我們自己的錢包中,並再次將t-address(這次是發件人方)標記為屬於交易所。我們偶爾(occasionally)會做幾次存款交易,如果這樣做可能會標記更多地址。最後,我們還ShapeShift進行了互動,如第3.2節所述(mentioned),允許使用者在加密貨幣之間移動而無需建立帳戶。在這裡,我們對Zcash進行了一次“轉移”,並進行了一次轉移出去。表2列出了我們與所有不同交易所的互動情況。

表2:我們與之互動的服務,執行啟發式1後與之關聯的(associated)叢集的識別符號(identifier),以及我們對它們進行的存款和取款的數量。 前十個是交易所,ShapeShift是一個加密貨幣間交換,zcash4win是一個基於Windows的Zcash客戶端。

最後,我們收集了創始人[8]的公開地址,以及已知礦池的地址。對於後者,我們首先從Zchain explorer[10]中抓取(scraping)這些地址的標籤。然後,我們根據採礦池本身的一些網站(我們也抓過)上公佈的塊來驗證(validated)它們,以確保它們是正確的標籤; 即,如果給定塊中的coingen交易的接收者被標記為屬於給定的礦池,則我們檢查該塊是否已在該礦池的網站上公佈。然後,我們根據第6節中自主開發的啟發式方法,使用標記為屬於創始人和礦工的地址擴充(augmented)這些地址集。我們在那裡更詳細(significantly more detail)地介紹(present)了這些啟發式方法,但它們導致我們標記了123個創始人地址和110,918個礦工地址(屬於各種(a variety of)不同的池)。

5.3 結果

如5.1節所述,執行啟發式1得出560,319個叢集,其中97,539個叢集包含一個以上的地址。 我們為每個叢集分配了一個唯一的識別符號,按叢集中的地址數排序,以便最大的叢集具有識別符號0

5.3.1 交易所和錢包

從表2中可以看出,許多交易所與一些最大的叢集相關聯(associated),前五個叢集中有四個屬於熱門交易所。總的來說,我們發現前五大叢集的賬目(account)佔所有交易的11.21%。識別(Identifying)交易所非常重要,因為它可以發現個人使用者可能購買ZEC的位置。鑑於現有和新興(Identifying)規則,他們也是Zcash生態系統中可能瞭解使用者真實身份的一種參與者

在許多交易所叢集中,我們還確定了已被標記為礦工的大部分(fractions)地址。這意味著(implies)個體礦工使用他們的交易所賬戶地址來接收他們的挖礦獎勵,如果他們的目標是直接兌現(to cash out directly),可能會有所期待。我們在一些交易所也發現了一些但卻少得多的創始人地址

我們的叢集還揭示(reveals)了ShapeShift(Cluster 2)的使用相當(fairly)頻繁:它總共接收了超過1.1M的ZEC,並且傳送的量也大致相同。與交易所不同,它的叢集包含相對較少數量的礦工地址(54),這與其用作(usage)轉移資金的方式相符(fits),而不是將其存放在錢包中

5.3.2 礦池和創始人

儘管礦池和創始人佔(account for)Zcash活動的很大一部分(proportion)(正如我們在第6節中探討的那樣),但許多人經常(frequently)重複使用相同的一小組地址,因此不屬於大型叢集。 例如,Flypool有三個單地址叢集,而Coinotron,coinmine.pl,Slushpool和Nanopool各有兩個單地址叢集。(可以在6.2節的表4中找到礦池列表)。我們看到從叢集傳送的與礦池相關(associated with)的幣中,99.8%進入了遮蔽池,這進一步驗證(validates)了我們的聚類和標記技術

5.3.3 慈善家(Philanthropists

通過人工檢查(manual inspection),我們確定了(identified)三個接受Zcash捐贈的大型組織:Internet Archive,torservers.net和Wikileaks。其中,torservers.net只接受通過z-address的付款,因此我們無法識別(identify)他們的交易(Wikileaks也接受通過z-address的付款,但也接受通過t-address的付款)。在我們能夠識別的31個給Internet Archive捐贈中,共有17.3個ZEC,其中9個是匿名的(即,作為z-to-t交易)。另一方面,對Wikileak的t-address的所有20筆捐贈都是t-to-t交易。這些都不屬於叢集,因為它們從未傳送過交易

6 與遮蔽池的互動(Interactions

Zcash的獨特之處當然不是它的t-address(因為它們基本上(essentially)複製了(replicate)比特幣的功能(functionality)),而是它的遮蔽池。為此(To that end),本節探討了在池的端點(endpoints)處與池的互動,意味著存入(t-to-z)池中和從池中取款(withdrawals)(z-to-t)。 然後,我們將在第7節中探索池內的互動(z-to-z交易)。

首先,我們只考慮投入池和從池取出的金額。隨著時間的推移(Over time),3,901,124 個ZEC已存入池中[這大於生成的幣總數,因為所有幣必須由礦工或創始人至少一次存入池中,但可以多次進出池。],並且3,788,889個ZEC已被取出。 圖5描繪(plots)了隨時間推移的存款和取款。

該圖的顯示,近乎完美的反映了存款和取款,表明(demonstrating)大多數使用者不僅提取了他們存入池中的ZEC的確切(exact)數量,而且在初始(initial)存款後很快就這樣做了。正如我們在第6.1和6.2節中看到的那樣,這種現象(phenomenon)幾乎完全由創始人和礦工導致(account。進一步觀察這個圖,我們可以看到對稱性(symmetry)偶爾(occasionally)被打破,最明顯的(notably)是四個“尖峰(spikes)”:兩個大的提取,兩個大的存款。一些人工調查顯示(manual investigation revealed)以下內容:

早起的鳥”第一次提取尖峰發生在2016年12月建立的塊高30,900處。尖峰的原因是一個單筆交易,其中7,135 ZEC被從池中取出; 鑑於當時的匯率(exchange rate)為每個ZEC 34美元,這相當於(equivalent)242,590美元。幣分佈在(distributed across)15個t-address中,最初(initially)我們沒有標記為屬於任何指定(named)使用者。然而,在執行6.1節中描述的啟發式之後,我們將所有這些地址標記為屬於創始人。事實上,這是我們發現(identified)與創始人有關(being associated with)的起先/第一次(very first)提取

祕密聖誕老人(Santa”第二次提取尖峰發生在2017年12月25日,塊高242,642。 其中,10,000個ZEC分佈在10個不同的t-address中,每個地址接收1,000個ZEC。在此之前,這些t-address都沒有進行過任何交易,此後也沒有參與過(involved)交易(即,此交易中收到的幣尚未花費)。

人的狼群(One-man wolf packs”圖中的兩個存放峰值都相當於(correspond to)來自未知t-address的單個大型存款,使用我們第5節的分析,我們發現(identified)它們位於(residing)單地址叢集中。然而,對於第一個峰值,許多存款金額直接來自被我們的啟發式3確定的創始人地址,因此根據我們在6.1節中的分析,我們認為這也可能與創始人有關(associated with)。

雖然這個圖已經提供了一些關於如何使用池的資訊(即(namely that)大部分資金在放入池之後(afterwards)幾乎立即提取),但它並沒有告訴我們誰正在使用池。為此,我們嘗試將地址與第3.2節中確定的參與者型別相關聯:創始人,礦工和“其他”(包括(encompassing)服務和個人使用者)。

在考慮存入遮蔽池時,很容易將地址與創始人和礦工聯絡起來,因為共識規則要求(dictate)他們必須將他們的塊獎勵放入遮蔽池中,然後才能進一步花費。 如第5.2節所述,我們根據Zcash引數標記了創始人,並把所有不是創始人的coingen交易的接收者(recipients)標記為礦工。然後,我們使用這些標籤將創始人存款識別為使用一個或多個創始人地址作為輸入的任何t-to-z交易,將礦工存款識別為使用一個或多個礦工地址作為輸入的任何t-to-z交易。結果如圖6所示。

從這個圖來看,很明顯礦工是將錢投入池的主要參與者。這並不特別令人驚訝,因為他們收到的所有幣必須至少存入池一次,所以如果我們將這個幣數除以(divide)存入的總數(粉線/黑線),我們預計至少有63.7%的存款來自礦工。(實際數字是76.7%。)另一方面,創始人不會在池中存入太多錢(因為他們沒有那麼多的錢來開始),但是當他們這樣做時他們投入大量資金,導致整體線(overall line)出現(visible)明顯的階梯式波動(step-like fluctuations

就最重的使用者而言,我們查看了將10,000多個ZEC放入池中的個人地址。結果如圖7所示。

圖7:隨著時間的推移將超過10,000個ZEC放入遮蔽池的地址,其中每個節點的大小與它放入池中的值成比例(proportional)。礦工的地址是綠色的,創始人是橙色的,未知的“其他”參與者是紫色的。

實際上,這個圖包含(incorporates)了我們在第6.1和6.2節中開發的啟發式方法,然而在應用我們的啟發式方法之前執行它看起來非常相似(這是有道理的(makes sense),因為我們的啟發式主要用於(act to)連結z-to-t交易)。儘管如此,它再次證明(demonstrates)了池中的大多數重的使用者都是礦工,創始人也存放了大量資金但將其分佈(spreading)在更廣泛的地址上。在四個“其他”地址中,其中一個屬於ShapeShift,其他屬於未標記的叢集。

雖然看待自己的t-to-z交易很有意義,但遮蔽池的主要目的(intention)是提供一個匿名集,這樣當用戶提取他們的幣時,不清楚是他們誰的幣。從這個意義上說(In that sense),t-to-zz-to-t交易連結在一起更有意義——用於(acts to)減少匿名集。 更具體(concretely)地說,如果t-to-z交易可以連結到z-to-t交易,那麼這些幣可以從未來使用者從池中提取幣的匿名集裡排除(ruled out。 因此,我們將注意力放在(devote)本節其餘部分的這種分析上。

將這些交易連結在一起的最簡單(naive)方法是檢視是否在它們之間使用了相同的地址; 即,如果礦工就像存放幣一樣,使用相同的地址提取他們的幣。通過執行這種簡單的連結形式,我們可以看到圖8a中的結果。這個圖表明,我們無法確定(identify)任何與創始人相關的(being associated with)提款,而且與礦工相關的提款數量相當少:共計49,280筆交易,這些筆交易的金額佔池中總額的13.3%。

儘管如此(Nevertheless),使用我們為識別(identifying)創始人(詳見6.1節)和礦工(6.2節)而開發的啟發式方法,我們能夠將大多數z-to-t活動與這兩個類別(categories)中的一個肯定地(positively)連結起來,如圖8b和8c所示。最後,在177,009個z-to-t交易中,我們能夠將其中的120,629(或68%)個交易標記為與礦工相關聯,捕獲來自池的價值的52.1%,並且2,103個交易(177,009個z-to-t交易中)為與創始人相關(捕獲來自池的價值的13.5%)。然後,我們將在6.3節中檢查(examine)遮蔽池周圍(surrounding)剩餘的(remaining)30-35%的活動。

6.1 創始人

在將創始人地址列表與所有coingen交易的輸出進行比較後,我們發現其中有14個被使用過。使用這些地址,我們能夠識別池中的創始人存款,如圖6所示。表3提供了更詳細地(a closer)檢查(inspection)了每個地址的使用情況。

表3:14個活躍創始人地址中的每一個的行為,依據(in terms of)存入池中的存款數量,存入的總價值(以ZEC表示)以及正好(exactly)攜帶(carrying)價值為249.9999 ZEC的存款數量。

該表顯示了創始人行為中的一些非常明顯的(obvious)模式(patterns)。在任何給定時間,只有一個地址是活躍的,這意味著它收到了獎勵並將獎勵存入池中。一旦達到44,272.5 ZEC的限制,下一個地址取代這個地址並且不再使用這個地址。這種模式從第三個地址開始就一直存在。另外,存款金額通常是相同的:恰好249.9999 ZEC,這大致(roughly)是100塊的獎勵。從第三個地址開始,74.9%的創始人存款和96.2%的所有存款都是如此。池中只有五個其他存款的價值介於249和251 ZEC之間(即價值接近但不等於249.9999 ZEC)。

因此,雖然我們最初(initially)無法識別與創始人相關的任何取款(如圖8a所示),但這些模式表明(indicated)遮蔽池的自動使用,這種自動使用也可能攜帶到取款中(that might also carry into the withdrawals)。根據(Upon)檢查(examining)從池中的取款,我們沒有找到任何完全等於249.9999 ZEC的值。但是,我們確實找到了1,953個準確的250.0001 ZEC的取款(和1,969個取款的值在249和251 ZEC之間,儘管我們在分析中排除(excluded)了額外的因素)。

因此,這些取款的價值本身(alone of)就與存款有一定的相關性,但為了進一步探索,我們還研究了交易的時機。當我們檢查(examined)249.9999 ZEC的連續(consecutive)存款間的間隔(intervals)時,我們發現85%發生在前一個6-10個區塊內。同樣,在檢查250.0001 ZEC的連續取款間的間隔時,我們發現1,953個取款中的1,943個也接近6-10個區塊。實際上(Indeed),存款和取款都是以階梯式模式(step-like patterns)進行(proceeded)的,其中許多交易是在極少數的區塊內進行的(導致了逐步上升),當累積(accumulated)更多的區塊獎勵(橫跨(the step across))時會有停頓。圖9顯示了這種模式,顯示了與創始人相關的存款和取款交易。存款通常(typically)是幾個大的步驟,而取款需要很多小的步驟。

啟發式3。任何帶有250.0001 ZEC價值的z-to-t交易都由創始人完成。

就誤報(false positives)而言,除了(short of)詢問創始人,我們無法真正瞭解這種啟發式的風險。這與第5節中介紹的t-address聚類啟發式方法形成對比(contrast),5節中我們沒有嘗試將地址分配給特定的所有者,因此可以通過其他方式驗證(validate)啟發式方法。然而(Nevertheless,),交易的價值和時間之間的高度相關使我們相信這種啟發式的可靠性。

執行此啟發式方法後,我們在48個創始人地址的初始列表中添加了至少75個地址(其中(of which)僅使用了14個地址)。除了圖9中顯示的相關性(correlation)之外(Aside from),我們標記創始人取款的能力的差異見圖8b。

6.2 礦工

Zcash協議規定(specifies)所有新生成的幣都需要放入遮蔽池中才能進一步使用。因此,我們預計(expect)存入池中的大量ZEC來自與礦工相關的地址。

6.2.1 存款

正如前面所討論並在圖6中看到的那樣,在池中識別礦工存款很容易,因為存款會立即跟隨幣的產生(