mirror of
https://github.com/OffchainLabs/prysm.git
synced 2026-01-08 21:08:10 -05:00
* Revert "Revert "Update fastssz" (#7100)"
This reverts commit b954db9704.
* Preston's patch
* Merge branch 'master' of github.com:prysmaticlabs/prysm into revert-7100-revert-6760-update-fssz
* Update fssz, add regression test case
* more HTR with fssz
* fix some tests
* only one test left
* Make it so that HTR will work
* gofmt, imports
* gofmt, imports
* fix
* Merge branch 'master' of github.com:prysmaticlabs/prysm into revert-7100-revert-6760-update-fssz
* fix
* Merge branch 'master' into revert-7100-revert-6760-update-fssz
* Merge refs/heads/master into revert-7100-revert-6760-update-fssz
* gaz
* Merge branch 'revert-7100-revert-6760-update-fssz' of github.com:prysmaticlabs/prysm into revert-7100-revert-6760-update-fssz
* Merge refs/heads/master into revert-7100-revert-6760-update-fssz
* fix test
* Merge branch 'revert-7100-revert-6760-update-fssz' of github.com:prysmaticlabs/prysm into revert-7100-revert-6760-update-fssz
* Merge refs/heads/master into revert-7100-revert-6760-update-fssz
83 lines
3.3 KiB
Go
83 lines
3.3 KiB
Go
package helpers_test
|
|
|
|
import (
|
|
"bytes"
|
|
"testing"
|
|
|
|
fuzz "github.com/google/gofuzz"
|
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
|
ethereum_beacon_p2p_v1 "github.com/prysmaticlabs/prysm/proto/beacon/p2p/v1"
|
|
"github.com/prysmaticlabs/prysm/shared/bytesutil"
|
|
"github.com/prysmaticlabs/prysm/shared/testutil"
|
|
"github.com/prysmaticlabs/prysm/shared/testutil/assert"
|
|
"github.com/prysmaticlabs/prysm/shared/testutil/require"
|
|
)
|
|
|
|
func TestSigningRoot_ComputeOK(t *testing.T) {
|
|
emptyBlock := testutil.NewBeaconBlock()
|
|
_, err := helpers.ComputeSigningRoot(emptyBlock, bytesutil.PadTo([]byte{'T', 'E', 'S', 'T'}, 32))
|
|
assert.NoError(t, err, "Could not compute signing root of block")
|
|
}
|
|
|
|
func TestComputeDomain_OK(t *testing.T) {
|
|
tests := []struct {
|
|
epoch uint64
|
|
domainType [4]byte
|
|
domain []byte
|
|
}{
|
|
{epoch: 1, domainType: [4]byte{4, 0, 0, 0}, domain: []byte{4, 0, 0, 0, 245, 165, 253, 66, 209, 106, 32, 48, 39, 152, 239, 110, 211, 9, 151, 155, 67, 0, 61, 35, 32, 217, 240, 232, 234, 152, 49, 169}},
|
|
{epoch: 2, domainType: [4]byte{4, 0, 0, 0}, domain: []byte{4, 0, 0, 0, 245, 165, 253, 66, 209, 106, 32, 48, 39, 152, 239, 110, 211, 9, 151, 155, 67, 0, 61, 35, 32, 217, 240, 232, 234, 152, 49, 169}},
|
|
{epoch: 2, domainType: [4]byte{5, 0, 0, 0}, domain: []byte{5, 0, 0, 0, 245, 165, 253, 66, 209, 106, 32, 48, 39, 152, 239, 110, 211, 9, 151, 155, 67, 0, 61, 35, 32, 217, 240, 232, 234, 152, 49, 169}},
|
|
{epoch: 3, domainType: [4]byte{4, 0, 0, 0}, domain: []byte{4, 0, 0, 0, 245, 165, 253, 66, 209, 106, 32, 48, 39, 152, 239, 110, 211, 9, 151, 155, 67, 0, 61, 35, 32, 217, 240, 232, 234, 152, 49, 169}},
|
|
{epoch: 3, domainType: [4]byte{5, 0, 0, 0}, domain: []byte{5, 0, 0, 0, 245, 165, 253, 66, 209, 106, 32, 48, 39, 152, 239, 110, 211, 9, 151, 155, 67, 0, 61, 35, 32, 217, 240, 232, 234, 152, 49, 169}},
|
|
}
|
|
for _, tt := range tests {
|
|
if got, err := helpers.ComputeDomain(tt.domainType, nil, nil); !bytes.Equal(got, tt.domain) {
|
|
t.Errorf("wanted domain version: %d, got: %d", tt.domain, got)
|
|
} else {
|
|
require.NoError(t, err)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestComputeForkDigest_OK(t *testing.T) {
|
|
tests := []struct {
|
|
version []byte
|
|
root [32]byte
|
|
result [4]byte
|
|
}{
|
|
{version: []byte{'A', 'B', 'C', 'D'}, root: [32]byte{'i', 'o', 'p'}, result: [4]byte{0x69, 0x5c, 0x26, 0x47}},
|
|
{version: []byte{'i', 'm', 'n', 'a'}, root: [32]byte{'z', 'a', 'b'}, result: [4]byte{0x1c, 0x38, 0x84, 0x58}},
|
|
{version: []byte{'b', 'w', 'r', 't'}, root: [32]byte{'r', 'd', 'c'}, result: [4]byte{0x83, 0x34, 0x38, 0x88}},
|
|
}
|
|
for _, tt := range tests {
|
|
digest, err := helpers.ComputeForkDigest(tt.version, tt.root[:])
|
|
require.NoError(t, err)
|
|
assert.Equal(t, tt.result, digest, "Wanted domain version: %#x, got: %#x", digest, tt.result)
|
|
}
|
|
}
|
|
|
|
func TestFuzzverifySigningRoot_10000(t *testing.T) {
|
|
fuzzer := fuzz.NewWithSeed(0)
|
|
state := ðereum_beacon_p2p_v1.BeaconState{}
|
|
pubkey := [48]byte{}
|
|
sig := [96]byte{}
|
|
domain := [4]byte{}
|
|
p := []byte{}
|
|
s := []byte{}
|
|
d := []byte{}
|
|
for i := 0; i < 10000; i++ {
|
|
fuzzer.Fuzz(state)
|
|
fuzzer.Fuzz(&pubkey)
|
|
fuzzer.Fuzz(&sig)
|
|
fuzzer.Fuzz(&domain)
|
|
fuzzer.Fuzz(state)
|
|
fuzzer.Fuzz(&p)
|
|
fuzzer.Fuzz(&s)
|
|
fuzzer.Fuzz(&d)
|
|
err := helpers.VerifySigningRoot(state, pubkey[:], sig[:], domain[:])
|
|
err = helpers.VerifySigningRoot(state, p, s, d)
|
|
_ = err
|
|
}
|
|
}
|