Ethereum Plasma Prime

"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*5*11}$,若要證明3是$A$的一部分(比較精確的說法應該是$g^3$是$A$的一部分),只要可以在${(g^3)}^x$中求得整數$x$,就代表3是$A$的一部分,以這個例子來說,可以得到整數 $x=55$,因此3是$A$的一部分。但是實際應用上$x$可能會很大(因為coin數很多),所以會需要更有效率的確認方式,這部分牽涉到的數學比較多,就不在這裡討論,有興趣可以參考Wesolowski的論文Benedikt Bünz的演講

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

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

統整一下,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等級。


NFT issue?!


以上是介紹減少數據量的方法,但是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。今天分享就到這邊,如果有錯誤或是缺漏的,歡迎指教!


other references 

RSA Accumulators for Plasma Cash history reduction


同場加映:
Elph 發表了Plasma側鏈
OmiesGO 發表了Plasma Dog

留言

這個網誌中的熱門文章

What's New in Ethereum Serenity (2.0)

瑞士滑雪分享2 - 策馬特

動手實做零知識 - circom