From 47f4e5625a7ee86f737636d995e05c429b7ce993 Mon Sep 17 00:00:00 2001 From: rizkyikiw42 Date: Tue, 25 Nov 2025 23:50:46 +0800 Subject: [PATCH] trie/bintrie: deserialize zero hashes as Empty nodes instead of HashedNode --- trie/bintrie/binary_node.go | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/trie/bintrie/binary_node.go b/trie/bintrie/binary_node.go index 690489b2aa..08df791016 100644 --- a/trie/bintrie/binary_node.go +++ b/trie/bintrie/binary_node.go @@ -101,10 +101,17 @@ func DeserializeNode(serialized []byte, depth int) (BinaryNode, error) { if len(serialized) != 65 { return nil, invalidSerializedLength } + var left, right BinaryNode = Empty{}, Empty{} + if leftHash := common.BytesToHash(serialized[1:33]); leftHash != (common.Hash{}) { + left = HashedNode(leftHash) + } + if rightHash := common.BytesToHash(serialized[33:65]); rightHash != (common.Hash{}) { + right = HashedNode(rightHash) + } return &InternalNode{ depth: depth, - left: HashedNode(common.BytesToHash(serialized[1:33])), - right: HashedNode(common.BytesToHash(serialized[33:65])), + left: left, + right: right, }, nil case nodeTypeStem: if len(serialized) < 64 {