mirror of
https://gitlab.com/pulsechaincom/prysm-pulse.git
synced 2025-01-06 01:32:18 +00:00
cec6c8de83
* rem txpool * standardize repo shared utils, remove deprecated items * complete * package lvl godoc
66 lines
1.5 KiB
Go
66 lines
1.5 KiB
Go
package trieutil
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/prysmaticlabs/prysm/shared/hashutil"
|
|
"github.com/prysmaticlabs/prysm/shared/params"
|
|
)
|
|
|
|
func TestDepositTrie_UpdateDepositTrie(t *testing.T) {
|
|
tests := []struct {
|
|
deposits [][]byte
|
|
}{
|
|
{
|
|
[][]byte{
|
|
{1, 2, 3, 4},
|
|
{5, 6, 7, 8},
|
|
},
|
|
},
|
|
{
|
|
[][]byte{
|
|
{0, 0, 0, 0},
|
|
{0, 0, 0, 0},
|
|
},
|
|
},
|
|
}
|
|
for _, tt := range tests {
|
|
d := NewDepositTrie()
|
|
d.UpdateDepositTrie(tt.deposits[0])
|
|
if d.depositCount != 1 {
|
|
t.Errorf("Expected deposit count to increase by 1, received %d", d.depositCount)
|
|
}
|
|
d.UpdateDepositTrie(tt.deposits[1])
|
|
if d.depositCount != 2 {
|
|
t.Errorf("Expected deposit count to increase by 1, received %d", d.depositCount)
|
|
}
|
|
hash := hashutil.Hash(tt.deposits[1])
|
|
twoToPowerOfTreeDepth := 1 << params.BeaconConfig().DepositContractTreeDepth
|
|
lastLeaf := d.merkleMap[d.depositCount-1+uint64(twoToPowerOfTreeDepth)]
|
|
if lastLeaf != hash {
|
|
t.Errorf("Expected last leaf to equal %#x, received %#x", lastLeaf, hash)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestDepositTrie_GenerateMerkleBranch(t *testing.T) {
|
|
d := NewDepositTrie()
|
|
deposit1 := []byte{1, 2, 3}
|
|
d.UpdateDepositTrie(deposit1)
|
|
deposit2 := []byte{5, 6, 7}
|
|
d.UpdateDepositTrie(deposit2)
|
|
deposit3 := []byte{8, 9, 10}
|
|
d.UpdateDepositTrie(deposit3)
|
|
index := d.depositCount - 1
|
|
branch := d.GenerateMerkleBranch(index)
|
|
if ok := VerifyMerkleBranch(
|
|
hashutil.Hash(deposit3),
|
|
branch,
|
|
params.BeaconConfig().DepositContractTreeDepth,
|
|
index,
|
|
d.Root(),
|
|
); !ok {
|
|
t.Error("Expected Merkle branch to verify, received false")
|
|
}
|
|
}
|