当前,我正在将修改后的PatriciaTree实现为Java实现。我在这里找到了以太坊实现:https://github.com/ethereumj/ethereumj/tree/master/ethereumj-core/src/main/java/org/ethereum/trie。
我想将生成的键值保存到特定的键值存储LevelDB中。但是我对一个似乎找不到答案的问题之以鼻。
由于帕特里夏树的内部属性,它的O搜索记号为O(log N)。但是,当树键值存储在键值存储区中时,LevelDB知道如何完成节点的首次查找后,由于数据不包含x,因此可以跳过x记录由于存储在LevelDB中的Patricia树状数据结构而被浏览?我认为它不知道,它将再次开始遍历整个LevelDB存储,但是比起您完全失去了将数据存储在Patricia树状结构中的搜索效果?
以太坊如何做到这一点,他们只是通过从LevelDB获取数据,而不是将其解析为在EVM中运行的类对象,从头开始构建完整的树?
谢谢。