|
|
|
package shard
|
|
|
|
|
|
|
|
import (
|
|
|
|
"bytes"
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
"github.com/ethereum/go-ethereum/common"
|
|
|
|
)
|
|
|
|
|
|
|
|
var (
|
|
|
|
blsPubKey1 = [48]byte{}
|
|
|
|
blsPubKey2 = [48]byte{}
|
|
|
|
blsPubKey3 = [48]byte{}
|
|
|
|
blsPubKey4 = [48]byte{}
|
|
|
|
blsPubKey5 = [48]byte{}
|
|
|
|
blsPubKey6 = [48]byte{}
|
|
|
|
blsPubKey11 = [48]byte{}
|
|
|
|
blsPubKey22 = [48]byte{}
|
|
|
|
)
|
|
|
|
|
|
|
|
func init() {
|
|
|
|
copy(blsPubKey1[:], []byte("random key 1"))
|
|
|
|
copy(blsPubKey2[:], []byte("random key 2"))
|
|
|
|
copy(blsPubKey3[:], []byte("random key 3"))
|
|
|
|
copy(blsPubKey4[:], []byte("random key 4"))
|
|
|
|
copy(blsPubKey5[:], []byte("random key 5"))
|
|
|
|
copy(blsPubKey6[:], []byte("random key 6"))
|
|
|
|
copy(blsPubKey11[:], []byte("random key 11"))
|
|
|
|
copy(blsPubKey22[:], []byte("random key 22"))
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestGetHashFromNodeList(t *testing.T) {
|
|
|
|
l1 := []NodeID{
|
|
|
|
{common.Address{0x11}, blsPubKey1},
|
|
|
|
{common.Address{0x22}, blsPubKey2},
|
|
|
|
{common.Address{0x33}, blsPubKey3},
|
|
|
|
}
|
|
|
|
l2 := []NodeID{
|
|
|
|
{common.Address{0x22}, blsPubKey2},
|
|
|
|
{common.Address{0x11}, blsPubKey1},
|
|
|
|
{common.Address{0x33}, blsPubKey3},
|
|
|
|
}
|
|
|
|
h1 := GetHashFromNodeList(l1)
|
|
|
|
h2 := GetHashFromNodeList(l2)
|
|
|
|
|
|
|
|
if bytes.Compare(h1, h2) == 0 {
|
|
|
|
t.Error("node list l1 and l2 should be different")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestHash(t *testing.T) {
|
|
|
|
com1 := Committee{
|
|
|
|
ShardID: 22,
|
|
|
|
NodeList: []NodeID{
|
|
|
|
{common.Address{0x12}, blsPubKey11},
|
|
|
|
{common.Address{0x23}, blsPubKey22},
|
|
|
|
{common.Address{0x11}, blsPubKey1},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
com2 := Committee{
|
|
|
|
ShardID: 2,
|
|
|
|
NodeList: []NodeID{
|
|
|
|
{common.Address{0x44}, blsPubKey4},
|
|
|
|
{common.Address{0x55}, blsPubKey5},
|
|
|
|
{common.Address{0x66}, blsPubKey6},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
shardState1 := State{com1, com2}
|
|
|
|
h1 := shardState1.Hash()
|
|
|
|
|
|
|
|
com3 := Committee{
|
|
|
|
ShardID: 2,
|
|
|
|
NodeList: []NodeID{
|
|
|
|
{common.Address{0x44}, blsPubKey4},
|
|
|
|
{common.Address{0x55}, blsPubKey5},
|
|
|
|
{common.Address{0x66}, blsPubKey6},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
com4 := Committee{
|
|
|
|
ShardID: 22,
|
|
|
|
NodeList: []NodeID{
|
|
|
|
{common.Address{0x12}, blsPubKey11},
|
|
|
|
{common.Address{0x23}, blsPubKey22},
|
|
|
|
{common.Address{0x11}, blsPubKey1},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
|
|
|
|
shardState2 := State{com3, com4}
|
|
|
|
h2 := shardState2.Hash()
|
|
|
|
|
|
|
|
if bytes.Compare(h1[:], h2[:]) != 0 {
|
|
|
|
t.Error("shardState1 and shardState2 should have equal hash")
|
|
|
|
}
|
|
|
|
}
|