mirror of
https://gitlab.com/pulsechaincom/prysm-pulse.git
synced 2024-12-24 12:27:18 +00:00
288b38be8e
* Add `process_execution_payload` to `process_block` * bring in bellatrix p2p changes * lint * fix testcase to use MaxChunkSize as config to change allowed size instead of config * add left out config params * Fix TestForkSchedule_CorrectNumberOfForks * fixed Nishant's comments * gofmt * add switch case Co-authored-by: Mohamed Zahoor <zahoor@zahoor.in> Co-authored-by: Zahoor Mohamed <zahoor@prysmaticlabs.com> Co-authored-by: Nishant Das <nishdas93@gmail.com>
108 lines
4.4 KiB
Go
108 lines
4.4 KiB
Go
package p2p_test
|
|
|
|
import (
|
|
"fmt"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/golang/snappy"
|
|
pubsubpb "github.com/libp2p/go-libp2p-pubsub/pb"
|
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/signing"
|
|
"github.com/prysmaticlabs/prysm/beacon-chain/p2p"
|
|
"github.com/prysmaticlabs/prysm/config/params"
|
|
"github.com/prysmaticlabs/prysm/crypto/hash"
|
|
"github.com/prysmaticlabs/prysm/encoding/bytesutil"
|
|
"github.com/prysmaticlabs/prysm/network/forks"
|
|
"github.com/prysmaticlabs/prysm/testing/assert"
|
|
)
|
|
|
|
func TestMsgID_HashesCorrectly(t *testing.T) {
|
|
genesisValidatorsRoot := bytesutil.PadTo([]byte{'A'}, 32)
|
|
d, err := forks.CreateForkDigest(time.Now(), genesisValidatorsRoot)
|
|
assert.NoError(t, err)
|
|
tpc := fmt.Sprintf(p2p.BlockSubnetTopicFormat, d)
|
|
invalidSnappy := [32]byte{'J', 'U', 'N', 'K'}
|
|
pMsg := &pubsubpb.Message{Data: invalidSnappy[:], Topic: &tpc}
|
|
hashedData := hash.Hash(append(params.BeaconNetworkConfig().MessageDomainInvalidSnappy[:], pMsg.Data...))
|
|
msgID := string(hashedData[:20])
|
|
assert.Equal(t, msgID, p2p.MsgID(genesisValidatorsRoot, pMsg), "Got incorrect msg id")
|
|
|
|
validObj := [32]byte{'v', 'a', 'l', 'i', 'd'}
|
|
enc := snappy.Encode(nil, validObj[:])
|
|
nMsg := &pubsubpb.Message{Data: enc, Topic: &tpc}
|
|
hashedData = hash.Hash(append(params.BeaconNetworkConfig().MessageDomainValidSnappy[:], validObj[:]...))
|
|
msgID = string(hashedData[:20])
|
|
assert.Equal(t, msgID, p2p.MsgID(genesisValidatorsRoot, nMsg), "Got incorrect msg id")
|
|
}
|
|
|
|
func TestMessageIDFunction_HashesCorrectlyAltair(t *testing.T) {
|
|
genesisValidatorsRoot := bytesutil.PadTo([]byte{'A'}, 32)
|
|
d, err := signing.ComputeForkDigest(params.BeaconConfig().AltairForkVersion, genesisValidatorsRoot)
|
|
assert.NoError(t, err)
|
|
tpc := fmt.Sprintf(p2p.BlockSubnetTopicFormat, d)
|
|
topicLen := uint64(len(tpc))
|
|
topicLenBytes := bytesutil.Uint64ToBytesLittleEndian(topicLen)
|
|
invalidSnappy := [32]byte{'J', 'U', 'N', 'K'}
|
|
pMsg := &pubsubpb.Message{Data: invalidSnappy[:], Topic: &tpc}
|
|
// Create object to hash
|
|
combinedObj := append(params.BeaconNetworkConfig().MessageDomainInvalidSnappy[:], topicLenBytes...)
|
|
combinedObj = append(combinedObj, tpc...)
|
|
combinedObj = append(combinedObj, pMsg.Data...)
|
|
hashedData := hash.Hash(combinedObj)
|
|
msgID := string(hashedData[:20])
|
|
assert.Equal(t, msgID, p2p.MsgID(genesisValidatorsRoot, pMsg), "Got incorrect msg id")
|
|
|
|
validObj := [32]byte{'v', 'a', 'l', 'i', 'd'}
|
|
enc := snappy.Encode(nil, validObj[:])
|
|
nMsg := &pubsubpb.Message{Data: enc, Topic: &tpc}
|
|
// Create object to hash
|
|
combinedObj = append(params.BeaconNetworkConfig().MessageDomainValidSnappy[:], topicLenBytes...)
|
|
combinedObj = append(combinedObj, tpc...)
|
|
combinedObj = append(combinedObj, validObj[:]...)
|
|
hashedData = hash.Hash(combinedObj)
|
|
msgID = string(hashedData[:20])
|
|
assert.Equal(t, msgID, p2p.MsgID(genesisValidatorsRoot, nMsg), "Got incorrect msg id")
|
|
}
|
|
|
|
func TestMessageIDFunction_HashesCorrectlyBellatrix(t *testing.T) {
|
|
genesisValidatorsRoot := bytesutil.PadTo([]byte{'A'}, 32)
|
|
d, err := signing.ComputeForkDigest(params.BeaconConfig().BellatrixForkVersion, genesisValidatorsRoot)
|
|
assert.NoError(t, err)
|
|
tpc := fmt.Sprintf(p2p.BlockSubnetTopicFormat, d)
|
|
topicLen := uint64(len(tpc))
|
|
topicLenBytes := bytesutil.Uint64ToBytesLittleEndian(topicLen)
|
|
invalidSnappy := [32]byte{'J', 'U', 'N', 'K'}
|
|
pMsg := &pubsubpb.Message{Data: invalidSnappy[:], Topic: &tpc}
|
|
// Create object to hash
|
|
combinedObj := append(params.BeaconNetworkConfig().MessageDomainInvalidSnappy[:], topicLenBytes...)
|
|
combinedObj = append(combinedObj, tpc...)
|
|
combinedObj = append(combinedObj, pMsg.Data...)
|
|
hashedData := hash.Hash(combinedObj)
|
|
msgID := string(hashedData[:20])
|
|
assert.Equal(t, msgID, p2p.MsgID(genesisValidatorsRoot, pMsg), "Got incorrect msg id")
|
|
|
|
validObj := [32]byte{'v', 'a', 'l', 'i', 'd'}
|
|
enc := snappy.Encode(nil, validObj[:])
|
|
nMsg := &pubsubpb.Message{Data: enc, Topic: &tpc}
|
|
// Create object to hash
|
|
combinedObj = append(params.BeaconNetworkConfig().MessageDomainValidSnappy[:], topicLenBytes...)
|
|
combinedObj = append(combinedObj, tpc...)
|
|
combinedObj = append(combinedObj, validObj[:]...)
|
|
hashedData = hash.Hash(combinedObj)
|
|
msgID = string(hashedData[:20])
|
|
assert.Equal(t, msgID, p2p.MsgID(genesisValidatorsRoot, nMsg), "Got incorrect msg id")
|
|
}
|
|
|
|
func TestMsgID_WithNilTopic(t *testing.T) {
|
|
msg := &pubsubpb.Message{
|
|
Data: make([]byte, 32),
|
|
Topic: nil,
|
|
}
|
|
|
|
invalid := make([]byte, 20)
|
|
copy(invalid, "invalid")
|
|
|
|
res := p2p.MsgID([]byte{0x01}, msg)
|
|
assert.Equal(t, res, string(invalid))
|
|
}
|