2021-08-20 14:38:35 +00:00
|
|
|
package blocks_test
|
|
|
|
|
|
|
|
import (
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/blocks"
|
|
|
|
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
|
2021-09-21 19:59:25 +00:00
|
|
|
"github.com/prysmaticlabs/prysm/config/params"
|
2021-08-20 14:38:35 +00:00
|
|
|
ethpb "github.com/prysmaticlabs/prysm/proto/prysm/v1alpha1"
|
2021-09-07 18:43:50 +00:00
|
|
|
"github.com/prysmaticlabs/prysm/proto/prysm/v1alpha1/wrapper"
|
2021-08-20 14:38:35 +00:00
|
|
|
"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 TestVerifyBlockSignatureUsingCurrentFork(t *testing.T) {
|
|
|
|
params.SetupTestConfigCleanup(t)
|
|
|
|
bCfg := params.BeaconConfig()
|
|
|
|
bCfg.AltairForkEpoch = 100
|
|
|
|
bCfg.ForkVersionSchedule[bytesutil.ToBytes4(bCfg.AltairForkVersion)] = 100
|
|
|
|
params.OverrideBeaconConfig(bCfg)
|
|
|
|
bState, keys := testutil.DeterministicGenesisState(t, 100)
|
|
|
|
altairBlk := testutil.NewBeaconBlockAltair()
|
|
|
|
altairBlk.Block.ProposerIndex = 0
|
|
|
|
altairBlk.Block.Slot = params.BeaconConfig().SlotsPerEpoch * 100
|
|
|
|
fData := ðpb.Fork{
|
|
|
|
Epoch: 100,
|
|
|
|
CurrentVersion: params.BeaconConfig().AltairForkVersion,
|
|
|
|
PreviousVersion: params.BeaconConfig().GenesisForkVersion,
|
|
|
|
}
|
|
|
|
domain, err := helpers.Domain(fData, 100, params.BeaconConfig().DomainBeaconProposer, bState.GenesisValidatorRoot())
|
|
|
|
assert.NoError(t, err)
|
|
|
|
rt, err := helpers.ComputeSigningRoot(altairBlk.Block, domain)
|
|
|
|
assert.NoError(t, err)
|
|
|
|
sig := keys[0].Sign(rt[:]).Marshal()
|
|
|
|
altairBlk.Signature = sig
|
2021-09-07 18:43:50 +00:00
|
|
|
wsb, err := wrapper.WrappedAltairSignedBeaconBlock(altairBlk)
|
2021-08-20 14:38:35 +00:00
|
|
|
require.NoError(t, err)
|
|
|
|
assert.NoError(t, blocks.VerifyBlockSignatureUsingCurrentFork(bState, wsb))
|
|
|
|
}
|