diff --git a/beacon-chain/blockchain/BUILD.bazel b/beacon-chain/blockchain/BUILD.bazel index 61a308b8f2..587ef9ad23 100644 --- a/beacon-chain/blockchain/BUILD.bazel +++ b/beacon-chain/blockchain/BUILD.bazel @@ -34,6 +34,7 @@ go_library( "//beacon-chain/core/feed:go_default_library", "//beacon-chain/core/feed/state:go_default_library", "//beacon-chain/core/helpers:go_default_library", + "//beacon-chain/core/signing:go_default_library", "//beacon-chain/core/transition:go_default_library", "//beacon-chain/db:go_default_library", "//beacon-chain/db/filters:go_default_library", diff --git a/beacon-chain/blockchain/head_sync_committee_info.go b/beacon-chain/blockchain/head_sync_committee_info.go index faae6511f5..84c2a35b5d 100644 --- a/beacon-chain/blockchain/head_sync_committee_info.go +++ b/beacon-chain/blockchain/head_sync_committee_info.go @@ -11,6 +11,7 @@ import ( "github.com/prysmaticlabs/prysm/beacon-chain/core" "github.com/prysmaticlabs/prysm/beacon-chain/core/altair" "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" "github.com/prysmaticlabs/prysm/beacon-chain/core/transition" "github.com/prysmaticlabs/prysm/beacon-chain/state" "github.com/prysmaticlabs/prysm/config/params" @@ -129,7 +130,7 @@ func (s *Service) domainWithHeadState(ctx context.Context, slot types.Slot, doma if err != nil { return nil, err } - return helpers.Domain(headState.Fork(), core.SlotToEpoch(headState.Slot()), domain, headState.GenesisValidatorRoot()) + return signing.Domain(headState.Fork(), core.SlotToEpoch(headState.Slot()), domain, headState.GenesisValidatorRoot()) } // returns the head state that is advanced up to `slot`. It utilizes the cache `syncCommitteeHeadState` by retrieving using `slot` as key. diff --git a/beacon-chain/blockchain/head_sync_committee_info_test.go b/beacon-chain/blockchain/head_sync_committee_info_test.go index 7e4dd2b7a4..4ce7503214 100644 --- a/beacon-chain/blockchain/head_sync_committee_info_test.go +++ b/beacon-chain/blockchain/head_sync_committee_info_test.go @@ -7,7 +7,7 @@ import ( types "github.com/prysmaticlabs/eth2-types" "github.com/prysmaticlabs/prysm/beacon-chain/cache" "github.com/prysmaticlabs/prysm/beacon-chain/core" - "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" dbtest "github.com/prysmaticlabs/prysm/beacon-chain/db/testing" "github.com/prysmaticlabs/prysm/beacon-chain/state/stategen" "github.com/prysmaticlabs/prysm/config/params" @@ -122,7 +122,7 @@ func TestService_HeadSyncCommitteeDomain(t *testing.T) { c := &Service{} c.head = &head{state: s} - wanted, err := helpers.Domain(s.Fork(), core.SlotToEpoch(s.Slot()), params.BeaconConfig().DomainSyncCommittee, s.GenesisValidatorRoot()) + wanted, err := signing.Domain(s.Fork(), core.SlotToEpoch(s.Slot()), params.BeaconConfig().DomainSyncCommittee, s.GenesisValidatorRoot()) require.NoError(t, err) d, err := c.HeadSyncCommitteeDomain(context.Background(), 0) @@ -136,7 +136,7 @@ func TestService_HeadSyncContributionProofDomain(t *testing.T) { c := &Service{} c.head = &head{state: s} - wanted, err := helpers.Domain(s.Fork(), core.SlotToEpoch(s.Slot()), params.BeaconConfig().DomainContributionAndProof, s.GenesisValidatorRoot()) + wanted, err := signing.Domain(s.Fork(), core.SlotToEpoch(s.Slot()), params.BeaconConfig().DomainContributionAndProof, s.GenesisValidatorRoot()) require.NoError(t, err) d, err := c.HeadSyncContributionProofDomain(context.Background(), 0) @@ -150,7 +150,7 @@ func TestService_HeadSyncSelectionProofDomain(t *testing.T) { c := &Service{} c.head = &head{state: s} - wanted, err := helpers.Domain(s.Fork(), core.SlotToEpoch(s.Slot()), params.BeaconConfig().DomainSyncCommitteeSelectionProof, s.GenesisValidatorRoot()) + wanted, err := signing.Domain(s.Fork(), core.SlotToEpoch(s.Slot()), params.BeaconConfig().DomainSyncCommitteeSelectionProof, s.GenesisValidatorRoot()) require.NoError(t, err) d, err := c.HeadSyncSelectionProofDomain(context.Background(), 0) diff --git a/beacon-chain/core/altair/BUILD.bazel b/beacon-chain/core/altair/BUILD.bazel index 5b21bd9d35..64f7b3f0f7 100644 --- a/beacon-chain/core/altair/BUILD.bazel +++ b/beacon-chain/core/altair/BUILD.bazel @@ -26,6 +26,7 @@ go_library( "//beacon-chain/core/epoch:go_default_library", "//beacon-chain/core/epoch/precompute:go_default_library", "//beacon-chain/core/helpers:go_default_library", + "//beacon-chain/core/signing:go_default_library", "//beacon-chain/p2p/types:go_default_library", "//beacon-chain/state:go_default_library", "//beacon-chain/state/v2:go_default_library", @@ -64,6 +65,7 @@ go_test( "//beacon-chain/core/epoch:go_default_library", "//beacon-chain/core/epoch/precompute:go_default_library", "//beacon-chain/core/helpers:go_default_library", + "//beacon-chain/core/signing:go_default_library", "//beacon-chain/p2p/types:go_default_library", "//beacon-chain/state:go_default_library", "//beacon-chain/state/v2:go_default_library", diff --git a/beacon-chain/core/altair/attestation_test.go b/beacon-chain/core/altair/attestation_test.go index 25132f3ca4..76ebe0b719 100644 --- a/beacon-chain/core/altair/attestation_test.go +++ b/beacon-chain/core/altair/attestation_test.go @@ -11,6 +11,7 @@ import ( "github.com/prysmaticlabs/prysm/beacon-chain/core" "github.com/prysmaticlabs/prysm/beacon-chain/core/altair" "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" "github.com/prysmaticlabs/prysm/beacon-chain/state" stateAltair "github.com/prysmaticlabs/prysm/beacon-chain/state/v2" "github.com/prysmaticlabs/prysm/config/params" @@ -217,7 +218,7 @@ func TestProcessAttestations_OK(t *testing.T) { require.NoError(t, err) sigs := make([]bls.Signature, len(attestingIndices)) for i, indice := range attestingIndices { - sb, err := helpers.ComputeDomainAndSign(beaconState, 0, att.Data, params.BeaconConfig().DomainBeaconAttester, privKeys[indice]) + sb, err := signing.ComputeDomainAndSign(beaconState, 0, att.Data, params.BeaconConfig().DomainBeaconAttester, privKeys[indice]) require.NoError(t, err) sig, err := bls.SignatureFromBytes(sb) require.NoError(t, err) diff --git a/beacon-chain/core/altair/block.go b/beacon-chain/core/altair/block.go index a6c04f4ad4..4a00e1b143 100644 --- a/beacon-chain/core/altair/block.go +++ b/beacon-chain/core/altair/block.go @@ -7,6 +7,7 @@ import ( types "github.com/prysmaticlabs/eth2-types" "github.com/prysmaticlabs/prysm/beacon-chain/core" "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" p2pType "github.com/prysmaticlabs/prysm/beacon-chain/p2p/types" "github.com/prysmaticlabs/prysm/beacon-chain/state" "github.com/prysmaticlabs/prysm/config/params" @@ -101,7 +102,7 @@ func FilterSyncCommitteeVotes(s state.BeaconStateAltair, sync *ethpb.SyncAggrega // VerifySyncCommitteeSig verifies sync committee signature `syncSig` is valid with respect to public keys `syncKeys`. func VerifySyncCommitteeSig(s state.BeaconStateAltair, syncKeys []bls.PublicKey, syncSig []byte) error { ps := core.PrevSlot(s.Slot()) - d, err := helpers.Domain(s.Fork(), core.SlotToEpoch(ps), params.BeaconConfig().DomainSyncCommittee, s.GenesisValidatorRoot()) + d, err := signing.Domain(s.Fork(), core.SlotToEpoch(ps), params.BeaconConfig().DomainSyncCommittee, s.GenesisValidatorRoot()) if err != nil { return err } @@ -110,7 +111,7 @@ func VerifySyncCommitteeSig(s state.BeaconStateAltair, syncKeys []bls.PublicKey, return err } sszBytes := p2pType.SSZBytes(pbr) - r, err := helpers.ComputeSigningRoot(&sszBytes, d) + r, err := signing.ComputeSigningRoot(&sszBytes, d) if err != nil { return err } diff --git a/beacon-chain/core/altair/block_test.go b/beacon-chain/core/altair/block_test.go index 47a00bf6aa..c185b97b4f 100644 --- a/beacon-chain/core/altair/block_test.go +++ b/beacon-chain/core/altair/block_test.go @@ -10,6 +10,7 @@ import ( "github.com/prysmaticlabs/prysm/beacon-chain/core" "github.com/prysmaticlabs/prysm/beacon-chain/core/altair" "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" p2pType "github.com/prysmaticlabs/prysm/beacon-chain/p2p/types" "github.com/prysmaticlabs/prysm/config/params" "github.com/prysmaticlabs/prysm/crypto/bls" @@ -38,7 +39,7 @@ func TestProcessSyncCommittee_PerfectParticipation(t *testing.T) { sigs := make([]bls.Signature, len(indices)) for i, indice := range indices { b := p2pType.SSZBytes(pbr) - sb, err := helpers.ComputeDomainAndSign(beaconState, core.CurrentEpoch(beaconState), &b, params.BeaconConfig().DomainSyncCommittee, privKeys[indice]) + sb, err := signing.ComputeDomainAndSign(beaconState, core.CurrentEpoch(beaconState), &b, params.BeaconConfig().DomainSyncCommittee, privKeys[indice]) require.NoError(t, err) sig, err := bls.SignatureFromBytes(sb) require.NoError(t, err) @@ -112,7 +113,7 @@ func TestProcessSyncCommittee_MixParticipation_BadSignature(t *testing.T) { sigs := make([]bls.Signature, len(indices)) for i, indice := range indices { b := p2pType.SSZBytes(pbr) - sb, err := helpers.ComputeDomainAndSign(beaconState, core.CurrentEpoch(beaconState), &b, params.BeaconConfig().DomainSyncCommittee, privKeys[indice]) + sb, err := signing.ComputeDomainAndSign(beaconState, core.CurrentEpoch(beaconState), &b, params.BeaconConfig().DomainSyncCommittee, privKeys[indice]) require.NoError(t, err) sig, err := bls.SignatureFromBytes(sb) require.NoError(t, err) @@ -148,7 +149,7 @@ func TestProcessSyncCommittee_MixParticipation_GoodSignature(t *testing.T) { for i, indice := range indices { if syncBits.BitAt(uint64(i)) { b := p2pType.SSZBytes(pbr) - sb, err := helpers.ComputeDomainAndSign(beaconState, core.CurrentEpoch(beaconState), &b, params.BeaconConfig().DomainSyncCommittee, privKeys[indice]) + sb, err := signing.ComputeDomainAndSign(beaconState, core.CurrentEpoch(beaconState), &b, params.BeaconConfig().DomainSyncCommittee, privKeys[indice]) require.NoError(t, err) sig, err := bls.SignatureFromBytes(sb) require.NoError(t, err) @@ -221,7 +222,7 @@ func Test_VerifySyncCommitteeSig(t *testing.T) { pks := make([]bls.PublicKey, len(indices)) for i, indice := range indices { b := p2pType.SSZBytes(pbr) - sb, err := helpers.ComputeDomainAndSign(beaconState, core.CurrentEpoch(beaconState), &b, params.BeaconConfig().DomainSyncCommittee, privKeys[indice]) + sb, err := signing.ComputeDomainAndSign(beaconState, core.CurrentEpoch(beaconState), &b, params.BeaconConfig().DomainSyncCommittee, privKeys[indice]) require.NoError(t, err) sig, err := bls.SignatureFromBytes(sb) require.NoError(t, err) diff --git a/beacon-chain/core/altair/deposit_test.go b/beacon-chain/core/altair/deposit_test.go index e7c7546ede..64e9c57bee 100644 --- a/beacon-chain/core/altair/deposit_test.go +++ b/beacon-chain/core/altair/deposit_test.go @@ -5,7 +5,7 @@ import ( "testing" "github.com/prysmaticlabs/prysm/beacon-chain/core/altair" - "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" stateAltair "github.com/prysmaticlabs/prysm/beacon-chain/state/v2" "github.com/prysmaticlabs/prysm/config/params" "github.com/prysmaticlabs/prysm/container/trie" @@ -119,7 +119,7 @@ func TestProcessDeposits_RepeatedDeposit_IncreasesValidatorBalance(t *testing.T) Signature: make([]byte, 96), }, } - sr, err := helpers.ComputeSigningRoot(deposit.Data, bytesutil.ToBytes(3, 32)) + sr, err := signing.ComputeSigningRoot(deposit.Data, bytesutil.ToBytes(3, 32)) require.NoError(t, err) sig := sk.Sign(sr[:]) deposit.Data.Signature = sig.Marshal() diff --git a/beacon-chain/core/blocks/BUILD.bazel b/beacon-chain/core/blocks/BUILD.bazel index 83a55ab1a9..8e85473067 100644 --- a/beacon-chain/core/blocks/BUILD.bazel +++ b/beacon-chain/core/blocks/BUILD.bazel @@ -26,6 +26,7 @@ go_library( deps = [ "//beacon-chain/core:go_default_library", "//beacon-chain/core/helpers:go_default_library", + "//beacon-chain/core/signing:go_default_library", "//beacon-chain/core/validators:go_default_library", "//beacon-chain/state:go_default_library", "//config/params:go_default_library", @@ -75,6 +76,7 @@ go_test( deps = [ "//beacon-chain/core:go_default_library", "//beacon-chain/core/helpers:go_default_library", + "//beacon-chain/core/signing:go_default_library", "//beacon-chain/core/validators:go_default_library", "//beacon-chain/p2p/types:go_default_library", "//beacon-chain/state:go_default_library", diff --git a/beacon-chain/core/blocks/attestation.go b/beacon-chain/core/blocks/attestation.go index ccc17da414..e9d4342a3b 100644 --- a/beacon-chain/core/blocks/attestation.go +++ b/beacon-chain/core/blocks/attestation.go @@ -8,6 +8,7 @@ import ( types "github.com/prysmaticlabs/eth2-types" "github.com/prysmaticlabs/prysm/beacon-chain/core" "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" "github.com/prysmaticlabs/prysm/beacon-chain/state" "github.com/prysmaticlabs/prysm/config/params" "github.com/prysmaticlabs/prysm/crypto/bls" @@ -203,7 +204,7 @@ func VerifyIndexedAttestation(ctx context.Context, beaconState state.ReadOnlyBea if err := attestation.IsValidAttestationIndices(ctx, indexedAtt); err != nil { return err } - domain, err := helpers.Domain( + domain, err := signing.Domain( beaconState.Fork(), indexedAtt.Data.Target.Epoch, params.BeaconConfig().DomainBeaconAttester, diff --git a/beacon-chain/core/blocks/attestation_test.go b/beacon-chain/core/blocks/attestation_test.go index 8b33a33fcc..efca570468 100644 --- a/beacon-chain/core/blocks/attestation_test.go +++ b/beacon-chain/core/blocks/attestation_test.go @@ -8,6 +8,7 @@ import ( "github.com/prysmaticlabs/go-bitfield" "github.com/prysmaticlabs/prysm/beacon-chain/core/blocks" "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" v1 "github.com/prysmaticlabs/prysm/beacon-chain/state/v1" "github.com/prysmaticlabs/prysm/config/params" "github.com/prysmaticlabs/prysm/crypto/bls" @@ -46,7 +47,7 @@ func TestProcessAggregatedAttestation_OverlappingBits(t *testing.T) { require.NoError(t, err) sigs := make([]bls.Signature, len(attestingIndices1)) for i, indice := range attestingIndices1 { - sb, err := helpers.ComputeDomainAndSign(beaconState, 0, att1.Data, params.BeaconConfig().DomainBeaconAttester, privKeys[indice]) + sb, err := signing.ComputeDomainAndSign(beaconState, 0, att1.Data, params.BeaconConfig().DomainBeaconAttester, privKeys[indice]) require.NoError(t, err) sig, err := bls.SignatureFromBytes(sb) require.NoError(t, err) @@ -68,7 +69,7 @@ func TestProcessAggregatedAttestation_OverlappingBits(t *testing.T) { require.NoError(t, err) sigs = make([]bls.Signature, len(attestingIndices2)) for i, indice := range attestingIndices2 { - sb, err := helpers.ComputeDomainAndSign(beaconState, 0, att2.Data, params.BeaconConfig().DomainBeaconAttester, privKeys[indice]) + sb, err := signing.ComputeDomainAndSign(beaconState, 0, att2.Data, params.BeaconConfig().DomainBeaconAttester, privKeys[indice]) require.NoError(t, err) sig, err := bls.SignatureFromBytes(sb) require.NoError(t, err) @@ -304,7 +305,7 @@ func TestVerifyIndexedAttestation_OK(t *testing.T) { for _, tt := range tests { var sig []bls.Signature for _, idx := range tt.attestation.AttestingIndices { - sb, err := helpers.ComputeDomainAndSign(state, tt.attestation.Data.Target.Epoch, tt.attestation.Data, params.BeaconConfig().DomainBeaconAttester, keys[idx]) + sb, err := signing.ComputeDomainAndSign(state, tt.attestation.Data.Target.Epoch, tt.attestation.Data, params.BeaconConfig().DomainBeaconAttester, keys[idx]) require.NoError(t, err) validatorSig, err := bls.SignatureFromBytes(sb) require.NoError(t, err) @@ -413,9 +414,9 @@ func TestVerifyAttestations_HandlesPlannedFork(t *testing.T) { Slot: 1, }, }) - prevDomain, err := helpers.Domain(st.Fork(), st.Fork().Epoch-1, params.BeaconConfig().DomainBeaconAttester, st.GenesisValidatorRoot()) + prevDomain, err := signing.Domain(st.Fork(), st.Fork().Epoch-1, params.BeaconConfig().DomainBeaconAttester, st.GenesisValidatorRoot()) require.NoError(t, err) - root, err := helpers.ComputeSigningRoot(att1.Data, prevDomain) + root, err := signing.ComputeSigningRoot(att1.Data, prevDomain) require.NoError(t, err) var sigs []bls.Signature for i, u := range comm1 { @@ -433,9 +434,9 @@ func TestVerifyAttestations_HandlesPlannedFork(t *testing.T) { CommitteeIndex: 1, }, }) - currDomain, err := helpers.Domain(st.Fork(), st.Fork().Epoch, params.BeaconConfig().DomainBeaconAttester, st.GenesisValidatorRoot()) + currDomain, err := signing.Domain(st.Fork(), st.Fork().Epoch, params.BeaconConfig().DomainBeaconAttester, st.GenesisValidatorRoot()) require.NoError(t, err) - root, err = helpers.ComputeSigningRoot(att2.Data, currDomain) + root, err = signing.ComputeSigningRoot(att2.Data, currDomain) require.NoError(t, err) sigs = nil for i, u := range comm2 { @@ -472,9 +473,9 @@ func TestRetrieveAttestationSignatureSet_VerifiesMultipleAttestations(t *testing Slot: 1, }, }) - domain, err := helpers.Domain(st.Fork(), st.Fork().Epoch, params.BeaconConfig().DomainBeaconAttester, st.GenesisValidatorRoot()) + domain, err := signing.Domain(st.Fork(), st.Fork().Epoch, params.BeaconConfig().DomainBeaconAttester, st.GenesisValidatorRoot()) require.NoError(t, err) - root, err := helpers.ComputeSigningRoot(att1.Data, domain) + root, err := signing.ComputeSigningRoot(att1.Data, domain) require.NoError(t, err) var sigs []bls.Signature for i, u := range comm1 { @@ -492,7 +493,7 @@ func TestRetrieveAttestationSignatureSet_VerifiesMultipleAttestations(t *testing CommitteeIndex: 1, }, }) - root, err = helpers.ComputeSigningRoot(att2.Data, domain) + root, err = signing.ComputeSigningRoot(att2.Data, domain) require.NoError(t, err) sigs = nil for i, u := range comm2 { @@ -536,9 +537,9 @@ func TestRetrieveAttestationSignatureSet_AcrossFork(t *testing.T) { Slot: 1, }, }) - domain, err := helpers.Domain(st.Fork(), st.Fork().Epoch, params.BeaconConfig().DomainBeaconAttester, st.GenesisValidatorRoot()) + domain, err := signing.Domain(st.Fork(), st.Fork().Epoch, params.BeaconConfig().DomainBeaconAttester, st.GenesisValidatorRoot()) require.NoError(t, err) - root, err := helpers.ComputeSigningRoot(att1.Data, domain) + root, err := signing.ComputeSigningRoot(att1.Data, domain) require.NoError(t, err) var sigs []bls.Signature for i, u := range comm1 { @@ -556,7 +557,7 @@ func TestRetrieveAttestationSignatureSet_AcrossFork(t *testing.T) { CommitteeIndex: 1, }, }) - root, err = helpers.ComputeSigningRoot(att2.Data, domain) + root, err = signing.ComputeSigningRoot(att2.Data, domain) require.NoError(t, err) sigs = nil for i, u := range comm2 { diff --git a/beacon-chain/core/blocks/attester_slashing_test.go b/beacon-chain/core/blocks/attester_slashing_test.go index a976d94e59..2f60e1cb03 100644 --- a/beacon-chain/core/blocks/attester_slashing_test.go +++ b/beacon-chain/core/blocks/attester_slashing_test.go @@ -6,7 +6,7 @@ import ( types "github.com/prysmaticlabs/eth2-types" "github.com/prysmaticlabs/prysm/beacon-chain/core/blocks" - "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" v "github.com/prysmaticlabs/prysm/beacon-chain/core/validators" v1 "github.com/prysmaticlabs/prysm/beacon-chain/state/v1" "github.com/prysmaticlabs/prysm/config/params" @@ -108,9 +108,9 @@ func TestProcessAttesterSlashings_AppliesCorrectStatus(t *testing.T) { }, AttestingIndices: []uint64{0, 1}, }) - domain, err := helpers.Domain(beaconState.Fork(), 0, params.BeaconConfig().DomainBeaconAttester, beaconState.GenesisValidatorRoot()) + domain, err := signing.Domain(beaconState.Fork(), 0, params.BeaconConfig().DomainBeaconAttester, beaconState.GenesisValidatorRoot()) require.NoError(t, err) - signingRoot, err := helpers.ComputeSigningRoot(att1.Data, domain) + signingRoot, err := signing.ComputeSigningRoot(att1.Data, domain) assert.NoError(t, err, "Could not get signing root of beacon block header") sig0 := privKeys[0].Sign(signingRoot[:]) sig1 := privKeys[1].Sign(signingRoot[:]) @@ -120,7 +120,7 @@ func TestProcessAttesterSlashings_AppliesCorrectStatus(t *testing.T) { att2 := util.HydrateIndexedAttestation(ðpb.IndexedAttestation{ AttestingIndices: []uint64{0, 1}, }) - signingRoot, err = helpers.ComputeSigningRoot(att2.Data, domain) + signingRoot, err = signing.ComputeSigningRoot(att2.Data, domain) assert.NoError(t, err, "Could not get signing root of beacon block header") sig0 = privKeys[0].Sign(signingRoot[:]) sig1 = privKeys[1].Sign(signingRoot[:]) @@ -177,9 +177,9 @@ func TestProcessAttesterSlashings_AppliesCorrectStatusAltair(t *testing.T) { }, AttestingIndices: []uint64{0, 1}, }) - domain, err := helpers.Domain(beaconState.Fork(), 0, params.BeaconConfig().DomainBeaconAttester, beaconState.GenesisValidatorRoot()) + domain, err := signing.Domain(beaconState.Fork(), 0, params.BeaconConfig().DomainBeaconAttester, beaconState.GenesisValidatorRoot()) require.NoError(t, err) - signingRoot, err := helpers.ComputeSigningRoot(att1.Data, domain) + signingRoot, err := signing.ComputeSigningRoot(att1.Data, domain) assert.NoError(t, err, "Could not get signing root of beacon block header") sig0 := privKeys[0].Sign(signingRoot[:]) sig1 := privKeys[1].Sign(signingRoot[:]) @@ -189,7 +189,7 @@ func TestProcessAttesterSlashings_AppliesCorrectStatusAltair(t *testing.T) { att2 := util.HydrateIndexedAttestation(ðpb.IndexedAttestation{ AttestingIndices: []uint64{0, 1}, }) - signingRoot, err = helpers.ComputeSigningRoot(att2.Data, domain) + signingRoot, err = signing.ComputeSigningRoot(att2.Data, domain) assert.NoError(t, err, "Could not get signing root of beacon block header") sig0 = privKeys[0].Sign(signingRoot[:]) sig1 = privKeys[1].Sign(signingRoot[:]) diff --git a/beacon-chain/core/blocks/block_regression_test.go b/beacon-chain/core/blocks/block_regression_test.go index 6231442338..b5187ce915 100644 --- a/beacon-chain/core/blocks/block_regression_test.go +++ b/beacon-chain/core/blocks/block_regression_test.go @@ -6,7 +6,7 @@ import ( types "github.com/prysmaticlabs/eth2-types" "github.com/prysmaticlabs/prysm/beacon-chain/core/blocks" - "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" v "github.com/prysmaticlabs/prysm/beacon-chain/core/validators" "github.com/prysmaticlabs/prysm/config/params" "github.com/prysmaticlabs/prysm/crypto/bls" @@ -44,9 +44,9 @@ func TestProcessAttesterSlashings_RegressionSlashableIndices(t *testing.T) { AttestingIndices: setA, Signature: make([]byte, 96), } - domain, err := helpers.Domain(beaconState.Fork(), 0, params.BeaconConfig().DomainBeaconAttester, beaconState.GenesisValidatorRoot()) + domain, err := signing.Domain(beaconState.Fork(), 0, params.BeaconConfig().DomainBeaconAttester, beaconState.GenesisValidatorRoot()) require.NoError(t, err) - signingRoot, err := helpers.ComputeSigningRoot(att1.Data, domain) + signingRoot, err := signing.ComputeSigningRoot(att1.Data, domain) require.NoError(t, err, "Could not get signing root of beacon block header") var aggSigs []bls.Signature for _, index := range setA { @@ -64,7 +64,7 @@ func TestProcessAttesterSlashings_RegressionSlashableIndices(t *testing.T) { AttestingIndices: setB, Signature: make([]byte, 96), } - signingRoot, err = helpers.ComputeSigningRoot(att2.Data, domain) + signingRoot, err = signing.ComputeSigningRoot(att2.Data, domain) assert.NoError(t, err, "Could not get signing root of beacon block header") aggSigs = []bls.Signature{} for _, index := range setB { diff --git a/beacon-chain/core/blocks/deposit.go b/beacon-chain/core/blocks/deposit.go index 9ec30a4e8a..7e7c9ec58f 100644 --- a/beacon-chain/core/blocks/deposit.go +++ b/beacon-chain/core/blocks/deposit.go @@ -6,6 +6,7 @@ import ( "github.com/pkg/errors" "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" "github.com/prysmaticlabs/prysm/beacon-chain/state" "github.com/prysmaticlabs/prysm/config/params" "github.com/prysmaticlabs/prysm/container/trie" @@ -99,7 +100,7 @@ func ProcessDeposits( // BatchVerifyDepositsSignatures batch verifies deposit signatures. func BatchVerifyDepositsSignatures(ctx context.Context, deposits []*ethpb.Deposit) (bool, error) { var err error - domain, err := helpers.ComputeDomain(params.BeaconConfig().DomainDeposit, nil, nil) + domain, err := signing.ComputeDomain(params.BeaconConfig().DomainDeposit, nil, nil) if err != nil { return false, err } @@ -169,7 +170,7 @@ func ProcessDeposit(beaconState state.BeaconState, deposit *ethpb.Deposit, verif index, ok := beaconState.ValidatorIndexByPubkey(bytesutil.ToBytes48(pubKey)) if !ok { if verifySignature { - domain, err := helpers.ComputeDomain(params.BeaconConfig().DomainDeposit, nil, nil) + domain, err := signing.ComputeDomain(params.BeaconConfig().DomainDeposit, nil, nil) if err != nil { return nil, newValidator, err } @@ -266,7 +267,7 @@ func verifyDepositDataWithDomain(ctx context.Context, deps []*ethpb.Deposit, dom WithdrawalCredentials: dep.Data.WithdrawalCredentials, Amount: dep.Data.Amount, } - sr, err := helpers.ComputeSigningRoot(depositMessage, domain) + sr, err := signing.ComputeSigningRoot(depositMessage, domain) if err != nil { return err } diff --git a/beacon-chain/core/blocks/deposit_test.go b/beacon-chain/core/blocks/deposit_test.go index 7425dc097b..020cfba881 100644 --- a/beacon-chain/core/blocks/deposit_test.go +++ b/beacon-chain/core/blocks/deposit_test.go @@ -6,7 +6,7 @@ import ( types "github.com/prysmaticlabs/eth2-types" "github.com/prysmaticlabs/prysm/beacon-chain/core/blocks" - "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" v1 "github.com/prysmaticlabs/prysm/beacon-chain/state/v1" "github.com/prysmaticlabs/prysm/config/params" "github.com/prysmaticlabs/prysm/container/trie" @@ -142,7 +142,7 @@ func TestProcessDeposits_RepeatedDeposit_IncreasesValidatorBalance(t *testing.T) Signature: make([]byte, 96), }, } - sr, err := helpers.ComputeSigningRoot(deposit.Data, bytesutil.ToBytes(3, 32)) + sr, err := signing.ComputeSigningRoot(deposit.Data, bytesutil.ToBytes(3, 32)) require.NoError(t, err) sig := sk.Sign(sr[:]) deposit.Data.Signature = sig.Marshal() @@ -351,7 +351,7 @@ func TestProcessDeposit_RepeatedDeposit_IncreasesValidatorBalance(t *testing.T) Signature: make([]byte, 96), }, } - sr, err := helpers.ComputeSigningRoot(deposit.Data, bytesutil.ToBytes(3, 32)) + sr, err := signing.ComputeSigningRoot(deposit.Data, bytesutil.ToBytes(3, 32)) require.NoError(t, err) sig := sk.Sign(sr[:]) deposit.Data.Signature = sig.Marshal() diff --git a/beacon-chain/core/blocks/exit.go b/beacon-chain/core/blocks/exit.go index 51d67f71cc..0db626fc95 100644 --- a/beacon-chain/core/blocks/exit.go +++ b/beacon-chain/core/blocks/exit.go @@ -8,6 +8,7 @@ import ( types "github.com/prysmaticlabs/eth2-types" "github.com/prysmaticlabs/prysm/beacon-chain/core" "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" v "github.com/prysmaticlabs/prysm/beacon-chain/core/validators" "github.com/prysmaticlabs/prysm/beacon-chain/state" "github.com/prysmaticlabs/prysm/config/params" @@ -102,13 +103,13 @@ func VerifyExitAndSignature( if err := verifyExitConditions(validator, currentSlot, exit); err != nil { return err } - domain, err := helpers.Domain(fork, exit.Epoch, params.BeaconConfig().DomainVoluntaryExit, genesisRoot) + domain, err := signing.Domain(fork, exit.Epoch, params.BeaconConfig().DomainVoluntaryExit, genesisRoot) if err != nil { return err } valPubKey := validator.PublicKey() - if err := helpers.VerifySigningRoot(exit, valPubKey[:], signed.Signature, domain); err != nil { - return helpers.ErrSigFailedToVerify + if err := signing.VerifySigningRoot(exit, valPubKey[:], signed.Signature, domain); err != nil { + return signing.ErrSigFailedToVerify } return nil } diff --git a/beacon-chain/core/blocks/exit_test.go b/beacon-chain/core/blocks/exit_test.go index 6032fd393f..69e0b1215c 100644 --- a/beacon-chain/core/blocks/exit_test.go +++ b/beacon-chain/core/blocks/exit_test.go @@ -8,6 +8,7 @@ import ( "github.com/prysmaticlabs/prysm/beacon-chain/core" "github.com/prysmaticlabs/prysm/beacon-chain/core/blocks" "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" v1 "github.com/prysmaticlabs/prysm/beacon-chain/state/v1" "github.com/prysmaticlabs/prysm/config/params" "github.com/prysmaticlabs/prysm/crypto/bls" @@ -112,7 +113,7 @@ func TestProcessVoluntaryExits_AppliesCorrectStatus(t *testing.T) { require.NoError(t, err) val.PublicKey = priv.PublicKey().Marshal() require.NoError(t, state.UpdateValidatorAtIndex(0, val)) - exits[0].Signature, err = helpers.ComputeDomainAndSign(state, core.CurrentEpoch(state), exits[0].Exit, params.BeaconConfig().DomainVoluntaryExit, priv) + exits[0].Signature, err = signing.ComputeDomainAndSign(state, core.CurrentEpoch(state), exits[0].Exit, params.BeaconConfig().DomainVoluntaryExit, priv) require.NoError(t, err) b := util.NewBeaconBlock() diff --git a/beacon-chain/core/blocks/header_test.go b/beacon-chain/core/blocks/header_test.go index 0d2b0d2586..d099d58923 100644 --- a/beacon-chain/core/blocks/header_test.go +++ b/beacon-chain/core/blocks/header_test.go @@ -8,6 +8,7 @@ import ( "github.com/prysmaticlabs/prysm/beacon-chain/core" "github.com/prysmaticlabs/prysm/beacon-chain/core/blocks" "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" p2ptypes "github.com/prysmaticlabs/prysm/beacon-chain/p2p/types" "github.com/prysmaticlabs/prysm/config/params" "github.com/prysmaticlabs/prysm/crypto/bls" @@ -57,7 +58,7 @@ func TestProcessBlockHeader_ImproperBlockSlot(t *testing.T) { block.Block.Slot = 10 block.Block.Body.RandaoReveal = bytesutil.PadTo([]byte{'A', 'B', 'C'}, 96) block.Block.ParentRoot = latestBlockSignedRoot[:] - block.Signature, err = helpers.ComputeDomainAndSign(state, currentEpoch, block.Block, params.BeaconConfig().DomainBeaconProposer, priv) + block.Signature, err = signing.ComputeDomainAndSign(state, currentEpoch, block.Block, params.BeaconConfig().DomainBeaconProposer, priv) require.NoError(t, err) proposerIdx, err := helpers.BeaconProposerIndex(context.Background(), state) @@ -90,7 +91,7 @@ func TestProcessBlockHeader_WrongProposerSig(t *testing.T) { block.Block.Slot = 10 block.Block.Body.RandaoReveal = bytesutil.PadTo([]byte{'A', 'B', 'C'}, 96) block.Block.ParentRoot = lbhdr[:] - block.Signature, err = helpers.ComputeDomainAndSign(beaconState, 0, block.Block, params.BeaconConfig().DomainBeaconProposer, privKeys[proposerIdx+1]) + block.Signature, err = signing.ComputeDomainAndSign(beaconState, 0, block.Block, params.BeaconConfig().DomainBeaconProposer, privKeys[proposerIdx+1]) require.NoError(t, err) _, err = blocks.ProcessBlockHeader(context.Background(), beaconState, wrapper.WrappedPhase0SignedBeaconBlock(block)) @@ -124,7 +125,7 @@ func TestProcessBlockHeader_DifferentSlots(t *testing.T) { priv, err := bls.RandKey() require.NoError(t, err) sszBytes := p2ptypes.SSZBytes("hello") - blockSig, err := helpers.ComputeDomainAndSign(state, currentEpoch, &sszBytes, params.BeaconConfig().DomainBeaconProposer, priv) + blockSig, err := signing.ComputeDomainAndSign(state, currentEpoch, &sszBytes, params.BeaconConfig().DomainBeaconProposer, priv) require.NoError(t, err) validators[5896].PublicKey = priv.PublicKey().Marshal() block := util.HydrateSignedBeaconBlock(ðpb.SignedBeaconBlock{ @@ -162,7 +163,7 @@ func TestProcessBlockHeader_PreviousBlockRootNotSignedRoot(t *testing.T) { priv, err := bls.RandKey() require.NoError(t, err) sszBytes := p2ptypes.SSZBytes("hello") - blockSig, err := helpers.ComputeDomainAndSign(state, currentEpoch, &sszBytes, params.BeaconConfig().DomainBeaconProposer, priv) + blockSig, err := signing.ComputeDomainAndSign(state, currentEpoch, &sszBytes, params.BeaconConfig().DomainBeaconProposer, priv) require.NoError(t, err) validators[5896].PublicKey = priv.PublicKey().Marshal() pID, err := helpers.BeaconProposerIndex(context.Background(), state) @@ -203,7 +204,7 @@ func TestProcessBlockHeader_SlashedProposer(t *testing.T) { priv, err := bls.RandKey() require.NoError(t, err) sszBytes := p2ptypes.SSZBytes("hello") - blockSig, err := helpers.ComputeDomainAndSign(state, currentEpoch, &sszBytes, params.BeaconConfig().DomainBeaconProposer, priv) + blockSig, err := signing.ComputeDomainAndSign(state, currentEpoch, &sszBytes, params.BeaconConfig().DomainBeaconProposer, priv) require.NoError(t, err) validators[12683].PublicKey = priv.PublicKey().Marshal() @@ -253,7 +254,7 @@ func TestProcessBlockHeader_OK(t *testing.T) { block.Block.Slot = 10 block.Block.Body.RandaoReveal = bytesutil.PadTo([]byte{'A', 'B', 'C'}, 96) block.Block.ParentRoot = latestBlockSignedRoot[:] - block.Signature, err = helpers.ComputeDomainAndSign(state, currentEpoch, block.Block, params.BeaconConfig().DomainBeaconProposer, priv) + block.Signature, err = signing.ComputeDomainAndSign(state, currentEpoch, block.Block, params.BeaconConfig().DomainBeaconProposer, priv) require.NoError(t, err) bodyRoot, err := block.Block.Body.HashTreeRoot() require.NoError(t, err, "Failed to hash block bytes got") @@ -312,7 +313,7 @@ func TestBlockSignatureSet_OK(t *testing.T) { block.Block.ProposerIndex = pID block.Block.Body.RandaoReveal = bytesutil.PadTo([]byte{'A', 'B', 'C'}, 96) block.Block.ParentRoot = latestBlockSignedRoot[:] - block.Signature, err = helpers.ComputeDomainAndSign(state, currentEpoch, block.Block, params.BeaconConfig().DomainBeaconProposer, priv) + block.Signature, err = signing.ComputeDomainAndSign(state, currentEpoch, block.Block, params.BeaconConfig().DomainBeaconProposer, priv) require.NoError(t, err) proposerIdx, err := helpers.BeaconProposerIndex(context.Background(), state) require.NoError(t, err) diff --git a/beacon-chain/core/blocks/proposer_slashing.go b/beacon-chain/core/blocks/proposer_slashing.go index 7de55e1225..e33e0e4c25 100644 --- a/beacon-chain/core/blocks/proposer_slashing.go +++ b/beacon-chain/core/blocks/proposer_slashing.go @@ -8,6 +8,7 @@ import ( types "github.com/prysmaticlabs/eth2-types" "github.com/prysmaticlabs/prysm/beacon-chain/core" "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" "github.com/prysmaticlabs/prysm/beacon-chain/state" "github.com/prysmaticlabs/prysm/config/params" ethpb "github.com/prysmaticlabs/prysm/proto/prysm/v1alpha1" @@ -97,7 +98,7 @@ func VerifyProposerSlashing( } headers := []*ethpb.SignedBeaconBlockHeader{slashing.Header_1, slashing.Header_2} for _, header := range headers { - if err := helpers.ComputeDomainVerifySigningRoot(beaconState, pIdx, core.SlotToEpoch(hSlot), + if err := signing.ComputeDomainVerifySigningRoot(beaconState, pIdx, core.SlotToEpoch(hSlot), header.Header, params.BeaconConfig().DomainBeaconProposer, header.Signature); err != nil { return errors.Wrap(err, "could not verify beacon block header") } diff --git a/beacon-chain/core/blocks/proposer_slashing_test.go b/beacon-chain/core/blocks/proposer_slashing_test.go index 1de8bbb61d..ffcea9b973 100644 --- a/beacon-chain/core/blocks/proposer_slashing_test.go +++ b/beacon-chain/core/blocks/proposer_slashing_test.go @@ -8,7 +8,7 @@ import ( types "github.com/prysmaticlabs/eth2-types" "github.com/prysmaticlabs/prysm/beacon-chain/core" "github.com/prysmaticlabs/prysm/beacon-chain/core/blocks" - "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" v "github.com/prysmaticlabs/prysm/beacon-chain/core/validators" "github.com/prysmaticlabs/prysm/beacon-chain/state" v1 "github.com/prysmaticlabs/prysm/beacon-chain/state/v1" @@ -150,7 +150,7 @@ func TestProcessProposerSlashings_AppliesCorrectStatus(t *testing.T) { }), } var err error - header1.Signature, err = helpers.ComputeDomainAndSign(beaconState, 0, header1.Header, params.BeaconConfig().DomainBeaconProposer, privKeys[proposerIdx]) + header1.Signature, err = signing.ComputeDomainAndSign(beaconState, 0, header1.Header, params.BeaconConfig().DomainBeaconProposer, privKeys[proposerIdx]) require.NoError(t, err) header2 := util.HydrateSignedBeaconHeader(ðpb.SignedBeaconBlockHeader{ @@ -159,7 +159,7 @@ func TestProcessProposerSlashings_AppliesCorrectStatus(t *testing.T) { StateRoot: bytesutil.PadTo([]byte("B"), 32), }, }) - header2.Signature, err = helpers.ComputeDomainAndSign(beaconState, 0, header2.Header, params.BeaconConfig().DomainBeaconProposer, privKeys[proposerIdx]) + header2.Signature, err = signing.ComputeDomainAndSign(beaconState, 0, header2.Header, params.BeaconConfig().DomainBeaconProposer, privKeys[proposerIdx]) require.NoError(t, err) slashings := []*ethpb.ProposerSlashing{ @@ -198,7 +198,7 @@ func TestProcessProposerSlashings_AppliesCorrectStatusAltair(t *testing.T) { }), } var err error - header1.Signature, err = helpers.ComputeDomainAndSign(beaconState, 0, header1.Header, params.BeaconConfig().DomainBeaconProposer, privKeys[proposerIdx]) + header1.Signature, err = signing.ComputeDomainAndSign(beaconState, 0, header1.Header, params.BeaconConfig().DomainBeaconProposer, privKeys[proposerIdx]) require.NoError(t, err) header2 := util.HydrateSignedBeaconHeader(ðpb.SignedBeaconBlockHeader{ @@ -207,7 +207,7 @@ func TestProcessProposerSlashings_AppliesCorrectStatusAltair(t *testing.T) { StateRoot: bytesutil.PadTo([]byte("B"), 32), }, }) - header2.Signature, err = helpers.ComputeDomainAndSign(beaconState, 0, header2.Header, params.BeaconConfig().DomainBeaconProposer, privKeys[proposerIdx]) + header2.Signature, err = signing.ComputeDomainAndSign(beaconState, 0, header2.Header, params.BeaconConfig().DomainBeaconProposer, privKeys[proposerIdx]) require.NoError(t, err) slashings := []*ethpb.ProposerSlashing{ @@ -329,15 +329,15 @@ func TestVerifyProposerSlashing(t *testing.T) { t.Run(tt.name, func(t *testing.T) { sk := sks[tt.args.slashing.Header_1.Header.ProposerIndex] - d, err := helpers.Domain(tt.args.beaconState.Fork(), core.SlotToEpoch(tt.args.slashing.Header_1.Header.Slot), params.BeaconConfig().DomainBeaconProposer, tt.args.beaconState.GenesisValidatorRoot()) + d, err := signing.Domain(tt.args.beaconState.Fork(), core.SlotToEpoch(tt.args.slashing.Header_1.Header.Slot), params.BeaconConfig().DomainBeaconProposer, tt.args.beaconState.GenesisValidatorRoot()) require.NoError(t, err) if tt.args.slashing.Header_1.Signature == nil { - sr, err := helpers.ComputeSigningRoot(tt.args.slashing.Header_1.Header, d) + sr, err := signing.ComputeSigningRoot(tt.args.slashing.Header_1.Header, d) require.NoError(t, err) tt.args.slashing.Header_1.Signature = sk.Sign(sr[:]).Marshal() } if tt.args.slashing.Header_2.Signature == nil { - sr, err := helpers.ComputeSigningRoot(tt.args.slashing.Header_2.Header, d) + sr, err := signing.ComputeSigningRoot(tt.args.slashing.Header_2.Header, d) require.NoError(t, err) tt.args.slashing.Header_2.Signature = sk.Sign(sr[:]).Marshal() } diff --git a/beacon-chain/core/blocks/randao_test.go b/beacon-chain/core/blocks/randao_test.go index 2750a736e1..6bf8f74e2d 100644 --- a/beacon-chain/core/blocks/randao_test.go +++ b/beacon-chain/core/blocks/randao_test.go @@ -9,6 +9,7 @@ import ( "github.com/prysmaticlabs/prysm/beacon-chain/core" "github.com/prysmaticlabs/prysm/beacon-chain/core/blocks" "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" "github.com/prysmaticlabs/prysm/config/params" ethpb "github.com/prysmaticlabs/prysm/proto/prysm/v1alpha1" "github.com/prysmaticlabs/prysm/proto/prysm/v1alpha1/wrapper" @@ -25,7 +26,7 @@ func TestProcessRandao_IncorrectProposerFailsVerification(t *testing.T) { epoch := types.Epoch(0) buf := make([]byte, 32) binary.LittleEndian.PutUint64(buf, uint64(epoch)) - domain, err := helpers.Domain(beaconState.Fork(), epoch, params.BeaconConfig().DomainRandao, beaconState.GenesisValidatorRoot()) + domain, err := signing.Domain(beaconState.Fork(), epoch, params.BeaconConfig().DomainRandao, beaconState.GenesisValidatorRoot()) require.NoError(t, err) root, err := (ðpb.SigningData{ObjectRoot: buf, Domain: domain}).HashTreeRoot() require.NoError(t, err) diff --git a/beacon-chain/core/blocks/signature.go b/beacon-chain/core/blocks/signature.go index 6e8bbc1cfe..893aadd4c7 100644 --- a/beacon-chain/core/blocks/signature.go +++ b/beacon-chain/core/blocks/signature.go @@ -8,6 +8,7 @@ import ( types "github.com/prysmaticlabs/eth2-types" "github.com/prysmaticlabs/prysm/beacon-chain/core" "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" "github.com/prysmaticlabs/prysm/beacon-chain/state" "github.com/prysmaticlabs/prysm/config/params" "github.com/prysmaticlabs/prysm/crypto/bls" @@ -56,7 +57,7 @@ func verifySignature(signedData, pub, signature, domain []byte) error { return err } if !rSig.Verify(publicKey, root[:]) { - return helpers.ErrSigFailedToVerify + return signing.ErrSigFailedToVerify } return nil } @@ -67,7 +68,7 @@ func VerifyBlockSignature(beaconState state.ReadOnlyBeaconState, sig []byte, rootFunc func() ([32]byte, error)) error { currentEpoch := core.SlotToEpoch(beaconState.Slot()) - domain, err := helpers.Domain(beaconState.Fork(), currentEpoch, params.BeaconConfig().DomainBeaconProposer, beaconState.GenesisValidatorRoot()) + domain, err := signing.Domain(beaconState.Fork(), currentEpoch, params.BeaconConfig().DomainBeaconProposer, beaconState.GenesisValidatorRoot()) if err != nil { return err } @@ -76,7 +77,7 @@ func VerifyBlockSignature(beaconState state.ReadOnlyBeaconState, return err } proposerPubKey := proposer.PublicKey - return helpers.VerifyBlockSigningRoot(proposerPubKey, sig, domain, rootFunc) + return signing.VerifyBlockSigningRoot(proposerPubKey, sig, domain, rootFunc) } // VerifyBlockSignatureUsingCurrentFork verifies the proposer signature of a beacon block. This differs @@ -88,7 +89,7 @@ func VerifyBlockSignatureUsingCurrentFork(beaconState state.ReadOnlyBeaconState, if err != nil { return err } - domain, err := helpers.Domain(fork, currentEpoch, params.BeaconConfig().DomainBeaconProposer, beaconState.GenesisValidatorRoot()) + domain, err := signing.Domain(fork, currentEpoch, params.BeaconConfig().DomainBeaconProposer, beaconState.GenesisValidatorRoot()) if err != nil { return err } @@ -97,7 +98,7 @@ func VerifyBlockSignatureUsingCurrentFork(beaconState state.ReadOnlyBeaconState, return err } proposerPubKey := proposer.PublicKey - return helpers.VerifyBlockSigningRoot(proposerPubKey, blk.Signature(), domain, blk.Block().HashTreeRoot) + return signing.VerifyBlockSigningRoot(proposerPubKey, blk.Signature(), domain, blk.Block().HashTreeRoot) } // BlockSignatureSet retrieves the block signature set from the provided block and its corresponding state. @@ -106,7 +107,7 @@ func BlockSignatureSet(beaconState state.ReadOnlyBeaconState, sig []byte, rootFunc func() ([32]byte, error)) (*bls.SignatureSet, error) { currentEpoch := core.SlotToEpoch(beaconState.Slot()) - domain, err := helpers.Domain(beaconState.Fork(), currentEpoch, params.BeaconConfig().DomainBeaconProposer, beaconState.GenesisValidatorRoot()) + domain, err := signing.Domain(beaconState.Fork(), currentEpoch, params.BeaconConfig().DomainBeaconProposer, beaconState.GenesisValidatorRoot()) if err != nil { return nil, err } @@ -115,7 +116,7 @@ func BlockSignatureSet(beaconState state.ReadOnlyBeaconState, return nil, err } proposerPubKey := proposer.PublicKey - return helpers.BlockSignatureSet(proposerPubKey, sig, domain, rootFunc) + return signing.BlockSignatureSet(proposerPubKey, sig, domain, rootFunc) } // RandaoSignatureSet retrieves the relevant randao specific signature set object @@ -148,7 +149,7 @@ func randaoSigningData(ctx context.Context, beaconState state.ReadOnlyBeaconStat buf := make([]byte, 32) binary.LittleEndian.PutUint64(buf, uint64(currentEpoch)) - domain, err := helpers.Domain(beaconState.Fork(), currentEpoch, params.BeaconConfig().DomainRandao, beaconState.GenesisValidatorRoot()) + domain, err := signing.Domain(beaconState.Fork(), currentEpoch, params.BeaconConfig().DomainRandao, beaconState.GenesisValidatorRoot()) if err != nil { return nil, nil, nil, err } @@ -194,7 +195,7 @@ func createAttestationSignatureSet( } pks[i] = aggP - root, err := helpers.ComputeSigningRoot(ia.Data, domain) + root, err := signing.ComputeSigningRoot(ia.Data, domain) if err != nil { return nil, errors.Wrap(err, "could not get signing root of object") } @@ -232,7 +233,7 @@ func AttestationSignatureSet(ctx context.Context, beaconState state.ReadOnlyBeac // Check attestations from before the fork. if fork.Epoch > 0 && len(preForkAtts) > 0 { // Check to prevent underflow and there is valid attestations to create sig set. - prevDomain, err := helpers.Domain(fork, fork.Epoch-1, dt, gvr) + prevDomain, err := signing.Domain(fork, fork.Epoch-1, dt, gvr) if err != nil { return nil, err } @@ -251,7 +252,7 @@ func AttestationSignatureSet(ctx context.Context, beaconState state.ReadOnlyBeac if len(postForkAtts) > 0 { // Then check attestations from after the fork. - currDomain, err := helpers.Domain(fork, fork.Epoch, dt, gvr) + currDomain, err := signing.Domain(fork, fork.Epoch, dt, gvr) if err != nil { return nil, err } diff --git a/beacon-chain/core/blocks/signature_test.go b/beacon-chain/core/blocks/signature_test.go index 884b0b6d65..860a9eccc7 100644 --- a/beacon-chain/core/blocks/signature_test.go +++ b/beacon-chain/core/blocks/signature_test.go @@ -4,7 +4,7 @@ import ( "testing" "github.com/prysmaticlabs/prysm/beacon-chain/core/blocks" - "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" "github.com/prysmaticlabs/prysm/config/params" "github.com/prysmaticlabs/prysm/encoding/bytesutil" ethpb "github.com/prysmaticlabs/prysm/proto/prysm/v1alpha1" @@ -29,9 +29,9 @@ func TestVerifyBlockSignatureUsingCurrentFork(t *testing.T) { CurrentVersion: params.BeaconConfig().AltairForkVersion, PreviousVersion: params.BeaconConfig().GenesisForkVersion, } - domain, err := helpers.Domain(fData, 100, params.BeaconConfig().DomainBeaconProposer, bState.GenesisValidatorRoot()) + domain, err := signing.Domain(fData, 100, params.BeaconConfig().DomainBeaconProposer, bState.GenesisValidatorRoot()) assert.NoError(t, err) - rt, err := helpers.ComputeSigningRoot(altairBlk.Block, domain) + rt, err := signing.ComputeSigningRoot(altairBlk.Block, domain) assert.NoError(t, err) sig := keys[0].Sign(rt[:]).Marshal() altairBlk.Signature = sig diff --git a/beacon-chain/core/helpers/BUILD.bazel b/beacon-chain/core/helpers/BUILD.bazel index 64a315844f..7467353f4d 100644 --- a/beacon-chain/core/helpers/BUILD.bazel +++ b/beacon-chain/core/helpers/BUILD.bazel @@ -10,7 +10,6 @@ go_library( "randao.go", "rewards_penalties.go", "shuffle.go", - "signing_root.go", "sync_committee.go", "validators.go", "weak_subjectivity.go", @@ -49,7 +48,6 @@ go_library( "//proto/prysm/v1alpha1:go_default_library", "//proto/prysm/v1alpha1/block:go_default_library", "//time:go_default_library", - "@com_github_ferranbt_fastssz//:go_default_library", "@com_github_pkg_errors//:go_default_library", "@com_github_prometheus_client_golang//prometheus:go_default_library", "@com_github_prometheus_client_golang//prometheus/promauto:go_default_library", @@ -69,7 +67,6 @@ go_test( "randao_test.go", "rewards_penalties_test.go", "shuffle_test.go", - "signing_root_test.go", "sync_committee_test.go", "validators_test.go", "weak_subjectivity_test.go", @@ -93,7 +90,6 @@ go_test( "//testing/require:go_default_library", "//testing/util:go_default_library", "//time:go_default_library", - "@com_github_google_gofuzz//:go_default_library", "@com_github_prysmaticlabs_eth2_types//:go_default_library", "@com_github_prysmaticlabs_go_bitfield//:go_default_library", ], diff --git a/beacon-chain/core/helpers/validators.go b/beacon-chain/core/helpers/validators.go index 38485e4804..dae525f4f7 100644 --- a/beacon-chain/core/helpers/validators.go +++ b/beacon-chain/core/helpers/validators.go @@ -12,7 +12,6 @@ import ( "github.com/prysmaticlabs/prysm/beacon-chain/core" "github.com/prysmaticlabs/prysm/beacon-chain/state" "github.com/prysmaticlabs/prysm/config/params" - "github.com/prysmaticlabs/prysm/crypto/bls" "github.com/prysmaticlabs/prysm/crypto/hash" "github.com/prysmaticlabs/prysm/encoding/bytesutil" ethpb "github.com/prysmaticlabs/prysm/proto/prysm/v1alpha1" @@ -323,34 +322,6 @@ func ComputeProposerIndex(bState state.ReadOnlyValidators, activeIndices []types } } -// Domain returns the domain version for BLS private key to sign and verify. -// -// Spec pseudocode definition: -// def get_domain(state: BeaconState, domain_type: DomainType, epoch: Epoch=None) -> Domain: -// """ -// Return the signature domain (fork version concatenated with domain type) of a message. -// """ -// epoch = get_current_epoch(state) if epoch is None else epoch -// fork_version = state.fork.previous_version if epoch < state.fork.epoch else state.fork.current_version -// return compute_domain(domain_type, fork_version, state.genesis_validators_root) -func Domain(fork *ethpb.Fork, epoch types.Epoch, domainType [bls.DomainByteLength]byte, genesisRoot []byte) ([]byte, error) { - if fork == nil { - return []byte{}, errors.New("nil fork or domain type") - } - var forkVersion []byte - if epoch < fork.Epoch { - forkVersion = fork.PreviousVersion - } else { - forkVersion = fork.CurrentVersion - } - if len(forkVersion) != 4 { - return []byte{}, errors.New("fork version length is not 4 byte") - } - var forkVersionArray [4]byte - copy(forkVersionArray[:], forkVersion[:4]) - return ComputeDomain(domainType, forkVersionArray[:], genesisRoot) -} - // IsEligibleForActivationQueue checks if the validator is eligible to // be placed into the activation queue. // diff --git a/beacon-chain/core/helpers/validators_test.go b/beacon-chain/core/helpers/validators_test.go index f2055bc849..9ed096b315 100644 --- a/beacon-chain/core/helpers/validators_test.go +++ b/beacon-chain/core/helpers/validators_test.go @@ -415,32 +415,6 @@ func TestChurnLimit_OK(t *testing.T) { } } -func TestDomain_OK(t *testing.T) { - state := ðpb.BeaconState{ - Fork: ðpb.Fork{ - Epoch: 3, - PreviousVersion: []byte{0, 0, 0, 2}, - CurrentVersion: []byte{0, 0, 0, 3}, - }, - } - tests := []struct { - epoch types.Epoch - domainType [4]byte - result []byte - }{ - {epoch: 1, domainType: bytesutil.ToBytes4(bytesutil.Bytes4(4)), result: bytesutil.ToBytes(947067381421703172, 32)}, - {epoch: 2, domainType: bytesutil.ToBytes4(bytesutil.Bytes4(4)), result: bytesutil.ToBytes(947067381421703172, 32)}, - {epoch: 2, domainType: bytesutil.ToBytes4(bytesutil.Bytes4(5)), result: bytesutil.ToBytes(947067381421703173, 32)}, - {epoch: 3, domainType: bytesutil.ToBytes4(bytesutil.Bytes4(4)), result: bytesutil.ToBytes(9369798235163459588, 32)}, - {epoch: 3, domainType: bytesutil.ToBytes4(bytesutil.Bytes4(5)), result: bytesutil.ToBytes(9369798235163459589, 32)}, - } - for _, tt := range tests { - domain, err := Domain(state.Fork, tt.epoch, tt.domainType, nil) - require.NoError(t, err) - assert.DeepEqual(t, tt.result[:8], domain[:8], "Unexpected domain version") - } -} - // Test basic functionality of ActiveValidatorIndices without caching. This test will need to be // rewritten when releasing some cache flag. func TestActiveValidatorIndices(t *testing.T) { diff --git a/beacon-chain/core/signing/BUILD.bazel b/beacon-chain/core/signing/BUILD.bazel new file mode 100644 index 0000000000..327218571d --- /dev/null +++ b/beacon-chain/core/signing/BUILD.bazel @@ -0,0 +1,44 @@ +load("@prysm//tools/go:def.bzl", "go_library", "go_test") + +go_library( + name = "go_default_library", + srcs = [ + "domain.go", + "signing_root.go", + ], + importpath = "github.com/prysmaticlabs/prysm/beacon-chain/core/signing", + visibility = ["//visibility:public"], + deps = [ + "//beacon-chain/state:go_default_library", + "//config/params:go_default_library", + "//crypto/bls:go_default_library", + "//encoding/bytesutil:go_default_library", + "//proto/prysm/v1alpha1:go_default_library", + "@com_github_ferranbt_fastssz//:go_default_library", + "@com_github_pkg_errors//:go_default_library", + "@com_github_prysmaticlabs_eth2_types//:go_default_library", + ], +) + +go_test( + name = "go_default_test", + srcs = [ + "domain_test.go", + "signing_root_test.go", + ], + embed = [":go_default_library"], + deps = [ + "//beacon-chain/core:go_default_library", + "//beacon-chain/core/helpers:go_default_library", + "//beacon-chain/state:go_default_library", + "//config/params:go_default_library", + "//crypto/bls:go_default_library", + "//encoding/bytesutil:go_default_library", + "//proto/prysm/v1alpha1:go_default_library", + "//testing/assert:go_default_library", + "//testing/require:go_default_library", + "//testing/util:go_default_library", + "@com_github_google_gofuzz//:go_default_library", + "@com_github_prysmaticlabs_eth2_types//:go_default_library", + ], +) diff --git a/beacon-chain/core/signing/domain.go b/beacon-chain/core/signing/domain.go new file mode 100644 index 0000000000..708e9a32b3 --- /dev/null +++ b/beacon-chain/core/signing/domain.go @@ -0,0 +1,36 @@ +package signing + +import ( + "github.com/pkg/errors" + "github.com/prysmaticlabs/eth2-types" + "github.com/prysmaticlabs/prysm/crypto/bls" + "github.com/prysmaticlabs/prysm/proto/prysm/v1alpha1" +) + +// Domain returns the domain version for BLS private key to sign and verify. +// +// Spec pseudocode definition: +// def get_domain(state: BeaconState, domain_type: DomainType, epoch: Epoch=None) -> Domain: +// """ +// Return the signature domain (fork version concatenated with domain type) of a message. +// """ +// epoch = get_current_epoch(state) if epoch is None else epoch +// fork_version = state.fork.previous_version if epoch < state.fork.epoch else state.fork.current_version +// return compute_domain(domain_type, fork_version, state.genesis_validators_root) +func Domain(fork *eth.Fork, epoch types.Epoch, domainType [bls.DomainByteLength]byte, genesisRoot []byte) ([]byte, error) { + if fork == nil { + return []byte{}, errors.New("nil fork or domain type") + } + var forkVersion []byte + if epoch < fork.Epoch { + forkVersion = fork.PreviousVersion + } else { + forkVersion = fork.CurrentVersion + } + if len(forkVersion) != 4 { + return []byte{}, errors.New("fork version length is not 4 byte") + } + var forkVersionArray [4]byte + copy(forkVersionArray[:], forkVersion[:4]) + return ComputeDomain(domainType, forkVersionArray[:], genesisRoot) +} diff --git a/beacon-chain/core/signing/domain_test.go b/beacon-chain/core/signing/domain_test.go new file mode 100644 index 0000000000..15deaafbd5 --- /dev/null +++ b/beacon-chain/core/signing/domain_test.go @@ -0,0 +1,37 @@ +package signing + +import ( + "testing" + + "github.com/prysmaticlabs/eth2-types" + "github.com/prysmaticlabs/prysm/encoding/bytesutil" + "github.com/prysmaticlabs/prysm/proto/prysm/v1alpha1" + "github.com/prysmaticlabs/prysm/testing/assert" + "github.com/prysmaticlabs/prysm/testing/require" +) + +func TestDomain_OK(t *testing.T) { + state := ð.BeaconState{ + Fork: ð.Fork{ + Epoch: 3, + PreviousVersion: []byte{0, 0, 0, 2}, + CurrentVersion: []byte{0, 0, 0, 3}, + }, + } + tests := []struct { + epoch types.Epoch + domainType [4]byte + result []byte + }{ + {epoch: 1, domainType: bytesutil.ToBytes4(bytesutil.Bytes4(4)), result: bytesutil.ToBytes(947067381421703172, 32)}, + {epoch: 2, domainType: bytesutil.ToBytes4(bytesutil.Bytes4(4)), result: bytesutil.ToBytes(947067381421703172, 32)}, + {epoch: 2, domainType: bytesutil.ToBytes4(bytesutil.Bytes4(5)), result: bytesutil.ToBytes(947067381421703173, 32)}, + {epoch: 3, domainType: bytesutil.ToBytes4(bytesutil.Bytes4(4)), result: bytesutil.ToBytes(9369798235163459588, 32)}, + {epoch: 3, domainType: bytesutil.ToBytes4(bytesutil.Bytes4(5)), result: bytesutil.ToBytes(9369798235163459589, 32)}, + } + for _, tt := range tests { + domain, err := Domain(state.Fork, tt.epoch, tt.domainType, nil) + require.NoError(t, err) + assert.DeepEqual(t, tt.result[:8], domain[:8], "Unexpected domain version") + } +} diff --git a/beacon-chain/core/helpers/signing_root.go b/beacon-chain/core/signing/signing_root.go similarity index 99% rename from beacon-chain/core/helpers/signing_root.go rename to beacon-chain/core/signing/signing_root.go index 6e28b71193..3fb1d4fa4a 100644 --- a/beacon-chain/core/helpers/signing_root.go +++ b/beacon-chain/core/signing/signing_root.go @@ -1,4 +1,4 @@ -package helpers +package signing import ( fssz "github.com/ferranbt/fastssz" diff --git a/beacon-chain/core/helpers/signing_root_test.go b/beacon-chain/core/signing/signing_root_test.go similarity index 92% rename from beacon-chain/core/helpers/signing_root_test.go rename to beacon-chain/core/signing/signing_root_test.go index adc5ce64ae..d3bbe9f7c1 100644 --- a/beacon-chain/core/helpers/signing_root_test.go +++ b/beacon-chain/core/signing/signing_root_test.go @@ -1,4 +1,4 @@ -package helpers_test +package signing_test import ( "bytes" @@ -8,6 +8,7 @@ import ( fuzz "github.com/google/gofuzz" "github.com/prysmaticlabs/prysm/beacon-chain/core" "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" "github.com/prysmaticlabs/prysm/beacon-chain/state" "github.com/prysmaticlabs/prysm/config/params" "github.com/prysmaticlabs/prysm/crypto/bls" @@ -21,7 +22,7 @@ import ( func TestSigningRoot_ComputeSigningRoot(t *testing.T) { emptyBlock := util.NewBeaconBlock() - _, err := helpers.ComputeSigningRoot(emptyBlock, bytesutil.PadTo([]byte{'T', 'E', 'S', 'T'}, 32)) + _, err := signing.ComputeSigningRoot(emptyBlock, bytesutil.PadTo([]byte{'T', 'E', 'S', 'T'}, 32)) assert.NoError(t, err, "Could not compute signing root of block") } @@ -38,7 +39,7 @@ func TestSigningRoot_ComputeDomain(t *testing.T) { {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) { + if got, err := signing.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) @@ -84,7 +85,7 @@ func TestSigningRoot_ComputeDomainAndSign(t *testing.T) { idx, err := helpers.BeaconProposerIndex(context.Background(), beaconState) require.NoError(t, err) block := tt.genBlock(t, beaconState, privKeys) - got, err := helpers.ComputeDomainAndSign( + got, err := signing.ComputeDomainAndSign( beaconState, core.CurrentEpoch(beaconState), block, tt.domainType, privKeys[idx]) require.NoError(t, err) require.DeepEqual(t, tt.want, got, "Incorrect signature") @@ -103,7 +104,7 @@ func TestSigningRoot_ComputeForkDigest(t *testing.T) { {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[:]) + digest, err := signing.ComputeForkDigest(tt.version, tt.root[:]) require.NoError(t, err) assert.Equal(t, tt.result, digest, "Wanted domain version: %#x, got: %#x", digest, tt.result) } @@ -127,9 +128,9 @@ func TestFuzzverifySigningRoot_10000(_ *testing.T) { fuzzer.Fuzz(&p) fuzzer.Fuzz(&s) fuzzer.Fuzz(&d) - err := helpers.VerifySigningRoot(state, pubkey[:], sig[:], domain[:]) + err := signing.VerifySigningRoot(state, pubkey[:], sig[:], domain[:]) _ = err - err = helpers.VerifySigningRoot(state, p, s, d) + err = signing.VerifySigningRoot(state, p, s, d) _ = err } } diff --git a/beacon-chain/core/transition/BUILD.bazel b/beacon-chain/core/transition/BUILD.bazel index 588804b2b7..2c9d0028e6 100644 --- a/beacon-chain/core/transition/BUILD.bazel +++ b/beacon-chain/core/transition/BUILD.bazel @@ -79,6 +79,7 @@ go_test( "//beacon-chain/core/altair:go_default_library", "//beacon-chain/core/blocks:go_default_library", "//beacon-chain/core/helpers:go_default_library", + "//beacon-chain/core/signing:go_default_library", "//beacon-chain/p2p/types:go_default_library", "//beacon-chain/state:go_default_library", "//beacon-chain/state/v1:go_default_library", diff --git a/beacon-chain/core/transition/altair_transition_no_verify_sig_test.go b/beacon-chain/core/transition/altair_transition_no_verify_sig_test.go index 5d7de275fb..4991955ced 100644 --- a/beacon-chain/core/transition/altair_transition_no_verify_sig_test.go +++ b/beacon-chain/core/transition/altair_transition_no_verify_sig_test.go @@ -8,6 +8,7 @@ import ( "github.com/prysmaticlabs/prysm/beacon-chain/core" "github.com/prysmaticlabs/prysm/beacon-chain/core/altair" "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" "github.com/prysmaticlabs/prysm/beacon-chain/core/transition" p2pType "github.com/prysmaticlabs/prysm/beacon-chain/p2p/types" "github.com/prysmaticlabs/prysm/beacon-chain/state" @@ -76,7 +77,7 @@ func TestExecuteAltairStateTransitionNoVerify_FullProcess(t *testing.T) { syncSigs := make([]bls.Signature, len(indices)) for i, indice := range indices { b := p2pType.SSZBytes(pbr[:]) - sb, err := helpers.ComputeDomainAndSign(beaconState, core.CurrentEpoch(beaconState), &b, params.BeaconConfig().DomainSyncCommittee, privKeys[indice]) + sb, err := signing.ComputeDomainAndSign(beaconState, core.CurrentEpoch(beaconState), &b, params.BeaconConfig().DomainSyncCommittee, privKeys[indice]) require.NoError(t, err) sig, err := bls.SignatureFromBytes(sb) require.NoError(t, err) @@ -163,7 +164,7 @@ func TestExecuteAltairStateTransitionNoVerifySignature_CouldNotVerifyStateRoot(t syncSigs := make([]bls.Signature, len(indices)) for i, indice := range indices { b := p2pType.SSZBytes(pbr[:]) - sb, err := helpers.ComputeDomainAndSign(beaconState, core.CurrentEpoch(beaconState), &b, params.BeaconConfig().DomainSyncCommittee, privKeys[indice]) + sb, err := signing.ComputeDomainAndSign(beaconState, core.CurrentEpoch(beaconState), &b, params.BeaconConfig().DomainSyncCommittee, privKeys[indice]) require.NoError(t, err) sig, err := bls.SignatureFromBytes(sb) require.NoError(t, err) diff --git a/beacon-chain/core/transition/transition_test.go b/beacon-chain/core/transition/transition_test.go index f2a4fd4e0a..6ef9be62a2 100644 --- a/beacon-chain/core/transition/transition_test.go +++ b/beacon-chain/core/transition/transition_test.go @@ -10,6 +10,7 @@ import ( "github.com/prysmaticlabs/prysm/beacon-chain/core" "github.com/prysmaticlabs/prysm/beacon-chain/core/blocks" "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" "github.com/prysmaticlabs/prysm/beacon-chain/core/transition" "github.com/prysmaticlabs/prysm/beacon-chain/state" v1 "github.com/prysmaticlabs/prysm/beacon-chain/state/v1" @@ -221,7 +222,7 @@ func createFullBlockWithOperations(t *testing.T) (state.BeaconState, StateRoot: bytesutil.PadTo([]byte("A"), 32), }, }) - header1.Signature, err = helpers.ComputeDomainAndSign(beaconState, currentEpoch, header1.Header, params.BeaconConfig().DomainBeaconProposer, privKeys[proposerSlashIdx]) + header1.Signature, err = signing.ComputeDomainAndSign(beaconState, currentEpoch, header1.Header, params.BeaconConfig().DomainBeaconProposer, privKeys[proposerSlashIdx]) require.NoError(t, err) header2 := util.HydrateSignedBeaconHeader(ðpb.SignedBeaconBlockHeader{ @@ -231,7 +232,7 @@ func createFullBlockWithOperations(t *testing.T) (state.BeaconState, StateRoot: bytesutil.PadTo([]byte("B"), 32), }, }) - header2.Signature, err = helpers.ComputeDomainAndSign(beaconState, core.CurrentEpoch(beaconState), header2.Header, params.BeaconConfig().DomainBeaconProposer, privKeys[proposerSlashIdx]) + header2.Signature, err = signing.ComputeDomainAndSign(beaconState, core.CurrentEpoch(beaconState), header2.Header, params.BeaconConfig().DomainBeaconProposer, privKeys[proposerSlashIdx]) require.NoError(t, err) proposerSlashings := []*ethpb.ProposerSlashing{ @@ -251,9 +252,9 @@ func createFullBlockWithOperations(t *testing.T) (state.BeaconState, }, AttestingIndices: []uint64{0, 1}, }) - domain, err := helpers.Domain(beaconState.Fork(), currentEpoch, params.BeaconConfig().DomainBeaconAttester, beaconState.GenesisValidatorRoot()) + domain, err := signing.Domain(beaconState.Fork(), currentEpoch, params.BeaconConfig().DomainBeaconAttester, beaconState.GenesisValidatorRoot()) require.NoError(t, err) - hashTreeRoot, err := helpers.ComputeSigningRoot(att1.Data, domain) + hashTreeRoot, err := signing.ComputeSigningRoot(att1.Data, domain) require.NoError(t, err) sig0 := privKeys[0].Sign(hashTreeRoot[:]) sig1 := privKeys[1].Sign(hashTreeRoot[:]) @@ -269,7 +270,7 @@ func createFullBlockWithOperations(t *testing.T) (state.BeaconState, AttestingIndices: []uint64{0, 1}, }) - hashTreeRoot, err = helpers.ComputeSigningRoot(att2.Data, domain) + hashTreeRoot, err = signing.ComputeSigningRoot(att2.Data, domain) require.NoError(t, err) sig0 = privKeys[0].Sign(hashTreeRoot[:]) sig1 = privKeys[1].Sign(hashTreeRoot[:]) @@ -304,7 +305,7 @@ func createFullBlockWithOperations(t *testing.T) (state.BeaconState, attestingIndices, err := attestation.AttestingIndices(blockAtt.AggregationBits, committee) require.NoError(t, err) assert.NoError(t, err) - hashTreeRoot, err = helpers.ComputeSigningRoot(blockAtt.Data, domain) + hashTreeRoot, err = signing.ComputeSigningRoot(blockAtt.Data, domain) assert.NoError(t, err) sigs := make([]bls.Signature, len(attestingIndices)) for i, indice := range attestingIndices { @@ -319,7 +320,7 @@ func createFullBlockWithOperations(t *testing.T) (state.BeaconState, Epoch: 0, }, } - exit.Signature, err = helpers.ComputeDomainAndSign(beaconState, currentEpoch, exit.Exit, params.BeaconConfig().DomainVoluntaryExit, privKeys[exit.Exit.ValidatorIndex]) + exit.Signature, err = signing.ComputeDomainAndSign(beaconState, currentEpoch, exit.Exit, params.BeaconConfig().DomainVoluntaryExit, privKeys[exit.Exit.ValidatorIndex]) require.NoError(t, err) header := beaconState.LatestBlockHeader() diff --git a/beacon-chain/p2p/BUILD.bazel b/beacon-chain/p2p/BUILD.bazel index 5514c9b889..6173accc31 100644 --- a/beacon-chain/p2p/BUILD.bazel +++ b/beacon-chain/p2p/BUILD.bazel @@ -135,6 +135,7 @@ go_test( "//beacon-chain/core/feed:go_default_library", "//beacon-chain/core/feed/state:go_default_library", "//beacon-chain/core/helpers:go_default_library", + "//beacon-chain/core/signing:go_default_library", "//beacon-chain/db/testing:go_default_library", "//beacon-chain/p2p/encoder:go_default_library", "//beacon-chain/p2p/peers:go_default_library", diff --git a/beacon-chain/p2p/fork_test.go b/beacon-chain/p2p/fork_test.go index def1f733eb..b91b5effa3 100644 --- a/beacon-chain/p2p/fork_test.go +++ b/beacon-chain/p2p/fork_test.go @@ -15,7 +15,7 @@ import ( ma "github.com/multiformats/go-multiaddr" types "github.com/prysmaticlabs/eth2-types" mock "github.com/prysmaticlabs/prysm/beacon-chain/blockchain/testing" - "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" "github.com/prysmaticlabs/prysm/config/params" "github.com/prysmaticlabs/prysm/encoding/bytesutil" "github.com/prysmaticlabs/prysm/network/forks" @@ -242,7 +242,7 @@ func TestDiscv5_AddRetrieveForkEntryENR(t *testing.T) { localNode := enode.NewLocalNode(db, pkey) localNode.Set(entry) - want, err := helpers.ComputeForkDigest([]byte{0, 0, 0, 0}, genesisValidatorsRoot) + want, err := signing.ComputeForkDigest([]byte{0, 0, 0, 0}, genesisValidatorsRoot) require.NoError(t, err) resp, err := forkEntry(localNode.Node().Record()) diff --git a/beacon-chain/p2p/message_id_test.go b/beacon-chain/p2p/message_id_test.go index d10db5e4a6..e3e8e15295 100644 --- a/beacon-chain/p2p/message_id_test.go +++ b/beacon-chain/p2p/message_id_test.go @@ -7,7 +7,7 @@ import ( "github.com/golang/snappy" pubsubpb "github.com/libp2p/go-libp2p-pubsub/pb" - "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "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" @@ -37,7 +37,7 @@ func TestMsgID_HashesCorrectly(t *testing.T) { func TestMessageIDFunction_HashesCorrectlyAltair(t *testing.T) { genesisValidatorsRoot := bytesutil.PadTo([]byte{'A'}, 32) - d, err := helpers.ComputeForkDigest(params.BeaconConfig().AltairForkVersion, genesisValidatorsRoot) + d, err := signing.ComputeForkDigest(params.BeaconConfig().AltairForkVersion, genesisValidatorsRoot) assert.NoError(t, err) tpc := fmt.Sprintf(p2p.BlockSubnetTopicFormat, d) topicLen := uint64(len(tpc)) diff --git a/beacon-chain/powchain/BUILD.bazel b/beacon-chain/powchain/BUILD.bazel index d158f8378e..6992cba296 100644 --- a/beacon-chain/powchain/BUILD.bazel +++ b/beacon-chain/powchain/BUILD.bazel @@ -79,6 +79,7 @@ go_test( "//beacon-chain/core/feed:go_default_library", "//beacon-chain/core/feed/state:go_default_library", "//beacon-chain/core/helpers:go_default_library", + "//beacon-chain/core/signing:go_default_library", "//beacon-chain/db:go_default_library", "//beacon-chain/db/testing:go_default_library", "//beacon-chain/powchain/testing:go_default_library", diff --git a/beacon-chain/powchain/deposit_test.go b/beacon-chain/powchain/deposit_test.go index 3180f22cb2..a5c1a23f9d 100644 --- a/beacon-chain/powchain/deposit_test.go +++ b/beacon-chain/powchain/deposit_test.go @@ -7,6 +7,7 @@ import ( types "github.com/prysmaticlabs/eth2-types" "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" testDB "github.com/prysmaticlabs/prysm/beacon-chain/db/testing" "github.com/prysmaticlabs/prysm/config/params" "github.com/prysmaticlabs/prysm/container/trie" @@ -195,9 +196,9 @@ func TestProcessDeposit_IncompleteDeposit(t *testing.T) { priv, err := bls.RandKey() require.NoError(t, err) deposit.Data.PublicKey = priv.PublicKey().Marshal() - d, err := helpers.ComputeDomain(params.BeaconConfig().DomainDeposit, nil, nil) + d, err := signing.ComputeDomain(params.BeaconConfig().DomainDeposit, nil, nil) require.NoError(t, err) - signedRoot, err := helpers.ComputeSigningRoot(deposit.Data, d) + signedRoot, err := signing.ComputeSigningRoot(deposit.Data, d) require.NoError(t, err) sig := priv.Sign(signedRoot[:]) diff --git a/beacon-chain/rpc/eth/beacon/BUILD.bazel b/beacon-chain/rpc/eth/beacon/BUILD.bazel index 859d6fb7a1..f1d6730f62 100644 --- a/beacon-chain/rpc/eth/beacon/BUILD.bazel +++ b/beacon-chain/rpc/eth/beacon/BUILD.bazel @@ -77,7 +77,7 @@ go_test( "//api/grpc:go_default_library", "//beacon-chain/blockchain/testing:go_default_library", "//beacon-chain/core:go_default_library", - "//beacon-chain/core/helpers:go_default_library", + "//beacon-chain/core/signing:go_default_library", "//beacon-chain/db:go_default_library", "//beacon-chain/db/testing:go_default_library", "//beacon-chain/operations/attestations:go_default_library", diff --git a/beacon-chain/rpc/eth/beacon/pool_test.go b/beacon-chain/rpc/eth/beacon/pool_test.go index 7878f01209..8215b3bdf5 100644 --- a/beacon-chain/rpc/eth/beacon/pool_test.go +++ b/beacon-chain/rpc/eth/beacon/pool_test.go @@ -13,7 +13,7 @@ import ( chainMock "github.com/prysmaticlabs/prysm/beacon-chain/blockchain/testing" notifiermock "github.com/prysmaticlabs/prysm/beacon-chain/blockchain/testing" "github.com/prysmaticlabs/prysm/beacon-chain/core" - "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" "github.com/prysmaticlabs/prysm/beacon-chain/operations/attestations" "github.com/prysmaticlabs/prysm/beacon-chain/operations/slashings" "github.com/prysmaticlabs/prysm/beacon-chain/operations/voluntaryexits" @@ -423,7 +423,7 @@ func TestSubmitAttesterSlashing_Ok(t *testing.T) { } for _, att := range []*ethpbv1.IndexedAttestation{slashing.Attestation_1, slashing.Attestation_2} { - sb, err := helpers.ComputeDomainAndSign(state, att.Data.Target.Epoch, att.Data, params.BeaconConfig().DomainBeaconAttester, keys[0]) + sb, err := signing.ComputeDomainAndSign(state, att.Data.Target.Epoch, att.Data, params.BeaconConfig().DomainBeaconAttester, keys[0]) require.NoError(t, err) sig, err := bls.SignatureFromBytes(sb) require.NoError(t, err) @@ -524,7 +524,7 @@ func TestSubmitProposerSlashing_Ok(t *testing.T) { } for _, h := range []*ethpbv1.SignedBeaconBlockHeader{slashing.SignedHeader_1, slashing.SignedHeader_2} { - sb, err := helpers.ComputeDomainAndSign( + sb, err := signing.ComputeDomainAndSign( state, core.SlotToEpoch(h.Message.Slot), h.Message, @@ -610,7 +610,7 @@ func TestSubmitVoluntaryExit_Ok(t *testing.T) { Signature: make([]byte, 96), } - sb, err := helpers.ComputeDomainAndSign(state, exit.Message.Epoch, exit.Message, params.BeaconConfig().DomainVoluntaryExit, keys[0]) + sb, err := signing.ComputeDomainAndSign(state, exit.Message.Epoch, exit.Message, params.BeaconConfig().DomainVoluntaryExit, keys[0]) require.NoError(t, err) sig, err := bls.SignatureFromBytes(sb) require.NoError(t, err) @@ -764,7 +764,7 @@ func TestServer_SubmitAttestations_Ok(t *testing.T) { } for _, att := range []*ethpbv1.Attestation{att1, att2} { - sb, err := helpers.ComputeDomainAndSign( + sb, err := signing.ComputeDomainAndSign( state, core.SlotToEpoch(att.Data.Slot), att.Data, @@ -871,7 +871,7 @@ func TestServer_SubmitAttestations_ValidAttestationSubmitted(t *testing.T) { } // Don't sign attInvalidSignature. - sb, err := helpers.ComputeDomainAndSign( + sb, err := signing.ComputeDomainAndSign( state, core.SlotToEpoch(attValid.Data.Slot), attValid.Data, diff --git a/beacon-chain/rpc/eth/validator/BUILD.bazel b/beacon-chain/rpc/eth/validator/BUILD.bazel index f81bb9c124..2340566fc6 100644 --- a/beacon-chain/rpc/eth/validator/BUILD.bazel +++ b/beacon-chain/rpc/eth/validator/BUILD.bazel @@ -50,7 +50,7 @@ go_test( "//beacon-chain/core:go_default_library", "//beacon-chain/core/altair:go_default_library", "//beacon-chain/core/blocks:go_default_library", - "//beacon-chain/core/helpers:go_default_library", + "//beacon-chain/core/signing:go_default_library", "//beacon-chain/core/transition:go_default_library", "//beacon-chain/db/testing:go_default_library", "//beacon-chain/operations/attestations:go_default_library", diff --git a/beacon-chain/rpc/eth/validator/validator_test.go b/beacon-chain/rpc/eth/validator/validator_test.go index 562ec0ab14..4fbf30b484 100644 --- a/beacon-chain/rpc/eth/validator/validator_test.go +++ b/beacon-chain/rpc/eth/validator/validator_test.go @@ -14,7 +14,7 @@ import ( "github.com/prysmaticlabs/prysm/beacon-chain/core" "github.com/prysmaticlabs/prysm/beacon-chain/core/altair" "github.com/prysmaticlabs/prysm/beacon-chain/core/blocks" - "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" "github.com/prysmaticlabs/prysm/beacon-chain/core/transition" dbutil "github.com/prysmaticlabs/prysm/beacon-chain/db/testing" "github.com/prysmaticlabs/prysm/beacon-chain/operations/attestations" @@ -662,7 +662,7 @@ func TestProduceBlockV2(t *testing.T) { for i, indice := range syncCommitteeIndices { if aggregationBits.BitAt(uint64(i)) { b := p2pType.SSZBytes(parentRoot[:]) - sb, err := helpers.ComputeDomainAndSign(beaconState, core.CurrentEpoch(beaconState), &b, params.BeaconConfig().DomainSyncCommittee, privKeys[indice]) + sb, err := signing.ComputeDomainAndSign(beaconState, core.CurrentEpoch(beaconState), &b, params.BeaconConfig().DomainSyncCommittee, privKeys[indice]) require.NoError(t, err) sig, err := bls.SignatureFromBytes(sb) require.NoError(t, err) diff --git a/beacon-chain/rpc/prysm/v1alpha1/beacon/BUILD.bazel b/beacon-chain/rpc/prysm/v1alpha1/beacon/BUILD.bazel index ab9535cd51..9e6307d389 100644 --- a/beacon-chain/rpc/prysm/v1alpha1/beacon/BUILD.bazel +++ b/beacon-chain/rpc/prysm/v1alpha1/beacon/BUILD.bazel @@ -88,6 +88,7 @@ go_test( "//beacon-chain/core/feed/operation:go_default_library", "//beacon-chain/core/feed/state:go_default_library", "//beacon-chain/core/helpers:go_default_library", + "//beacon-chain/core/signing:go_default_library", "//beacon-chain/db:go_default_library", "//beacon-chain/db/testing:go_default_library", "//beacon-chain/operations/attestations:go_default_library", diff --git a/beacon-chain/rpc/prysm/v1alpha1/beacon/attestations_test.go b/beacon-chain/rpc/prysm/v1alpha1/beacon/attestations_test.go index c065900cf3..259aeba2f8 100644 --- a/beacon-chain/rpc/prysm/v1alpha1/beacon/attestations_test.go +++ b/beacon-chain/rpc/prysm/v1alpha1/beacon/attestations_test.go @@ -16,6 +16,7 @@ import ( "github.com/prysmaticlabs/prysm/beacon-chain/core/feed" "github.com/prysmaticlabs/prysm/beacon-chain/core/feed/operation" "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" dbTest "github.com/prysmaticlabs/prysm/beacon-chain/db/testing" "github.com/prysmaticlabs/prysm/beacon-chain/operations/attestations" "github.com/prysmaticlabs/prysm/beacon-chain/state/stategen" @@ -907,9 +908,9 @@ func TestServer_StreamIndexedAttestations_OK(t *testing.T) { }, }, } - domain, err := helpers.Domain(headState.Fork(), 0, params.BeaconConfig().DomainBeaconAttester, headState.GenesisValidatorRoot()) + domain, err := signing.Domain(headState.Fork(), 0, params.BeaconConfig().DomainBeaconAttester, headState.GenesisValidatorRoot()) require.NoError(t, err) - encoded, err := helpers.ComputeSigningRoot(attExample.Data, domain) + encoded, err := signing.ComputeSigningRoot(attExample.Data, domain) require.NoError(t, err) sig := privKeys[j].Sign(encoded[:]) attExample.Signature = sig.Marshal() diff --git a/beacon-chain/rpc/prysm/v1alpha1/validator/BUILD.bazel b/beacon-chain/rpc/prysm/v1alpha1/validator/BUILD.bazel index 5056a7a940..124a3f466f 100644 --- a/beacon-chain/rpc/prysm/v1alpha1/validator/BUILD.bazel +++ b/beacon-chain/rpc/prysm/v1alpha1/validator/BUILD.bazel @@ -31,6 +31,7 @@ go_library( "//beacon-chain/core/feed/operation:go_default_library", "//beacon-chain/core/feed/state:go_default_library", "//beacon-chain/core/helpers:go_default_library", + "//beacon-chain/core/signing:go_default_library", "//beacon-chain/core/transition:go_default_library", "//beacon-chain/core/transition/interop:go_default_library", "//beacon-chain/operations/attestations:go_default_library", @@ -107,6 +108,7 @@ go_test( "//beacon-chain/core/feed/operation:go_default_library", "//beacon-chain/core/feed/state:go_default_library", "//beacon-chain/core/helpers:go_default_library", + "//beacon-chain/core/signing:go_default_library", "//beacon-chain/core/transition:go_default_library", "//beacon-chain/db/testing:go_default_library", "//beacon-chain/operations/attestations:go_default_library", diff --git a/beacon-chain/rpc/prysm/v1alpha1/validator/aggregator_test.go b/beacon-chain/rpc/prysm/v1alpha1/validator/aggregator_test.go index 996d6c2de2..8269c37642 100644 --- a/beacon-chain/rpc/prysm/v1alpha1/validator/aggregator_test.go +++ b/beacon-chain/rpc/prysm/v1alpha1/validator/aggregator_test.go @@ -9,6 +9,7 @@ import ( "github.com/prysmaticlabs/go-bitfield" mock "github.com/prysmaticlabs/prysm/beacon-chain/blockchain/testing" "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" "github.com/prysmaticlabs/prysm/beacon-chain/operations/attestations" mockp2p "github.com/prysmaticlabs/prysm/beacon-chain/p2p/testing" "github.com/prysmaticlabs/prysm/beacon-chain/state" @@ -227,7 +228,7 @@ func generateAtt(state state.ReadOnlyBeaconState, index uint64, privKeys []bls.S att.Signature = zeroSig[:] for i, indice := range attestingIndices { - sb, err := helpers.ComputeDomainAndSign(state, 0, att.Data, params.BeaconConfig().DomainBeaconAttester, privKeys[indice]) + sb, err := signing.ComputeDomainAndSign(state, 0, att.Data, params.BeaconConfig().DomainBeaconAttester, privKeys[indice]) if err != nil { return nil, err } @@ -260,7 +261,7 @@ func generateUnaggregatedAtt(state state.ReadOnlyBeaconState, index uint64, priv if err != nil { return nil, err } - domain, err := helpers.Domain(state.Fork(), 0, params.BeaconConfig().DomainBeaconAttester, params.BeaconConfig().ZeroHash[:]) + domain, err := signing.Domain(state.Fork(), 0, params.BeaconConfig().DomainBeaconAttester, params.BeaconConfig().ZeroHash[:]) if err != nil { return nil, err } @@ -270,7 +271,7 @@ func generateUnaggregatedAtt(state state.ReadOnlyBeaconState, index uint64, priv att.Signature = zeroSig[:] for i, indice := range attestingIndices { - hashTreeRoot, err := helpers.ComputeSigningRoot(att.Data, domain) + hashTreeRoot, err := signing.ComputeSigningRoot(att.Data, domain) if err != nil { return nil, err } diff --git a/beacon-chain/rpc/prysm/v1alpha1/validator/exit_test.go b/beacon-chain/rpc/prysm/v1alpha1/validator/exit_test.go index d3223fabca..a32de35078 100644 --- a/beacon-chain/rpc/prysm/v1alpha1/validator/exit_test.go +++ b/beacon-chain/rpc/prysm/v1alpha1/validator/exit_test.go @@ -9,7 +9,7 @@ import ( mockChain "github.com/prysmaticlabs/prysm/beacon-chain/blockchain/testing" "github.com/prysmaticlabs/prysm/beacon-chain/core/feed" opfeed "github.com/prysmaticlabs/prysm/beacon-chain/core/feed/operation" - "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" "github.com/prysmaticlabs/prysm/beacon-chain/core/transition" "github.com/prysmaticlabs/prysm/beacon-chain/operations/voluntaryexits" mockp2p "github.com/prysmaticlabs/prysm/beacon-chain/p2p/testing" @@ -62,7 +62,7 @@ func TestProposeExit_Notification(t *testing.T) { ValidatorIndex: validatorIndex, }, } - req.Signature, err = helpers.ComputeDomainAndSign(beaconState, epoch, req.Exit, params.BeaconConfig().DomainVoluntaryExit, keys[0]) + req.Signature, err = signing.ComputeDomainAndSign(beaconState, epoch, req.Exit, params.BeaconConfig().DomainVoluntaryExit, keys[0]) require.NoError(t, err) resp, err := server.ProposeExit(context.Background(), req) @@ -141,7 +141,7 @@ func TestProposeExit_NoPanic(t *testing.T) { _, err = server.ProposeExit(context.Background(), req) require.ErrorContains(t, "invalid signature provided", err, "Expected error for invalid signature length") - req.Signature, err = helpers.ComputeDomainAndSign(beaconState, epoch, req.Exit, params.BeaconConfig().DomainVoluntaryExit, keys[0]) + req.Signature, err = signing.ComputeDomainAndSign(beaconState, epoch, req.Exit, params.BeaconConfig().DomainVoluntaryExit, keys[0]) require.NoError(t, err) resp, err := server.ProposeExit(context.Background(), req) require.NoError(t, err) diff --git a/beacon-chain/rpc/prysm/v1alpha1/validator/proposer_test.go b/beacon-chain/rpc/prysm/v1alpha1/validator/proposer_test.go index 29861ae6b6..9bfec52785 100644 --- a/beacon-chain/rpc/prysm/v1alpha1/validator/proposer_test.go +++ b/beacon-chain/rpc/prysm/v1alpha1/validator/proposer_test.go @@ -12,6 +12,7 @@ import ( "github.com/prysmaticlabs/prysm/beacon-chain/core" b "github.com/prysmaticlabs/prysm/beacon-chain/core/blocks" "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" dbutil "github.com/prysmaticlabs/prysm/beacon-chain/db/testing" "github.com/prysmaticlabs/prysm/beacon-chain/operations/attestations" "github.com/prysmaticlabs/prysm/beacon-chain/operations/slashings" @@ -316,7 +317,7 @@ func TestProposer_ComputeStateRoot_OK(t *testing.T) { require.NoError(t, beaconState.SetSlot(beaconState.Slot()-1)) req.Block.Body.RandaoReveal = randaoReveal currentEpoch := core.CurrentEpoch(beaconState) - req.Signature, err = helpers.ComputeDomainAndSign(beaconState, currentEpoch, req.Block, params.BeaconConfig().DomainBeaconProposer, privKeys[proposerIdx]) + req.Signature, err = signing.ComputeDomainAndSign(beaconState, currentEpoch, req.Block, params.BeaconConfig().DomainBeaconProposer, privKeys[proposerIdx]) require.NoError(t, err) _, err = proposerServer.ComputeStateRoot(context.Background(), wrapper.WrappedPhase0SignedBeaconBlock(req)) @@ -1844,14 +1845,14 @@ func TestProposer_FilterAttestation(t *testing.T) { attestingIndices, err := attestation.AttestingIndices(atts[i].AggregationBits, committee) require.NoError(t, err) assert.NoError(t, err) - domain, err := helpers.Domain(state.Fork(), 0, params.BeaconConfig().DomainBeaconAttester, params.BeaconConfig().ZeroHash[:]) + domain, err := signing.Domain(state.Fork(), 0, params.BeaconConfig().DomainBeaconAttester, params.BeaconConfig().ZeroHash[:]) require.NoError(t, err) sigs := make([]bls.Signature, len(attestingIndices)) zeroSig := [96]byte{} atts[i].Signature = zeroSig[:] for i, indice := range attestingIndices { - hashTreeRoot, err := helpers.ComputeSigningRoot(atts[i].Data, domain) + hashTreeRoot, err := signing.ComputeSigningRoot(atts[i].Data, domain) require.NoError(t, err) sig := privKeys[indice].Sign(hashTreeRoot[:]) sigs[i] = sig diff --git a/beacon-chain/rpc/prysm/v1alpha1/validator/server.go b/beacon-chain/rpc/prysm/v1alpha1/validator/server.go index 9fba43e771..bad7395b10 100644 --- a/beacon-chain/rpc/prysm/v1alpha1/validator/server.go +++ b/beacon-chain/rpc/prysm/v1alpha1/validator/server.go @@ -15,7 +15,7 @@ import ( blockfeed "github.com/prysmaticlabs/prysm/beacon-chain/core/feed/block" opfeed "github.com/prysmaticlabs/prysm/beacon-chain/core/feed/operation" statefeed "github.com/prysmaticlabs/prysm/beacon-chain/core/feed/state" - "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" "github.com/prysmaticlabs/prysm/beacon-chain/operations/attestations" "github.com/prysmaticlabs/prysm/beacon-chain/operations/slashings" "github.com/prysmaticlabs/prysm/beacon-chain/operations/synccommittee" @@ -129,7 +129,7 @@ func (vs *Server) DomainData(_ context.Context, request *ethpb.DomainRequest) (* return nil, err } headGenesisValidatorRoot := vs.HeadFetcher.HeadGenesisValidatorRoot() - dv, err := helpers.Domain(fork, request.Epoch, bytesutil.ToBytes4(request.Domain), headGenesisValidatorRoot[:]) + dv, err := signing.Domain(fork, request.Epoch, bytesutil.ToBytes4(request.Domain), headGenesisValidatorRoot[:]) if err != nil { return nil, err } diff --git a/beacon-chain/rpc/prysm/v1alpha1/validator/server_test.go b/beacon-chain/rpc/prysm/v1alpha1/validator/server_test.go index 147fb9a7ed..c942ff1331 100644 --- a/beacon-chain/rpc/prysm/v1alpha1/validator/server_test.go +++ b/beacon-chain/rpc/prysm/v1alpha1/validator/server_test.go @@ -12,7 +12,7 @@ import ( "github.com/prysmaticlabs/prysm/beacon-chain/cache/depositcache" "github.com/prysmaticlabs/prysm/beacon-chain/core/feed" statefeed "github.com/prysmaticlabs/prysm/beacon-chain/core/feed/state" - "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" mockPOW "github.com/prysmaticlabs/prysm/beacon-chain/powchain/testing" v1 "github.com/prysmaticlabs/prysm/beacon-chain/state/v1" "github.com/prysmaticlabs/prysm/config/params" @@ -126,9 +126,9 @@ func TestWaitForActivation_ValidatorOriginallyExists(t *testing.T) { WithdrawalCredentials: bytesutil.PadTo([]byte("hey"), 32), Signature: make([]byte, 96), } - domain, err := helpers.ComputeDomain(params.BeaconConfig().DomainDeposit, nil, nil) + domain, err := signing.ComputeDomain(params.BeaconConfig().DomainDeposit, nil, nil) require.NoError(t, err) - signingRoot, err := helpers.ComputeSigningRoot(depData, domain) + signingRoot, err := signing.ComputeSigningRoot(depData, domain) require.NoError(t, err) depData.Signature = priv1.Sign(signingRoot[:]).Marshal() diff --git a/beacon-chain/rpc/prysm/v1alpha1/validator/status.go b/beacon-chain/rpc/prysm/v1alpha1/validator/status.go index 5d3f0aac66..cc30870585 100644 --- a/beacon-chain/rpc/prysm/v1alpha1/validator/status.go +++ b/beacon-chain/rpc/prysm/v1alpha1/validator/status.go @@ -7,6 +7,7 @@ import ( types "github.com/prysmaticlabs/eth2-types" "github.com/prysmaticlabs/prysm/beacon-chain/core" "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" "github.com/prysmaticlabs/prysm/beacon-chain/state" "github.com/prysmaticlabs/prysm/config/params" "github.com/prysmaticlabs/prysm/contracts/deposit" @@ -263,7 +264,7 @@ func (vs *Server) validatorStatus( if eth1BlockNumBigInt == nil { // No deposit found in ETH1. return resp, nonExistentIndex } - domain, err := helpers.ComputeDomain( + domain, err := signing.ComputeDomain( params.BeaconConfig().DomainDeposit, nil, /*forkVersion*/ nil, /*genesisValidatorsRoot*/ diff --git a/beacon-chain/sync/BUILD.bazel b/beacon-chain/sync/BUILD.bazel index 30eb53fd9d..24f1667b51 100644 --- a/beacon-chain/sync/BUILD.bazel +++ b/beacon-chain/sync/BUILD.bazel @@ -62,6 +62,7 @@ go_library( "//beacon-chain/core/feed/operation:go_default_library", "//beacon-chain/core/feed/state:go_default_library", "//beacon-chain/core/helpers:go_default_library", + "//beacon-chain/core/signing:go_default_library", "//beacon-chain/core/transition:go_default_library", "//beacon-chain/core/transition/interop:go_default_library", "//beacon-chain/db:go_default_library", @@ -168,6 +169,7 @@ go_test( "//beacon-chain/core/feed:go_default_library", "//beacon-chain/core/feed/state:go_default_library", "//beacon-chain/core/helpers:go_default_library", + "//beacon-chain/core/signing:go_default_library", "//beacon-chain/core/transition:go_default_library", "//beacon-chain/db:go_default_library", "//beacon-chain/db/kv:go_default_library", diff --git a/beacon-chain/sync/context.go b/beacon-chain/sync/context.go index ccff94bf45..13c44f5acc 100644 --- a/beacon-chain/sync/context.go +++ b/beacon-chain/sync/context.go @@ -4,7 +4,7 @@ import ( "github.com/libp2p/go-libp2p-core/network" "github.com/pkg/errors" "github.com/prysmaticlabs/prysm/beacon-chain/blockchain" - "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" "github.com/prysmaticlabs/prysm/beacon-chain/p2p" ) @@ -62,7 +62,7 @@ func rpcContext(stream network.Stream, chain blockchain.ChainInfoFetcher) ([]byt case p2p.SchemaVersionV2: currFork := chain.CurrentFork() genRoot := chain.GenesisValidatorRoot() - digest, err := helpers.ComputeForkDigest(currFork.CurrentVersion, genRoot[:]) + digest, err := signing.ComputeForkDigest(currFork.CurrentVersion, genRoot[:]) if err != nil { return nil, err } diff --git a/beacon-chain/sync/decode_pubsub_test.go b/beacon-chain/sync/decode_pubsub_test.go index 50b0acbcd6..524836669c 100644 --- a/beacon-chain/sync/decode_pubsub_test.go +++ b/beacon-chain/sync/decode_pubsub_test.go @@ -12,7 +12,7 @@ import ( pubsub "github.com/libp2p/go-libp2p-pubsub" pb "github.com/libp2p/go-libp2p-pubsub/pb" mock "github.com/prysmaticlabs/prysm/beacon-chain/blockchain/testing" - "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" "github.com/prysmaticlabs/prysm/beacon-chain/p2p" p2ptesting "github.com/prysmaticlabs/prysm/beacon-chain/p2p/testing" "github.com/prysmaticlabs/prysm/config/params" @@ -23,7 +23,7 @@ import ( ) func TestService_decodePubsubMessage(t *testing.T) { - digest, err := helpers.ComputeForkDigest(params.BeaconConfig().GenesisForkVersion, make([]byte, 32)) + digest, err := signing.ComputeForkDigest(params.BeaconConfig().GenesisForkVersion, make([]byte, 32)) require.NoError(t, err) tests := []struct { name string diff --git a/beacon-chain/sync/pending_attestations_queue_test.go b/beacon-chain/sync/pending_attestations_queue_test.go index 62ce40d7bf..8417f788c4 100644 --- a/beacon-chain/sync/pending_attestations_queue_test.go +++ b/beacon-chain/sync/pending_attestations_queue_test.go @@ -12,6 +12,7 @@ import ( "github.com/prysmaticlabs/prysm/async/abool" mock "github.com/prysmaticlabs/prysm/beacon-chain/blockchain/testing" "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" dbtest "github.com/prysmaticlabs/prysm/beacon-chain/db/testing" "github.com/prysmaticlabs/prysm/beacon-chain/operations/attestations" "github.com/prysmaticlabs/prysm/beacon-chain/p2p/peers" @@ -83,9 +84,9 @@ func TestProcessPendingAtts_HasBlockSaveUnAggregatedAtt(t *testing.T) { attestingIndices, err := attestation.AttestingIndices(att.AggregationBits, committee) require.NoError(t, err) assert.NoError(t, err) - attesterDomain, err := helpers.Domain(beaconState.Fork(), 0, params.BeaconConfig().DomainBeaconAttester, beaconState.GenesisValidatorRoot()) + attesterDomain, err := signing.Domain(beaconState.Fork(), 0, params.BeaconConfig().DomainBeaconAttester, beaconState.GenesisValidatorRoot()) require.NoError(t, err) - hashTreeRoot, err := helpers.ComputeSigningRoot(att.Data, attesterDomain) + hashTreeRoot, err := signing.ComputeSigningRoot(att.Data, attesterDomain) assert.NoError(t, err) for _, i := range attestingIndices { att.Signature = privKeys[i].Sign(hashTreeRoot[:]).Marshal() @@ -94,14 +95,14 @@ func TestProcessPendingAtts_HasBlockSaveUnAggregatedAtt(t *testing.T) { // Arbitrary aggregator index for testing purposes. aggregatorIndex := committee[0] sszUint := types.SSZUint64(att.Data.Slot) - sig, err := helpers.ComputeDomainAndSign(beaconState, 0, &sszUint, params.BeaconConfig().DomainSelectionProof, privKeys[aggregatorIndex]) + sig, err := signing.ComputeDomainAndSign(beaconState, 0, &sszUint, params.BeaconConfig().DomainSelectionProof, privKeys[aggregatorIndex]) require.NoError(t, err) aggregateAndProof := ðpb.AggregateAttestationAndProof{ SelectionProof: sig, Aggregate: att, AggregatorIndex: aggregatorIndex, } - aggreSig, err := helpers.ComputeDomainAndSign(beaconState, 0, aggregateAndProof, params.BeaconConfig().DomainAggregateAndProof, privKeys[aggregatorIndex]) + aggreSig, err := signing.ComputeDomainAndSign(beaconState, 0, aggregateAndProof, params.BeaconConfig().DomainAggregateAndProof, privKeys[aggregatorIndex]) require.NoError(t, err) require.NoError(t, beaconState.SetGenesisTime(uint64(time.Now().Unix()))) @@ -199,9 +200,9 @@ func TestProcessPendingAtts_NoBroadcastWithBadSignature(t *testing.T) { attestingIndices, err := attestation.AttestingIndices(att.AggregationBits, committee) require.NoError(t, err) assert.NoError(t, err) - attesterDomain, err := helpers.Domain(s.Fork(), 0, params.BeaconConfig().DomainBeaconAttester, s.GenesisValidatorRoot()) + attesterDomain, err := signing.Domain(s.Fork(), 0, params.BeaconConfig().DomainBeaconAttester, s.GenesisValidatorRoot()) require.NoError(t, err) - hashTreeRoot, err := helpers.ComputeSigningRoot(att.Data, attesterDomain) + hashTreeRoot, err := signing.ComputeSigningRoot(att.Data, attesterDomain) assert.NoError(t, err) for _, i := range attestingIndices { att.Signature = privKeys[i].Sign(hashTreeRoot[:]).Marshal() @@ -210,14 +211,14 @@ func TestProcessPendingAtts_NoBroadcastWithBadSignature(t *testing.T) { // Arbitrary aggregator index for testing purposes. aggregatorIndex := committee[0] sszSlot := types.SSZUint64(att.Data.Slot) - sig, err := helpers.ComputeDomainAndSign(s, 0, &sszSlot, params.BeaconConfig().DomainSelectionProof, privKeys[aggregatorIndex]) + sig, err := signing.ComputeDomainAndSign(s, 0, &sszSlot, params.BeaconConfig().DomainSelectionProof, privKeys[aggregatorIndex]) require.NoError(t, err) aggregateAndProof := ðpb.AggregateAttestationAndProof{ SelectionProof: sig, Aggregate: att, AggregatorIndex: aggregatorIndex, } - aggreSig, err := helpers.ComputeDomainAndSign(s, 0, aggregateAndProof, params.BeaconConfig().DomainAggregateAndProof, privKeys[aggregatorIndex]) + aggreSig, err := signing.ComputeDomainAndSign(s, 0, aggregateAndProof, params.BeaconConfig().DomainAggregateAndProof, privKeys[aggregatorIndex]) require.NoError(t, err) require.NoError(t, s.SetGenesisTime(uint64(time.Now().Unix()))) @@ -273,9 +274,9 @@ func TestProcessPendingAtts_HasBlockSaveAggregatedAtt(t *testing.T) { attestingIndices, err := attestation.AttestingIndices(att.AggregationBits, committee) require.NoError(t, err) assert.NoError(t, err) - attesterDomain, err := helpers.Domain(beaconState.Fork(), 0, params.BeaconConfig().DomainBeaconAttester, beaconState.GenesisValidatorRoot()) + attesterDomain, err := signing.Domain(beaconState.Fork(), 0, params.BeaconConfig().DomainBeaconAttester, beaconState.GenesisValidatorRoot()) require.NoError(t, err) - hashTreeRoot, err := helpers.ComputeSigningRoot(att.Data, attesterDomain) + hashTreeRoot, err := signing.ComputeSigningRoot(att.Data, attesterDomain) assert.NoError(t, err) sigs := make([]bls.Signature, len(attestingIndices)) for i, indice := range attestingIndices { @@ -287,14 +288,14 @@ func TestProcessPendingAtts_HasBlockSaveAggregatedAtt(t *testing.T) { // Arbitrary aggregator index for testing purposes. aggregatorIndex := committee[0] sszUint := types.SSZUint64(att.Data.Slot) - sig, err := helpers.ComputeDomainAndSign(beaconState, 0, &sszUint, params.BeaconConfig().DomainSelectionProof, privKeys[aggregatorIndex]) + sig, err := signing.ComputeDomainAndSign(beaconState, 0, &sszUint, params.BeaconConfig().DomainSelectionProof, privKeys[aggregatorIndex]) require.NoError(t, err) aggregateAndProof := ðpb.AggregateAttestationAndProof{ SelectionProof: sig, Aggregate: att, AggregatorIndex: aggregatorIndex, } - aggreSig, err := helpers.ComputeDomainAndSign(beaconState, 0, aggregateAndProof, params.BeaconConfig().DomainAggregateAndProof, privKeys[aggregatorIndex]) + aggreSig, err := signing.ComputeDomainAndSign(beaconState, 0, aggregateAndProof, params.BeaconConfig().DomainAggregateAndProof, privKeys[aggregatorIndex]) require.NoError(t, err) require.NoError(t, beaconState.SetGenesisTime(uint64(time.Now().Unix()))) diff --git a/beacon-chain/sync/pending_blocks_queue_test.go b/beacon-chain/sync/pending_blocks_queue_test.go index 49da1bc1db..eaf1fdd1e2 100644 --- a/beacon-chain/sync/pending_blocks_queue_test.go +++ b/beacon-chain/sync/pending_blocks_queue_test.go @@ -14,6 +14,7 @@ import ( types "github.com/prysmaticlabs/eth2-types" mock "github.com/prysmaticlabs/prysm/beacon-chain/blockchain/testing" "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" dbtest "github.com/prysmaticlabs/prysm/beacon-chain/db/testing" "github.com/prysmaticlabs/prysm/beacon-chain/p2p/peers" p2ptest "github.com/prysmaticlabs/prysm/beacon-chain/p2p/testing" @@ -493,7 +494,7 @@ func TestService_ProcessPendingBlockOnCorrectSlot(t *testing.T) { b1Root, err := b1.Block.HashTreeRoot() require.NoError(t, err) b1.Block.ProposerIndex = proposerIdx - b1.Signature, err = helpers.ComputeDomainAndSign(beaconState, 0, b1.Block, params.BeaconConfig().DomainBeaconProposer, privKeys[proposerIdx]) + b1.Signature, err = signing.ComputeDomainAndSign(beaconState, 0, b1.Block, params.BeaconConfig().DomainBeaconProposer, privKeys[proposerIdx]) require.NoError(t, err) b2 := util.NewBeaconBlock() @@ -565,7 +566,7 @@ func TestService_ProcessBadPendingBlocks(t *testing.T) { b1Root, err := b1.Block.HashTreeRoot() require.NoError(t, err) b1.Block.ProposerIndex = proposerIdx - b1.Signature, err = helpers.ComputeDomainAndSign(beaconState, 0, b1.Block, params.BeaconConfig().DomainBeaconProposer, privKeys[proposerIdx]) + b1.Signature, err = signing.ComputeDomainAndSign(beaconState, 0, b1.Block, params.BeaconConfig().DomainBeaconProposer, privKeys[proposerIdx]) require.NoError(t, err) b := util.NewBeaconBlock() diff --git a/beacon-chain/sync/rpc_chunked_response.go b/beacon-chain/sync/rpc_chunked_response.go index 566fcd9378..3e11e63519 100644 --- a/beacon-chain/sync/rpc_chunked_response.go +++ b/beacon-chain/sync/rpc_chunked_response.go @@ -4,7 +4,7 @@ import ( libp2pcore "github.com/libp2p/go-libp2p-core" "github.com/pkg/errors" "github.com/prysmaticlabs/prysm/beacon-chain/blockchain" - "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" "github.com/prysmaticlabs/prysm/beacon-chain/p2p" "github.com/prysmaticlabs/prysm/beacon-chain/p2p/encoder" "github.com/prysmaticlabs/prysm/beacon-chain/p2p/types" @@ -124,7 +124,7 @@ func extractBlockDataType(digest []byte, chain blockchain.ChainInfoFetcher) (blo } vRoot := chain.GenesisValidatorRoot() for k, blkFunc := range types.BlockMap { - rDigest, err := helpers.ComputeForkDigest(k[:], vRoot[:]) + rDigest, err := signing.ComputeForkDigest(k[:], vRoot[:]) if err != nil { return nil, err } diff --git a/beacon-chain/sync/rpc_chunked_response_test.go b/beacon-chain/sync/rpc_chunked_response_test.go index 168dd63f1d..10f9cbc3f8 100644 --- a/beacon-chain/sync/rpc_chunked_response_test.go +++ b/beacon-chain/sync/rpc_chunked_response_test.go @@ -6,7 +6,7 @@ import ( "github.com/prysmaticlabs/prysm/beacon-chain/blockchain" mock "github.com/prysmaticlabs/prysm/beacon-chain/blockchain/testing" - "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" "github.com/prysmaticlabs/prysm/config/params" ethpb "github.com/prysmaticlabs/prysm/proto/prysm/v1alpha1" "github.com/prysmaticlabs/prysm/proto/prysm/v1alpha1/block" @@ -16,9 +16,9 @@ import ( func TestExtractBlockDataType(t *testing.T) { // Precompute digests - genDigest, err := helpers.ComputeForkDigest(params.BeaconConfig().GenesisForkVersion, params.BeaconConfig().ZeroHash[:]) + genDigest, err := signing.ComputeForkDigest(params.BeaconConfig().GenesisForkVersion, params.BeaconConfig().ZeroHash[:]) require.NoError(t, err) - altairDigest, err := helpers.ComputeForkDigest(params.BeaconConfig().AltairForkVersion, params.BeaconConfig().ZeroHash[:]) + altairDigest, err := signing.ComputeForkDigest(params.BeaconConfig().AltairForkVersion, params.BeaconConfig().ZeroHash[:]) require.NoError(t, err) type args struct { diff --git a/beacon-chain/sync/rpc_metadata.go b/beacon-chain/sync/rpc_metadata.go index be51a7c073..eba906e224 100644 --- a/beacon-chain/sync/rpc_metadata.go +++ b/beacon-chain/sync/rpc_metadata.go @@ -9,7 +9,7 @@ import ( "github.com/prysmaticlabs/go-bitfield" "github.com/prysmaticlabs/prysm/beacon-chain/blockchain" "github.com/prysmaticlabs/prysm/beacon-chain/core" - "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" "github.com/prysmaticlabs/prysm/beacon-chain/p2p" "github.com/prysmaticlabs/prysm/beacon-chain/p2p/types" "github.com/prysmaticlabs/prysm/config/params" @@ -145,7 +145,7 @@ func extractMetaDataType(digest []byte, chain blockchain.ChainInfoFetcher) (meta } vRoot := chain.GenesisValidatorRoot() for k, mdFunc := range types.MetaDataMap { - rDigest, err := helpers.ComputeForkDigest(k[:], vRoot[:]) + rDigest, err := signing.ComputeForkDigest(k[:], vRoot[:]) if err != nil { return nil, err } diff --git a/beacon-chain/sync/rpc_metadata_test.go b/beacon-chain/sync/rpc_metadata_test.go index 07ba8eb123..b7a2658c29 100644 --- a/beacon-chain/sync/rpc_metadata_test.go +++ b/beacon-chain/sync/rpc_metadata_test.go @@ -12,7 +12,7 @@ import ( "github.com/libp2p/go-libp2p-core/protocol" "github.com/prysmaticlabs/prysm/beacon-chain/blockchain" mock "github.com/prysmaticlabs/prysm/beacon-chain/blockchain/testing" - "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" db "github.com/prysmaticlabs/prysm/beacon-chain/db/testing" "github.com/prysmaticlabs/prysm/beacon-chain/p2p" p2ptest "github.com/prysmaticlabs/prysm/beacon-chain/p2p/testing" @@ -229,9 +229,9 @@ func TestMetadataRPCHandler_SendsMetadataAltair(t *testing.T) { func TestExtractMetaDataType(t *testing.T) { // Precompute digests - genDigest, err := helpers.ComputeForkDigest(params.BeaconConfig().GenesisForkVersion, params.BeaconConfig().ZeroHash[:]) + genDigest, err := signing.ComputeForkDigest(params.BeaconConfig().GenesisForkVersion, params.BeaconConfig().ZeroHash[:]) require.NoError(t, err) - altairDigest, err := helpers.ComputeForkDigest(params.BeaconConfig().AltairForkVersion, params.BeaconConfig().ZeroHash[:]) + altairDigest, err := signing.ComputeForkDigest(params.BeaconConfig().AltairForkVersion, params.BeaconConfig().ZeroHash[:]) require.NoError(t, err) type args struct { diff --git a/beacon-chain/sync/subscriber_test.go b/beacon-chain/sync/subscriber_test.go index e4af814269..59991677cb 100644 --- a/beacon-chain/sync/subscriber_test.go +++ b/beacon-chain/sync/subscriber_test.go @@ -16,7 +16,7 @@ import ( mockChain "github.com/prysmaticlabs/prysm/beacon-chain/blockchain/testing" "github.com/prysmaticlabs/prysm/beacon-chain/cache" "github.com/prysmaticlabs/prysm/beacon-chain/core" - "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" db "github.com/prysmaticlabs/prysm/beacon-chain/db/testing" "github.com/prysmaticlabs/prysm/beacon-chain/operations/slashings" "github.com/prysmaticlabs/prysm/beacon-chain/p2p" @@ -597,7 +597,7 @@ func TestSubscribeWithSyncSubnets_StaticSwitchFork(t *testing.T) { // Empty cache at the end of the test. defer cache.SyncSubnetIDs.EmptyAllCaches() genRoot := r.cfg.Chain.GenesisValidatorRoot() - digest, err := helpers.ComputeForkDigest(params.BeaconConfig().GenesisForkVersion, genRoot[:]) + digest, err := signing.ComputeForkDigest(params.BeaconConfig().GenesisForkVersion, genRoot[:]) assert.NoError(t, err) r.subscribeStaticWithSyncSubnets(p2p.SyncCommitteeSubnetTopicFormat, nil, nil, digest) assert.Equal(t, int(params.BeaconConfig().SyncCommitteeSubnetCount), len(r.cfg.P2P.PubSub().GetTopics())) @@ -637,7 +637,7 @@ func TestSubscribeWithSyncSubnets_DynamicSwitchFork(t *testing.T) { defer cache.SyncSubnetIDs.EmptyAllCaches() cache.SyncSubnetIDs.AddSyncCommitteeSubnets([]byte("pubkey"), 0, []uint64{0, 1}, 10*time.Second) genRoot := r.cfg.Chain.GenesisValidatorRoot() - digest, err := helpers.ComputeForkDigest(params.BeaconConfig().GenesisForkVersion, genRoot[:]) + digest, err := signing.ComputeForkDigest(params.BeaconConfig().GenesisForkVersion, genRoot[:]) assert.NoError(t, err) r.subscribeDynamicWithSyncSubnets(p2p.SyncCommitteeSubnetTopicFormat, nil, nil, digest) @@ -662,14 +662,14 @@ func TestSubscribeWithSyncSubnets_DynamicSwitchFork(t *testing.T) { func TestIsDigestValid(t *testing.T) { genRoot := [32]byte{'A'} - digest, err := helpers.ComputeForkDigest(params.BeaconConfig().GenesisForkVersion, genRoot[:]) + digest, err := signing.ComputeForkDigest(params.BeaconConfig().GenesisForkVersion, genRoot[:]) assert.NoError(t, err) valid, err := isDigestValid(digest, time.Now().Add(-100*time.Second), genRoot) assert.NoError(t, err) assert.Equal(t, true, valid) // Compute future fork digest that will be invalid currently. - digest, err = helpers.ComputeForkDigest(params.BeaconConfig().AltairForkVersion, genRoot[:]) + digest, err = signing.ComputeForkDigest(params.BeaconConfig().AltairForkVersion, genRoot[:]) assert.NoError(t, err) valid, err = isDigestValid(digest, time.Now().Add(-100*time.Second), genRoot) assert.NoError(t, err) diff --git a/beacon-chain/sync/validate_aggregate_proof.go b/beacon-chain/sync/validate_aggregate_proof.go index 408880323c..454cb5670c 100644 --- a/beacon-chain/sync/validate_aggregate_proof.go +++ b/beacon-chain/sync/validate_aggregate_proof.go @@ -13,6 +13,7 @@ import ( "github.com/prysmaticlabs/prysm/beacon-chain/core/feed" "github.com/prysmaticlabs/prysm/beacon-chain/core/feed/operation" "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" "github.com/prysmaticlabs/prysm/beacon-chain/core/transition" "github.com/prysmaticlabs/prysm/beacon-chain/state" "github.com/prysmaticlabs/prysm/config/features" @@ -288,12 +289,12 @@ func validateSelectionIndex( return nil, err } - d, err := helpers.Domain(bs.Fork(), epoch, domain, bs.GenesisValidatorRoot()) + d, err := signing.Domain(bs.Fork(), epoch, domain, bs.GenesisValidatorRoot()) if err != nil { return nil, err } sszUint := types.SSZUint64(data.Slot) - root, err := helpers.ComputeSigningRoot(&sszUint, d) + root, err := signing.ComputeSigningRoot(&sszUint, d) if err != nil { return nil, err } @@ -316,11 +317,11 @@ func aggSigSet(s state.ReadOnlyBeaconState, a *ethpb.SignedAggregateAttestationA } epoch := core.SlotToEpoch(a.Message.Aggregate.Data.Slot) - d, err := helpers.Domain(s.Fork(), epoch, params.BeaconConfig().DomainAggregateAndProof, s.GenesisValidatorRoot()) + d, err := signing.Domain(s.Fork(), epoch, params.BeaconConfig().DomainAggregateAndProof, s.GenesisValidatorRoot()) if err != nil { return nil, err } - root, err := helpers.ComputeSigningRoot(a.Message, d) + root, err := signing.ComputeSigningRoot(a.Message, d) if err != nil { return nil, err } diff --git a/beacon-chain/sync/validate_aggregate_proof_test.go b/beacon-chain/sync/validate_aggregate_proof_test.go index eeb4b564b7..a05d1079b6 100644 --- a/beacon-chain/sync/validate_aggregate_proof_test.go +++ b/beacon-chain/sync/validate_aggregate_proof_test.go @@ -13,6 +13,7 @@ import ( "github.com/prysmaticlabs/go-bitfield" mock "github.com/prysmaticlabs/prysm/beacon-chain/blockchain/testing" "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" dbtest "github.com/prysmaticlabs/prysm/beacon-chain/db/testing" "github.com/prysmaticlabs/prysm/beacon-chain/operations/attestations" "github.com/prysmaticlabs/prysm/beacon-chain/p2p" @@ -327,9 +328,9 @@ func TestValidateAggregateAndProof_CanValidate(t *testing.T) { attestingIndices, err := attestation.AttestingIndices(att.AggregationBits, committee) require.NoError(t, err) assert.NoError(t, err) - attesterDomain, err := helpers.Domain(beaconState.Fork(), 0, params.BeaconConfig().DomainBeaconAttester, beaconState.GenesisValidatorRoot()) + attesterDomain, err := signing.Domain(beaconState.Fork(), 0, params.BeaconConfig().DomainBeaconAttester, beaconState.GenesisValidatorRoot()) assert.NoError(t, err) - hashTreeRoot, err := helpers.ComputeSigningRoot(att.Data, attesterDomain) + hashTreeRoot, err := signing.ComputeSigningRoot(att.Data, attesterDomain) assert.NoError(t, err) sigs := make([]bls.Signature, len(attestingIndices)) for i, indice := range attestingIndices { @@ -339,7 +340,7 @@ func TestValidateAggregateAndProof_CanValidate(t *testing.T) { att.Signature = bls.AggregateSignatures(sigs).Marshal() ai := committee[0] sszUint := types.SSZUint64(att.Data.Slot) - sig, err := helpers.ComputeDomainAndSign(beaconState, 0, &sszUint, params.BeaconConfig().DomainSelectionProof, privKeys[ai]) + sig, err := signing.ComputeDomainAndSign(beaconState, 0, &sszUint, params.BeaconConfig().DomainSelectionProof, privKeys[ai]) require.NoError(t, err) aggregateAndProof := ðpb.AggregateAttestationAndProof{ SelectionProof: sig, @@ -347,7 +348,7 @@ func TestValidateAggregateAndProof_CanValidate(t *testing.T) { AggregatorIndex: ai, } signedAggregateAndProof := ðpb.SignedAggregateAttestationAndProof{Message: aggregateAndProof} - signedAggregateAndProof.Signature, err = helpers.ComputeDomainAndSign(beaconState, 0, signedAggregateAndProof.Message, params.BeaconConfig().DomainAggregateAndProof, privKeys[ai]) + signedAggregateAndProof.Signature, err = signing.ComputeDomainAndSign(beaconState, 0, signedAggregateAndProof.Message, params.BeaconConfig().DomainAggregateAndProof, privKeys[ai]) require.NoError(t, err) require.NoError(t, beaconState.SetGenesisTime(uint64(time.Now().Unix()))) @@ -420,9 +421,9 @@ func TestVerifyIndexInCommittee_SeenAggregatorEpoch(t *testing.T) { require.NoError(t, err) attestingIndices, err := attestation.AttestingIndices(att.AggregationBits, committee) require.NoError(t, err) - attesterDomain, err := helpers.Domain(beaconState.Fork(), 0, params.BeaconConfig().DomainBeaconAttester, beaconState.GenesisValidatorRoot()) + attesterDomain, err := signing.Domain(beaconState.Fork(), 0, params.BeaconConfig().DomainBeaconAttester, beaconState.GenesisValidatorRoot()) require.NoError(t, err) - hashTreeRoot, err := helpers.ComputeSigningRoot(att.Data, attesterDomain) + hashTreeRoot, err := signing.ComputeSigningRoot(att.Data, attesterDomain) assert.NoError(t, err) sigs := make([]bls.Signature, len(attestingIndices)) for i, indice := range attestingIndices { @@ -432,7 +433,7 @@ func TestVerifyIndexInCommittee_SeenAggregatorEpoch(t *testing.T) { att.Signature = bls.AggregateSignatures(sigs).Marshal() ai := committee[0] sszUint := types.SSZUint64(att.Data.Slot) - sig, err := helpers.ComputeDomainAndSign(beaconState, 0, &sszUint, params.BeaconConfig().DomainSelectionProof, privKeys[ai]) + sig, err := signing.ComputeDomainAndSign(beaconState, 0, &sszUint, params.BeaconConfig().DomainSelectionProof, privKeys[ai]) require.NoError(t, err) aggregateAndProof := ðpb.AggregateAttestationAndProof{ SelectionProof: sig, @@ -440,7 +441,7 @@ func TestVerifyIndexInCommittee_SeenAggregatorEpoch(t *testing.T) { AggregatorIndex: ai, } signedAggregateAndProof := ðpb.SignedAggregateAttestationAndProof{Message: aggregateAndProof} - signedAggregateAndProof.Signature, err = helpers.ComputeDomainAndSign(beaconState, 0, signedAggregateAndProof.Message, params.BeaconConfig().DomainAggregateAndProof, privKeys[ai]) + signedAggregateAndProof.Signature, err = signing.ComputeDomainAndSign(beaconState, 0, signedAggregateAndProof.Message, params.BeaconConfig().DomainAggregateAndProof, privKeys[ai]) require.NoError(t, err) require.NoError(t, beaconState.SetGenesisTime(uint64(time.Now().Unix()))) @@ -533,9 +534,9 @@ func TestValidateAggregateAndProof_BadBlock(t *testing.T) { attestingIndices, err := attestation.AttestingIndices(att.AggregationBits, committee) require.NoError(t, err) assert.NoError(t, err) - attesterDomain, err := helpers.Domain(beaconState.Fork(), 0, params.BeaconConfig().DomainBeaconAttester, beaconState.GenesisValidatorRoot()) + attesterDomain, err := signing.Domain(beaconState.Fork(), 0, params.BeaconConfig().DomainBeaconAttester, beaconState.GenesisValidatorRoot()) assert.NoError(t, err) - hashTreeRoot, err := helpers.ComputeSigningRoot(att.Data, attesterDomain) + hashTreeRoot, err := signing.ComputeSigningRoot(att.Data, attesterDomain) assert.NoError(t, err) sigs := make([]bls.Signature, len(attestingIndices)) for i, indice := range attestingIndices { @@ -545,7 +546,7 @@ func TestValidateAggregateAndProof_BadBlock(t *testing.T) { att.Signature = bls.AggregateSignatures(sigs).Marshal() ai := committee[0] sszUint := types.SSZUint64(att.Data.Slot) - sig, err := helpers.ComputeDomainAndSign(beaconState, 0, &sszUint, params.BeaconConfig().DomainSelectionProof, privKeys[ai]) + sig, err := signing.ComputeDomainAndSign(beaconState, 0, &sszUint, params.BeaconConfig().DomainSelectionProof, privKeys[ai]) require.NoError(t, err) aggregateAndProof := ðpb.AggregateAttestationAndProof{ @@ -554,7 +555,7 @@ func TestValidateAggregateAndProof_BadBlock(t *testing.T) { AggregatorIndex: ai, } signedAggregateAndProof := ðpb.SignedAggregateAttestationAndProof{Message: aggregateAndProof} - signedAggregateAndProof.Signature, err = helpers.ComputeDomainAndSign(beaconState, 0, signedAggregateAndProof.Message, params.BeaconConfig().DomainAggregateAndProof, privKeys[ai]) + signedAggregateAndProof.Signature, err = signing.ComputeDomainAndSign(beaconState, 0, signedAggregateAndProof.Message, params.BeaconConfig().DomainAggregateAndProof, privKeys[ai]) require.NoError(t, err) require.NoError(t, beaconState.SetGenesisTime(uint64(time.Now().Unix()))) @@ -624,9 +625,9 @@ func TestValidateAggregateAndProof_RejectWhenAttEpochDoesntEqualTargetEpoch(t *t attestingIndices, err := attestation.AttestingIndices(att.AggregationBits, committee) require.NoError(t, err) assert.NoError(t, err) - attesterDomain, err := helpers.Domain(beaconState.Fork(), 0, params.BeaconConfig().DomainBeaconAttester, beaconState.GenesisValidatorRoot()) + attesterDomain, err := signing.Domain(beaconState.Fork(), 0, params.BeaconConfig().DomainBeaconAttester, beaconState.GenesisValidatorRoot()) assert.NoError(t, err) - hashTreeRoot, err := helpers.ComputeSigningRoot(att.Data, attesterDomain) + hashTreeRoot, err := signing.ComputeSigningRoot(att.Data, attesterDomain) assert.NoError(t, err) sigs := make([]bls.Signature, len(attestingIndices)) for i, indice := range attestingIndices { @@ -636,7 +637,7 @@ func TestValidateAggregateAndProof_RejectWhenAttEpochDoesntEqualTargetEpoch(t *t att.Signature = bls.AggregateSignatures(sigs).Marshal() ai := committee[0] sszUint := types.SSZUint64(att.Data.Slot) - sig, err := helpers.ComputeDomainAndSign(beaconState, 0, &sszUint, params.BeaconConfig().DomainSelectionProof, privKeys[ai]) + sig, err := signing.ComputeDomainAndSign(beaconState, 0, &sszUint, params.BeaconConfig().DomainSelectionProof, privKeys[ai]) require.NoError(t, err) aggregateAndProof := ðpb.AggregateAttestationAndProof{ SelectionProof: sig, @@ -644,7 +645,7 @@ func TestValidateAggregateAndProof_RejectWhenAttEpochDoesntEqualTargetEpoch(t *t AggregatorIndex: ai, } signedAggregateAndProof := ðpb.SignedAggregateAttestationAndProof{Message: aggregateAndProof} - signedAggregateAndProof.Signature, err = helpers.ComputeDomainAndSign(beaconState, 0, signedAggregateAndProof.Message, params.BeaconConfig().DomainAggregateAndProof, privKeys[ai]) + signedAggregateAndProof.Signature, err = signing.ComputeDomainAndSign(beaconState, 0, signedAggregateAndProof.Message, params.BeaconConfig().DomainAggregateAndProof, privKeys[ai]) require.NoError(t, err) require.NoError(t, beaconState.SetGenesisTime(uint64(time.Now().Unix()))) diff --git a/beacon-chain/sync/validate_attester_slashing_test.go b/beacon-chain/sync/validate_attester_slashing_test.go index bf66596b9a..b704fddbc9 100644 --- a/beacon-chain/sync/validate_attester_slashing_test.go +++ b/beacon-chain/sync/validate_attester_slashing_test.go @@ -12,7 +12,7 @@ import ( pubsubpb "github.com/libp2p/go-libp2p-pubsub/pb" types "github.com/prysmaticlabs/eth2-types" mock "github.com/prysmaticlabs/prysm/beacon-chain/blockchain/testing" - "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" "github.com/prysmaticlabs/prysm/beacon-chain/p2p" p2ptest "github.com/prysmaticlabs/prysm/beacon-chain/p2p/testing" "github.com/prysmaticlabs/prysm/beacon-chain/state" @@ -39,9 +39,9 @@ func setupValidAttesterSlashing(t *testing.T) (*ethpb.AttesterSlashing, state.Be }, AttestingIndices: []uint64{0, 1}, }) - domain, err := helpers.Domain(state.Fork(), 0, params.BeaconConfig().DomainBeaconAttester, state.GenesisValidatorRoot()) + domain, err := signing.Domain(state.Fork(), 0, params.BeaconConfig().DomainBeaconAttester, state.GenesisValidatorRoot()) require.NoError(t, err) - hashTreeRoot, err := helpers.ComputeSigningRoot(att1.Data, domain) + hashTreeRoot, err := signing.ComputeSigningRoot(att1.Data, domain) assert.NoError(t, err) sig0 := privKeys[0].Sign(hashTreeRoot[:]) sig1 := privKeys[1].Sign(hashTreeRoot[:]) @@ -51,7 +51,7 @@ func setupValidAttesterSlashing(t *testing.T) (*ethpb.AttesterSlashing, state.Be att2 := util.HydrateIndexedAttestation(ðpb.IndexedAttestation{ AttestingIndices: []uint64{0, 1}, }) - hashTreeRoot, err = helpers.ComputeSigningRoot(att2.Data, domain) + hashTreeRoot, err = signing.ComputeSigningRoot(att2.Data, domain) assert.NoError(t, err) sig0 = privKeys[0].Sign(hashTreeRoot[:]) sig1 = privKeys[1].Sign(hashTreeRoot[:]) diff --git a/beacon-chain/sync/validate_beacon_attestation_test.go b/beacon-chain/sync/validate_beacon_attestation_test.go index 7c4dfd04d9..c3fc6e51f5 100644 --- a/beacon-chain/sync/validate_beacon_attestation_test.go +++ b/beacon-chain/sync/validate_beacon_attestation_test.go @@ -12,6 +12,7 @@ import ( "github.com/prysmaticlabs/go-bitfield" mockChain "github.com/prysmaticlabs/prysm/beacon-chain/blockchain/testing" "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" dbtest "github.com/prysmaticlabs/prysm/beacon-chain/db/testing" p2ptest "github.com/prysmaticlabs/prysm/beacon-chain/p2p/testing" mockSync "github.com/prysmaticlabs/prysm/beacon-chain/sync/initial-sync/testing" @@ -256,9 +257,9 @@ func TestService_validateCommitteeIndexBeaconAttestation(t *testing.T) { if tt.validAttestationSignature { com, err := helpers.BeaconCommitteeFromState(context.Background(), savedState, tt.msg.Data.Slot, tt.msg.Data.CommitteeIndex) require.NoError(t, err) - domain, err := helpers.Domain(savedState.Fork(), tt.msg.Data.Target.Epoch, params.BeaconConfig().DomainBeaconAttester, savedState.GenesisValidatorRoot()) + domain, err := signing.Domain(savedState.Fork(), tt.msg.Data.Target.Epoch, params.BeaconConfig().DomainBeaconAttester, savedState.GenesisValidatorRoot()) require.NoError(t, err) - attRoot, err := helpers.ComputeSigningRoot(tt.msg.Data, domain) + attRoot, err := signing.ComputeSigningRoot(tt.msg.Data, domain) require.NoError(t, err) for i := 0; ; i++ { if tt.msg.AggregationBits.BitAt(uint64(i)) { diff --git a/beacon-chain/sync/validate_beacon_blocks_test.go b/beacon-chain/sync/validate_beacon_blocks_test.go index b12916bd5d..200bb1e38b 100644 --- a/beacon-chain/sync/validate_beacon_blocks_test.go +++ b/beacon-chain/sync/validate_beacon_blocks_test.go @@ -17,6 +17,7 @@ import ( mock "github.com/prysmaticlabs/prysm/beacon-chain/blockchain/testing" "github.com/prysmaticlabs/prysm/beacon-chain/core" "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" "github.com/prysmaticlabs/prysm/beacon-chain/core/transition" dbtest "github.com/prysmaticlabs/prysm/beacon-chain/db/testing" "github.com/prysmaticlabs/prysm/beacon-chain/operations/attestations" @@ -154,7 +155,7 @@ func TestValidateBeaconBlockPubSub_CanRecoverStateSummary(t *testing.T) { msg.Block.ParentRoot = bRoot[:] msg.Block.Slot = 1 msg.Block.ProposerIndex = proposerIdx - msg.Signature, err = helpers.ComputeDomainAndSign(beaconState, 0, msg.Block, params.BeaconConfig().DomainBeaconProposer, privKeys[proposerIdx]) + msg.Signature, err = signing.ComputeDomainAndSign(beaconState, 0, msg.Block, params.BeaconConfig().DomainBeaconProposer, privKeys[proposerIdx]) require.NoError(t, err) stateGen := stategen.New(db) @@ -217,7 +218,7 @@ func TestValidateBeaconBlockPubSub_IsInCache(t *testing.T) { msg.Block.ParentRoot = bRoot[:] msg.Block.Slot = 1 msg.Block.ProposerIndex = proposerIdx - msg.Signature, err = helpers.ComputeDomainAndSign(beaconState, 0, msg.Block, params.BeaconConfig().DomainBeaconProposer, privKeys[proposerIdx]) + msg.Signature, err = signing.ComputeDomainAndSign(beaconState, 0, msg.Block, params.BeaconConfig().DomainBeaconProposer, privKeys[proposerIdx]) require.NoError(t, err) stateGen := stategen.New(db) @@ -282,7 +283,7 @@ func TestValidateBeaconBlockPubSub_ValidProposerSignature(t *testing.T) { msg.Block.ParentRoot = bRoot[:] msg.Block.Slot = 1 msg.Block.ProposerIndex = proposerIdx - msg.Signature, err = helpers.ComputeDomainAndSign(beaconState, 0, msg.Block, params.BeaconConfig().DomainBeaconProposer, privKeys[proposerIdx]) + msg.Signature, err = signing.ComputeDomainAndSign(beaconState, 0, msg.Block, params.BeaconConfig().DomainBeaconProposer, privKeys[proposerIdx]) require.NoError(t, err) stateGen := stategen.New(db) @@ -349,7 +350,7 @@ func TestValidateBeaconBlockPubSub_WithLookahead(t *testing.T) { msg.Block.ProposerIndex = proposerIdx msg.Block.Slot = blkSlot msg.Block.ParentRoot = bRoot[:] - msg.Signature, err = helpers.ComputeDomainAndSign(beaconState, 0, msg.Block, params.BeaconConfig().DomainBeaconProposer, privKeys[proposerIdx]) + msg.Signature, err = signing.ComputeDomainAndSign(beaconState, 0, msg.Block, params.BeaconConfig().DomainBeaconProposer, privKeys[proposerIdx]) require.NoError(t, err) stateGen := stategen.New(db) @@ -416,7 +417,7 @@ func TestValidateBeaconBlockPubSub_AdvanceEpochsForState(t *testing.T) { msg.Block.ProposerIndex = proposerIdx msg.Block.Slot = blkSlot msg.Block.ParentRoot = bRoot[:] - msg.Signature, err = helpers.ComputeDomainAndSign(beaconState, 0, msg.Block, params.BeaconConfig().DomainBeaconProposer, privKeys[proposerIdx]) + msg.Signature, err = signing.ComputeDomainAndSign(beaconState, 0, msg.Block, params.BeaconConfig().DomainBeaconProposer, privKeys[proposerIdx]) require.NoError(t, err) stateGen := stategen.New(db) @@ -523,7 +524,7 @@ func TestValidateBeaconBlockPubSub_AcceptBlocksFromNearFuture(t *testing.T) { msg.Block.Slot = 2 // two slots in future msg.Block.ParentRoot = bRoot[:] msg.Block.ProposerIndex = proposerIdx - msg.Signature, err = helpers.ComputeDomainAndSign(beaconState, 0, msg.Block, params.BeaconConfig().DomainBeaconProposer, privKeys[proposerIdx]) + msg.Signature, err = signing.ComputeDomainAndSign(beaconState, 0, msg.Block, params.BeaconConfig().DomainBeaconProposer, privKeys[proposerIdx]) require.NoError(t, err) stateGen := stategen.New(db) @@ -680,7 +681,7 @@ func TestValidateBeaconBlockPubSub_SeenProposerSlot(t *testing.T) { msg.Block.Slot = 1 msg.Block.ProposerIndex = proposerIdx msg.Block.ParentRoot = bRoot[:] - msg.Signature, err = helpers.ComputeDomainAndSign(beaconState, 0, msg.Block, params.BeaconConfig().DomainBeaconProposer, privKeys[proposerIdx]) + msg.Signature, err = signing.ComputeDomainAndSign(beaconState, 0, msg.Block, params.BeaconConfig().DomainBeaconProposer, privKeys[proposerIdx]) require.NoError(t, err) chainService := &mock.ChainService{Genesis: time.Unix(time.Now().Unix()-int64(params.BeaconConfig().SecondsPerSlot), 0), @@ -757,7 +758,7 @@ func TestValidateBeaconBlockPubSub_FilterByFinalizedEpoch(t *testing.T) { buf := new(bytes.Buffer) _, err = p.Encoding().EncodeGossip(buf, b) require.NoError(t, err) - digest, err := helpers.ComputeForkDigest(params.BeaconConfig().GenesisForkVersion, make([]byte, 32)) + digest, err := signing.ComputeForkDigest(params.BeaconConfig().GenesisForkVersion, make([]byte, 32)) assert.NoError(t, err) topic := fmt.Sprintf(p2p.GossipTypeMapping[reflect.TypeOf(b)], digest) m := &pubsub.Message{ @@ -807,7 +808,7 @@ func TestValidateBeaconBlockPubSub_ParentNotFinalizedDescendant(t *testing.T) { msg.Block.Slot = 1 msg.Block.ProposerIndex = proposerIdx msg.Block.ParentRoot = bRoot[:] - msg.Signature, err = helpers.ComputeDomainAndSign(beaconState, 0, msg.Block, params.BeaconConfig().DomainBeaconProposer, privKeys[proposerIdx]) + msg.Signature, err = signing.ComputeDomainAndSign(beaconState, 0, msg.Block, params.BeaconConfig().DomainBeaconProposer, privKeys[proposerIdx]) require.NoError(t, err) stateGen := stategen.New(db) @@ -870,7 +871,7 @@ func TestValidateBeaconBlockPubSub_InvalidParentBlock(t *testing.T) { msg.Block.ProposerIndex = proposerIdx msg.Block.Slot = 1 msg.Block.ParentRoot = bRoot[:] - msg.Signature, err = helpers.ComputeDomainAndSign(beaconState, 0, msg.Block, params.BeaconConfig().DomainBeaconProposer, privKeys[proposerIdx]) + msg.Signature, err = signing.ComputeDomainAndSign(beaconState, 0, msg.Block, params.BeaconConfig().DomainBeaconProposer, privKeys[proposerIdx]) require.NoError(t, err) // Mutate Signature @@ -973,7 +974,7 @@ func TestValidateBeaconBlockPubSub_RejectEvilBlocksFromFuture(t *testing.T) { // valid block msg.Block.ParentRoot = bRoot[:] - msg.Signature, err = helpers.ComputeDomainAndSign(beaconState, 0, msg.Block, params.BeaconConfig().DomainBeaconProposer, privKeys[proposerIdx]) + msg.Signature, err = signing.ComputeDomainAndSign(beaconState, 0, msg.Block, params.BeaconConfig().DomainBeaconProposer, privKeys[proposerIdx]) require.NoError(t, err) genesisTime := time.Now() diff --git a/beacon-chain/sync/validate_proposer_slashing_test.go b/beacon-chain/sync/validate_proposer_slashing_test.go index f7c60ad2d1..50ddc70b6c 100644 --- a/beacon-chain/sync/validate_proposer_slashing_test.go +++ b/beacon-chain/sync/validate_proposer_slashing_test.go @@ -14,7 +14,7 @@ import ( "github.com/prysmaticlabs/go-bitfield" mock "github.com/prysmaticlabs/prysm/beacon-chain/blockchain/testing" "github.com/prysmaticlabs/prysm/beacon-chain/core" - "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" "github.com/prysmaticlabs/prysm/beacon-chain/p2p" p2ptest "github.com/prysmaticlabs/prysm/beacon-chain/p2p/testing" "github.com/prysmaticlabs/prysm/beacon-chain/state" @@ -76,7 +76,7 @@ func setupValidProposerSlashing(t *testing.T) (*ethpb.ProposerSlashing, state.Be BodyRoot: someRoot[:], }, } - header1.Signature, err = helpers.ComputeDomainAndSign(state, core.CurrentEpoch(state), header1.Header, params.BeaconConfig().DomainBeaconProposer, privKey) + header1.Signature, err = signing.ComputeDomainAndSign(state, core.CurrentEpoch(state), header1.Header, params.BeaconConfig().DomainBeaconProposer, privKey) require.NoError(t, err) header2 := ðpb.SignedBeaconBlockHeader{ @@ -88,7 +88,7 @@ func setupValidProposerSlashing(t *testing.T) (*ethpb.ProposerSlashing, state.Be BodyRoot: someRoot2[:], }, } - header2.Signature, err = helpers.ComputeDomainAndSign(state, core.CurrentEpoch(state), header2.Header, params.BeaconConfig().DomainBeaconProposer, privKey) + header2.Signature, err = signing.ComputeDomainAndSign(state, core.CurrentEpoch(state), header2.Header, params.BeaconConfig().DomainBeaconProposer, privKey) require.NoError(t, err) slashing := ðpb.ProposerSlashing{ diff --git a/beacon-chain/sync/validate_sync_committee_message.go b/beacon-chain/sync/validate_sync_committee_message.go index ec36f99be3..3eff663f38 100644 --- a/beacon-chain/sync/validate_sync_committee_message.go +++ b/beacon-chain/sync/validate_sync_committee_message.go @@ -11,7 +11,7 @@ import ( pubsub "github.com/libp2p/go-libp2p-pubsub" types "github.com/prysmaticlabs/eth2-types" "github.com/prysmaticlabs/prysm/beacon-chain/core/altair" - "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" "github.com/prysmaticlabs/prysm/beacon-chain/p2p" p2ptypes "github.com/prysmaticlabs/prysm/beacon-chain/p2p/types" "github.com/prysmaticlabs/prysm/config/features" @@ -218,7 +218,7 @@ func (s *Service) rejectInvalidSyncCommitteeSignature(m *ethpb.SyncCommitteeMess return pubsub.ValidationIgnore, err } rawBytes := p2ptypes.SSZBytes(m.BlockRoot) - sigRoot, err := helpers.ComputeSigningRoot(&rawBytes, d) + sigRoot, err := signing.ComputeSigningRoot(&rawBytes, d) if err != nil { tracing.AnnotateError(span, err) return pubsub.ValidationIgnore, err diff --git a/beacon-chain/sync/validate_sync_committee_message_test.go b/beacon-chain/sync/validate_sync_committee_message_test.go index a8dade0329..c915518e77 100644 --- a/beacon-chain/sync/validate_sync_committee_message_test.go +++ b/beacon-chain/sync/validate_sync_committee_message_test.go @@ -14,7 +14,7 @@ import ( types "github.com/prysmaticlabs/eth2-types" mockChain "github.com/prysmaticlabs/prysm/beacon-chain/blockchain/testing" "github.com/prysmaticlabs/prysm/beacon-chain/core" - "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" testingDB "github.com/prysmaticlabs/prysm/beacon-chain/db/testing" "github.com/prysmaticlabs/prysm/beacon-chain/p2p" "github.com/prysmaticlabs/prysm/beacon-chain/p2p/encoder" @@ -319,7 +319,7 @@ func TestService_ValidateSyncCommitteeMessage(t *testing.T) { msg.ValidatorIndex = types.ValidatorIndex(chosenVal) msg.Slot = core.PrevSlot(hState.Slot()) - d, err := helpers.Domain(hState.Fork(), core.SlotToEpoch(hState.Slot()), params.BeaconConfig().DomainSyncCommittee, hState.GenesisValidatorRoot()) + d, err := signing.Domain(hState.Fork(), core.SlotToEpoch(hState.Slot()), params.BeaconConfig().DomainSyncCommittee, hState.GenesisValidatorRoot()) assert.NoError(t, err) subCommitteeSize := params.BeaconConfig().SyncCommitteeSize / params.BeaconConfig().SyncCommitteeSubnetCount s.cfg.Chain = &mockChain.ChainService{ @@ -370,10 +370,10 @@ func TestService_ValidateSyncCommitteeMessage(t *testing.T) { numOfVals := hState.NumValidators() chosenVal := numOfVals - 10 - d, err := helpers.Domain(hState.Fork(), core.SlotToEpoch(hState.Slot()), params.BeaconConfig().DomainSyncCommittee, hState.GenesisValidatorRoot()) + d, err := signing.Domain(hState.Fork(), core.SlotToEpoch(hState.Slot()), params.BeaconConfig().DomainSyncCommittee, hState.GenesisValidatorRoot()) assert.NoError(t, err) rawBytes := p2ptypes.SSZBytes(headRoot[:]) - sigRoot, err := helpers.ComputeSigningRoot(&rawBytes, d) + sigRoot, err := signing.ComputeSigningRoot(&rawBytes, d) assert.NoError(t, err) s.cfg.Chain = &mockChain.ChainService{ diff --git a/beacon-chain/sync/validate_sync_contribution_proof.go b/beacon-chain/sync/validate_sync_contribution_proof.go index 93cb430c4c..a884ed10b6 100644 --- a/beacon-chain/sync/validate_sync_contribution_proof.go +++ b/beacon-chain/sync/validate_sync_contribution_proof.go @@ -8,7 +8,7 @@ import ( pubsub "github.com/libp2p/go-libp2p-pubsub" types "github.com/prysmaticlabs/eth2-types" "github.com/prysmaticlabs/prysm/beacon-chain/core/altair" - "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" p2ptypes "github.com/prysmaticlabs/prysm/beacon-chain/p2p/types" "github.com/prysmaticlabs/prysm/config/features" "github.com/prysmaticlabs/prysm/config/params" @@ -208,7 +208,7 @@ func (s *Service) rejectInvalidContributionSignature(m *ethpb.SignedContribution tracing.AnnotateError(span, err) return pubsub.ValidationReject, err } - root, err := helpers.ComputeSigningRoot(m.Message, d) + root, err := signing.ComputeSigningRoot(m.Message, d) if err != nil { tracing.AnnotateError(span, err) return pubsub.ValidationReject, err @@ -221,7 +221,7 @@ func (s *Service) rejectInvalidContributionSignature(m *ethpb.SignedContribution return s.validateWithBatchVerifier(ctx, "sync contribution signature", set), nil } - if err := helpers.VerifySigningRoot(m.Message, pubkey[:], m.Signature, d); err != nil { + if err := signing.VerifySigningRoot(m.Message, pubkey[:], m.Signature, d); err != nil { tracing.AnnotateError(span, err) return pubsub.ValidationReject, err } @@ -264,7 +264,7 @@ func (s *Service) rejectInvalidSyncAggregateSignature(m *ethpb.SignedContributio return pubsub.ValidationIgnore, err } rawBytes := p2ptypes.SSZBytes(m.Message.Contribution.BlockRoot) - sigRoot, err := helpers.ComputeSigningRoot(&rawBytes, d) + sigRoot, err := signing.ComputeSigningRoot(&rawBytes, d) if err != nil { tracing.AnnotateError(span, err) return pubsub.ValidationIgnore, err @@ -334,7 +334,7 @@ func (s *Service) verifySyncSelectionData(ctx context.Context, m *ethpb.Contribu if err != nil { return err } - root, err := helpers.ComputeSigningRoot(selectionData, domain) + root, err := signing.ComputeSigningRoot(selectionData, domain) if err != nil { return err } @@ -349,5 +349,5 @@ func (s *Service) verifySyncSelectionData(ctx context.Context, m *ethpb.Contribu } return nil } - return helpers.VerifySigningRoot(selectionData, pubkey[:], m.SelectionProof, domain) + return signing.VerifySigningRoot(selectionData, pubkey[:], m.SelectionProof, domain) } diff --git a/beacon-chain/sync/validate_sync_contribution_proof_test.go b/beacon-chain/sync/validate_sync_contribution_proof_test.go index d2825b6335..ff19a5dac2 100644 --- a/beacon-chain/sync/validate_sync_contribution_proof_test.go +++ b/beacon-chain/sync/validate_sync_contribution_proof_test.go @@ -15,7 +15,7 @@ import ( mockChain "github.com/prysmaticlabs/prysm/beacon-chain/blockchain/testing" "github.com/prysmaticlabs/prysm/beacon-chain/core" "github.com/prysmaticlabs/prysm/beacon-chain/core/altair" - "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" "github.com/prysmaticlabs/prysm/beacon-chain/core/transition" "github.com/prysmaticlabs/prysm/beacon-chain/db" testingDB "github.com/prysmaticlabs/prysm/beacon-chain/db/testing" @@ -470,7 +470,7 @@ func TestService_ValidateSyncContributionAndProof(t *testing.T) { } } } - d, err := helpers.Domain(hState.Fork(), core.SlotToEpoch(core.PrevSlot(hState.Slot())), params.BeaconConfig().DomainSyncCommitteeSelectionProof, hState.GenesisValidatorRoot()) + d, err := signing.Domain(hState.Fork(), core.SlotToEpoch(core.PrevSlot(hState.Slot())), params.BeaconConfig().DomainSyncCommitteeSelectionProof, hState.GenesisValidatorRoot()) require.NoError(t, err) subCommitteeSize := params.BeaconConfig().SyncCommitteeSize / params.BeaconConfig().SyncCommitteeSubnetCount s.cfg.Chain = &mockChain.ChainService{ @@ -546,9 +546,9 @@ func TestService_ValidateSyncContributionAndProof(t *testing.T) { msg.Message.Contribution.AggregationBits.SetBitAt(1, true) msg.Signature = infiniteSig[:] - d, err := helpers.Domain(hState.Fork(), core.SlotToEpoch(core.PrevSlot(hState.Slot())), params.BeaconConfig().DomainContributionAndProof, hState.GenesisValidatorRoot()) + d, err := signing.Domain(hState.Fork(), core.SlotToEpoch(core.PrevSlot(hState.Slot())), params.BeaconConfig().DomainContributionAndProof, hState.GenesisValidatorRoot()) assert.NoError(t, err) - sigRoot, err := helpers.ComputeSigningRoot(msg.Message, d) + sigRoot, err := signing.ComputeSigningRoot(msg.Message, d) assert.NoError(t, err) contrSig := keys[idx].Sign(sigRoot[:]) @@ -603,7 +603,7 @@ func TestService_ValidateSyncContributionAndProof(t *testing.T) { assert.NoError(t, err) sc, err := hState.CurrentSyncCommittee() assert.NoError(t, err) - cd, err := helpers.Domain(hState.Fork(), core.SlotToEpoch(core.PrevSlot(hState.Slot())), params.BeaconConfig().DomainContributionAndProof, hState.GenesisValidatorRoot()) + cd, err := signing.Domain(hState.Fork(), core.SlotToEpoch(core.PrevSlot(hState.Slot())), params.BeaconConfig().DomainContributionAndProof, hState.GenesisValidatorRoot()) assert.NoError(t, err) for i := uint64(0); i < params.BeaconConfig().SyncCommitteeSubnetCount; i++ { coms, err := altair.SyncSubCommitteePubkeys(sc, types.CommitteeIndex(i)) @@ -625,7 +625,7 @@ func TestService_ValidateSyncContributionAndProof(t *testing.T) { msg.Message.Contribution.Signature = infiniteSig[:] msg.Message.Contribution.BlockRoot = headRoot[:] msg.Message.Contribution.AggregationBits = bitfield.NewBitvector128() - sigRoot, err := helpers.ComputeSigningRoot(msg.Message, cd) + sigRoot, err := signing.ComputeSigningRoot(msg.Message, cd) assert.NoError(t, err) contrSig := keys[idx].Sign(sigRoot[:]) @@ -635,7 +635,7 @@ func TestService_ValidateSyncContributionAndProof(t *testing.T) { } } - d, err := helpers.Domain(hState.Fork(), core.SlotToEpoch(core.PrevSlot(hState.Slot())), params.BeaconConfig().DomainSyncCommitteeSelectionProof, hState.GenesisValidatorRoot()) + d, err := signing.Domain(hState.Fork(), core.SlotToEpoch(core.PrevSlot(hState.Slot())), params.BeaconConfig().DomainSyncCommitteeSelectionProof, hState.GenesisValidatorRoot()) require.NoError(t, err) subCommitteeSize := params.BeaconConfig().SyncCommitteeSize / params.BeaconConfig().SyncCommitteeSubnetCount s.cfg.Chain = &mockChain.ChainService{ @@ -687,9 +687,9 @@ func TestService_ValidateSyncContributionAndProof(t *testing.T) { assert.NoError(t, err) sc, err := hState.CurrentSyncCommittee() assert.NoError(t, err) - cd, err := helpers.Domain(hState.Fork(), core.SlotToEpoch(core.PrevSlot(hState.Slot())), params.BeaconConfig().DomainContributionAndProof, hState.GenesisValidatorRoot()) + cd, err := signing.Domain(hState.Fork(), core.SlotToEpoch(core.PrevSlot(hState.Slot())), params.BeaconConfig().DomainContributionAndProof, hState.GenesisValidatorRoot()) assert.NoError(t, err) - d, err := helpers.Domain(hState.Fork(), core.SlotToEpoch(hState.Slot()), params.BeaconConfig().DomainSyncCommittee, hState.GenesisValidatorRoot()) + d, err := signing.Domain(hState.Fork(), core.SlotToEpoch(hState.Slot()), params.BeaconConfig().DomainSyncCommittee, hState.GenesisValidatorRoot()) assert.NoError(t, err) var pubkeys [][]byte for i := uint64(0); i < params.BeaconConfig().SyncCommitteeSubnetCount; i++ { @@ -713,7 +713,7 @@ func TestService_ValidateSyncContributionAndProof(t *testing.T) { msg.Message.Contribution.AggregationBits = bitfield.NewBitvector128() // Only Sign for 1 validator. rawBytes := p2ptypes.SSZBytes(headRoot[:]) - sigRoot, err := helpers.ComputeSigningRoot(&rawBytes, d) + sigRoot, err := signing.ComputeSigningRoot(&rawBytes, d) assert.NoError(t, err) valIdx, ok := hState.ValidatorIndexByPubkey(bytesutil.ToBytes48(coms[0])) assert.Equal(t, true, ok) @@ -721,7 +721,7 @@ func TestService_ValidateSyncContributionAndProof(t *testing.T) { msg.Message.Contribution.AggregationBits.SetBitAt(uint64(0), true) msg.Message.Contribution.Signature = sig.Marshal() - sigRoot, err = helpers.ComputeSigningRoot(msg.Message, cd) + sigRoot, err = signing.ComputeSigningRoot(msg.Message, cd) assert.NoError(t, err) contrSig := keys[idx].Sign(sigRoot[:]) msg.Signature = contrSig.Marshal() @@ -730,7 +730,7 @@ func TestService_ValidateSyncContributionAndProof(t *testing.T) { } } - pd, err := helpers.Domain(hState.Fork(), core.SlotToEpoch(core.PrevSlot(hState.Slot())), params.BeaconConfig().DomainSyncCommitteeSelectionProof, hState.GenesisValidatorRoot()) + pd, err := signing.Domain(hState.Fork(), core.SlotToEpoch(core.PrevSlot(hState.Slot())), params.BeaconConfig().DomainSyncCommitteeSelectionProof, hState.GenesisValidatorRoot()) require.NoError(t, err) subCommitteeSize := params.BeaconConfig().SyncCommitteeSize / params.BeaconConfig().SyncCommitteeSubnetCount s.cfg.Chain = &mockChain.ChainService{ @@ -783,9 +783,9 @@ func TestService_ValidateSyncContributionAndProof(t *testing.T) { assert.NoError(t, err) sc, err := hState.CurrentSyncCommittee() assert.NoError(t, err) - cd, err := helpers.Domain(hState.Fork(), core.SlotToEpoch(core.PrevSlot(hState.Slot())), params.BeaconConfig().DomainContributionAndProof, hState.GenesisValidatorRoot()) + cd, err := signing.Domain(hState.Fork(), core.SlotToEpoch(core.PrevSlot(hState.Slot())), params.BeaconConfig().DomainContributionAndProof, hState.GenesisValidatorRoot()) assert.NoError(t, err) - d, err := helpers.Domain(hState.Fork(), core.SlotToEpoch(hState.Slot()), params.BeaconConfig().DomainSyncCommittee, hState.GenesisValidatorRoot()) + d, err := signing.Domain(hState.Fork(), core.SlotToEpoch(hState.Slot()), params.BeaconConfig().DomainSyncCommittee, hState.GenesisValidatorRoot()) assert.NoError(t, err) var pubkeys [][]byte for i := uint64(0); i < params.BeaconConfig().SyncCommitteeSubnetCount; i++ { @@ -808,7 +808,7 @@ func TestService_ValidateSyncContributionAndProof(t *testing.T) { msg.Message.Contribution.BlockRoot = headRoot[:] msg.Message.Contribution.AggregationBits = bitfield.NewBitvector128() rawBytes := p2ptypes.SSZBytes(headRoot[:]) - sigRoot, err := helpers.ComputeSigningRoot(&rawBytes, d) + sigRoot, err := signing.ComputeSigningRoot(&rawBytes, d) assert.NoError(t, err) var sigs []bls.Signature for i, p2 := range coms { @@ -819,7 +819,7 @@ func TestService_ValidateSyncContributionAndProof(t *testing.T) { msg.Message.Contribution.AggregationBits.SetBitAt(uint64(i), true) } msg.Message.Contribution.Signature = bls.AggregateSignatures(sigs).Marshal() - sigRoot, err = helpers.ComputeSigningRoot(msg.Message, cd) + sigRoot, err = signing.ComputeSigningRoot(msg.Message, cd) assert.NoError(t, err) contrSig := keys[idx].Sign(sigRoot[:]) msg.Signature = contrSig.Marshal() @@ -828,7 +828,7 @@ func TestService_ValidateSyncContributionAndProof(t *testing.T) { } } - pd, err := helpers.Domain(hState.Fork(), core.SlotToEpoch(core.PrevSlot(hState.Slot())), params.BeaconConfig().DomainSyncCommitteeSelectionProof, hState.GenesisValidatorRoot()) + pd, err := signing.Domain(hState.Fork(), core.SlotToEpoch(core.PrevSlot(hState.Slot())), params.BeaconConfig().DomainSyncCommitteeSelectionProof, hState.GenesisValidatorRoot()) require.NoError(t, err) subCommitteeSize := params.BeaconConfig().SyncCommitteeSize / params.BeaconConfig().SyncCommitteeSubnetCount s.cfg.Chain = &mockChain.ChainService{ @@ -916,10 +916,10 @@ func fillUpBlocksAndState(ctx context.Context, t *testing.T, beaconDB db.Databas } func syncSelectionProofSigningRoot(st state.BeaconState, slot types.Slot, comIdx types.CommitteeIndex) ([32]byte, error) { - dom, err := helpers.Domain(st.Fork(), core.SlotToEpoch(slot), params.BeaconConfig().DomainSyncCommitteeSelectionProof, st.GenesisValidatorRoot()) + dom, err := signing.Domain(st.Fork(), core.SlotToEpoch(slot), params.BeaconConfig().DomainSyncCommitteeSelectionProof, st.GenesisValidatorRoot()) if err != nil { return [32]byte{}, err } selectionData := ðpb.SyncAggregatorSelectionData{Slot: slot, SubcommitteeIndex: uint64(comIdx)} - return helpers.ComputeSigningRoot(selectionData, dom) + return signing.ComputeSigningRoot(selectionData, dom) } diff --git a/beacon-chain/sync/validate_voluntary_exit_test.go b/beacon-chain/sync/validate_voluntary_exit_test.go index 40b89b9d1a..f9df5b9469 100644 --- a/beacon-chain/sync/validate_voluntary_exit_test.go +++ b/beacon-chain/sync/validate_voluntary_exit_test.go @@ -12,7 +12,7 @@ import ( pubsubpb "github.com/libp2p/go-libp2p-pubsub/pb" mock "github.com/prysmaticlabs/prysm/beacon-chain/blockchain/testing" "github.com/prysmaticlabs/prysm/beacon-chain/core" - "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" "github.com/prysmaticlabs/prysm/beacon-chain/p2p" p2ptest "github.com/prysmaticlabs/prysm/beacon-chain/p2p/testing" "github.com/prysmaticlabs/prysm/beacon-chain/state" @@ -53,7 +53,7 @@ func setupValidExit(t *testing.T) (*ethpb.SignedVoluntaryExit, state.BeaconState priv, err := bls.RandKey() require.NoError(t, err) - exit.Signature, err = helpers.ComputeDomainAndSign(state, core.CurrentEpoch(state), exit.Exit, params.BeaconConfig().DomainVoluntaryExit, priv) + exit.Signature, err = signing.ComputeDomainAndSign(state, core.CurrentEpoch(state), exit.Exit, params.BeaconConfig().DomainVoluntaryExit, priv) require.NoError(t, err) val, err := state.ValidatorAtIndex(0) diff --git a/contracts/deposit/BUILD.bazel b/contracts/deposit/BUILD.bazel index 06f102dbf7..ec98a28a43 100644 --- a/contracts/deposit/BUILD.bazel +++ b/contracts/deposit/BUILD.bazel @@ -11,7 +11,7 @@ go_library( importpath = "github.com/prysmaticlabs/prysm/contracts/deposit", visibility = ["//visibility:public"], deps = [ - "//beacon-chain/core/helpers:go_default_library", + "//beacon-chain/core/signing:go_default_library", "//config/features:go_default_library", "//config/params:go_default_library", "//crypto/bls:go_default_library", @@ -40,7 +40,7 @@ go_test( ], deps = [ ":go_default_library", - "//beacon-chain/core/helpers:go_default_library", + "//beacon-chain/core/signing:go_default_library", "//config/params:go_default_library", "//container/trie:go_default_library", "//crypto/bls:go_default_library", diff --git a/contracts/deposit/deposit.go b/contracts/deposit/deposit.go index d808dcf181..1207343bb2 100644 --- a/contracts/deposit/deposit.go +++ b/contracts/deposit/deposit.go @@ -4,7 +4,7 @@ package deposit import ( "github.com/pkg/errors" - "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" "github.com/prysmaticlabs/prysm/config/features" "github.com/prysmaticlabs/prysm/config/params" "github.com/prysmaticlabs/prysm/crypto/bls" @@ -38,7 +38,7 @@ func DepositInput(depositKey, withdrawalKey bls.SecretKey, amountInGwei uint64) return nil, [32]byte{}, err } - domain, err := helpers.ComputeDomain( + domain, err := signing.ComputeDomain( params.BeaconConfig().DomainDeposit, nil, /*forkVersion*/ nil, /*genesisValidatorsRoot*/ @@ -109,7 +109,7 @@ func VerifyDepositSignature(dd *ethpb.Deposit_Data, domain []byte) error { return errors.Wrap(err, "could not get container root") } if !sig.Verify(publicKey, ctrRoot[:]) { - return helpers.ErrSigFailedToVerify + return signing.ErrSigFailedToVerify } return nil } diff --git a/contracts/deposit/deposit_test.go b/contracts/deposit/deposit_test.go index 64f446c7ed..da9144b545 100644 --- a/contracts/deposit/deposit_test.go +++ b/contracts/deposit/deposit_test.go @@ -3,7 +3,7 @@ package deposit_test import ( "testing" - "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" "github.com/prysmaticlabs/prysm/config/params" "github.com/prysmaticlabs/prysm/contracts/deposit" "github.com/prysmaticlabs/prysm/crypto/bls" @@ -32,7 +32,7 @@ func TestDepositInput_GeneratesPb(t *testing.T) { } sr, err := testData.HashTreeRoot() require.NoError(t, err) - domain, err := helpers.ComputeDomain( + domain, err := signing.ComputeDomain( params.BeaconConfig().DomainDeposit, nil, /*forkVersion*/ nil, /*genesisValidatorsRoot*/ @@ -47,7 +47,7 @@ func TestVerifyDepositSignature_ValidSig(t *testing.T) { deposits, _, err := util.DeterministicDepositsAndKeys(1) require.NoError(t, err) dep := deposits[0] - domain, err := helpers.ComputeDomain( + domain, err := signing.ComputeDomain( params.BeaconConfig().DomainDeposit, params.BeaconConfig().GenesisForkVersion, params.BeaconConfig().ZeroHash[:], @@ -61,7 +61,7 @@ func TestVerifyDepositSignature_InvalidSig(t *testing.T) { deposits, _, err := util.DeterministicDepositsAndKeys(1) require.NoError(t, err) dep := deposits[0] - domain, err := helpers.ComputeDomain( + domain, err := signing.ComputeDomain( params.BeaconConfig().DomainDeposit, params.BeaconConfig().GenesisForkVersion, params.BeaconConfig().ZeroHash[:], diff --git a/network/forks/BUILD.bazel b/network/forks/BUILD.bazel index bd51668bf4..afe15257d5 100644 --- a/network/forks/BUILD.bazel +++ b/network/forks/BUILD.bazel @@ -7,7 +7,7 @@ go_library( visibility = ["//visibility:public"], deps = [ "//beacon-chain/core:go_default_library", - "//beacon-chain/core/helpers:go_default_library", + "//beacon-chain/core/signing:go_default_library", "//config/params:go_default_library", "//encoding/bytesutil:go_default_library", "//proto/prysm/v1alpha1:go_default_library", @@ -21,7 +21,7 @@ go_test( srcs = ["fork_test.go"], embed = [":go_default_library"], deps = [ - "//beacon-chain/core/helpers:go_default_library", + "//beacon-chain/core/signing:go_default_library", "//config/params:go_default_library", "//proto/prysm/v1alpha1:go_default_library", "//testing/assert:go_default_library", diff --git a/network/forks/fork.go b/network/forks/fork.go index 5d54928309..4041aa9a03 100644 --- a/network/forks/fork.go +++ b/network/forks/fork.go @@ -9,7 +9,7 @@ import ( "github.com/pkg/errors" types "github.com/prysmaticlabs/eth2-types" "github.com/prysmaticlabs/prysm/beacon-chain/core" - "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" "github.com/prysmaticlabs/prysm/config/params" "github.com/prysmaticlabs/prysm/encoding/bytesutil" ethpb "github.com/prysmaticlabs/prysm/proto/prysm/v1alpha1" @@ -48,7 +48,7 @@ func ForkDigestFromEpoch(currentEpoch types.Epoch, genesisValidatorsRoot []byte) if err != nil { return [4]byte{}, err } - return helpers.ComputeForkDigest(forkData.CurrentVersion, genesisValidatorsRoot) + return signing.ComputeForkDigest(forkData.CurrentVersion, genesisValidatorsRoot) } // CreateForkDigest creates a fork digest from a genesis time and genesis @@ -72,7 +72,7 @@ func CreateForkDigest( return [4]byte{}, err } - digest, err := helpers.ComputeForkDigest(forkData.CurrentVersion, genesisValidatorsRoot) + digest, err := signing.ComputeForkDigest(forkData.CurrentVersion, genesisValidatorsRoot) if err != nil { return [4]byte{}, err } @@ -112,7 +112,7 @@ func Fork( func RetrieveForkDataFromDigest(digest [4]byte, genesisValidatorsRoot []byte) ([4]byte, types.Epoch, error) { fSchedule := params.BeaconConfig().ForkVersionSchedule for v, e := range fSchedule { - rDigest, err := helpers.ComputeForkDigest(v[:], genesisValidatorsRoot) + rDigest, err := signing.ComputeForkDigest(v[:], genesisValidatorsRoot) if err != nil { return [4]byte{}, 0, err } diff --git a/network/forks/fork_test.go b/network/forks/fork_test.go index 79537e99c6..47e85a8fbd 100644 --- a/network/forks/fork_test.go +++ b/network/forks/fork_test.go @@ -7,7 +7,7 @@ import ( "time" types "github.com/prysmaticlabs/eth2-types" - "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" "github.com/prysmaticlabs/prysm/config/params" ethpb "github.com/prysmaticlabs/prysm/proto/prysm/v1alpha1" "github.com/prysmaticlabs/prysm/testing/assert" @@ -185,7 +185,7 @@ func TestRetrieveForkDataFromDigest(t *testing.T) { } params.OverrideBeaconConfig(cfg) genValRoot := [32]byte{'A', 'B', 'C', 'D'} - digest, err := helpers.ComputeForkDigest([]byte{'A', 'B', 'C', 'F'}, genValRoot[:]) + digest, err := signing.ComputeForkDigest([]byte{'A', 'B', 'C', 'F'}, genValRoot[:]) assert.NoError(t, err) version, epoch, err := RetrieveForkDataFromDigest(digest, genValRoot[:]) @@ -193,7 +193,7 @@ func TestRetrieveForkDataFromDigest(t *testing.T) { assert.Equal(t, [4]byte{'A', 'B', 'C', 'F'}, version) assert.Equal(t, epoch, types.Epoch(10)) - digest, err = helpers.ComputeForkDigest([]byte{'A', 'B', 'C', 'Z'}, genValRoot[:]) + digest, err = signing.ComputeForkDigest([]byte{'A', 'B', 'C', 'Z'}, genValRoot[:]) assert.NoError(t, err) version, epoch, err = RetrieveForkDataFromDigest(digest, genValRoot[:]) diff --git a/proto/prysm/v1alpha1/attestation/BUILD.bazel b/proto/prysm/v1alpha1/attestation/BUILD.bazel index f330b92725..b5f8c4b9c6 100644 --- a/proto/prysm/v1alpha1/attestation/BUILD.bazel +++ b/proto/prysm/v1alpha1/attestation/BUILD.bazel @@ -6,7 +6,7 @@ go_library( importpath = "github.com/prysmaticlabs/prysm/proto/prysm/v1alpha1/attestation", visibility = ["//visibility:public"], deps = [ - "//beacon-chain/core/helpers:go_default_library", + "//beacon-chain/core/signing:go_default_library", "//config/params:go_default_library", "//crypto/bls:go_default_library", "//proto/prysm/v1alpha1:go_default_library", diff --git a/proto/prysm/v1alpha1/attestation/attestation_utils.go b/proto/prysm/v1alpha1/attestation/attestation_utils.go index 2c6023223f..ca30c65f2c 100644 --- a/proto/prysm/v1alpha1/attestation/attestation_utils.go +++ b/proto/prysm/v1alpha1/attestation/attestation_utils.go @@ -11,7 +11,7 @@ import ( "github.com/pkg/errors" types "github.com/prysmaticlabs/eth2-types" "github.com/prysmaticlabs/go-bitfield" - "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" "github.com/prysmaticlabs/prysm/config/params" "github.com/prysmaticlabs/prysm/crypto/bls" ethpb "github.com/prysmaticlabs/prysm/proto/prysm/v1alpha1" @@ -104,7 +104,7 @@ func VerifyIndexedAttestationSig(ctx context.Context, indexedAtt *ethpb.IndexedA ctx, span := trace.StartSpan(ctx, "attestationutil.VerifyIndexedAttestationSig") defer span.End() indices := indexedAtt.AttestingIndices - messageHash, err := helpers.ComputeSigningRoot(indexedAtt.Data, domain) + messageHash, err := signing.ComputeSigningRoot(indexedAtt.Data, domain) if err != nil { return errors.Wrap(err, "could not get signing root of object") } @@ -116,7 +116,7 @@ func VerifyIndexedAttestationSig(ctx context.Context, indexedAtt *ethpb.IndexedA voted := len(indices) > 0 if voted && !sig.FastAggregateVerify(pubKeys, messageHash) { - return helpers.ErrSigFailedToVerify + return signing.ErrSigFailedToVerify } return nil } diff --git a/runtime/interop/BUILD.bazel b/runtime/interop/BUILD.bazel index c1fb07388f..83d54479f8 100644 --- a/runtime/interop/BUILD.bazel +++ b/runtime/interop/BUILD.bazel @@ -10,7 +10,7 @@ go_library( visibility = ["//visibility:public"], deps = [ "//async:go_default_library", - "//beacon-chain/core/helpers:go_default_library", + "//beacon-chain/core/signing:go_default_library", "//beacon-chain/core/transition:go_default_library", "//beacon-chain/state/v1:go_default_library", "//config/params:go_default_library", diff --git a/runtime/interop/generate_genesis_state.go b/runtime/interop/generate_genesis_state.go index e1475ad808..ef2eaddea6 100644 --- a/runtime/interop/generate_genesis_state.go +++ b/runtime/interop/generate_genesis_state.go @@ -8,7 +8,7 @@ import ( "github.com/pkg/errors" "github.com/prysmaticlabs/prysm/async" - "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" coreState "github.com/prysmaticlabs/prysm/beacon-chain/core/transition" v1 "github.com/prysmaticlabs/prysm/beacon-chain/state/v1" "github.com/prysmaticlabs/prysm/config/params" @@ -162,7 +162,7 @@ func createDepositData(privKey bls.SecretKey, pubKey bls.PublicKey) (*ethpb.Depo if err != nil { return nil, err } - domain, err := helpers.ComputeDomain(params.BeaconConfig().DomainDeposit, nil, nil) + domain, err := signing.ComputeDomain(params.BeaconConfig().DomainDeposit, nil, nil) if err != nil { return nil, err } diff --git a/testing/endtoend/evaluators/BUILD.bazel b/testing/endtoend/evaluators/BUILD.bazel index 5cededf1d9..7278a8593b 100644 --- a/testing/endtoend/evaluators/BUILD.bazel +++ b/testing/endtoend/evaluators/BUILD.bazel @@ -20,6 +20,7 @@ go_library( deps = [ "//beacon-chain/core:go_default_library", "//beacon-chain/core/helpers:go_default_library", + "//beacon-chain/core/signing:go_default_library", "//beacon-chain/p2p:go_default_library", "//config/params:go_default_library", "//container/slice:go_default_library", diff --git a/testing/endtoend/evaluators/operations.go b/testing/endtoend/evaluators/operations.go index e69ba0ea82..55bb6f8a61 100644 --- a/testing/endtoend/evaluators/operations.go +++ b/testing/endtoend/evaluators/operations.go @@ -9,6 +9,7 @@ import ( "github.com/pkg/errors" types "github.com/prysmaticlabs/eth2-types" corehelpers "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" "github.com/prysmaticlabs/prysm/config/params" "github.com/prysmaticlabs/prysm/encoding/bytesutil" ethpb "github.com/prysmaticlabs/prysm/proto/prysm/v1alpha1" @@ -312,7 +313,7 @@ func proposeVoluntaryExit(conns ...*grpc.ClientConn) error { if err != nil { return err } - signingData, err := corehelpers.ComputeSigningRoot(voluntaryExit, domain.SignatureDomain) + signingData, err := signing.ComputeSigningRoot(voluntaryExit, domain.SignatureDomain) if err != nil { return err } diff --git a/testing/endtoend/evaluators/slashing.go b/testing/endtoend/evaluators/slashing.go index 35da747dfb..d460515703 100644 --- a/testing/endtoend/evaluators/slashing.go +++ b/testing/endtoend/evaluators/slashing.go @@ -7,7 +7,7 @@ import ( "github.com/pkg/errors" types "github.com/prysmaticlabs/eth2-types" "github.com/prysmaticlabs/go-bitfield" - corehelpers "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" "github.com/prysmaticlabs/prysm/config/params" "github.com/prysmaticlabs/prysm/container/slice" "github.com/prysmaticlabs/prysm/encoding/bytesutil" @@ -152,7 +152,7 @@ func insertDoubleAttestationIntoPool(conns ...*grpc.ClientConn) error { if err != nil { return errors.Wrap(err, "could not get domain data") } - signingRoot, err := corehelpers.ComputeSigningRoot(attData, resp.SignatureDomain) + signingRoot, err := signing.ComputeSigningRoot(attData, resp.SignatureDomain) if err != nil { return errors.Wrap(err, "could not compute signing root") } @@ -248,7 +248,7 @@ func proposeDoubleBlock(conns ...*grpc.ClientConn) error { if err != nil { return errors.Wrap(err, "could not get domain data") } - signingRoot, err := corehelpers.ComputeSigningRoot(blk, resp.SignatureDomain) + signingRoot, err := signing.ComputeSigningRoot(blk, resp.SignatureDomain) if err != nil { return errors.Wrap(err, "could not compute signing root") } diff --git a/testing/util/BUILD.bazel b/testing/util/BUILD.bazel index f270fd449b..a38a6f4e76 100644 --- a/testing/util/BUILD.bazel +++ b/testing/util/BUILD.bazel @@ -22,6 +22,7 @@ go_library( "//beacon-chain/core/altair:go_default_library", "//beacon-chain/core/blocks:go_default_library", "//beacon-chain/core/helpers:go_default_library", + "//beacon-chain/core/signing:go_default_library", "//beacon-chain/core/transition:go_default_library", "//beacon-chain/p2p/types:go_default_library", "//beacon-chain/state:go_default_library", @@ -60,6 +61,7 @@ go_test( deps = [ "//beacon-chain/core:go_default_library", "//beacon-chain/core/helpers:go_default_library", + "//beacon-chain/core/signing:go_default_library", "//beacon-chain/core/transition:go_default_library", "//beacon-chain/core/transition/stateutils:go_default_library", "//config/params:go_default_library", diff --git a/testing/util/altair.go b/testing/util/altair.go index 3c4cff3961..986b8655f1 100644 --- a/testing/util/altair.go +++ b/testing/util/altair.go @@ -12,6 +12,7 @@ import ( "github.com/prysmaticlabs/prysm/beacon-chain/core/altair" "github.com/prysmaticlabs/prysm/beacon-chain/core/blocks" "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" "github.com/prysmaticlabs/prysm/beacon-chain/core/transition" "github.com/prysmaticlabs/prysm/beacon-chain/state" v1 "github.com/prysmaticlabs/prysm/beacon-chain/state/v1" @@ -285,11 +286,11 @@ func BlockSignatureAltair( return nil, err } block.StateRoot = s[:] - domain, err := helpers.Domain(bState.Fork(), core.CurrentEpoch(bState), params.BeaconConfig().DomainBeaconProposer, bState.GenesisValidatorRoot()) + domain, err := signing.Domain(bState.Fork(), core.CurrentEpoch(bState), params.BeaconConfig().DomainBeaconProposer, bState.GenesisValidatorRoot()) if err != nil { return nil, err } - blockRoot, err := helpers.ComputeSigningRoot(block, domain) + blockRoot, err := signing.ComputeSigningRoot(block, domain) if err != nil { return nil, err } diff --git a/testing/util/attestation.go b/testing/util/attestation.go index fdc43a4347..8c9fa996ac 100644 --- a/testing/util/attestation.go +++ b/testing/util/attestation.go @@ -10,6 +10,7 @@ import ( "github.com/prysmaticlabs/go-bitfield" "github.com/prysmaticlabs/prysm/beacon-chain/core" "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" "github.com/prysmaticlabs/prysm/beacon-chain/core/transition" "github.com/prysmaticlabs/prysm/beacon-chain/state" v1 "github.com/prysmaticlabs/prysm/beacon-chain/state/v1" @@ -149,7 +150,7 @@ func GenerateAttestations( ) } - domain, err := helpers.Domain(bState.Fork(), currentEpoch, params.BeaconConfig().DomainBeaconAttester, bState.GenesisValidatorRoot()) + domain, err := signing.Domain(bState.Fork(), currentEpoch, params.BeaconConfig().DomainBeaconAttester, bState.GenesisValidatorRoot()) if err != nil { return nil, err } @@ -170,7 +171,7 @@ func GenerateAttestations( }, } - dataRoot, err := helpers.ComputeSigningRoot(attData, domain) + dataRoot, err := signing.ComputeSigningRoot(attData, domain) if err != nil { return nil, err } diff --git a/testing/util/block.go b/testing/util/block.go index 601721faa5..e468d94f3f 100644 --- a/testing/util/block.go +++ b/testing/util/block.go @@ -8,6 +8,7 @@ import ( types "github.com/prysmaticlabs/eth2-types" "github.com/prysmaticlabs/prysm/beacon-chain/core" "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" "github.com/prysmaticlabs/prysm/beacon-chain/state" "github.com/prysmaticlabs/prysm/config/params" "github.com/prysmaticlabs/prysm/crypto/bls" @@ -201,7 +202,7 @@ func GenerateProposerSlashingForValidator( }) currentEpoch := core.CurrentEpoch(bState) var err error - header1.Signature, err = helpers.ComputeDomainAndSign(bState, currentEpoch, header1.Header, params.BeaconConfig().DomainBeaconProposer, priv) + header1.Signature, err = signing.ComputeDomainAndSign(bState, currentEpoch, header1.Header, params.BeaconConfig().DomainBeaconProposer, priv) if err != nil { return nil, err } @@ -215,7 +216,7 @@ func GenerateProposerSlashingForValidator( ParentRoot: make([]byte, 32), }, } - header2.Signature, err = helpers.ComputeDomainAndSign(bState, currentEpoch, header2.Header, params.BeaconConfig().DomainBeaconProposer, priv) + header2.Signature, err = signing.ComputeDomainAndSign(bState, currentEpoch, header2.Header, params.BeaconConfig().DomainBeaconProposer, priv) if err != nil { return nil, err } @@ -271,7 +272,7 @@ func GenerateAttesterSlashingForValidator( AttestingIndices: []uint64{uint64(idx)}, } var err error - att1.Signature, err = helpers.ComputeDomainAndSign(bState, currentEpoch, att1.Data, params.BeaconConfig().DomainBeaconAttester, priv) + att1.Signature, err = signing.ComputeDomainAndSign(bState, currentEpoch, att1.Data, params.BeaconConfig().DomainBeaconAttester, priv) if err != nil { return nil, err } @@ -292,7 +293,7 @@ func GenerateAttesterSlashingForValidator( }, AttestingIndices: []uint64{uint64(idx)}, } - att2.Signature, err = helpers.ComputeDomainAndSign(bState, currentEpoch, att2.Data, params.BeaconConfig().DomainBeaconAttester, priv) + att2.Signature, err = signing.ComputeDomainAndSign(bState, currentEpoch, att2.Data, params.BeaconConfig().DomainBeaconAttester, priv) if err != nil { return nil, err } @@ -366,7 +367,7 @@ func generateVoluntaryExits( ValidatorIndex: valIndex, }, } - exit.Signature, err = helpers.ComputeDomainAndSign(bState, currentEpoch, exit.Exit, params.BeaconConfig().DomainVoluntaryExit, privs[valIndex]) + exit.Signature, err = signing.ComputeDomainAndSign(bState, currentEpoch, exit.Exit, params.BeaconConfig().DomainVoluntaryExit, privs[valIndex]) if err != nil { return nil, err } diff --git a/testing/util/deposits.go b/testing/util/deposits.go index fc0708c85d..1bfa47f797 100644 --- a/testing/util/deposits.go +++ b/testing/util/deposits.go @@ -6,7 +6,7 @@ import ( "testing" "github.com/pkg/errors" - "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" "github.com/prysmaticlabs/prysm/beacon-chain/core/transition" "github.com/prysmaticlabs/prysm/beacon-chain/state" "github.com/prysmaticlabs/prysm/config/params" @@ -170,7 +170,7 @@ func signedDeposit( WithdrawalCredentials: withdrawalCreds[:], } - domain, err := helpers.ComputeDomain(params.BeaconConfig().DomainDeposit, nil, nil) + domain, err := signing.ComputeDomain(params.BeaconConfig().DomainDeposit, nil, nil) if err != nil { return nil, errors.Wrap(err, "could not compute domain") } @@ -334,7 +334,7 @@ func DeterministicDepositsAndKeysSameValidator(numDeposits uint64) ([]*ethpb.Dep WithdrawalCredentials: withdrawalCreds[:], } - domain, err := helpers.ComputeDomain(params.BeaconConfig().DomainDeposit, nil, nil) + domain, err := signing.ComputeDomain(params.BeaconConfig().DomainDeposit, nil, nil) if err != nil { return nil, nil, errors.Wrap(err, "could not compute domain") } diff --git a/testing/util/helpers.go b/testing/util/helpers.go index 474037cc28..ec01ae04d6 100644 --- a/testing/util/helpers.go +++ b/testing/util/helpers.go @@ -9,6 +9,7 @@ import ( types "github.com/prysmaticlabs/eth2-types" "github.com/prysmaticlabs/prysm/beacon-chain/core" "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" "github.com/prysmaticlabs/prysm/beacon-chain/core/transition" "github.com/prysmaticlabs/prysm/beacon-chain/state" "github.com/prysmaticlabs/prysm/config/params" @@ -30,7 +31,7 @@ func RandaoReveal(beaconState state.ReadOnlyBeaconState, epoch types.Epoch, priv // We make the previous validator's index sign the message instead of the proposer. sszEpoch := types.SSZUint64(epoch) - return helpers.ComputeDomainAndSign(beaconState, epoch, &sszEpoch, params.BeaconConfig().DomainRandao, privKeys[proposerIdx]) + return signing.ComputeDomainAndSign(beaconState, epoch, &sszEpoch, params.BeaconConfig().DomainRandao, privKeys[proposerIdx]) } // BlockSignature calculates the post-state root of the block and returns the signature. @@ -45,11 +46,11 @@ func BlockSignature( return nil, err } block.StateRoot = s[:] - domain, err := helpers.Domain(bState.Fork(), core.CurrentEpoch(bState), params.BeaconConfig().DomainBeaconProposer, bState.GenesisValidatorRoot()) + domain, err := signing.Domain(bState.Fork(), core.CurrentEpoch(bState), params.BeaconConfig().DomainBeaconProposer, bState.GenesisValidatorRoot()) if err != nil { return nil, err } - blockRoot, err := helpers.ComputeSigningRoot(block, domain) + blockRoot, err := signing.ComputeSigningRoot(block, domain) if err != nil { return nil, err } diff --git a/testing/util/helpers_test.go b/testing/util/helpers_test.go index 04d53d5560..405b4bd427 100644 --- a/testing/util/helpers_test.go +++ b/testing/util/helpers_test.go @@ -9,6 +9,7 @@ import ( types "github.com/prysmaticlabs/eth2-types" "github.com/prysmaticlabs/prysm/beacon-chain/core" "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" "github.com/prysmaticlabs/prysm/config/params" "github.com/prysmaticlabs/prysm/testing/assert" "github.com/prysmaticlabs/prysm/testing/require" @@ -25,7 +26,7 @@ func TestBlockSignature(t *testing.T) { assert.NoError(t, beaconState.SetSlot(beaconState.Slot()-1)) epoch := core.SlotToEpoch(block.Block.Slot) - blockSig, err := helpers.ComputeDomainAndSign(beaconState, epoch, block.Block, params.BeaconConfig().DomainBeaconProposer, privKeys[proposerIdx]) + blockSig, err := signing.ComputeDomainAndSign(beaconState, epoch, block.Block, params.BeaconConfig().DomainBeaconProposer, privKeys[proposerIdx]) require.NoError(t, err) signature, err := BlockSignature(beaconState, block.Block, privKeys) @@ -49,7 +50,7 @@ func TestRandaoReveal(t *testing.T) { binary.LittleEndian.PutUint64(buf, uint64(epoch)) // We make the previous validator's index sign the message instead of the proposer. sszUint := types.SSZUint64(epoch) - epochSignature, err := helpers.ComputeDomainAndSign(beaconState, epoch, &sszUint, params.BeaconConfig().DomainRandao, privKeys[proposerIdx]) + epochSignature, err := signing.ComputeDomainAndSign(beaconState, epoch, &sszUint, params.BeaconConfig().DomainRandao, privKeys[proposerIdx]) require.NoError(t, err) if !bytes.Equal(randaoReveal, epochSignature) { diff --git a/testing/util/sync_aggregate.go b/testing/util/sync_aggregate.go index 3c9a43faea..e9e4f1ab05 100644 --- a/testing/util/sync_aggregate.go +++ b/testing/util/sync_aggregate.go @@ -4,7 +4,7 @@ import ( "github.com/pkg/errors" "github.com/prysmaticlabs/go-bitfield" "github.com/prysmaticlabs/prysm/beacon-chain/core" - "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" p2pType "github.com/prysmaticlabs/prysm/beacon-chain/p2p/types" "github.com/prysmaticlabs/prysm/beacon-chain/state" "github.com/prysmaticlabs/prysm/config/params" @@ -52,12 +52,12 @@ func generateSyncAggregate(bState state.BeaconState, privs []bls.SecretKey, pare if !ok { continue } - d, err := helpers.Domain(st.Fork(), core.SlotToEpoch(st.Slot()), params.BeaconConfig().DomainSyncCommittee, st.GenesisValidatorRoot()) + d, err := signing.Domain(st.Fork(), core.SlotToEpoch(st.Slot()), params.BeaconConfig().DomainSyncCommittee, st.GenesisValidatorRoot()) if err != nil { return nil, err } sszBytes := p2pType.SSZBytes(parentRoot[:]) - r, err := helpers.ComputeSigningRoot(&sszBytes, d) + r, err := signing.ComputeSigningRoot(&sszBytes, d) if err != nil { return nil, err } diff --git a/tools/benchmark-files-gen/BUILD.bazel b/tools/benchmark-files-gen/BUILD.bazel index 7ce5fe3317..301593fcd5 100644 --- a/tools/benchmark-files-gen/BUILD.bazel +++ b/tools/benchmark-files-gen/BUILD.bazel @@ -10,6 +10,7 @@ go_library( deps = [ "//beacon-chain/core:go_default_library", "//beacon-chain/core/helpers:go_default_library", + "//beacon-chain/core/signing:go_default_library", "//beacon-chain/core/transition:go_default_library", "//beacon-chain/state:go_default_library", "//beacon-chain/state/v1:go_default_library", diff --git a/tools/benchmark-files-gen/main.go b/tools/benchmark-files-gen/main.go index f4fddeff29..a7bbdbc329 100644 --- a/tools/benchmark-files-gen/main.go +++ b/tools/benchmark-files-gen/main.go @@ -12,6 +12,7 @@ import ( types "github.com/prysmaticlabs/eth2-types" "github.com/prysmaticlabs/prysm/beacon-chain/core" "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" "github.com/prysmaticlabs/prysm/beacon-chain/core/transition" "github.com/prysmaticlabs/prysm/beacon-chain/state" v1 "github.com/prysmaticlabs/prysm/beacon-chain/state/v1" @@ -141,7 +142,7 @@ func generateMarshalledFullStateAndBlock() error { if err != nil { return err } - block.Signature, err = helpers.ComputeDomainAndSign(beaconState, core.CurrentEpoch(beaconState), block.Block, params.BeaconConfig().DomainBeaconProposer, privs[proposerIdx]) + block.Signature, err = signing.ComputeDomainAndSign(beaconState, core.CurrentEpoch(beaconState), block.Block, params.BeaconConfig().DomainBeaconProposer, privs[proposerIdx]) if err != nil { return err } diff --git a/tools/bootnode/BUILD.bazel b/tools/bootnode/BUILD.bazel index 0a7ccfdbec..fba661b85b 100644 --- a/tools/bootnode/BUILD.bazel +++ b/tools/bootnode/BUILD.bazel @@ -11,7 +11,7 @@ go_library( visibility = ["//visibility:private"], deps = [ "//async:go_default_library", - "//beacon-chain/core/helpers:go_default_library", + "//beacon-chain/core/signing:go_default_library", "//config/params:go_default_library", "//encoding/bytesutil:go_default_library", "//io/logs:go_default_library", diff --git a/tools/bootnode/bootnode.go b/tools/bootnode/bootnode.go index cc46abd97e..982cd3ae5e 100644 --- a/tools/bootnode/bootnode.go +++ b/tools/bootnode/bootnode.go @@ -33,7 +33,7 @@ import ( "github.com/prometheus/client_golang/prometheus/promauto" "github.com/prysmaticlabs/go-bitfield" "github.com/prysmaticlabs/prysm/async" - "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" "github.com/prysmaticlabs/prysm/config/params" "github.com/prysmaticlabs/prysm/encoding/bytesutil" "github.com/prysmaticlabs/prysm/io/logs" @@ -212,7 +212,7 @@ func createLocalNode(privKey *ecdsa.PrivateKey, ipAddr net.IP, port int) (*enode } genRoot = bytesutil.ToBytes32(retRoot) } - digest, err := helpers.ComputeForkDigest(fVersion, genRoot[:]) + digest, err := signing.ComputeForkDigest(fVersion, genRoot[:]) if err != nil { return nil, errors.Wrap(err, "Could not compute fork digest") } diff --git a/validator/client/BUILD.bazel b/validator/client/BUILD.bazel index 499688fd17..d845993727 100644 --- a/validator/client/BUILD.bazel +++ b/validator/client/BUILD.bazel @@ -26,7 +26,7 @@ go_library( "//async/event:go_default_library", "//beacon-chain/core:go_default_library", "//beacon-chain/core/altair:go_default_library", - "//beacon-chain/core/helpers:go_default_library", + "//beacon-chain/core/signing:go_default_library", "//cache/lru:go_default_library", "//config/features:go_default_library", "//config/params:go_default_library", @@ -105,7 +105,7 @@ go_test( embed = [":go_default_library"], deps = [ "//async/event:go_default_library", - "//beacon-chain/core/helpers:go_default_library", + "//beacon-chain/core/signing:go_default_library", "//cache/lru:go_default_library", "//config/features:go_default_library", "//config/params:go_default_library", diff --git a/validator/client/aggregate.go b/validator/client/aggregate.go index ae197df1a2..8fd8737573 100644 --- a/validator/client/aggregate.go +++ b/validator/client/aggregate.go @@ -7,7 +7,7 @@ import ( types "github.com/prysmaticlabs/eth2-types" "github.com/prysmaticlabs/prysm/beacon-chain/core" - "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" "github.com/prysmaticlabs/prysm/config/params" "github.com/prysmaticlabs/prysm/crypto/bls" "github.com/prysmaticlabs/prysm/monitoring/tracing" @@ -125,7 +125,7 @@ func (v *validator) signSlotWithSelectionProof(ctx context.Context, pubKey [48]b var sig bls.Signature sszUint := types.SSZUint64(slot) - root, err := helpers.ComputeSigningRoot(&sszUint, domain.SignatureDomain) + root, err := signing.ComputeSigningRoot(&sszUint, domain.SignatureDomain) if err != nil { return nil, err } @@ -178,7 +178,7 @@ func (v *validator) aggregateAndProofSig(ctx context.Context, pubKey [48]byte, a return nil, err } var sig bls.Signature - root, err := helpers.ComputeSigningRoot(agg, d.SignatureDomain) + root, err := signing.ComputeSigningRoot(agg, d.SignatureDomain) if err != nil { return nil, err } diff --git a/validator/client/attest.go b/validator/client/attest.go index 0f084ac52a..0a899ac0f0 100644 --- a/validator/client/attest.go +++ b/validator/client/attest.go @@ -11,7 +11,7 @@ import ( types "github.com/prysmaticlabs/eth2-types" "github.com/prysmaticlabs/go-bitfield" "github.com/prysmaticlabs/prysm/async" - "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" "github.com/prysmaticlabs/prysm/config/features" "github.com/prysmaticlabs/prysm/config/params" "github.com/prysmaticlabs/prysm/crypto/hash" @@ -219,7 +219,7 @@ func (v *validator) getDomainAndSigningRoot(ctx context.Context, data *ethpb.Att if err != nil { return nil, [32]byte{}, err } - root, err := helpers.ComputeSigningRoot(data, domain.SignatureDomain) + root, err := signing.ComputeSigningRoot(data, domain.SignatureDomain) if err != nil { return nil, [32]byte{}, err } diff --git a/validator/client/attest_test.go b/validator/client/attest_test.go index 2a4c08dac8..dacccb14b5 100644 --- a/validator/client/attest_test.go +++ b/validator/client/attest_test.go @@ -13,7 +13,7 @@ import ( types "github.com/prysmaticlabs/eth2-types" "github.com/prysmaticlabs/go-bitfield" "github.com/prysmaticlabs/prysm/async/event" - "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" "github.com/prysmaticlabs/prysm/config/features" "github.com/prysmaticlabs/prysm/config/params" "github.com/prysmaticlabs/prysm/crypto/bls" @@ -151,7 +151,7 @@ func TestAttestToBlockHead_AttestsCorrectly(t *testing.T) { Signature: make([]byte, 96), } - root, err := helpers.ComputeSigningRoot(expectedAttestation.Data, make([]byte, 32)) + root, err := signing.ComputeSigningRoot(expectedAttestation.Data, make([]byte, 32)) require.NoError(t, err) sig, err := validator.keyManager.Sign(context.Background(), &validatorpb.SignRequest{ @@ -454,7 +454,7 @@ func TestSignAttestation(t *testing.T) { Epoch: 0, } genesisValidatorRoot := [32]byte{0x01, 0x02} - attesterDomain, err := helpers.Domain(wantedFork, 0, params.BeaconConfig().DomainBeaconAttester, genesisValidatorRoot[:]) + attesterDomain, err := signing.Domain(wantedFork, 0, params.BeaconConfig().DomainBeaconAttester, genesisValidatorRoot[:]) require.NoError(t, err) m.validatorClient.EXPECT(). DomainData(gomock.Any(), gomock.Any()). diff --git a/validator/client/propose.go b/validator/client/propose.go index c95dc8642e..ac67486c67 100644 --- a/validator/client/propose.go +++ b/validator/client/propose.go @@ -10,7 +10,7 @@ import ( types "github.com/prysmaticlabs/eth2-types" "github.com/prysmaticlabs/prysm/async" "github.com/prysmaticlabs/prysm/beacon-chain/core" - "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" "github.com/prysmaticlabs/prysm/config/params" "github.com/prysmaticlabs/prysm/crypto/bls" "github.com/prysmaticlabs/prysm/crypto/rand" @@ -110,7 +110,7 @@ func (v *validator) proposeBlockPhase0(ctx context.Context, slot types.Slot, pub Signature: sig, } - signingRoot, err := helpers.ComputeSigningRoot(b, domain.SignatureDomain) + signingRoot, err := signing.ComputeSigningRoot(b, domain.SignatureDomain) if err != nil { if v.emitAccountMetrics { ValidatorProposeFailVec.WithLabelValues(fmtKey).Inc() @@ -243,7 +243,7 @@ func (v *validator) proposeBlockAltair(ctx context.Context, slot types.Slot, pub Signature: sig, } - signingRoot, err := helpers.ComputeSigningRoot(altairBlk.Altair, domain.SignatureDomain) + signingRoot, err := signing.ComputeSigningRoot(altairBlk.Altair, domain.SignatureDomain) if err != nil { if v.emitAccountMetrics { ValidatorProposeFailVec.WithLabelValues(fmtKey).Inc() @@ -367,7 +367,7 @@ func (v *validator) signRandaoReveal(ctx context.Context, pubKey [48]byte, epoch var randaoReveal bls.Signature sszUint := types.SSZUint64(epoch) - root, err := helpers.ComputeSigningRoot(&sszUint, domain.SignatureDomain) + root, err := signing.ComputeSigningRoot(&sszUint, domain.SignatureDomain) if err != nil { return nil, err } @@ -400,7 +400,7 @@ func (v *validator) signBlock(ctx context.Context, pubKey [48]byte, epoch types. if !ok { return nil, nil, errors.New("could not convert obj to beacon block altair") } - blockRoot, err := helpers.ComputeSigningRoot(block, domain.SignatureDomain) + blockRoot, err := signing.ComputeSigningRoot(block, domain.SignatureDomain) if err != nil { return nil, nil, errors.Wrap(err, signingRootErr) } @@ -419,7 +419,7 @@ func (v *validator) signBlock(ctx context.Context, pubKey [48]byte, epoch types. if !ok { return nil, nil, errors.New("could not convert obj to beacon block phase 0") } - blockRoot, err := helpers.ComputeSigningRoot(block, domain.SignatureDomain) + blockRoot, err := signing.ComputeSigningRoot(block, domain.SignatureDomain) if err != nil { return nil, nil, errors.Wrap(err, signingRootErr) } @@ -459,7 +459,7 @@ func signVoluntaryExit( return nil, errors.New(domainDataErr) } - exitRoot, err := helpers.ComputeSigningRoot(exit, domain.SignatureDomain) + exitRoot, err := signing.ComputeSigningRoot(exit, domain.SignatureDomain) if err != nil { return nil, errors.Wrap(err, signingRootErr) } diff --git a/validator/client/sync_committee.go b/validator/client/sync_committee.go index 675af14ac4..4cd15eb572 100644 --- a/validator/client/sync_committee.go +++ b/validator/client/sync_committee.go @@ -9,7 +9,7 @@ import ( types "github.com/prysmaticlabs/eth2-types" "github.com/prysmaticlabs/prysm/beacon-chain/core" "github.com/prysmaticlabs/prysm/beacon-chain/core/altair" - "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" + "github.com/prysmaticlabs/prysm/beacon-chain/core/signing" "github.com/prysmaticlabs/prysm/config/params" "github.com/prysmaticlabs/prysm/crypto/bls" "github.com/prysmaticlabs/prysm/encoding/bytesutil" @@ -47,7 +47,7 @@ func (v *validator) SubmitSyncCommitteeMessage(ctx context.Context, slot types.S return } sszRoot := types.SSZBytes(res.Root) - r, err := helpers.ComputeSigningRoot(&sszRoot, d.SignatureDomain) + r, err := signing.ComputeSigningRoot(&sszRoot, d.SignatureDomain) if err != nil { log.WithError(err).Error("Could not get sync committee message signing root") return @@ -221,7 +221,7 @@ func (v *validator) signContributionAndProof(ctx context.Context, pubKey [48]byt // This computes the signing root of hash tree root capable object `obj` and signs it using public key `pubKey` along with the signature domain `sigDomain`. func (v *validator) computeAndSign(ctx context.Context, obj fssz.HashRoot, pubKey [48]byte, sigDomain []byte) (bls.Signature, error) { - root, err := helpers.ComputeSigningRoot(obj, sigDomain) + root, err := signing.ComputeSigningRoot(obj, sigDomain) if err != nil { return nil, err }