隱私加密系列|Grin與BEAM之間技術公開對比

簡    介

Grin和BEAM是兩個基於Mimblewimble協議的開源加密貨幣項目。Mimblewimble協議最初是由匿名用戶使用筆名Tom Elvis Jedusor(《哈利·波特》系列書籍中伏地魔名字的法語翻譯)提出的。該用戶登錄了一個比特幣研究(bitcoin research)互聯網中繼聊天(IRC)頻道,併發布了一個鏈接,指向託管在Tor隱藏服務上的一篇文本文章。本文爲構建區塊鏈式交易的新方法提供了基礎,該交易提供了固有的隱私性,並具有通過壓縮鏈的交易歷史記錄顯着減小區塊鏈大小的能力。最初的文章介紹了該協議的主要思想,但遺漏了實際實現所需的一些關鍵元素,甚至在密碼公式中包含錯誤。安德魯·珀爾斯特拉(Andrew Poelstra)發表瞭解決這些問題中許多問題的後續論文,並完善了Mimblewimble的核心概念,該概念已在Grin和BEAM項目中用於該協議的實際實施。

Mimblewimble協議描述了事務處理方如何使用其公鑰/私鑰對(用於證明事務輸出的所有權)和交互選擇的盲因子以交互方式構建有效事務。盲因子用於混淆每個參與者(包括彼此)之間參與者的公鑰,並在該特定交易中向交易對方(除了交易對方)隱藏交易的價值。該協議還執行一個稱爲直通的過程,該過程通過消除中間事務來壓縮事務。這改善了隱私並壓縮了區塊鏈上維護的數據量。這種直截了當的過程排除了諸如比特幣中的通用腳本系統。但是安德魯·珀爾斯特拉(Andrew Poelstra)提出了無腳本腳本的概念,該腳本利用Schnorr簽名來構建適配器簽名,該適配器簽名允許對傳統上用來實現腳本的許多行爲進行編碼。無腳本腳本啓用了諸如支付渠道(如閃電網絡)和原子交換之類的功能。

Grin和BEAM項目都實現了Mimblewimble協議,但都是從頭開始構建的。Grin是用C ++的RUST和BEAM編寫的。本報告描述了每個項目中使它們與衆不同的一些方面。此外BEAM項目文檔主要僅以俄語提供。在撰寫本報告時,並非所有技術細節都適用於英語讀者。因此隨着項目的發展,本報告中的討論很可能會過時。

該報告的結構如下:

1. 首先給出了一些具體的實現細節,並討論了項目的特點。

2. 其次分析了項目工作證明(PoW)算法的差異。

3. 最後討論了項目的治理模型。

Grin與BEAM的特點比較及實現

這兩個項目是由不同的團隊以不同的語言(Rust和C ++)從頭開始獨立構建的,因此原始實現會有很多差異。例如Grin使用Lightning內存映射數據庫(LMDB)作爲其嵌入式數據庫,BEAM使用SQLite。儘管它們之間存在性能差異,但它們在功能上相似。Grin使用有向無環圖(DAG)來表示其mempool以避免事務引用循環,而BEAM使用帶邏輯的多集鍵值數據結構來實現其一些擴展特性。

從特性的角度來看,這兩個項目展示了Mimblewimble固有的所有特性。Grin的既定目標是生成一個簡單易維護的Mimblewimble協議實現。然而BEAM的實現包含了對Mimblewimble方法的一些修改,目的是爲其實現提供一些獨特的特性。在我們討論將這兩個項目分開的特性和設計元素之前,讓我們先討論一下這兩個項目都實現了的一個有趣的特性。

Grin和BEAM都合併了一個Dandelion中繼協議版本,該協議支持事務聚合。加密貨幣在隱私方面面臨的一個主要突出挑戰是,當交易添加到mempool並在網絡上傳播時,可以跟蹤交易,並將這些交易鏈接到其原始IP地址。即使在具有強大交易私密性的網絡上,此信息也可用於使用戶匿名。Dandelion網絡傳播方案的提出是爲了改善交易向網絡傳播過程中的隱私性。在這個方案中,事務傳播分爲兩個階段:匿名(或“stem”)階段和傳播(或“fluff”)階段,如圖1所示。

  • 在stem(匿名性)階段,事務只傳播到當前節點的對等列表中隨機選擇的單個對等節點。在沿網絡隨機跳數之後,每個跳數僅傳播到一個隨機對等體,傳播過程進入第二階段。
  • 在fluff(擴展)階段,如在大多數網絡中所發現的那樣,事務使用full flood/diffusion方法進行傳播。這種方法意味着在flood網絡之前,事務已先傳播到網絡中的隨機點,從而使跟蹤其來源變得更加困難。

兩個項目都採用了這種方法來處理Mimblewimble事務。Grin的實現允許在傳播的stem階段進行事務聚合和切入,從而在事務在fluff階段傳播之前爲它們提供更大的匿名性。除了事務聚合和切入之外,BEAM還引入了“dummy”事務,這些事務被添加到stem階段,以補償實際事務不可用的情況。

Grin獨特功能

Grin的目標是成爲Mimblewimble區塊鏈的簡單且最少的參考實現。因此不打算包括許多功能來擴展核心Mimblewimble功能,如所討論的。但是Grin實現確實包含一些有趣的實現選擇,這些選擇已在其不斷增長的Github存儲庫的Wiki中進行了深入記錄。

例如Grin實現了一種方法,使節點只下載部分歷史記錄就可以非常快速地同步區塊鏈。進入網絡的新節點將查詢鏈的當前頭區塊,然後在水平上請求該區塊頭。在該示例中,水平線最初設置爲當前磁頭之前的5,000個塊。然後節點檢查是否有足夠的數據來確認共識。如果沒有共識,則該節點將擴大其視野,直到達成共識。屆時,它將下載水平線區塊的完整未用交易輸出(UTXO)集。這種方法的確引入了一些安全風險,但是提供了緩解措施,其結果是,節點可以以較少的數量級數據同步到網絡。

自從本文撰寫以來(2018年10月),BEAM已發佈其使用macroblocks進行快速節點同步的解決方案。macroblocks是BEAM節點定期創建的所有UTXO的完整狀態。

BEAM獨特特性


BEAM已經開始以多種方式擴展mimblewible的特徵集。BEAM支持在UTXO上設置一個顯式的潛伏期,這限制了它在創建之後花費在特定數量塊上的能力。這與時間鎖不同,時間鎖可以防止在一定時間之前將事務添加到區塊中。BEAM還支持傳統的時間鎖定功能,但還具有指定時間上限的功能,之後該事務將不再包含在區塊中。此功能意味着,當事方可以確定,如果一定時間後交易未包含在主區塊鏈的某個區塊中,則該交易將永遠不會出現。

BEAM的另一個獨特特性是實現了一個可審計的錢包。企業要在特定的監管環境中運營,就需要向相關部門證明其合規性。BEAM提出了一種專爲合規企業設計的錢包,它可以生成額外的公共/私人密鑰對,專門用於審計目的。這些簽名用於標記交易,以便只有被授予公鑰的審計機構才能識別區塊鏈上的那些交易,但不能使用此標記創建交易。這使企業可以在不損害公衆隱私的情況下向給定的機構提供其交易的可見性。

BEAM對Dandelion的實現通過在stem階段添加誘餌事務輸出來提高隱私。每個此類輸出的值爲零,但與常規輸出沒有區別。在後期階段(隨機計算每個輸出的塊數),將utxo添加爲新事務的輸入,從而將其花費並從區塊鏈中移除。

BEAM還提出了另一個旨在保持區塊鏈儘可能緊湊的功能。在Mimblewimble中,隨着交易的增加,執行切入,從而消除所有中間交易承諾。但是每個事務的事務內核都不會被刪除。BEAM提出了一種重用這些事務內核來驗證後續事務的方案。爲了在不影響事務不可逆性原則的情況下使用現有內核,BEAM建議由對舊內核具有可見性的同一用戶對舊內核應用乘數,並在新事務中使用乘數。爲了激勵以這種方式建立的交易,BEAM包括針對此類交易的費用退還模型。此功能將不屬於初始版本。

在構建一個有效的Mimblewimble交易時,當事方需要進行協作以選擇平衡的盲因素。這種交互式協商需要許多步驟,這意味着各方需要保持溝通以完成交易。Grin通過使用基於套接字的通道在“實時”會話中彼此直接連接的兩方來促進此過程。這意味着雙方都需要同時在線。BEAM已實施在BEAM全節點上運行的安全公告板系統(SBBS),以允許事務異步協商。

在使用Mimblewimble區塊鏈時,要求雙方互動參與構建交易可能是一個摩擦點。除了安全的BBS通信通道外,BEAM還計劃支持單方交易,即交易中的收款人如果希望獲得一定金額的付款,則可以構造其交易的一半,並將此一半構造的交易發送給付款人。然後付款人可以完成交易的構建並將其發佈到區塊鏈。在常規的Mimblewimble系統下,這是不可能的,因爲這將涉及向交易對手揭示您的盲目因素。BEAM通過使用一個它稱爲kernel fusion的進程來解決這個問題,其中一個內核可以包含對另一個內核的引用,因此它只有在事務中同時存在兩個內核時纔有效。這樣只有在事務中同時存在兩個內核時,該引用纔有效。這樣收款人可以使用祕密的盲目因子和補償盲目因子的內核來構建交易的一半,當支付者完成交易時必須將其包括在內。

這兩個項目都使用了許多Merkle樹結構來跟蹤各個區塊鏈的各個方面。這兩個項目都記錄了確切的樹木及其記錄的詳細信息。但是BEAM對其某些樹使用了Radix-Hash樹結構。此結構是經過修改的Merkle樹,也是二叉搜索樹。這提供了許多標準Merkle樹所不具備的功能,以及BEAM在其實現中所利用的功能。

在編寫本文時(2019年5月),可以在代碼中看到此處討論的所有功能,但這不能保證它們可以正常工作。文獻中提到的一些功能已計劃在將來使用,但尚未實現。這些措施包括將簽名的文本內容嵌入可用於記錄合同文本的交易中,以及發行機密資產。

(PoW)工作證明挖掘算法

BEAM宣佈將採用Equihash PoW挖掘算法,並將參數設置爲n = 150,k = 5。Equihash在2016年被提出爲一種難於存儲的PoW算法,該算法在很大程度上依賴於存儲器的使用來實現專用集成電路(ASIC)的電阻。其目標是產生一種算法,該算法將更有效地運行在消費者圖形處理單元(GPU)上,而不是當時主要由Bitmain生產的不斷增長的ASIC礦工領域。希望這將有助於使用該算法的加密貨幣分散採礦能力。Equihash抵制ASIC的想法是,當時,在ASIC中實現內存非常昂貴,GPU在計算Equihash PoW方面效率更高。這種ASIC抵抗持續了一段時間,但在2018年初,Bitmain發佈了Equihash專用ASIC,其效率明顯高於Zcash,Bitcoin Gold和Zencash等使用的Equihash配置的GPU。可以調整Equihash算法的參數,使其更加內存密集,從而使當前的asic和較老的GPU挖掘場過時,但BEAM是否會這樣做還有待觀察。

Grin最初選擇使用新的Cuckoo Cycle PoW算法,由於受內存延遲的限制,該算法也據稱具有ASIC抵抗性。這意味着該算法受內存帶寬的約束,而不是受原始處理器速度的約束,希望它能使在商用硬件上進行挖掘成爲可能。

在2018年8月,Grin團隊在其主網啓動時宣佈,它已經意識到ASIC可能可用於Cuckoo循環算法。雖然承認ASIC採礦是不可避免的,但Grin擔心當前的ASIC市場非常集中(即Bitmain),並且它希望在Grin成立之初就建立一個基層GPU採礦社區,爲期兩年。兩年後,Grin希望ASIC不再是一種商品,而是去中心化產品。

爲了解決這個問題,建議首先使用兩種PoW算法:一種是ASIC Friendly(AF),另一種是ASIC Resistant(AR),然後在24小時內選擇每個區塊使用哪種PoW來平衡兩種算法之間的挖掘回報。治理委員會於2018年9月25日決定採用稱爲布穀鳥循環(Cuckatoo Cycle)的布穀鳥循環算法的修改版本繼續採用這種方法。推出的AF算法將是Cuckatoo32 +,它將逐漸增加其內存需求,以使舊的單芯片ASIC隨着時間的推移而過時。尚未定義AR算法。

治理模式與貨幣政策

Grin和BEAM項目都是開源的,可以在Github上使用。Grin項目有75位貢獻者,其中有8位貢獻了絕大多數代碼。BEAM有10位貢獻者,其中有4位貢獻了大部分代碼(在撰寫本文時)。這兩個項目選擇了不同的治理模式。BEAM選擇建立一個包括核心開發人員的基金會來管理該項目。這是該領域大多數加密貨幣項目所採用的路線。Grin社區已決定不成立中央基金會,並就中央基金會的利弊進行了有趣的討論。文檔包含一個非常深入的討論,它權衡了基金會可能服務的各種治理功能,並評估了每個用例。Grin社區得出的結論是,儘管基金會很有用,但它們並不是解決治理問題的唯一解決方案,因此選擇保留一個完全分散的社區驅動項目.當前決策是在Gitter與社區成員召開的定期治理會議上做出的,討論議程並批准決策。這些會議的議程和會議記錄可在Grin論壇的管理部分找到。此類會議成果的一個例子可以在中看到。

這兩個項目都不會進行首次投幣發行(ICO)或預售,但這兩個項目也有不同的融資模式。BEAM成立了一家有限責任公司(LLC),並吸引了投資者參與其首輪非盈利BEAM基金會,該基金會將在啓動後的第一年內接管協議的管理工作。該基金會的目標是支持BEAM的維護和進一步發展、促進相關的密碼研究、支持金融隱私領域的意識和教育、支持鄰近領域的學術工作。在行業中,這種庫存機制稱爲開發稅。Grin不會對採礦獎勵徵稅,而是依靠社區參與和社區資金。Grin項目確實接受財政支持,但這些資助活動是根據他們的“社區資助原則”進行的,將在“按需”的基礎上進行。一個活動將指定它要實現的特定需求(例如“X明年的託管費”)和資金將由負責該活動的社區成員獲得。這將提供100%關於誰負責接收資金的可見性。融資活動的一個例子是Yeastlume開展的開發商融資活動,爲他在2018年10月至2019年2月期間全職參與該項目提供資金。

就這兩個項目的貨幣政策而言,BEAM表示將使用通貨緊縮模型,將其採礦獎勵定期減半,BEAM的最大供應量爲262,800,000個硬幣。BEAM將以每個區塊100個代幣開始。第一次減半將在一年後發生,然後每四年減半一次。Grin選擇了一種通脹模型,在這種模型中,區塊報酬將保持不變,在中提出了這種方法的論點。隨着供應量的增加,這種方法將漸漸趨向於零稀釋,而不是強制執行固定的供應量。Grin還沒有具體說明其採礦獎勵或費用結構,但根據其目前的文件,它正計劃每區塊60 Grin的獎勵。這兩個項目都沒有就如何安排費用做出最終決定,但Grin項目已經開始探索如何使用“每分鐘獎勵費用”這一指標來設定費用基準。

結論,意見和建議

總之Grin和BEAM是兩個正在實施Mimblewimble區塊鏈方案的開源項目。這兩個項目都是白手起家的。Grin使用Rust,而BEAM使用C ++;因此它們的設計和實現存在許多技術差異。但是從功能角度來看,兩個項目都將支持Mimblewimble的所有核心功能。每個項目確實包含一些獨特的功能,但是由於Grin的目標是生成Mimblewimble的簡約實現,因此擴展Mimblewimble的大多數獨特功能都在BEAM項目中。下面的列表總結了兩個項目之間的功能異同。

1. 相似之處:

  • 核心Mimblewimble功能集。

  • Dandelion 中繼協議。

2. Grin獨特功能:

  • 部分歷史同步。

  • Mempool的DAG表示,以防止重複的UTXOs和循環事務引用。

3. BEAM的獨特功能:

  • 託管在節點上的安全BBS,用於在錢包之間建立通信。消除了發送方和接收方同時在線的需求。

  •  Dandelion stem期使用誘餌輸出。誘餌輸出後來被用來避免在區塊鏈上混亂。

4. 顯式UTXO潛伏期。

  • 具有最小和最大閾值的時間鎖。

  • 可審覈交易是路線圖的一部分。

  • 非交互式支付的單面交易結構。

  • 使用基數哈希樹。

這兩個項目都還很年輕。在撰寫本報告時(2019年5月),兩者都仍處於測試網階段,並且它們的許多核心設計選擇尚未構建或測試。BEAM Wiki的大部分內容仍爲俄語,因此很可能有些細節我們還不瞭解。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章