2016年5月,一篇匿名白皮書介紹了一種隱私性加密實現方式並命名為MimbleWimble,其名源於《哈利波特》中一種防止人們洩露祕密的咒語。
* Harry Potter — Warner Bros
與大眾所熟知的Zcash不同,MimbleWimble不需要可信的設定,所有交易都是預設隱私性,不需要進行選擇設定。此篇文章主要講述MimbleWimble如何做到隱私,以及分別比較MimbleWimble兩個專案Grin和Beam有何獨特的優勢。
中本聰釋出的白皮書中有名為“Privacy”章節中清楚的闡釋了BTC隱私的侷限,如果一旦發生網路攻擊,黑客可以獲取到BTC使用者相關資料定位以及其他資料標籤將使用者“透明化”,這些資料側面描寫可以顯示出:
傳送者地址
傳送BTC數量
接收者地址
BTC底層的UXTO模型使得在進行交易的時候避免了雙花,保持交易平衡。為了驗證BTC的底層系統滿足第二個條件,給每一個地址的使用者生成了相對應的私鑰,其中公開地址持有BTC傳送者通過使用對應私鑰產生一個簽名,併為他的交易簽名。每個人都可以驗證這個簽名是由持有比特幣的地址對應的私鑰產生的;這樣我們就驗證了交易來自有權發起交易的人。
而Mimblewimble 可以在不洩露雙方地址和交易數量進行完整交易。相較於比特幣協議,Mimblewimble 的匿名性更強,並且更輕便。
什麼是MimbleWimble 協議?
Mimblewimble 最初是被定義為一種對比特幣的改進,因比特幣創立之初的去中心原則的設計,如今能夠執行完整節點的數量正在減少,單個節點承載區塊鏈所有的歷史記錄使得記錄成本越來越高。
MimbleWimble 基於橢圓曲線加密,通過為所有輸入和輸出建立一個多重簽名來更改比特幣模型。參與交易的各方建立一個可以驗證交易的公共多重簽名金鑰。特別的是系統中沒有地址,因為參與交易的雙方分享 “致盲因子”資訊,簡單的來說就是隻有交易雙方才會知道相關交易資訊,從而保護使用者的網路隱私。
致盲因子(Blinding factor,縮寫 BF):是一種用於電子錢幣的造幣技術。致盲因子的功能即是讓此電子錢幣的序號加盲,讓電子錢幣身份識別序號和金額利用顧客的私鑰送給銀行。銀行使用顧客在網路上的公開金鑰解開資料封包,確認身份識別和賬號餘額無誤後,增加顧客的e-cash liability金額。接著在傳送給顧客銀行的私鑰,顧客再以銀行在網路上發行的公開金鑰解開資料封包,顧客取得電子錢幣簽章後,以還原的方式去除致盲因子,即可取得經網路銀行簽章過後的原始電子錢幣序號。
致盲因子幫助交易雙方共享交易資訊同時也遮蔽節點知道交易資訊的可能,並且對特定事務中的輸入和輸出以及事務方的公鑰和私鑰也進行加密。在 MimbleWimble 使用了Pedersen 承諾方案,在該設計中,全節點從事務接收端加密的數量(輸出)減去事務傳送端加密的數量(輸入)。
這個平衡的等式意味著不會憑空產生幣,節點也永遠不需要知道交易資訊。
舉一個簡單的例子來說明致盲因子是如何工作的:
1 + 1 = 2 // 1 + 1-2 = 0
這只是一個簡單的平衡方程式,表明沒有創造新的資金(通過重新排列以顯示餘額為淨零)。
1*5+ 1*5= 2*5
這裡將需要加密的數字5乘以所有變數,就使原始值模糊不清。
5 + 5 = 10
因此得出,價值是恆定的,並且致盲因子也是被加密的。由此看出MimbleWimble 的創造性,其中致盲因子實際上是交易方私鑰和公鑰的組合,通過這個被模糊但相等的等式,我就可以證明交易數量相等,並且我是金鑰的持有者。
在交易結束時,您將獲得此交易的多重簽名,並且在交易時的大多數輸入被輸出消耗,使得在更少的空間內(較與比特幣)就可進行完整驗證,上鍊的資料減少了並且摒除繁雜步驟剔除多餘的資料,MimbleWimble 執行便很大程度上得益於只在區塊鏈中儲存少量資料。
Grin 和 BEAM 是基於 MimbleWimble 協議兩種不同的加密方式,儘管表面上相似,但除了基於 MimbleWimble 協議之外,其他各個方面都不同。
GRIN
2016年11月以Grin為命名初次實現了MimbleWimble協議,由Ignotus Peverell在IRC釋出,如今依然是Grin最活躍的程式碼貢獻者。Grin主要編譯語言是Rust,主網於今年1月15日上線,一經上線便吸引了大批資本礦池與礦工加入。
Grin使用了新的 Cuckoo Cycle,這是 John Tromp 在 2015 年開發的替代POW的證明。儘管該演算法的設計初衷是抵抗 ASIC,但該團隊長期以來一直認為 ASIC是不可避免的。2018 年 9 月出現了兩種解決方案:一種優化為 ASIC 友好型( Cuckatoo31+);另一種優化為允許 GPU 競爭( Cuckaroo29 ), POW 每 24 小時平衡兩種演算法之間的挖掘獎勵,從而抵抗像比特幣的硬體武裝競賽現象出現。
除了令人印象深刻的Cuckoo演算法之外,Grin還有一些有趣的特點:
SnRoR簽名,也稱為聚合簽名,為ScriptlessScripts支援智慧合約鋪平道路。
蒲公英協議,這使得初始傳送人的IP更難以追蹤。在進行廣播之前,所有的交易都在網路上徘徊。
防彈技術,它允許對更小的零知識證明的私密交易進行處理,不需要可信的設定。
flyclient,一個超輕量級客戶端,它同步所有先前Block Header的默克爾根,而不是對前一塊的引用。它允許通過儲存Head來檢查任何先前塊的包含。
原子交換,Grin的第一個原子交換,Grin testnet3和Ethereum Ropsten testnet之間進行了第一次原子交換已經成功實現。
BEAM
2018年4月出現了另一個MimbleWimble嘗試——Beam,編譯語言為C++,在很短的時間內Beam釋出了測試網,並且在近期推出相容 Mimblewimble 協議的閃電網路( LN ),在鏈下價值快速轉移的情況下實現第二層擴充套件解決方案,提高可用性便於商業支付場景。
Equihash是一種需要高記憶體的工作量證明,這意味你能挖到多少幣主要取決於你的裝置記憶體的大小。在短期內要建立一個低成本的挖礦定製硬體(專用積體電路)幾乎不可能,所以Equihash被認為可以構造更去中心化的一種POW演算法。
除了Equihash外,Beam的一些有趣的部分還包括:
在Stem階段用混淆合併交易進一步改進蒲公英協議。
BatchBulletproofs簽名。
超輕量級的flyclient實現。
安全的BBS,這就降低了傳送者和接收者同時線上的需求。
可稽核的錢包,能夠為第三方發出一個或多個審計金鑰。
視覺化設計移動錢包,全部充當完整節點,並與硬體錢包互相整合。
在錢包內通過P2P交易進行比特幣的原子交換。
BEAM 和 Grin 之間的區別
閃電網路最初是用來解決比特幣網路阻塞問題而提出的比特幣網路改進方案。為什麼要使用閃電網路?
首先,更快的出塊時間並不一定意味著更快的支付確認。其次,考慮到更多的數字貨幣支付用例,例如在酒吧付啤酒錢又著急離開、在趕火車時買了一杯飲料等情境下都需要快速支付,實驗表明,閃電網路能夠實現使支付體驗像信用卡支付一樣快速、簡單,這使其成為實現加密貨幣主流應用的基礎之一。
Beam 和比特幣的底層協議之間存在很多差異,因此引入相容 Mimblewimble 協議的閃電網路存在一些挑戰。
主要差異在於 Mimblewimble 協議中缺少指令碼,引入閃電網路需要使用多個構建在彼此之上的交易,這些交易的支出需求將共同形成與比特幣中的 HTLC(雜湊安全時間鎖合約) 相同的結構,支付渠道的參與者將合作構建這些不同的交易,這將導致在通道參與者之間傳送的訊息增加,但 Beam 認為這是值得的。
另一方面,閃電網路的核心概念雜湊時間鎖合約的構造需要另外兩種智慧合約方案:雜湊鎖和相對時間鎖。雜湊鎖是 Beam 基礎協議的一部分,但目前 Beam 還沒有實現相對時間鎖。
目前,Qtum量子鏈已實現閃電網路測試:基於Qtum量子鏈的閃電網路功能簡介及測試
參考資料
Conor O'Higgins,Mimblewimble explained like you’re 12
Mattia Franzoni,Grin: a lightweight implementation of the MimbleWimble protocol
Brian Curran ,What is Grin Coin & MimbleWimble? Complete Beginner’s Guide
Grin的網站:https://grin.mw/up/
Grin的Github: https://github.com/mimblewimble/grin
Beam的網站:https://www.beam-mw.com/
Beam的Github:https://github.com/beam-mw/beam
Arjun Balaji,From #reckless to Wumbology: Lightning Network’s Infrastructural Build Out
https://zh.wikipedia.org/wiki/%E7%9B%B2%E5%9B%A0%E5%AD%90