Solidity
歷史餘額的鏈上默克爾證明的任何已知實現?
我知道可以使用鏈上的默克爾證明來驗證歷史 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編碼。
樹的根雜湊儲存在塊頭中。
因此,您需要在智能合約中執行以下操作:
- 計算提供的塊頭的雜湊
- 檢查此雜湊是否等於塊提供的塊號的塊雜湊
- 從塊頭中提取 Merkle-Patricia 根雜湊
- 檢查提供的地址狀態實際上是否在提供的地址的 Merkle-Patricis 樹中
- 從地址狀態中提取餘額
對於任何來到這裡的人,我發現了以下內容 - 雖然它未經證實並且有一些限制:
https://github.com/figs999/Ethereum/blob/master/EventStorage.sol