Plasma Core的證明結構和檢查

買賣虛擬貨幣
與傳統的區塊鏈系統不同,完整的Plasma節點不儲存每一個交易,它們只需要儲存與其擁有的資產相關的資訊。這意味著傳送者必須向接收者證明傳送者實際上擁有給定的範圍。一個完整的證明包含了足夠的資訊來保證,如果以太坊鏈本身不分叉,那麼令牌可以在主鏈上贖回。必須根據操作員提交給主鏈上智慧合約的塊雜湊檢查包含根。透過追蹤證明方案中驗證的保管鏈,從代幣的初始存款到目前為止,保證了贖回能力。Plasma Core採用了一種相對簡單的方法來驗證傳入的事務證明。本節介紹該方法。證明格式(Proof Format)歷史證明包括一組存款記錄和相應交易的長清單以及相應的TransctionProofs。plasma-utils暴露一個靜態checkTransactionProof(transaction,transactionProof,root)方法,Plasma-core透過呼叫ProofService來使用它。
交易證明(Transaction Proof)TransactionProof物件包含檢查給定Transaction的有效性的所有必要資訊。也就是說,它只是一個TransferProof物件的陣列。根據上面關於原子多重的一節,當且僅當所有的TransferProofs都有效時,給定的TransactionProof才有效。轉移證明(Transfer Proof)TransferProofs包含在正確的塊編號中恢復包含與事務中給定Transfer相對應的有效分支所需的所有必要資訊。這構成:1. Merkle sum tree的實際節點,代表分支的完整`inclusionProof`2. 用於計算分支跟蹤的二進位制路徑的葉的索引
3. 上面的sum樹規範中描述的已解析的bottom.sum4. 特定發件人的簽名

就像plasma-utils架構一樣:

請注意,inclusionProof是一個可變長度陣列,其大小取決於樹的深度。

證明步驟(Proof steps)

從存款開始,驗證過程的核心是將每個證明元素應用於當前“已驗證”狀態。如果任何證明元素沒有導致有效的狀態轉換,我們必須拒絕證明。

應用每個證明元素的過程是公開的; 我們只是根據合同的監管規則要求在每個區塊應用交易。

快照物件(Snapshot object)

我們跟蹤歷史擁有範圍的方式稱為快照。
快照代表了區塊中範圍的經過驗證的所有者:

存款記錄(Deposit records)

每個收到的範圍必須來自相應的存款。
存款記錄由其令牌、開始、結束、存款人和塊號組成。
對於每個存款記錄,驗證者必須仔細檢查以太坊以確認所聲稱的存款確實發生,並且在此期間沒有發生退出。
驗證快照陣列將初始化為這些儲存,每個snapshot.owner都是儲存者。

接下來,我們應用所有給定的事務證明,相應地更新已驗證的快照。對於每個事務和相應的TransactionProof,驗證程式執行以下步驟:

1. 驗證給定的證明元素是否有效。如果沒有,提示錯誤
2. 對於交易中的每次轉移,請執行以下操作:
    a.“拆分”在transfer.typedstart、transfer.typend、implicitstart和implicitend上更新的任何快照。
    b.增加所有結果驗證快照的.block編號,這些快照的block編號等於transaction.block number-1;
    c.對於在transfer.start和transfer.end之間的每個拆分快照:
    i.驗證snapshot.owner==transfer.from。如果沒有,丟擲一個錯誤。
    ii.設定snapshot.owner=transfer.sender。

TransactionProof必須應用於遞增的BlockNumber中。

一旦該操作被遞迴地應用於所有交易證明,客戶可以透過搜尋已驗證快照中的所有元素(塊號等於當前Plasma塊,所有者等於其地址)來檢查自己現在擁有的新硬幣。

交易證明有效性(TransactionProof Validity)

上述步驟1中的交易有效性檢查等同於檢查智慧合約的有效性條件。基於上面的和樹規範的基本有效性檢查如下:

1.檢查事務編碼是否格式正確。
2.對於每次轉移和相應的轉移證明:
a.檢查簽名是否解析為其transfer.sender地址
b.驗證inclusionproof的根是否等於該Plasma塊的根雜湊,以及leafindex定義的二進位制路徑。
c.計算分支的implicitstart和implicitend,並驗證implicitstart<=transfer.start<transfer.end<=implicitend


來源:區塊鏈研究實驗室
作者 : 鏈三豐  

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;