Solidity

歷史餘額的鏈上默克爾證明的任何已知實現?

  • April 26, 2021

我知道可以使用鏈上的默克爾證明來驗證歷史 ETH 餘額(最後 256 個區塊)——是否有任何已知的實現?

注意 - 我正在尋找 Solidity 程式碼(即鏈上)的方式來做到這一點。

您可能需要在這兩個庫之上建構自己的程式碼:https ://github.com/hamdiallam/Solidity-RLP和https://github.com/commitground/solidity-patricia-tree

前一個庫允許解碼 RLP 編碼的資料結構。第二個允許檢查某些數據是否儲存在 Merkle-Patricia 樹中。

乙太坊將所有地址的狀態儲存在 Merkle-Patricia 樹中。葉子的路徑是一個地址,葉子數據是四個值nonce、balance、storageRoot和codeHash的RLP編碼。

樹的根雜湊儲存在塊頭中。

因此,您需要在智能合約中執行以下操作:

  1. 計算提供的塊頭的雜湊
  2. 檢查此雜湊是否等於塊提供的塊號的塊雜湊
  3. 從塊頭中提取 Merkle-Patricia 根雜湊
  4. 檢查提供的地址狀態實際上是否在提供的地址的 Merkle-Patricis 樹中
  5. 從地址狀態中提取餘額

對於任何來到這裡的人,我發現了以下內容 - 雖然它未經證實並且有一些限制:

https://github.com/figs999/Ethereum/blob/master/EventStorage.sol

引用自:https://ethereum.stackexchange.com/questions/72480