Plasma Debit

Lin Po-An
3 min readOct 15, 2018

--

原討論文:https://ethresear.ch/t/plasma-debit-arbitrary-denomination-payments-in-plasma-cash/2198

Plasma Debit 基本上是基於 Plasma Cash 的架構,對於 Cash 每一個 Coin 都無法分割的缺點進行改良。

Plasma Cash 跟 Plasma MVP 最大的不一樣,在於 Cash 使用 Sparse Merkle Tree,讓每一個 Coin 都會佔據 Merkle Tree 的一個 Slot。然後每筆交易(Transaction)基本上做的事情是很單純的改變該 Coin 的 Owner。所以特性上跟現金很像,每一個 Coin 一旦出來了,它的價值就不會變了。但同時,這樣產生的問題也很明顯,真實使用上會需要「找錢」,那就必須要常常準備很多「零錢」。然而,跟現實交易不同的事情是,每一筆交易都是需要花「Gas」來當手續費的,而且每一個 Coin 在找的時候都需要一筆交易。所以假如你今天給我100塊我找你一個10塊一個5塊,總共就需要三筆交易,分別是你給我一個100的 Coin,我給你一個 10 塊的 Coin 跟我給你一個 5塊的 Coin。

在 Plasma Debit,他一樣使用 Sparse Merkle Tree,不一樣的事情是,每一個 Slot 所記錄的東西,會有該 Slot 的:1. 該 Slot 的總額 2. Owner 在該 Slot 有的金額 3. Operator 在該 Slot 有的金額(等於總額減掉Owner有的金額,實際上可以不用紀錄)。多了 Operator 的金額這個特性後,一個有趣的交易方式就產生了,如果 A 要給 B 錢,可以從 A 的 Slot 直接減掉一定金額給 Operator ,然後在 B的 Slot ,Operator 直接撥一定金額給 B。舉個例子,假如 Slot #0 有 A: 50, Operator: 50 ,然後 Slot#1有 B:50, Operator:50。如果今天 A 要給 B 10,可以做一筆交易讓 Slot#0 A:40, Operator: 60/ Slot#1 B: 60, Operator: 40。兩邊一加一減,就等於 A 給了 B 10 塊。

這樣做的好處是,可以看到,每次交易通常就會只需要一筆交易即可。就不用像 Cash 一樣在那邊找錢找來找去。不過相對的,Operator 需要對每個人先行存一定額度的預定金來保持流通性。

我自己看完後,覺得其中有一個特性很吸引我:在交易的時候,其實 A, B 不需要驗證對方的 Slot 的歷史資料是否正確,A 跟 B各自只管自己的 Slot ,自己跟 Operator 的配額對不對就好。換句話說,只需要稍作改良,就可以讓 Plasma Debit 上的每一筆交易都是 Confidential Transaction。例如上述的例子,可以把 Slot#0 跟 Slot#1 的資料都 Hash 過再放進 Tx,然後 A 簽名代表同意 Slot#0 的改變,B 簽名代表同意 Slot#1 的改變,而 Operator 簽名代表同意 Slot#0 跟 Slot#1 的改變。A 不會知道 Slot#1 的內部資料,同理 B 也不會知道 Slot#0 的資料。

如次一來,如果每個 Slot 都堅決不換 Owner 的話,就可以把每個 Slot 視為某個人的個人 Account,而且除了 Operator 跟自己以外,誰都不能確切知道裡面的配額是多少。不過該 Account 的總額是記錄在 Root chain 上的,仍然會被知道,除此之外,在最後要 Withdraw/Exit 的時候,依舊會需要揭露自己 Account 的金額。也許 Root Chain 上可以靠 snark 解決(?)(PS. 我完全不熟,純粹不負責任猜測),或者又有其他密碼學可以處理也說不定。

--

--