實際在智慧合約裡,用兩個merkle tree做紀錄,一棵樹是紀錄地址,所以只需要樹的索引值就可以代表一個位址(未註冊的索引值內容為0),因此位址的資料量就從原本的20 bytes減少到只有3 bytes,另一棵樹則記錄balance跟nonce。
這是資料格式(這是最初的提案,後來的實作交易量更小),
因為用索引值當地址的代表,所以只需要3 bytes(2²⁴個位址),Value的部分是以10^-6當作基底,這樣只需要15 bytes就可以代表一筆交易,而儲存這樣一筆交易大約只需要892 gas(雖然Value是6 bytes,但是文章中的假設大部分的交易只會使用到4 bytes,所以演算法是13 bytes * 68 + 2 bytes * 4 = 892),而一般ether的轉移需要21K gas,因此交易速度能提升(所以Vitalik的文章標題是”On-chain scaling to potentially ~500 tx/sec through mass tx validation”)。
為什麼交易速度能提升?也順便來了解一下交易速度
現今以太坊每個區塊的gas上限約8M,所以若單純ether交易,速度約略是
8M / 21K / 15 ~= 25 tps
所以現在的交易瓶頸其實是gas 的問題,下降交易手續費或是提升區塊gas上限,都能適時紓困(但也會造成衍伸的問題),而ZK Rollup就是藉由交易資料量(size )的減少,進而能增加交易速度。那來看一下使用ZK Rollup後交易速度能到多快
(8M — 600K (zk-SNARK驗證) — 50K(預計合約執行的gas花費)) / 892 / 15 ~= 550 tps
這個數字就是Vitalik文章的標頭”On-chain scaling to potentially ~500 tx/sec ”。但實際上並沒有這麼理想,在作者Barry的實作中,大約只有268 tps,因為每次資產的更新都會留下event,所以有多餘的gas花費,然而,這樣的設計在應用上也是比較親切的。
資料都在鏈上,而且透過zk-SNARK做驗證,代表著上鍊的資料都是被驗證過的,因此就沒有一開始layer 2遇到的問題,需要挑戰、需要下載資料等等。這也隱含著不需要信任中繼者,因為他們無法作壞,最多就是不幫你送交易。
事情沒有這麼美好…
大家都覺得zk-SNARK像個萬靈丹一樣,用了好像什麼事都解決了,不過實際上並沒有這麼完美。zk-SNARK除了需要初始設定之外,最大的問題就是需要大量的運算力,在Barry提供的資料中,中繼者的電腦若是一臺8G記憶體加上20G的硬碟swap,大概只能產生20 tx/sec,遠遠不及預期的500tps或是實作的200多tps。所以這個方案最大的問題在於要怎麼解決算力問題。
平行運算!
Matter Lab使用了多中繼者模型跟平行運算。多中繼者的模型,很像小型的區塊鏈,使用了DPOS (Delegated Proof of Stake),還有隨機挑選區塊產生者,所以被挑選到的區塊產生者,就可以收集交易、產生證明並且上鍊。這樣的方法避免了中心化,若中繼者被惡意攻擊,整個網路還是能運作得下去,另一方面,也為平行運算做了鋪路。零知識證明的產生非常花時間,因此基於多中繼者模型,Matter Lab提出了” 上鍊-驗證 ”兩階段的方式,也就是中繼者先把資料上鍊,下一個階段再上傳證明做驗證,進而達到平行運算(如下圖)。再加上一些資料的最佳化,測試結果可達到1600 tps。
延遲…
聽似很美好,但是因為你的交易被分兩階段上鍊,也就是從送出到到被驗證,會是好幾個區塊,時間比原本單純上鍊時間會更久。當然,延遲多久是使用者可接受的,這目前也無從得知。這是一個取捨,省了手續費,增加了交易速度,卻也增加了時間的延遲,這一切也要等上線後才會知道。
Plasma & Optimistic Rollup
Optimistic Rollup在設計上跟Plasma相關,所以只會簡單帶一下差異。最一開始由John Adler在以太坊研究論壇所提出。
最一開始是看到Karl(注)的文章才知道這個設計。概念上也是把資料都放鏈上,但不是用zk-SNARK做驗證,因為希望能達成更普遍性的應用。而不一樣的地方有,把from的部分,改為使用者的簽章(65 bytes),因為資料量變大的,可想而知,花的gas會更多,交易速度就會不及ZK Rollup。另一部份是,因為不是用zk-SNARK做驗證,就需要資料驗證的輔助方法(validity game),這邊就不詳細介紹,有機會在寫一篇Plasma/Optimistic Rollup的詳細介紹。
在估算上,交易速度約是100 tps,若簽章方式改為BLS,約可提升到450 tps。而在10月的硬分岔後,gas會下降,預估的交易速度也會分別到達400/2000 tps。(許願:希望有人可以介紹一下10月的硬分岔細節XD)
注:在中文的媒體文章中,都稱他是Casper的核心研究員之一,但是從我一開始知道這個人,都是在大力宣揚Plasma,他的部落格、twitter都是跟Plasma相關的文章,不確定他在Plasma Group的角色,但個人是把他定位成Plasma Group的leader