You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
// NewMerkleTree creates a new Merkle tree from a sequence of data
func NewMerkleTree(data [][]byte) *MerkleTree {
var nodes []MerkleNode
if len(data)%2 != 0 {
data = append(data, data[len(data)-1])
}
for _, datum := range data {
node := NewMerkleNode(nil, nil, datum)
nodes = append(nodes, *node)
}
for i := 0; i < len(data)/2; i++ {
var newLevel []MerkleNode
for j := 0; j < len(nodes); j += 2 {
node := NewMerkleNode(&nodes[j], &nodes[j+1], nil)
newLevel = append(newLevel, *node)
}
nodes = newLevel
}
mTree := MerkleTree{&nodes[0]}
return &mTree
}
Because the count of total level 'k' is equal to [k = log2(S + 1)] , S is the number of "Full Binary Tree" nodes.
Such as, When len(Leaf nodes) = 32, so S = 63 , k = log2(63+1) = 6; Now k is 6, not 32/2!
My code show below:
func NewMerkleTree(data [][]byte) *MerkleTree {
var nodes []MerkleNode
if len(data)%2 != 0 {
data = append(data, data[len(data)-1])
}
for _, datum := range data {
mNode := NewMerkleNode(nil, nil, datum)
nodes = append(nodes, *mNode)
}
TreeNode:
for {
var newLevel []MerkleNode
for j := 0; j < len(nodes); j += 2 {
if len(nodes) == 1 {
break TreeNode
}
node := NewMerkleNode(&nodes[j], &nodes[j+1], nil)
newLevel = append(newLevel, *node)
}
nodes = newLevel
}
mTree := MerkleTree{&nodes[0]}
return &mTree
}
The text was updated successfully, but these errors were encountered:
The problematic code looks like this:
Because the count of total level 'k' is equal to [k = log2(S + 1)] , S is the number of "Full Binary Tree" nodes.
Such as, When len(Leaf nodes) = 32, so S = 63 , k = log2(63+1) = 6; Now k is 6, not 32/2!
My code show below:
The text was updated successfully, but these errors were encountered: