State-Trie

有沒有辦法只找到發生合約狀態變化的區塊?

  • June 18, 2019

我目前正在使用 ethereumjs 庫 ( https://github.com/ethereumjs ) 來迭代區塊鏈、重播交易並從 geth leveldb 讀取合約的狀態樹。

目前我正在按順序遍歷區塊鏈以查找合約的狀態變化。

有沒有辦法只找到發生狀態變化的塊?也許通過這裡描述的狀態樹參考(乙太坊狀態樹是如何形成的?)?

我知道如果契約產生日誌,可能有一種使用布隆過濾器的方法,但如果不是呢?(如果我對這個陳述有誤,請糾正我)

嗯,它實際上取決於客戶端以及它如何儲存區塊鏈數據。

您應該區分兩個概念:協議規定驗證塊、交易、收據等(這是您發布的有關乙太坊狀態樹的連結的主題)以及客戶端在同步時如何自行儲存區塊鏈數據。

在不掃描所有區塊鏈的情況下獲取您正在搜尋的內容的唯一方法是,如果客戶端在與其他對等方同步時已經為您完成了此操作。據我所知,目前沒有客戶為您進行此類索引。

如果使用geth,即使直接掃描leveldb裡面的狀態樹,也要檢查每一個block,看目前狀態是否和之前的不一樣,所以掃描過程其實是一樣的,這樣做並沒有什麼真正的優勢方式。

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