Minimal Viable Plasma 如何處理超過 2 個交易的輸入?
Vitalik Buterin在 2018 年提出了 Minimal Viable Plasma。在描述功能時,他提到 UTXO 等離子交易的格式是
[blknum1, txindex1, oindex1, sig1, # Input 1 blknum2, txindex2, oindex2, sig2, # Input 2 newowner1, denom1, # Output 1 newowner2, denom2, # Output 2 fee]
這種結構給我帶來了誤解,我認為最好用一個例子來說明:
假設 Alice 擁有 1 ETH 並想將 1 ETH 發送給擁有 4 ETH 的 Bob。我們假設交易不需要任何費用。她在 Block 3 的第一筆(0 索引)交易中從 Charlie 那裡收到了 1 個 ETH,她的輸出排名第二。因此,她用 (3, 0, 1,
$$ signature of the previous 3 values with Alice’s key $$)。Alice 的第二個輸入是空的,因為她不需要它來完成與 Bob 的交易。因此,Alice 發送的 Plasma 交易是:
[3, 0, 1, (Alice's signature), # Input 1 0, 0, 0, 0, # Input 2 [Alice's Address], 0, # Output 1 [Bob's address], 5, # Output 2 0]
但是,如果 Alice 想向 Bob 發送 1 ETH,但通過 3 次交易(例如來自 Sender 1 的 0.2 ETH、來自 Sender 2 的 0.3 ETH 和來自 Sender 3 的 0.5 ETH 的交易)會發生什麼?該欄位僅允許 2 個輸入,但由 Alice 的 UTXO 組成的大小 2 的組合不允許這樣做,這是如何解決的?
Minimal Viable Plasma 如何處理超過 2 個交易的輸入?
根據我的理解,沒有。這就是為什麼它只是最小可行規範。
“每筆交易有 2 個輸入和 2 個輸出,輸出的面額之和加上費用必須等於輸入的面額之和。”
但是,如果 Alice 想向 Bob 發送 1 ETH,但通過 3 次交易(例如來自 Sender 1 的 0.2 ETH、來自 Sender 2 的 0.3 ETH 和來自 Sender 3 的 0.5 ETH 的交易)會發生什麼?該欄位僅允許 2 個輸入,但由 Alice 的 UTXO 組成的大小 2 的組合不允許這樣做,這是如何解決的?
在這種情況下,ALICE 有 3 個 UTXO,因此她可以發送第一筆交易,將兩個輸入(她的 3 個 UTXO 中的 2 個)組合成一個發送到她地址的單個輸出。然後,她將只剩下 2 個 UTXO,她可以在第二筆交易中以 1 的價格組合到 BOB(假設費用為 0)。
與 >= 2 個輸出類似,您可以拆分輸入,這在您需要支付金額 X 但只有一個 UTXO 的值大於 X 時特別有用,然後您可以將其拆分為 2 個輸出,第一個是 value X 到您發送的地址,第二個是直接返回您地址的更改。