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的大部分內容仍為俄語,因此很可能有些細節我們還不瞭解。

免責聲明:

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

推荐阅读

;