MimbleWimble 如何避免事務圖洩漏?
現在,以這種方式創建事務已經支持 OWAS。為了證明這一點,假設我們有兩個交易有剩餘的 k1G 和 k2G,以及帶有這些的附加簽名。然後,您可以將兩個交易的輸入和輸出列表組合在一起,同時將 k1G 和 k2G 混合在一起,瞧!又是一次有效的交易。從組合中,無法說出哪些輸出或輸入來自哪個原始交易。
假設您在進入區塊之前觀察網路上的這兩個交易。那你能把它們分開嗎?如果您可以在合併之前獲得一個塊中的所有交易,您能否生成一個像我們目前擁有的交易圖,沒有金額?
是的——儘管“沒有金額或腳本”可以更清楚地了解交易圖的外觀:每個輸出都是一個均勻隨機的曲線點。這個故事實際上比比特幣要好得多,比特幣的“地址”通常是公開的並且經常被重複使用。
一般來說,找到一個隱藏原始、未合併交易的 p2p 層似乎很困難。最初我認為“被動合併”是可能的,其中節點只會聚合他們看到的所有事務,接收未合併的事務並輸出合併的事務。這似乎非常脆弱:考慮三個節點,每個節點都有一個事務,
A
比如B
和C
。第一個節點發布A
,然後第二個和第三個節點同時鎖存它,分別輸出AB
和AC
,現在只能確認一個B
或C
。觀察到即使沒有任何對抗行為也會發生這種情況,即使合併僅由一組特殊的“主節點”完成也會發生。問題最終歸結為這樣一個事實,即使用 OWAS,衝突合併(具有相交輸入集的交易,其中兩者都不是另一個子集)看起來與衝突交易(雙花)相同。因此,“統一”
AB
和“AC
獲得”ABC
,這是期望的網路行為,就像“統一”雙花一樣困難。需要明確的是,這是“甚至沒有意義”的難度級別。可能有一個 p2p 層以某種方式進行互動式合併,在 Mimblewimble 中,它可以比比特幣中的 Coinjoin 簡單得多,這樣交易創建者就可以控制他們的交易與線上上合併的其他交易。然後,礦工將丟棄簽名或在 p2p 層強制互動所需的任何內容,並合併他們獲得的內容。這可能足以阻止意外衝突的產生,但是您必須擔心對抗性行為。
使用者可以直接與礦工交流交易;對於給定的交易,他們會為每個礦工提供不同的版本,這樣除了創建區塊的礦工之外,沒有人能夠知道區塊中的原始交易是什麼。如果沒有勾結,這將從任何特定對手的角度刪除大量交易圖,儘管它會強制礦工集中化,我認為這是非常不受歡迎的。