Ethereum Plasma Prime

Kimi Wu
Taipei Ethereum Meetup
5 min readNov 12, 2018

“We finally hit the peak of the mountain!”

這是Ethereum Foundation researcher, Karl在Devcon 4 所說的。用這句話作為開場,代表著Plasma Prime離最終目標已經不遠了。

Plasma Prime是什麼呢?? 其實在Ethereum Research上找不到這個主題,Plasma Prime是Plasma Cash延伸的提案。Plasma Cash有一個很大的問題就是交易的歷史紀錄過於龐大(每個coin每年大約有1–3GB的歷史紀錄),如果沒有這些歷史紀錄,就沒辦法驗證作challenge 的動作。而Plasma Prime就是利用質數跟因式分解的特性,解決歷史紀錄過於龐大的問題。

Plasma Prime利用RSA accumulator來取代原本的驗證需要整個Merkle tree branch的方式。這邊用的概念很簡單,直接看範例不看數學式,假設有3, 5, 11這三個質數,可以得到 A = g ⁽ ³* ⁵* ¹ ¹ ⁾,若要證明3是的一部分(比較精確的說法應該是 是A的一部分),只要可以在 (g³) ⁿ 中求得整數n,就代表3 是A的一部分,以這個例子來說,可以得到整數 n=55,因此 3 是A的一部分。但是實際應用上 n 可能會很大(因為coin數很多),所以會需要更有效率的確認方式,這部分牽涉到的數學比較多,就不在這裡討論,有興趣可以參考Wesolowski的論文Benedikt Bünz的演講

回過頭來解釋這個範例,g 是generator(代表了初始的accumulator),A是accumulator,然後每產出一個block,accumulator就會累加上一個block的accumulator,也就是一開始accumulator A = g ⁿ,下一個block就accumulator A’ = A ⁱ,以此類推,一直累加上去。所以每個block就不需要帶著整個交易的Merkle tree,只需要多一個accumulator就可證明是否有交易過。

接下來,證明沒有交易過,代表要證明某數 v 不是A的一部分,很直覺會覺得無法因數分解即可,不過沒這麼單純(這邊我也不確定為何,可能要請數學好一點的人幫忙解答一下)。以上面的例子繼續解釋,7 不是165(3*5*11)的因數,只需要證明 0 < i < 7 可以得到 A * g ⁱ 即可,也就是 (g⁷)ⁿ 找不到整數解 n,但可以找到 A * g³ = g¹ ⁶ ⁸,然後 i = 3(滿足 0 < i < 7),可以得到因數24跟(g⁷) ² ⁴ = A * g³ = g ¹ ⁶ ⁸

統整一下,Plasma Prime是利用上面講的RSA Accumulator減少了交易的歷史資料,那說好的質數在哪裡?! 在Plasma Prime每個coin的id都會是一個質數,而不是Plasma Cash中只是一個亂數id。再來,看看實際應用的的狀況,若有你所屬的coin在block n … n+k都沒有做過交易,只需要拿block n(的input state)的當作generator,然後n+k(的output state) 當作accumulator,根據上面的例子,只需要簡單的驗證就可以證明你的coin沒做過交易,相當簡潔。整個數據量會從GB等級減到MB等級。

以上是介紹減少數據量的方法,但是Plasma Cash還有一個詬病的問題就是進來Plasma chain的coin/token是無法分割的,也就是你存進1 ETH進Plasma chain,沒辦法只轉0.5 ETH給別人。在Ethresear.ch 中有一系列關於這個的文章(Plasma Cash Defragmentation / Take 2 / Take 3),簡單來說,就是交易原本是從一個coin轉到使用者,變成從一個區間的coin轉給使用者,如下圖,A轉了33 ETH給B,就轉token 0–32這個區間的token給B

當然,這種方式也不是沒問題,交易次數多了之後,就會造成fragment,跟硬碟使用久了,會造成空間碎裂不連續一樣,每個人持有token的就無法是一個連續的區間,在Plasma Cash Defragmentation Take 3有解決的提案,概念上還滿簡單的,因為不是本篇重點,有興趣的可以自己去看(不過看Take 3之前還是需要看前兩篇,才能比較了解在幹嘛 XD)

以上是我所知道的Plasma Prime,利用RSA Accumulator減少資料量跟轉帳是轉一個區間的coin。

今天分享就到這邊,如果有錯誤或是缺漏的,歡迎指教!

Originally published at kimiwublog.blogspot.com.

--

--