From 84c61897b363002e22a86cdb9f28947a03f55710 Mon Sep 17 00:00:00 2001 From: CPerezz Date: Fri, 17 Apr 2026 10:31:03 +0200 Subject: [PATCH] trie/bintrie: use type alias for HashedNode Replace the single-field struct with a type alias on common.Hash. Both have identical layout (32 bytes, no pointers) and noscan span placement, but the alias matches master's style and reads more naturally. A zero-arg Hash() method keeps call sites terse. --- trie/bintrie/hashed_node.go | 9 +++++---- trie/bintrie/iterator.go | 4 ++-- trie/bintrie/node_store.go | 2 +- trie/bintrie/store_commit.go | 4 ++-- trie/bintrie/store_ops.go | 24 ++++++++++++------------ 5 files changed, 22 insertions(+), 21 deletions(-) diff --git a/trie/bintrie/hashed_node.go b/trie/bintrie/hashed_node.go index 1bc4a8be78..b176df079b 100644 --- a/trie/bintrie/hashed_node.go +++ b/trie/bintrie/hashed_node.go @@ -18,7 +18,8 @@ package bintrie import "github.com/ethereum/go-ethereum/common" -// HashedNode is an unresolved node (hash only). -type HashedNode struct { - hash common.Hash -} +// HashedNode is an unresolved node — only its hash is known. +type HashedNode common.Hash + +// Hash returns the node's hash. +func (h HashedNode) Hash() common.Hash { return common.Hash(h) } diff --git a/trie/bintrie/iterator.go b/trie/bintrie/iterator.go index c25bb6abb2..60593f6dda 100644 --- a/trie/bintrie/iterator.go +++ b/trie/bintrie/iterator.go @@ -126,12 +126,12 @@ func (it *binaryNodeIterator) Next(descend bool) bool { return false } hn := it.store.getHashed(it.current.Index()) - data, err := it.trie.nodeResolver(it.Path(), hn.hash) + data, err := it.trie.nodeResolver(it.Path(), hn.Hash()) if err != nil { it.lastErr = err return false } - resolved, err := it.store.DeserializeNodeWithHash(data, len(it.stack)-1, hn.hash) + resolved, err := it.store.DeserializeNodeWithHash(data, len(it.stack)-1, hn.Hash()) if err != nil { it.lastErr = err return false diff --git a/trie/bintrie/node_store.go b/trie/bintrie/node_store.go index 7a2df2ea4f..291b968ae1 100644 --- a/trie/bintrie/node_store.go +++ b/trie/bintrie/node_store.go @@ -151,7 +151,7 @@ func (s *NodeStore) freeHashedNode(idx uint32) { func (s *NodeStore) newHashedRef(hash common.Hash) NodeRef { idx := s.allocHashed() - *s.getHashed(idx) = HashedNode{hash: hash} + *s.getHashed(idx) = HashedNode(hash) return MakeRef(KindHashed, idx) } diff --git a/trie/bintrie/store_commit.go b/trie/bintrie/store_commit.go index 9d79a271bd..feeaf00e87 100644 --- a/trie/bintrie/store_commit.go +++ b/trie/bintrie/store_commit.go @@ -38,7 +38,7 @@ func (s *NodeStore) ComputeHash(ref NodeRef) common.Hash { case KindStem: return s.getStem(ref.Index()).Hash() case KindHashed: - return s.getHashed(ref.Index()).hash + return s.getHashed(ref.Index()).Hash() case KindEmpty: return common.Hash{} default: @@ -259,7 +259,7 @@ func (s *NodeStore) ToDot(ref NodeRef, parent, path string) string { case KindHashed: hn := s.getHashed(ref.Index()) me := fmt.Sprintf("hash%s", path) - ret := fmt.Sprintf("%s [label=\"%x\"]\n", me, hn.hash) + ret := fmt.Sprintf("%s [label=\"%x\"]\n", me, hn.Hash()) ret = fmt.Sprintf("%s %s -> %s\n", ret, parent, me) return ret default: diff --git a/trie/bintrie/store_ops.go b/trie/bintrie/store_ops.go index 1f92dc2572..15c39b527c 100644 --- a/trie/bintrie/store_ops.go +++ b/trie/bintrie/store_ops.go @@ -72,11 +72,11 @@ func (s *NodeStore) getSingle(ref NodeRef, stem []byte, suffix byte, resolver No hn := s.getHashed(cur.Index()) parentNode := s.getInternal(parentIdx) path := makeKeyPath(int(parentNode.depth), stem) - data, err := resolver(path, hn.hash) + data, err := resolver(path, hn.Hash()) if err != nil { return nil, fmt.Errorf("getSingle resolve error: %w", err) } - resolved, err := s.DeserializeNodeWithHash(data, int(parentNode.depth)+1, hn.hash) + resolved, err := s.DeserializeNodeWithHash(data, int(parentNode.depth)+1, hn.Hash()) if err != nil { return nil, fmt.Errorf("getSingle deserialization error: %w", err) } @@ -143,11 +143,11 @@ func (s *NodeStore) getValuesAtStem(ref NodeRef, stem []byte, resolver NodeResol hn := s.getHashed(cur.Index()) parentNode := s.getInternal(parentIdx) path := makeKeyPath(int(parentNode.depth), stem) - data, err := resolver(path, hn.hash) + data, err := resolver(path, hn.Hash()) if err != nil { return nil, fmt.Errorf("getValuesAtStem resolve error: %w", err) } - resolved, err := s.DeserializeNodeWithHash(data, int(parentNode.depth)+1, hn.hash) + resolved, err := s.DeserializeNodeWithHash(data, int(parentNode.depth)+1, hn.Hash()) if err != nil { return nil, fmt.Errorf("getValuesAtStem deserialization error: %w", err) } @@ -251,11 +251,11 @@ func (s *NodeStore) insertSingleInternal(stem []byte, suffix byte, value []byte, parentNode := s.getInternal(p.internalIdx) hn := s.getHashed(cur.Index()) path := makeKeyPath(int(parentNode.depth), stem) - data, err := resolver(path, hn.hash) + data, err := resolver(path, hn.Hash()) if err != nil { return fmt.Errorf("insertSingle resolve error: %w", err) } - resolved, err := s.DeserializeNodeWithHash(data, int(parentNode.depth)+1, hn.hash) + resolved, err := s.DeserializeNodeWithHash(data, int(parentNode.depth)+1, hn.Hash()) if err != nil { return fmt.Errorf("insertSingle deserialization error: %w", err) } @@ -370,11 +370,11 @@ func (s *NodeStore) insertValuesAtStem(ref NodeRef, stem []byte, values [][]byte } hn := s.getHashed(node.left.Index()) path := makeKeyPath(int(node.depth), stem) - data, err := resolver(path, hn.hash) + data, err := resolver(path, hn.Hash()) if err != nil { return ref, fmt.Errorf("InsertValuesAtStem resolve error: %w", err) } - resolved, err := s.DeserializeNodeWithHash(data, int(node.depth)+1, hn.hash) + resolved, err := s.DeserializeNodeWithHash(data, int(node.depth)+1, hn.Hash()) if err != nil { return ref, fmt.Errorf("InsertValuesAtStem deserialization error: %w", err) } @@ -393,11 +393,11 @@ func (s *NodeStore) insertValuesAtStem(ref NodeRef, stem []byte, values [][]byte } hn := s.getHashed(node.right.Index()) path := makeKeyPath(int(node.depth), stem) - data, err := resolver(path, hn.hash) + data, err := resolver(path, hn.Hash()) if err != nil { return ref, fmt.Errorf("InsertValuesAtStem resolve error: %w", err) } - resolved, err := s.DeserializeNodeWithHash(data, int(node.depth)+1, hn.hash) + resolved, err := s.DeserializeNodeWithHash(data, int(node.depth)+1, hn.Hash()) if err != nil { return ref, fmt.Errorf("InsertValuesAtStem deserialization error: %w", err) } @@ -437,11 +437,11 @@ func (s *NodeStore) insertValuesAtStem(ref NodeRef, stem []byte, values [][]byte if resolver == nil { return ref, errors.New("InsertValuesAtStem: resolver is nil") } - data, err := resolver(path, hn.hash) + data, err := resolver(path, hn.Hash()) if err != nil { return ref, fmt.Errorf("InsertValuesAtStem resolve error: %w", err) } - resolved, err := s.DeserializeNodeWithHash(data, depth, hn.hash) + resolved, err := s.DeserializeNodeWithHash(data, depth, hn.Hash()) if err != nil { return ref, fmt.Errorf("InsertValuesAtStem deserialization error: %w", err) }