mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-02-26 07:37:20 +00:00
trie/bintrie: fix debug_executionWitness for binary tree (#33739)
The `Witness` method was not implemented for the binary tree, which caused `debug_excutionWitness` to panic. This PR fixes that. Note that the `TransitionTrie` version isn't implemented, and that's on purpose: more thought must be given to what should go in the global witness.
This commit is contained in:
parent
16a6531ac2
commit
19f37003fb
2 changed files with 28 additions and 1 deletions
|
|
@ -424,5 +424,5 @@ func (t *BinaryTrie) PrefetchStorage(addr common.Address, keys [][]byte) error {
|
|||
|
||||
// Witness returns a set containing all trie nodes that have been accessed.
|
||||
func (t *BinaryTrie) Witness() map[string][]byte {
|
||||
panic("not implemented")
|
||||
return t.tracer.Values()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@ import (
|
|||
"testing"
|
||||
|
||||
"github.com/ethereum/go-ethereum/common"
|
||||
"github.com/ethereum/go-ethereum/trie"
|
||||
)
|
||||
|
||||
var (
|
||||
|
|
@ -195,3 +196,29 @@ func TestMerkleizeMultipleEntries(t *testing.T) {
|
|||
t.Fatalf("invalid root, expected=%x, got = %x", expected, got)
|
||||
}
|
||||
}
|
||||
|
||||
func TestBinaryTrieWitness(t *testing.T) {
|
||||
tracer := trie.NewPrevalueTracer()
|
||||
|
||||
tr := &BinaryTrie{
|
||||
root: NewBinaryNode(),
|
||||
tracer: tracer,
|
||||
}
|
||||
if w := tr.Witness(); len(w) != 0 {
|
||||
t.Fatal("expected empty witness for fresh trie")
|
||||
}
|
||||
|
||||
tracer.Put([]byte("path1"), []byte("blob1"))
|
||||
tracer.Put([]byte("path2"), []byte("blob2"))
|
||||
|
||||
witness := tr.Witness()
|
||||
if len(witness) != 2 {
|
||||
t.Fatalf("expected 2 witness entries, got %d", len(witness))
|
||||
}
|
||||
if !bytes.Equal(witness[string([]byte("path1"))], []byte("blob1")) {
|
||||
t.Fatal("unexpected witness value for path1")
|
||||
}
|
||||
if !bytes.Equal(witness[string([]byte("path2"))], []byte("blob2")) {
|
||||
t.Fatal("unexpected witness value for path2")
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue