From 4d1fa8770168825f50ebd38865034186705698b5 Mon Sep 17 00:00:00 2001 From: Alan Date: Thu, 5 Jun 2025 12:49:14 +0100 Subject: [PATCH 1/3] stop sending decided message --- qbft/controller.go | 13 ------ qbft/spectest/all_tests.go | 1 - qbft/spectest/tests/commit/sorted_decided.go | 38 ---------------- qbft/spectest/tests/controller_spectest.go | 43 ------------------- ssv/runner.go | 3 +- .../majority_slashable.go | 5 +-- .../minority_slashable.go | 3 +- .../valcheckattestations/slashable.go | 3 +- .../valid_non_slashable_slot.go | 3 +- types/beacon_types_encoding.go | 2 +- .../beacon_node_committee_duty.go | 8 ++-- types/testingutils/keymanager.go | 9 ++-- types/testingutils/ssv_msgs_committee_duty.go | 7 +-- types/testingutils/validator_pubkeys.go | 3 +- 14 files changed, 20 insertions(+), 121 deletions(-) delete mode 100644 qbft/spectest/tests/commit/sorted_decided.go diff --git a/qbft/controller.go b/qbft/controller.go index 2b5bd6b0d..d6a057d5d 100644 --- a/qbft/controller.go +++ b/qbft/controller.go @@ -120,10 +120,6 @@ func (c *Controller) UponExistingInstanceMsg(msg *ProcessingMessage) (*types.Sig return nil, nil } - if err := c.broadcastDecided(decidedMsg); err != nil { - // no need to fail processing instance deciding if failed to save/ broadcast - fmt.Printf("%s\n", err.Error()) - } return decidedMsg, nil } @@ -169,15 +165,6 @@ func (c *Controller) forceStopAllInstanceExceptCurrent() { } } -func (c *Controller) broadcastDecided(aggregatedCommit *types.SignedSSVMessage) error { - - if err := c.GetConfig().GetNetwork().Broadcast(aggregatedCommit.SSVMessage.GetID(), aggregatedCommit); err != nil { - // We do not return error here, just Log broadcasting error. - return errors.Wrap(err, "could not broadcast decided") - } - return nil -} - func (c *Controller) GetConfig() IConfig { return c.config } diff --git a/qbft/spectest/all_tests.go b/qbft/spectest/all_tests.go index ee7437864..41d2eea67 100644 --- a/qbft/spectest/all_tests.go +++ b/qbft/spectest/all_tests.go @@ -195,7 +195,6 @@ var AllTests = []tests.TestF{ commit.NoCommitQuorum, commit.ForceStop, commit.PostCutoff, - commit.SortedDecided, roundchange.HappyFlow, roundchange.WrongHeight, diff --git a/qbft/spectest/tests/commit/sorted_decided.go b/qbft/spectest/tests/commit/sorted_decided.go deleted file mode 100644 index f0e70c7a7..000000000 --- a/qbft/spectest/tests/commit/sorted_decided.go +++ /dev/null @@ -1,38 +0,0 @@ -package commit - -import ( - "crypto/rsa" - - "github.com/ssvlabs/ssv-spec/qbft/spectest/tests" - "github.com/ssvlabs/ssv-spec/types" - "github.com/ssvlabs/ssv-spec/types/testingutils" -) - -// SortedDecided tests the creation of the decided message that should have sorted signers -func SortedDecided() tests.SpecTest { - ks := testingutils.Testing4SharesSet() - return &tests.ControllerSpecTest{ - Name: "sorted decided", - RunInstanceData: []*tests.RunInstanceData{ - { - InputValue: []byte{1, 2, 3, 4}, - InputMessages: []*types.SignedSSVMessage{ - testingutils.TestingProposalMessage(ks.OperatorKeys[1], 1), - testingutils.TestingPrepareMessage(ks.OperatorKeys[1], 1), - testingutils.TestingPrepareMessage(ks.OperatorKeys[2], 2), - testingutils.TestingPrepareMessage(ks.OperatorKeys[3], 3), - testingutils.TestingCommitMessage(ks.OperatorKeys[4], 4), - testingutils.TestingCommitMessage(ks.OperatorKeys[2], 2), - testingutils.TestingCommitMessage(ks.OperatorKeys[3], 3), - }, - ExpectedDecidedState: tests.DecidedState{ - DecidedVal: testingutils.TestingQBFTFullData, - DecidedCnt: 1, - BroadcastedDecided: testingutils.TestingCommitMultiSignerMessage( - []*rsa.PrivateKey{ks.OperatorKeys[2], ks.OperatorKeys[3], ks.OperatorKeys[4]}, - []types.OperatorID{2, 3, 4}), - }, - }, - }, - } -} diff --git a/qbft/spectest/tests/controller_spectest.go b/qbft/spectest/tests/controller_spectest.go index 899d555b4..df84ec761 100644 --- a/qbft/spectest/tests/controller_spectest.go +++ b/qbft/spectest/tests/controller_spectest.go @@ -1,7 +1,6 @@ package tests import ( - "bytes" "encoding/hex" "encoding/json" "fmt" @@ -124,46 +123,6 @@ func (test *ControllerSpecTest) testProcessMsg( return lastErr } -func (test *ControllerSpecTest) testBroadcastedDecided( - t *testing.T, - config qbft.IConfig, - identifier []byte, - runData *RunInstanceData, - committee []*types.Operator, -) { - if runData.ExpectedDecidedState.BroadcastedDecided != nil { - // test broadcasted - broadcastedSignedMsgs := config.GetNetwork().(*testingutils.TestingNetwork).BroadcastedMsgs - require.Greater(t, len(broadcastedSignedMsgs), 0) - require.NoError(t, testingutils.VerifyListOfSignedSSVMessages(broadcastedSignedMsgs, committee)) - found := false - for _, msg := range broadcastedSignedMsgs { - - // a hack for testing non standard messageID identifiers since we copy them into a MessageID this fixes it - msgID := types.MessageID{} - copy(msgID[:], identifier) - - if !bytes.Equal(msgID[:], msg.SSVMessage.MsgID[:]) { - continue - } - - r1, err := msg.GetRoot() - require.NoError(t, err) - - r2, err := runData.ExpectedDecidedState.BroadcastedDecided.GetRoot() - require.NoError(t, err) - - if r1 == r2 && - reflect.DeepEqual(runData.ExpectedDecidedState.BroadcastedDecided.OperatorIDs, msg.OperatorIDs) && - reflect.DeepEqual(runData.ExpectedDecidedState.BroadcastedDecided.Signatures, msg.Signatures) { - require.False(t, found) - found = true - } - } - require.True(t, found) - } -} - func (test *ControllerSpecTest) runInstanceWithData( t *testing.T, height qbft.Height, @@ -182,8 +141,6 @@ func (test *ControllerSpecTest) runInstanceWithData( lastErr = err } - test.testBroadcastedDecided(t, contr.GetConfig(), contr.Identifier, runData, contr.CommitteeMember.Committee) - // test root r, err := contr.GetRoot() require.NoError(t, err) diff --git a/ssv/runner.go b/ssv/runner.go index 56cd67cc7..c20b9de69 100644 --- a/ssv/runner.go +++ b/ssv/runner.go @@ -1,7 +1,6 @@ package ssv import ( - "github.com/attestantio/go-eth2-client/spec/phase0" spec "github.com/attestantio/go-eth2-client/spec/phase0" ssz "github.com/ferranbt/fastssz" "github.com/pkg/errors" @@ -232,7 +231,7 @@ func (b *BaseRunner) didDecideCorrectly(prevDecided bool, signedMessage *types.S } // decide input param can be a BeaconVote or ValidatorConsensusData -func (b *BaseRunner) decide(runner Runner, slot phase0.Slot, input types.Encoder) error { +func (b *BaseRunner) decide(runner Runner, slot spec.Slot, input types.Encoder) error { byts, err := input.Encode() if err != nil { return errors.Wrap(err, "could not encode input data for consensus") diff --git a/ssv/spectest/tests/valcheck/valcheckattestations/majority_slashable.go b/ssv/spectest/tests/valcheck/valcheckattestations/majority_slashable.go index 58001eb8f..1628c18f7 100644 --- a/ssv/spectest/tests/valcheck/valcheckattestations/majority_slashable.go +++ b/ssv/spectest/tests/valcheck/valcheckattestations/majority_slashable.go @@ -3,7 +3,6 @@ package valcheckattestations import ( "encoding/hex" - "github.com/attestantio/go-eth2-client/spec/phase0" spec "github.com/attestantio/go-eth2-client/spec/phase0" "github.com/ssvlabs/ssv-spec/ssv/spectest/tests" "github.com/ssvlabs/ssv-spec/ssv/spectest/tests/valcheck" @@ -38,9 +37,9 @@ func MajoritySlashable() tests.SpecTest { } // Make slashable map with majority - slashableMap := make(map[string][]phase0.Slot) + slashableMap := make(map[string][]spec.Slot) for i := 0; i < int(keySet.Threshold); i++ { - slashableMap[sharesPKString[i]] = []phase0.Slot{testingutils.TestingDutySlot} + slashableMap[sharesPKString[i]] = []spec.Slot{testingutils.TestingDutySlot} } return &valcheck.SpecTest{ diff --git a/ssv/spectest/tests/valcheck/valcheckattestations/minority_slashable.go b/ssv/spectest/tests/valcheck/valcheckattestations/minority_slashable.go index c374cd060..6b318695c 100644 --- a/ssv/spectest/tests/valcheck/valcheckattestations/minority_slashable.go +++ b/ssv/spectest/tests/valcheck/valcheckattestations/minority_slashable.go @@ -3,7 +3,6 @@ package valcheckattestations import ( "encoding/hex" - "github.com/attestantio/go-eth2-client/spec/phase0" spec "github.com/attestantio/go-eth2-client/spec/phase0" "github.com/ssvlabs/ssv-spec/ssv/spectest/tests" "github.com/ssvlabs/ssv-spec/ssv/spectest/tests/valcheck" @@ -38,7 +37,7 @@ func MinoritySlashable() tests.SpecTest { } // Make slashable map with minority - slashableMap := map[string][]phase0.Slot{ + slashableMap := map[string][]spec.Slot{ sharesPKString[0]: { testingutils.TestingDutySlot, }, diff --git a/ssv/spectest/tests/valcheck/valcheckattestations/slashable.go b/ssv/spectest/tests/valcheck/valcheckattestations/slashable.go index ebe195b26..aaa5659e5 100644 --- a/ssv/spectest/tests/valcheck/valcheckattestations/slashable.go +++ b/ssv/spectest/tests/valcheck/valcheckattestations/slashable.go @@ -3,7 +3,6 @@ package valcheckattestations import ( "encoding/hex" - "github.com/attestantio/go-eth2-client/spec/phase0" spec "github.com/attestantio/go-eth2-client/spec/phase0" "github.com/ssvlabs/ssv-spec/ssv/spectest/tests" "github.com/ssvlabs/ssv-spec/ssv/spectest/tests/valcheck" @@ -38,7 +37,7 @@ func Slashable() tests.SpecTest { DutySlot: testingutils.TestingDutySlot, Input: input, ExpectedError: "slashable attestation", - SlashableSlots: map[string][]phase0.Slot{ + SlashableSlots: map[string][]spec.Slot{ shareString: { testingutils.TestingDutySlot, }, diff --git a/ssv/spectest/tests/valcheck/valcheckattestations/valid_non_slashable_slot.go b/ssv/spectest/tests/valcheck/valcheckattestations/valid_non_slashable_slot.go index 4ff19089e..df0f9fc23 100644 --- a/ssv/spectest/tests/valcheck/valcheckattestations/valid_non_slashable_slot.go +++ b/ssv/spectest/tests/valcheck/valcheckattestations/valid_non_slashable_slot.go @@ -3,7 +3,6 @@ package valcheckattestations import ( "encoding/hex" - "github.com/attestantio/go-eth2-client/spec/phase0" spec "github.com/attestantio/go-eth2-client/spec/phase0" "github.com/ssvlabs/ssv-spec/ssv/spectest/tests" "github.com/ssvlabs/ssv-spec/ssv/spectest/tests/valcheck" @@ -37,7 +36,7 @@ func ValidNonSlashableSlot() tests.SpecTest { RunnerRole: types.RoleCommittee, DutySlot: testingutils.TestingDutySlot + 1, Input: input, - SlashableSlots: map[string][]phase0.Slot{ + SlashableSlots: map[string][]spec.Slot{ shareString: { testingutils.TestingDutySlot, }, diff --git a/types/beacon_types_encoding.go b/types/beacon_types_encoding.go index 5d9522e32..ac1ffed19 100644 --- a/types/beacon_types_encoding.go +++ b/types/beacon_types_encoding.go @@ -1,5 +1,5 @@ // Code generated by fastssz. DO NOT EDIT. -// Hash: e8d4da029627f61fc9e6f7ec2d837905e84d31d318f66dc7795dbf951c9cdb3a +// Hash: 5f9ee936d2c6bc57f624b677a7220e230c02501eba5cd8319ceac46ec4182761 // Version: 0.1.3 package types diff --git a/types/testingutils/beacon_node_committee_duty.go b/types/testingutils/beacon_node_committee_duty.go index 1948fac97..e883c97b8 100644 --- a/types/testingutils/beacon_node_committee_duty.go +++ b/types/testingutils/beacon_node_committee_duty.go @@ -221,18 +221,18 @@ var TestingSignedCommitteeBeaconObjectSSZRoot = func(duty *types.CommitteeDuty, ks := ksMap[validatorDuty.ValidatorIndex] - if validatorDuty.Type == types.BNRoleAttester { - + switch validatorDuty.Type { + case types.BNRoleAttester: attResponse := TestingAttestationResponseBeaconObjectForDuty(ks, version, validatorDuty) ret = append(ret, GetSSZRootNoError(attResponse)) - } else if validatorDuty.Type == types.BNRoleSyncCommittee { + case types.BNRoleSyncCommittee: ret = append(ret, GetSSZRootNoError(&altair.SyncCommitteeMessage{ Slot: validatorDuty.Slot, BeaconBlockRoot: TestingBlockRoot, ValidatorIndex: validatorDuty.ValidatorIndex, Signature: signBeaconObject(types.SSZBytes(TestingBlockRoot[:]), types.DomainSyncCommittee, ks), })) - } else { + default: panic(fmt.Sprintf("type %v not expected", validatorDuty.Type)) } } diff --git a/types/testingutils/keymanager.go b/types/testingutils/keymanager.go index 9fb381702..5673cfbab 100644 --- a/types/testingutils/keymanager.go +++ b/types/testingutils/keymanager.go @@ -7,7 +7,6 @@ import ( "fmt" "sync" - "github.com/attestantio/go-eth2-client/spec/phase0" spec "github.com/attestantio/go-eth2-client/spec/phase0" "github.com/ethereum/go-ethereum/common" ethcrypto "github.com/ethereum/go-ethereum/crypto" @@ -34,7 +33,7 @@ type TestingKeyStorage struct { type TestingKeyManager struct { keyStorage *TestingKeyStorage - slashableSlots map[string][]phase0.Slot // Validator Key -> List of slots + slashableSlots map[string][]spec.Slot // Validator Key -> List of slots } var ( @@ -43,10 +42,10 @@ var ( ) func NewTestingKeyManager() *TestingKeyManager { - return NewTestingKeyManagerWithSlashableSlots(map[string][]phase0.Slot{}) + return NewTestingKeyManagerWithSlashableSlots(map[string][]spec.Slot{}) } -func NewTestingKeyManagerWithSlashableSlots(slashableSlots map[string][]phase0.Slot) *TestingKeyManager { +func NewTestingKeyManagerWithSlashableSlots(slashableSlots map[string][]spec.Slot) *TestingKeyManager { return &TestingKeyManager{ keyStorage: NewTestingKeyStorage(), @@ -98,7 +97,7 @@ func NewTestingKeyStorage() *TestingKeyStorage { } // AddSlashableDataRoot adds a slashable slot for the validator to the key manager -func (km *TestingKeyManager) AddSlashableSlot(pk types.ShareValidatorPK, slot phase0.Slot) { +func (km *TestingKeyManager) AddSlashableSlot(pk types.ShareValidatorPK, slot spec.Slot) { entry := hex.EncodeToString(pk) if km.slashableSlots[entry] == nil { km.slashableSlots[entry] = make([]spec.Slot, 0) diff --git a/types/testingutils/ssv_msgs_committee_duty.go b/types/testingutils/ssv_msgs_committee_duty.go index c78c4e060..cc59890d4 100644 --- a/types/testingutils/ssv_msgs_committee_duty.go +++ b/types/testingutils/ssv_msgs_committee_duty.go @@ -41,7 +41,8 @@ var PostConsensusCommitteeMsgForDuty = func(duty *types.CommitteeDuty, keySetMap ks := keySetMap[validatorDuty.ValidatorIndex] - if validatorDuty.Type == types.BNRoleAttester { + switch validatorDuty.Type { + case types.BNRoleAttester: attData := TestingAttestationDataForValidatorDuty(validatorDuty) pSigMsgs := postConsensusAttestationMsgForAttestationData(ks.Shares[id], id, duty.Slot, attData, validatorDuty.ValidatorIndex) if ret == nil { @@ -49,14 +50,14 @@ var PostConsensusCommitteeMsgForDuty = func(duty *types.CommitteeDuty, keySetMap } else { ret.Messages = append(ret.Messages, pSigMsgs.Messages...) } - } else if validatorDuty.Type == types.BNRoleSyncCommittee { + case types.BNRoleSyncCommittee: pSigMsgs := postConsensusSyncCommitteeMsg(ks.Shares[id], id, duty.Slot, false, false, validatorDuty.ValidatorIndex) if ret == nil { ret = pSigMsgs } else { ret.Messages = append(ret.Messages, pSigMsgs.Messages...) } - } else { + default: panic(fmt.Sprintf("type %v not expected", validatorDuty.Type)) } } diff --git a/types/testingutils/validator_pubkeys.go b/types/testingutils/validator_pubkeys.go index 889ede38a..065882917 100644 --- a/types/testingutils/validator_pubkeys.go +++ b/types/testingutils/validator_pubkeys.go @@ -4,11 +4,10 @@ import ( "encoding/hex" "fmt" - "github.com/attestantio/go-eth2-client/spec/phase0" spec "github.com/attestantio/go-eth2-client/spec/phase0" ) -var TestingValidatorPubKeyForValidatorIndex = func(ValidatorIndex phase0.ValidatorIndex) spec.BLSPubKey { +var TestingValidatorPubKeyForValidatorIndex = func(ValidatorIndex spec.ValidatorIndex) spec.BLSPubKey { ks, exists := TestingKeySetMap[ValidatorIndex] if !exists { panic(fmt.Sprintf("Validator index %v does not exist in TestingKeySetMap", ValidatorIndex)) From a790789a191eba1f6580c9459e8823874867d254 Mon Sep 17 00:00:00 2001 From: Alan Date: Wed, 9 Jul 2025 05:17:32 +0100 Subject: [PATCH 2/3] spec -> phase0 --- ssv/runner.go | 18 +++++------ .../majority_slashable.go | 10 +++--- .../minority_slashable.go | 8 ++--- .../valcheckattestations/slashable.go | 14 ++++---- .../valid_non_slashable_slot.go | 14 ++++---- types/testingutils/keymanager.go | 32 +++++++++---------- types/testingutils/validator_pubkeys.go | 10 +++--- 7 files changed, 53 insertions(+), 53 deletions(-) diff --git a/ssv/runner.go b/ssv/runner.go index c20b9de69..fe27247d5 100644 --- a/ssv/runner.go +++ b/ssv/runner.go @@ -1,7 +1,7 @@ package ssv import ( - spec "github.com/attestantio/go-eth2-client/spec/phase0" + "github.com/attestantio/go-eth2-client/spec/phase0" ssz "github.com/ferranbt/fastssz" "github.com/pkg/errors" "github.com/ssvlabs/ssv-spec/qbft" @@ -34,32 +34,32 @@ type Runner interface { ProcessPostConsensus(signedMsg *types.PartialSignatureMessages) error // expectedPreConsensusRootsAndDomain an INTERNAL function, returns the expected pre-consensus roots to sign - expectedPreConsensusRootsAndDomain() ([]ssz.HashRoot, spec.DomainType, error) + expectedPreConsensusRootsAndDomain() ([]ssz.HashRoot, phase0.DomainType, error) // expectedPostConsensusRootsAndDomain an INTERNAL function, returns the expected post-consensus roots to sign - expectedPostConsensusRootsAndDomain() ([]ssz.HashRoot, spec.DomainType, error) + expectedPostConsensusRootsAndDomain() ([]ssz.HashRoot, phase0.DomainType, error) // executeDuty an INTERNAL function, executes a duty. executeDuty(duty types.Duty) error } type BaseRunner struct { State *State - Share map[spec.ValidatorIndex]*types.Share + Share map[phase0.ValidatorIndex]*types.Share QBFTController *qbft.Controller BeaconNetwork types.BeaconNetwork RunnerRoleType types.RunnerRole *types.OperatorSigner // highestDecidedSlot holds the highest decided duty slot and gets updated after each decided is reached - highestDecidedSlot spec.Slot + highestDecidedSlot phase0.Slot } func NewBaseRunner( state *State, - share map[spec.ValidatorIndex]*types.Share, + share map[phase0.ValidatorIndex]*types.Share, controller *qbft.Controller, beaconNetwork types.BeaconNetwork, runnerRoleType types.RunnerRole, - highestDecidedSlot spec.Slot, + highestDecidedSlot phase0.Slot, ) *BaseRunner { return &BaseRunner{ State: state, @@ -72,7 +72,7 @@ func NewBaseRunner( } // SetHighestDecidedSlot set highestDecidedSlot for base runner -func (b *BaseRunner) SetHighestDecidedSlot(slot spec.Slot) { +func (b *BaseRunner) SetHighestDecidedSlot(slot phase0.Slot) { b.highestDecidedSlot = slot } @@ -231,7 +231,7 @@ func (b *BaseRunner) didDecideCorrectly(prevDecided bool, signedMessage *types.S } // decide input param can be a BeaconVote or ValidatorConsensusData -func (b *BaseRunner) decide(runner Runner, slot spec.Slot, input types.Encoder) error { +func (b *BaseRunner) decide(runner Runner, slot phase0.Slot, input types.Encoder) error { byts, err := input.Encode() if err != nil { return errors.Wrap(err, "could not encode input data for consensus") diff --git a/ssv/spectest/tests/valcheck/valcheckattestations/majority_slashable.go b/ssv/spectest/tests/valcheck/valcheckattestations/majority_slashable.go index 1628c18f7..fbbf5b095 100644 --- a/ssv/spectest/tests/valcheck/valcheckattestations/majority_slashable.go +++ b/ssv/spectest/tests/valcheck/valcheckattestations/majority_slashable.go @@ -3,7 +3,7 @@ package valcheckattestations import ( "encoding/hex" - spec "github.com/attestantio/go-eth2-client/spec/phase0" + "github.com/attestantio/go-eth2-client/spec/phase0" "github.com/ssvlabs/ssv-spec/ssv/spectest/tests" "github.com/ssvlabs/ssv-spec/ssv/spectest/tests/valcheck" "github.com/ssvlabs/ssv-spec/types" @@ -14,11 +14,11 @@ import ( func MajoritySlashable() tests.SpecTest { data := &types.BeaconVote{ BlockRoot: testingutils.TestingBlockRoot, - Source: &spec.Checkpoint{ + Source: &phase0.Checkpoint{ Epoch: 0, Root: testingutils.TestingBlockRoot, }, - Target: &spec.Checkpoint{ + Target: &phase0.Checkpoint{ Epoch: 1, Root: testingutils.TestingBlockRoot, }, @@ -37,9 +37,9 @@ func MajoritySlashable() tests.SpecTest { } // Make slashable map with majority - slashableMap := make(map[string][]spec.Slot) + slashableMap := make(map[string][]phase0.Slot) for i := 0; i < int(keySet.Threshold); i++ { - slashableMap[sharesPKString[i]] = []spec.Slot{testingutils.TestingDutySlot} + slashableMap[sharesPKString[i]] = []phase0.Slot{testingutils.TestingDutySlot} } return &valcheck.SpecTest{ diff --git a/ssv/spectest/tests/valcheck/valcheckattestations/minority_slashable.go b/ssv/spectest/tests/valcheck/valcheckattestations/minority_slashable.go index 6b318695c..fbe005ff6 100644 --- a/ssv/spectest/tests/valcheck/valcheckattestations/minority_slashable.go +++ b/ssv/spectest/tests/valcheck/valcheckattestations/minority_slashable.go @@ -3,7 +3,7 @@ package valcheckattestations import ( "encoding/hex" - spec "github.com/attestantio/go-eth2-client/spec/phase0" + "github.com/attestantio/go-eth2-client/spec/phase0" "github.com/ssvlabs/ssv-spec/ssv/spectest/tests" "github.com/ssvlabs/ssv-spec/ssv/spectest/tests/valcheck" "github.com/ssvlabs/ssv-spec/types" @@ -14,11 +14,11 @@ import ( func MinoritySlashable() tests.SpecTest { data := &types.BeaconVote{ BlockRoot: testingutils.TestingBlockRoot, - Source: &spec.Checkpoint{ + Source: &phase0.Checkpoint{ Epoch: 0, Root: testingutils.TestingBlockRoot, }, - Target: &spec.Checkpoint{ + Target: &phase0.Checkpoint{ Epoch: 1, Root: testingutils.TestingBlockRoot, }, @@ -37,7 +37,7 @@ func MinoritySlashable() tests.SpecTest { } // Make slashable map with minority - slashableMap := map[string][]spec.Slot{ + slashableMap := map[string][]phase0.Slot{ sharesPKString[0]: { testingutils.TestingDutySlot, }, diff --git a/ssv/spectest/tests/valcheck/valcheckattestations/slashable.go b/ssv/spectest/tests/valcheck/valcheckattestations/slashable.go index aaa5659e5..b589f2db4 100644 --- a/ssv/spectest/tests/valcheck/valcheckattestations/slashable.go +++ b/ssv/spectest/tests/valcheck/valcheckattestations/slashable.go @@ -3,7 +3,7 @@ package valcheckattestations import ( "encoding/hex" - spec "github.com/attestantio/go-eth2-client/spec/phase0" + "github.com/attestantio/go-eth2-client/spec/phase0" "github.com/ssvlabs/ssv-spec/ssv/spectest/tests" "github.com/ssvlabs/ssv-spec/ssv/spectest/tests/valcheck" "github.com/ssvlabs/ssv-spec/types" @@ -13,14 +13,14 @@ import ( // Slashable tests a slashable AttestationData func Slashable() tests.SpecTest { data := &types.BeaconVote{ - BlockRoot: spec.Root{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2}, - Source: &spec.Checkpoint{ + BlockRoot: phase0.Root{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2}, + Source: &phase0.Checkpoint{ Epoch: 0, - Root: spec.Root{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2}, + Root: phase0.Root{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2}, }, - Target: &spec.Checkpoint{ + Target: &phase0.Checkpoint{ Epoch: 1, - Root: spec.Root{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2}, + Root: phase0.Root{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2}, }, } @@ -37,7 +37,7 @@ func Slashable() tests.SpecTest { DutySlot: testingutils.TestingDutySlot, Input: input, ExpectedError: "slashable attestation", - SlashableSlots: map[string][]spec.Slot{ + SlashableSlots: map[string][]phase0.Slot{ shareString: { testingutils.TestingDutySlot, }, diff --git a/ssv/spectest/tests/valcheck/valcheckattestations/valid_non_slashable_slot.go b/ssv/spectest/tests/valcheck/valcheckattestations/valid_non_slashable_slot.go index df0f9fc23..e4f96527a 100644 --- a/ssv/spectest/tests/valcheck/valcheckattestations/valid_non_slashable_slot.go +++ b/ssv/spectest/tests/valcheck/valcheckattestations/valid_non_slashable_slot.go @@ -3,7 +3,7 @@ package valcheckattestations import ( "encoding/hex" - spec "github.com/attestantio/go-eth2-client/spec/phase0" + "github.com/attestantio/go-eth2-client/spec/phase0" "github.com/ssvlabs/ssv-spec/ssv/spectest/tests" "github.com/ssvlabs/ssv-spec/ssv/spectest/tests/valcheck" "github.com/ssvlabs/ssv-spec/types" @@ -13,14 +13,14 @@ import ( // ValidNonSlashableSlot tests a valid AttestationData with a slot that is not slashable func ValidNonSlashableSlot() tests.SpecTest { data := &types.BeaconVote{ - BlockRoot: spec.Root{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2}, - Source: &spec.Checkpoint{ + BlockRoot: phase0.Root{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2}, + Source: &phase0.Checkpoint{ Epoch: 0, - Root: spec.Root{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2}, + Root: phase0.Root{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2}, }, - Target: &spec.Checkpoint{ + Target: &phase0.Checkpoint{ Epoch: 1, - Root: spec.Root{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2}, + Root: phase0.Root{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2}, }, } @@ -36,7 +36,7 @@ func ValidNonSlashableSlot() tests.SpecTest { RunnerRole: types.RoleCommittee, DutySlot: testingutils.TestingDutySlot + 1, Input: input, - SlashableSlots: map[string][]spec.Slot{ + SlashableSlots: map[string][]phase0.Slot{ shareString: { testingutils.TestingDutySlot, }, diff --git a/types/testingutils/keymanager.go b/types/testingutils/keymanager.go index 5673cfbab..a684a170d 100644 --- a/types/testingutils/keymanager.go +++ b/types/testingutils/keymanager.go @@ -7,7 +7,7 @@ import ( "fmt" "sync" - spec "github.com/attestantio/go-eth2-client/spec/phase0" + "github.com/attestantio/go-eth2-client/spec/phase0" "github.com/ethereum/go-ethereum/common" ethcrypto "github.com/ethereum/go-ethereum/crypto" ssz "github.com/ferranbt/fastssz" @@ -28,12 +28,12 @@ type TestingKeyStorage struct { ecdsaKeys map[string]*ecdsa.PrivateKey encryptionKeys map[string]*rsa.PrivateKey domain types.DomainType - signatureCache map[string]map[string]map[spec.Domain]*SignOutput + signatureCache map[string]map[string]map[phase0.Domain]*SignOutput } type TestingKeyManager struct { keyStorage *TestingKeyStorage - slashableSlots map[string][]spec.Slot // Validator Key -> List of slots + slashableSlots map[string][]phase0.Slot // Validator Key -> List of slots } var ( @@ -42,10 +42,10 @@ var ( ) func NewTestingKeyManager() *TestingKeyManager { - return NewTestingKeyManagerWithSlashableSlots(map[string][]spec.Slot{}) + return NewTestingKeyManagerWithSlashableSlots(map[string][]phase0.Slot{}) } -func NewTestingKeyManagerWithSlashableSlots(slashableSlots map[string][]spec.Slot) *TestingKeyManager { +func NewTestingKeyManagerWithSlashableSlots(slashableSlots map[string][]phase0.Slot) *TestingKeyManager { return &TestingKeyManager{ keyStorage: NewTestingKeyStorage(), @@ -65,7 +65,7 @@ func NewTestingKeyStorage() *TestingKeyStorage { ecdsaKeys: map[string]*ecdsa.PrivateKey{}, encryptionKeys: nil, domain: TestingSSVDomainType, - signatureCache: make(map[string]map[string]map[spec.Domain]*SignOutput), + signatureCache: make(map[string]map[string]map[phase0.Domain]*SignOutput), } testingSharesSets := []*TestKeySet{Testing4SharesSet(), Testing7SharesSet(), Testing10SharesSet(), Testing13SharesSet()} @@ -97,16 +97,16 @@ func NewTestingKeyStorage() *TestingKeyStorage { } // AddSlashableDataRoot adds a slashable slot for the validator to the key manager -func (km *TestingKeyManager) AddSlashableSlot(pk types.ShareValidatorPK, slot spec.Slot) { +func (km *TestingKeyManager) AddSlashableSlot(pk types.ShareValidatorPK, slot phase0.Slot) { entry := hex.EncodeToString(pk) if km.slashableSlots[entry] == nil { - km.slashableSlots[entry] = make([]spec.Slot, 0) + km.slashableSlots[entry] = make([]phase0.Slot, 0) } km.slashableSlots[entry] = append(km.slashableSlots[entry], slot) } // IsAttestationSlashable returns error if attestation is slashable -func (km *TestingKeyManager) IsAttestationSlashable(pk types.ShareValidatorPK, data *spec.AttestationData) error { +func (km *TestingKeyManager) IsAttestationSlashable(pk types.ShareValidatorPK, data *phase0.AttestationData) error { entry := hex.EncodeToString(pk) for _, slot := range km.slashableSlots[entry] { if slot == data.Slot { @@ -129,11 +129,11 @@ func (km *TestingKeyManager) SignRoot(data types.Root, sigType types.SignatureTy } // IsBeaconBlockSlashable returns error if the given block is slashable -func (km *TestingKeyManager) IsBeaconBlockSlashable(pk []byte, slot spec.Slot) error { +func (km *TestingKeyManager) IsBeaconBlockSlashable(pk []byte, slot phase0.Slot) error { return nil } -func (km *TestingKeyManager) SignBeaconObject(obj ssz.HashRoot, domain spec.Domain, pk []byte, domainType spec.DomainType) (types.Signature, [32]byte, error) { +func (km *TestingKeyManager) SignBeaconObject(obj ssz.HashRoot, domain phase0.Domain, pk []byte, domainType types.DomainType) (types.Signature, [32]byte, error) { mu.Lock() defer mu.Unlock() @@ -151,7 +151,7 @@ func (km *TestingKeyManager) SignBeaconObject(obj ssz.HashRoot, domain spec.Doma } sig := k.SignByte(r[:]) - blsSig := spec.BLSSignature{} + blsSig := phase0.BLSSignature{} copy(blsSig[:], sig.Serialize()) sigString := sig.Serialize() @@ -198,7 +198,7 @@ func (km *TestingKeyManager) RemoveShare(pubKey string) error { return nil } -func (km *TestingKeyManager) hasSignRequest(pk string, obj ssz.HashRoot, domain spec.Domain) (*SignOutput, bool) { +func (km *TestingKeyManager) hasSignRequest(pk string, obj ssz.HashRoot, domain phase0.Domain) (*SignOutput, bool) { if _, exists := km.keyStorage.signatureCache[pk]; !exists { return &SignOutput{}, false } @@ -216,9 +216,9 @@ func (km *TestingKeyManager) hasSignRequest(pk string, obj ssz.HashRoot, domain return km.keyStorage.signatureCache[pk][root][domain], true } -func (km *TestingKeyManager) storeSignRequest(pk string, obj ssz.HashRoot, domain spec.Domain, sig types.Signature, r [32]byte) { +func (km *TestingKeyManager) storeSignRequest(pk string, obj ssz.HashRoot, domain phase0.Domain, sig types.Signature, r [32]byte) { if _, exists := km.keyStorage.signatureCache[pk]; !exists { - km.keyStorage.signatureCache[pk] = make(map[string]map[spec.Domain]*SignOutput) + km.keyStorage.signatureCache[pk] = make(map[string]map[phase0.Domain]*SignOutput) } objRoot, err := obj.HashTreeRoot() if err != nil { @@ -226,7 +226,7 @@ func (km *TestingKeyManager) storeSignRequest(pk string, obj ssz.HashRoot, domai } root := hex.EncodeToString(objRoot[:]) if _, exists := km.keyStorage.signatureCache[pk][root]; !exists { - km.keyStorage.signatureCache[pk][root] = make(map[spec.Domain]*SignOutput) + km.keyStorage.signatureCache[pk][root] = make(map[phase0.Domain]*SignOutput) } km.keyStorage.signatureCache[pk][root][domain] = &SignOutput{Signature: sig, Root: r} } diff --git a/types/testingutils/validator_pubkeys.go b/types/testingutils/validator_pubkeys.go index 065882917..8f2bc4786 100644 --- a/types/testingutils/validator_pubkeys.go +++ b/types/testingutils/validator_pubkeys.go @@ -4,10 +4,10 @@ import ( "encoding/hex" "fmt" - spec "github.com/attestantio/go-eth2-client/spec/phase0" + "github.com/attestantio/go-eth2-client/spec/phase0" ) -var TestingValidatorPubKeyForValidatorIndex = func(ValidatorIndex spec.ValidatorIndex) spec.BLSPubKey { +var TestingValidatorPubKeyForValidatorIndex = func(ValidatorIndex phase0.ValidatorIndex) phase0.BLSPubKey { ks, exists := TestingKeySetMap[ValidatorIndex] if !exists { panic(fmt.Sprintf("Validator index %v does not exist in TestingKeySetMap", ValidatorIndex)) @@ -15,13 +15,13 @@ var TestingValidatorPubKeyForValidatorIndex = func(ValidatorIndex spec.Validator pk := ks.ValidatorPK pkHexString := pk.SerializeToHexStr() pkString, _ := hex.DecodeString(pkHexString) - blsPK := spec.BLSPubKey{} + blsPK := phase0.BLSPubKey{} copy(blsPK[:], pkString) return blsPK } -var TestingValidatorPubKeyList = func() []spec.BLSPubKey { - ret := make([]spec.BLSPubKey, len(TestingKeySetMap)) +var TestingValidatorPubKeyList = func() []phase0.BLSPubKey { + ret := make([]phase0.BLSPubKey, len(TestingKeySetMap)) listIndex := 0 for valIdx := range TestingKeySetMap { pk := TestingValidatorPubKeyForValidatorIndex(valIdx) From aafe746e7237a55c5f3b551ad4ff69f81d579042 Mon Sep 17 00:00:00 2001 From: Alan Date: Wed, 9 Jul 2025 05:55:47 +0100 Subject: [PATCH 3/3] merge with main --- .../qbft controller sorted decided.json | 1095 ----------------- ...ecTest_qbft_controller_sorted_decided.json | 592 --------- ssv/runner.go | 4 +- ssv/runner_signatures.go | 6 +- types/signer.go | 8 +- 5 files changed, 9 insertions(+), 1696 deletions(-) delete mode 100644 qbft/spectest/generate/state_comparison/tests_ControllerSpecTest/qbft controller sorted decided.json delete mode 100644 qbft/spectest/generate/tests/tests.ControllerSpecTest_qbft_controller_sorted_decided.json diff --git a/qbft/spectest/generate/state_comparison/tests_ControllerSpecTest/qbft controller sorted decided.json b/qbft/spectest/generate/state_comparison/tests_ControllerSpecTest/qbft controller sorted decided.json deleted file mode 100644 index 54212a8df..000000000 --- a/qbft/spectest/generate/state_comparison/tests_ControllerSpecTest/qbft controller sorted decided.json +++ /dev/null @@ -1,1095 +0,0 @@ -[ - { - "Identifier": "AQIDBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", - "Height": 0, - "StoredInstances": [ - { - "State": { - "CommitteeMember": { - "OperatorID": 1, - "CommitteeID": [ - 207, - 151, - 173, - 238, - 219, - 89, - 224, - 91, - 253, - 115, - 162, - 180, - 194, - 168, - 136, - 87, - 8, - 196, - 244, - 247, - 12, - 132, - 198, - 75, - 39, - 18, - 14, - 114, - 171, - 115, - 59, - 114 - ], - "SSVOperatorPubKey": "LS0tLS1CRUdJTiBSU0EgUFVCTElDIEtFWS0tLS0tCk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBeU16MmIrS1pKSXpCelJad3RwYnkKTHYvZzdZNFBGTDhGVGI0Y0Y0cVhzRVh4Smh1MGxHSmhUMFlZWUN4WUNhdk1aZjUwTlFETzRRQ2RlM2xzb0VZQgphdzBlZnRrWE5pMkxYL3h3aWozY044NTZkMkdvMGhZZjJCRVYySkUzb3pkU1NyNWNoaS9hVHYxM2w4YU1ZY2pXCjA4bHlBemxBVXozWGd2UmlkVktteHhoakFQRVRmM1BtcHV3aGFvM1luL3dMOFJSNk9BakNFUjRLN1JjLzV2bksKanZCaDU3bFNRZjdZRk9kV2ZnbEhjTWNYZndVNStldmFFbVJhaW9vYXpTQnkwMUtvMlJEQnBGL3VFNzdzZGYxQwo2NVRRSnZvS3kyRjBKUWJ2ME9RVFNqVzBDUHcwaFMydk96Qk5VK3ZBRUVYNHdxQmp6M1grUER1OUxid0E1NFdtClVRSURBUUFCCi0tLS0tRU5EIFJTQSBQVUJMSUMgS0VZLS0tLS0K", - "FaultyNodes": 1, - "Committee": [ - { - "OperatorID": 1, - "SSVOperatorPubKey": "LS0tLS1CRUdJTiBSU0EgUFVCTElDIEtFWS0tLS0tCk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBeU16MmIrS1pKSXpCelJad3RwYnkKTHYvZzdZNFBGTDhGVGI0Y0Y0cVhzRVh4Smh1MGxHSmhUMFlZWUN4WUNhdk1aZjUwTlFETzRRQ2RlM2xzb0VZQgphdzBlZnRrWE5pMkxYL3h3aWozY044NTZkMkdvMGhZZjJCRVYySkUzb3pkU1NyNWNoaS9hVHYxM2w4YU1ZY2pXCjA4bHlBemxBVXozWGd2UmlkVktteHhoakFQRVRmM1BtcHV3aGFvM1luL3dMOFJSNk9BakNFUjRLN1JjLzV2bksKanZCaDU3bFNRZjdZRk9kV2ZnbEhjTWNYZndVNStldmFFbVJhaW9vYXpTQnkwMUtvMlJEQnBGL3VFNzdzZGYxQwo2NVRRSnZvS3kyRjBKUWJ2ME9RVFNqVzBDUHcwaFMydk96Qk5VK3ZBRUVYNHdxQmp6M1grUER1OUxid0E1NFdtClVRSURBUUFCCi0tLS0tRU5EIFJTQSBQVUJMSUMgS0VZLS0tLS0K" - }, - { - "OperatorID": 2, - "SSVOperatorPubKey": "LS0tLS1CRUdJTiBSU0EgUFVCTElDIEtFWS0tLS0tCk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBbVlaUDJHRzRxM1ZSUmFpZG1nbWEKT0N3eno4OEdUTDIvdHM0c3gyZk1hSkJ3dDJtY1JwR1NKTHVNQWgrUUpFSWhFUGNXYVNicllVYTdOZUg2VHZSdwp1TUlRdldzT3hzRUNmTzZndmZiTGhNeERyaGZrRmc2R3pNZ0pZQm1VUXVxRUlwYklXZitRVzJoQ0ViQjN1R3Y4CnFpMDdpSTBTTzB6OEtjZnhCVUJXNmtxNkRJdHozbEo2Z1ZOTjdTNFRBblZkS2o2NjBuR2JuSENlOVJQMzRma3IKVEtuUTBHb0NEOHh2RTE3U1dsWThHcmFzRGxJbDUxcWJSRGx2RXJJS3QvRHFBbllkZk4rL1BLekxJMkxlUGNjSApRdVdKalA5UXZZTWhrci9VVmdyMGM4Ums3bmt2YXprYmtrS2JreGVUMkp3OC9WN2gveWE0aDhZb1B6MkJLd05RCmNRSURBUUFCCi0tLS0tRU5EIFJTQSBQVUJMSUMgS0VZLS0tLS0K" - }, - { - "OperatorID": 3, - "SSVOperatorPubKey": "LS0tLS1CRUdJTiBSU0EgUFVCTElDIEtFWS0tLS0tCk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBdG9pRlRVcUpwTDg0eHZoTUZTQU8KWUFxYkVZaXpEQlBsL2xNMmMxOEtzRzlJQVNEU3piTmZ4R25jMnBDMzdqanI3aDNibFN4RU5ZU0tPWVZIVzJOMgpxOGJ6TEJ1MDZrSzBnenNWRERKTU5jOGpwVnFOK0VJclBsSWpOWUwybXA1Wk5uYXp5YVdBYVZWa05ZeU1hYWpJCkF6VHlyWis2d3VvUVJvaXV6U2dsdTBSNmV1V1FaZThDY2lFVDFaRHJDMFJpaG4rYklCbzNlN3YwekZBZXczUXcKVTNJbEZvanp0SjVyaitKZmx5UWFVaS96VEN5OXFUUG5XV0ZBenRHWjZGZS8wM3VoVk4wczhXWnd0MnkxVjFiaQpIWUFQWXo2MmZpdENWNDRZcmt6RU9tSVNnUm4zVW9qT3prOHZORlltY0NSNDFMMncvbzE3UjBEM0xnOG54QzZNCkpRSURBUUFCCi0tLS0tRU5EIFJTQSBQVUJMSUMgS0VZLS0tLS0K" - }, - { - "OperatorID": 4, - "SSVOperatorPubKey": "LS0tLS1CRUdJTiBSU0EgUFVCTElDIEtFWS0tLS0tCk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBcVFYenEvNlh0VkVmSlRaL3YxUHcKa3pTa05SWGJwQy80MWE5TFNRdnNra0lDZEcyZEd3K1FhZ2tOVllwdktRc1Izd0F4QmZEb1FxZE1vRXY4R2g5eApCYVphZjZrTFdrbmFWWVlOSmVXbjZiRWlEbVhqVllETXE1ZGhsOW9kOVVoSzRFWVQ4cklmNWFsZnlFYTkrV3M5Cm9lQUxTMjFjVlBwUlBvYlFIeHNYOHhvOXVRQ3JMeE9xYzRFVzgyODVLajV2blFsZnBHRzIxV0ZCZmJIR1I0WGEKK2FtT2ZUS1BsUkxsZVZVTXp3WCs3cGVHSi81SDNqcExGbCtvRmFyMkMvWURIL0VKejArTnE2R0ptNzFpSjdNYwoxK2MwUDZGT2F5NlpxWitaRGo5ZHBKZC9tYnFZenkzcks2YlBvOE52TkVZSFNKZk9SRDRLak5NSXM0UzF5cHhaCkl3SURBUUFCCi0tLS0tRU5EIFJTQSBQVUJMSUMgS0VZLS0tLS0K" - } - ], - "DomainType": [ - 0, - 0, - 3, - 1 - ] - }, - "ID": "AQIDBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", - "Round": 1, - "Height": 0, - "LastPreparedRound": 1, - "LastPreparedValue": "AQIDBAUGBwgJAQIDBAUGBwgJAQIDBAUGBwgJ", - "ProposalAcceptedForCurrentRound": { - "SignedMessage": { - "Signatures": [ - "CzU9/GbbgfT1J/6fnAe07EDzLIirezU9AfNDzGNfautfsVAs4CKX/dQNXon/teMl7QeoZGEswQ2LqT7KuKvtaaX8QYXoO2+aTzpnI996omxXcYMf1UW3+kEfG+PeTqLzJgOR/y1iK4Fwry+znYDBJqbW2MhLFdSlqIIGB1FRQyM9HR+2fVncaLJdNAh6DPrjqXlgBHpvtiqFHLYPfPVER1+Yd18nufjUoUhamPlkaDzTsQq1TmPgYZf5+GCRmhS5zs+UwDf+fNwSnCfAjtvHHkmpLOtGDTrvWVoIj5XJmR3Nm3E8bXu2DY7Cpjj2LUS2swDLPQDl+LbzQdMfpj6yrQ==" - ], - "OperatorIDs": [ - 1 - ], - "SSVMessage": { - "MsgType": 0, - "MsgID": [ - 1, - 2, - 3, - 4, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "Data": "AAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAATAAAAL6Vb7ffTvN1MWgtWIMgCE/JFMPw/tM1Jj5bRAYubCm0AAAAAAAAAACEAAAAhAAAAAECAwQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" - }, - "FullData": "AQIDBAUGBwgJAQIDBAUGBwgJAQIDBAUGBwgJ" - }, - "QBFTMessage": { - "MsgType": 0, - "Height": 0, - "Round": 1, - "Identifier": "AQIDBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", - "Root": [ - 190, - 149, - 111, - 183, - 223, - 78, - 243, - 117, - 49, - 104, - 45, - 88, - 131, - 32, - 8, - 79, - 201, - 20, - 195, - 240, - 254, - 211, - 53, - 38, - 62, - 91, - 68, - 6, - 46, - 108, - 41, - 180 - ], - "DataRound": 0, - "RoundChangeJustification": [], - "PrepareJustification": [] - } - }, - "Decided": true, - "DecidedValue": "AQIDBAUGBwgJAQIDBAUGBwgJAQIDBAUGBwgJ", - "ProposeContainer": { - "Msgs": { - "1": [ - { - "SignedMessage": { - "Signatures": [ - "CzU9/GbbgfT1J/6fnAe07EDzLIirezU9AfNDzGNfautfsVAs4CKX/dQNXon/teMl7QeoZGEswQ2LqT7KuKvtaaX8QYXoO2+aTzpnI996omxXcYMf1UW3+kEfG+PeTqLzJgOR/y1iK4Fwry+znYDBJqbW2MhLFdSlqIIGB1FRQyM9HR+2fVncaLJdNAh6DPrjqXlgBHpvtiqFHLYPfPVER1+Yd18nufjUoUhamPlkaDzTsQq1TmPgYZf5+GCRmhS5zs+UwDf+fNwSnCfAjtvHHkmpLOtGDTrvWVoIj5XJmR3Nm3E8bXu2DY7Cpjj2LUS2swDLPQDl+LbzQdMfpj6yrQ==" - ], - "OperatorIDs": [ - 1 - ], - "SSVMessage": { - "MsgType": 0, - "MsgID": [ - 1, - 2, - 3, - 4, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "Data": "AAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAATAAAAL6Vb7ffTvN1MWgtWIMgCE/JFMPw/tM1Jj5bRAYubCm0AAAAAAAAAACEAAAAhAAAAAECAwQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" - }, - "FullData": "AQIDBAUGBwgJAQIDBAUGBwgJAQIDBAUGBwgJ" - }, - "QBFTMessage": { - "MsgType": 0, - "Height": 0, - "Round": 1, - "Identifier": "AQIDBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", - "Root": [ - 190, - 149, - 111, - 183, - 223, - 78, - 243, - 117, - 49, - 104, - 45, - 88, - 131, - 32, - 8, - 79, - 201, - 20, - 195, - 240, - 254, - 211, - 53, - 38, - 62, - 91, - 68, - 6, - 46, - 108, - 41, - 180 - ], - "DataRound": 0, - "RoundChangeJustification": [], - "PrepareJustification": [] - } - } - ] - } - }, - "PrepareContainer": { - "Msgs": { - "1": [ - { - "SignedMessage": { - "Signatures": [ - "g0BBLoygeLOHqaIj4pmkzrTfJc+5ChUS5DzxiV4EFVyRkQp7w1x4hGsS++AwQqcUC6Z+j7i/icSFuQnSMdS5W/SUYiyWgzY75xd+fa/IBRFqAZkJICUdtIcBBo4U7DgenowmoSfArGNm/swIP+zlZ8akA9VWWGgh9EoBpEYyumGPSnsbVSbLvD/iSIuv2myboKPuEI8NqQzjUezRQC+ahB/ml1m6S341ymfTjsdGbhVlPBZsWXUlJUHFpn3rl8hDUiSz4yROPgSC4xXH++0CesXLWeUgEisx5e0NRFs8OGLnnH6vBSgdWYYnQy5nfWCEZSQgZdWhlOUwoX/zjoqVzg==" - ], - "OperatorIDs": [ - 1 - ], - "SSVMessage": { - "MsgType": 0, - "MsgID": [ - 1, - 2, - 3, - 4, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "Data": "AQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAATAAAAL6Vb7ffTvN1MWgtWIMgCE/JFMPw/tM1Jj5bRAYubCm0AAAAAAAAAACEAAAAhAAAAAECAwQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" - }, - "FullData": null - }, - "QBFTMessage": { - "MsgType": 1, - "Height": 0, - "Round": 1, - "Identifier": "AQIDBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", - "Root": [ - 190, - 149, - 111, - 183, - 223, - 78, - 243, - 117, - 49, - 104, - 45, - 88, - 131, - 32, - 8, - 79, - 201, - 20, - 195, - 240, - 254, - 211, - 53, - 38, - 62, - 91, - 68, - 6, - 46, - 108, - 41, - 180 - ], - "DataRound": 0, - "RoundChangeJustification": [], - "PrepareJustification": [] - } - }, - { - "SignedMessage": { - "Signatures": [ - "dfmNuoBlZZxe8CWQO/iBCeSWtOt+xijMhsyx6xsxR1kpOjXdjZ5GQbYEeClVjRw/tywFtAFAyw1HB2DHmpPeCHsIn+BsLhkT4r8eZYldPXWLjuKlMw8OrqUiBQ11YgngEvLLJpLsk5mZf3ccU6KyM1/xj7Z8Yl6WsotukYMSGB8t3OJyxbD/go0IUtafOqI3Hgkb0A9m3uDybjRfBWICreNrcHgnjKxIowiigIwpNx2pmdCi+j3MLKVcTqfhOIqcMHVDMM5LVMNQi9MXp0ymsqXf3TGT133kcnjvLPj6/2WdAYwuWs9BrrKqQ1dDC627n4Lbje8mnNKcxDTCCi+8TA==" - ], - "OperatorIDs": [ - 2 - ], - "SSVMessage": { - "MsgType": 0, - "MsgID": [ - 1, - 2, - 3, - 4, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "Data": "AQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAATAAAAL6Vb7ffTvN1MWgtWIMgCE/JFMPw/tM1Jj5bRAYubCm0AAAAAAAAAACEAAAAhAAAAAECAwQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" - }, - "FullData": null - }, - "QBFTMessage": { - "MsgType": 1, - "Height": 0, - "Round": 1, - "Identifier": "AQIDBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", - "Root": [ - 190, - 149, - 111, - 183, - 223, - 78, - 243, - 117, - 49, - 104, - 45, - 88, - 131, - 32, - 8, - 79, - 201, - 20, - 195, - 240, - 254, - 211, - 53, - 38, - 62, - 91, - 68, - 6, - 46, - 108, - 41, - 180 - ], - "DataRound": 0, - "RoundChangeJustification": [], - "PrepareJustification": [] - } - }, - { - "SignedMessage": { - "Signatures": [ - "CK+6dEz+S2R4iGi6DHHTa1BSXt6DqMp6maTtXMe2HyX7Y7+xU6J1z49rKH61VMzLhBJI3itygLd734iO6Lae7n9dC2AMEaS4NsajETlzGZGrAvNEU5+W/ORzOkt0zuAh1vqMJV9wkps1CwCuV5m4Tt2Uw6kpZfc5/W24Jmjux1sF0v1colJ2ehmGGmVONA2w38mMZZvnQSd7J4ENR/PqPD6j3qkP/OQk4gWJJKY/W82IXNLadHdcvJN7JDdstPzx9FzM1b6zmuP0qwRzjpjIdPAzWh1l4q/yw+WgqS0kMKJPVpDJFt1OdX4ygQ1dEtJx2l7YaOpf0C6KAZv83ricrg==" - ], - "OperatorIDs": [ - 3 - ], - "SSVMessage": { - "MsgType": 0, - "MsgID": [ - 1, - 2, - 3, - 4, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "Data": "AQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAATAAAAL6Vb7ffTvN1MWgtWIMgCE/JFMPw/tM1Jj5bRAYubCm0AAAAAAAAAACEAAAAhAAAAAECAwQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" - }, - "FullData": null - }, - "QBFTMessage": { - "MsgType": 1, - "Height": 0, - "Round": 1, - "Identifier": "AQIDBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", - "Root": [ - 190, - 149, - 111, - 183, - 223, - 78, - 243, - 117, - 49, - 104, - 45, - 88, - 131, - 32, - 8, - 79, - 201, - 20, - 195, - 240, - 254, - 211, - 53, - 38, - 62, - 91, - 68, - 6, - 46, - 108, - 41, - 180 - ], - "DataRound": 0, - "RoundChangeJustification": [], - "PrepareJustification": [] - } - } - ] - } - }, - "CommitContainer": { - "Msgs": { - "1": [ - { - "SignedMessage": { - "Signatures": [ - "QP3Rd93H73AyuvCmfsENVK9NBmcx+f1E33UtE9dYqUOIIu289CLlnO9BiRKPXMNY141jeNr8JsqbivEpzelbMulkmxUXbGdp0uwRxcRenU3oc6LEGw+EjUYASMyT1rXrfCCBwE5vzGybTJAUxvGqEuJL42wz6POVtmK9/wYp2KpX0H9ehUsFvHUipm5dmGkg4gzJW9VuOTwgCtHtr+ZL090EPgaw2WDKNYeE1sScZoh3UWn+DhDmLchDhOxfstYxcbfDrd0NWnkVXJDzE7DlCvBRO2QrEov30ea27hh5dKb493m8XhyO0A1bFURPQUhE8S2rMVDkKDZ9orojrM8TgQ==" - ], - "OperatorIDs": [ - 4 - ], - "SSVMessage": { - "MsgType": 0, - "MsgID": [ - 1, - 2, - 3, - 4, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "Data": "AgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAATAAAAL6Vb7ffTvN1MWgtWIMgCE/JFMPw/tM1Jj5bRAYubCm0AAAAAAAAAACEAAAAhAAAAAECAwQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" - }, - "FullData": null - }, - "QBFTMessage": { - "MsgType": 2, - "Height": 0, - "Round": 1, - "Identifier": "AQIDBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", - "Root": [ - 190, - 149, - 111, - 183, - 223, - 78, - 243, - 117, - 49, - 104, - 45, - 88, - 131, - 32, - 8, - 79, - 201, - 20, - 195, - 240, - 254, - 211, - 53, - 38, - 62, - 91, - 68, - 6, - 46, - 108, - 41, - 180 - ], - "DataRound": 0, - "RoundChangeJustification": [], - "PrepareJustification": [] - } - }, - { - "SignedMessage": { - "Signatures": [ - "VOEYr49ORL61wVkIif9Jv0Z85Mdl/T0za/v8dblspGhfvr7V1a/CbBQkiKCs7h8IeDJZrJ2v0aDnc9j49LUC0buORfskygfjvg9U0AuwMJ1ohRKWJ79WG8PdcH0r4h9JyspSqM4YjQrO2TCDthutLAsFbdklo28Hl6koVWPqqRlh7FJjJYYBMbkPh8slLvVdl8Mz2aWY8jSaVF5oZE8pmP4uZcPws03NA3r0s7zdQ80usxgj225ahSvMOwiXtKOlaENuU1pRJXFiQV3ptIOZH86UeJWp/e04pLiFyQVrz4Rk43tmN1Vf4RkwM9chx/ZXomLT8J1Ri1zu5N42cCGWtg==" - ], - "OperatorIDs": [ - 2 - ], - "SSVMessage": { - "MsgType": 0, - "MsgID": [ - 1, - 2, - 3, - 4, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "Data": "AgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAATAAAAL6Vb7ffTvN1MWgtWIMgCE/JFMPw/tM1Jj5bRAYubCm0AAAAAAAAAACEAAAAhAAAAAECAwQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" - }, - "FullData": null - }, - "QBFTMessage": { - "MsgType": 2, - "Height": 0, - "Round": 1, - "Identifier": "AQIDBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", - "Root": [ - 190, - 149, - 111, - 183, - 223, - 78, - 243, - 117, - 49, - 104, - 45, - 88, - 131, - 32, - 8, - 79, - 201, - 20, - 195, - 240, - 254, - 211, - 53, - 38, - 62, - 91, - 68, - 6, - 46, - 108, - 41, - 180 - ], - "DataRound": 0, - "RoundChangeJustification": [], - "PrepareJustification": [] - } - }, - { - "SignedMessage": { - "Signatures": [ - "DyAKAM84BaQy3UZy+sJO2tgfutZ73863DIw3S0nxD2jbj8EYJ2K9Cv1W7zF1uLJ/q14A478XYtj62zHqVpN15R65X8mZs6PIscY040nUlsuM46we81Q6uCxRtQxBkASl9ubwihhsPXTRfkhL4MfpDpk9J7uGZ9mQhT7dnGXjZ/9dRyJQv3t0mDKQpcc3UmECvDtYvjFtLZGKguBmhAC6mtwgcC/5reKoQoBi8M5aoAC7ycNZW9kn7DwgQj//qvWB9EwoRQpObNiEWyHiiuDSOW4uFh7ott4fk92bD2qleCNMfEURT+1uwW4OdhjIzOgj4aZJM3iTc4T/3uwjYAXPMg==" - ], - "OperatorIDs": [ - 3 - ], - "SSVMessage": { - "MsgType": 0, - "MsgID": [ - 1, - 2, - 3, - 4, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "Data": "AgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAATAAAAL6Vb7ffTvN1MWgtWIMgCE/JFMPw/tM1Jj5bRAYubCm0AAAAAAAAAACEAAAAhAAAAAECAwQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" - }, - "FullData": null - }, - "QBFTMessage": { - "MsgType": 2, - "Height": 0, - "Round": 1, - "Identifier": "AQIDBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", - "Root": [ - 190, - 149, - 111, - 183, - 223, - 78, - 243, - 117, - 49, - 104, - 45, - 88, - 131, - 32, - 8, - 79, - 201, - 20, - 195, - 240, - 254, - 211, - 53, - 38, - 62, - 91, - 68, - 6, - 46, - 108, - 41, - 180 - ], - "DataRound": 0, - "RoundChangeJustification": [], - "PrepareJustification": [] - } - } - ] - } - }, - "RoundChangeContainer": { - "Msgs": {} - } - }, - "StartValue": "AQIDBA==" - } - ], - "CommitteeMember": { - "OperatorID": 1, - "CommitteeID": [ - 207, - 151, - 173, - 238, - 219, - 89, - 224, - 91, - 253, - 115, - 162, - 180, - 194, - 168, - 136, - 87, - 8, - 196, - 244, - 247, - 12, - 132, - 198, - 75, - 39, - 18, - 14, - 114, - 171, - 115, - 59, - 114 - ], - "SSVOperatorPubKey": "LS0tLS1CRUdJTiBSU0EgUFVCTElDIEtFWS0tLS0tCk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBeU16MmIrS1pKSXpCelJad3RwYnkKTHYvZzdZNFBGTDhGVGI0Y0Y0cVhzRVh4Smh1MGxHSmhUMFlZWUN4WUNhdk1aZjUwTlFETzRRQ2RlM2xzb0VZQgphdzBlZnRrWE5pMkxYL3h3aWozY044NTZkMkdvMGhZZjJCRVYySkUzb3pkU1NyNWNoaS9hVHYxM2w4YU1ZY2pXCjA4bHlBemxBVXozWGd2UmlkVktteHhoakFQRVRmM1BtcHV3aGFvM1luL3dMOFJSNk9BakNFUjRLN1JjLzV2bksKanZCaDU3bFNRZjdZRk9kV2ZnbEhjTWNYZndVNStldmFFbVJhaW9vYXpTQnkwMUtvMlJEQnBGL3VFNzdzZGYxQwo2NVRRSnZvS3kyRjBKUWJ2ME9RVFNqVzBDUHcwaFMydk96Qk5VK3ZBRUVYNHdxQmp6M1grUER1OUxid0E1NFdtClVRSURBUUFCCi0tLS0tRU5EIFJTQSBQVUJMSUMgS0VZLS0tLS0K", - "FaultyNodes": 1, - "Committee": [ - { - "OperatorID": 1, - "SSVOperatorPubKey": "LS0tLS1CRUdJTiBSU0EgUFVCTElDIEtFWS0tLS0tCk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBeU16MmIrS1pKSXpCelJad3RwYnkKTHYvZzdZNFBGTDhGVGI0Y0Y0cVhzRVh4Smh1MGxHSmhUMFlZWUN4WUNhdk1aZjUwTlFETzRRQ2RlM2xzb0VZQgphdzBlZnRrWE5pMkxYL3h3aWozY044NTZkMkdvMGhZZjJCRVYySkUzb3pkU1NyNWNoaS9hVHYxM2w4YU1ZY2pXCjA4bHlBemxBVXozWGd2UmlkVktteHhoakFQRVRmM1BtcHV3aGFvM1luL3dMOFJSNk9BakNFUjRLN1JjLzV2bksKanZCaDU3bFNRZjdZRk9kV2ZnbEhjTWNYZndVNStldmFFbVJhaW9vYXpTQnkwMUtvMlJEQnBGL3VFNzdzZGYxQwo2NVRRSnZvS3kyRjBKUWJ2ME9RVFNqVzBDUHcwaFMydk96Qk5VK3ZBRUVYNHdxQmp6M1grUER1OUxid0E1NFdtClVRSURBUUFCCi0tLS0tRU5EIFJTQSBQVUJMSUMgS0VZLS0tLS0K" - }, - { - "OperatorID": 2, - "SSVOperatorPubKey": "LS0tLS1CRUdJTiBSU0EgUFVCTElDIEtFWS0tLS0tCk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBbVlaUDJHRzRxM1ZSUmFpZG1nbWEKT0N3eno4OEdUTDIvdHM0c3gyZk1hSkJ3dDJtY1JwR1NKTHVNQWgrUUpFSWhFUGNXYVNicllVYTdOZUg2VHZSdwp1TUlRdldzT3hzRUNmTzZndmZiTGhNeERyaGZrRmc2R3pNZ0pZQm1VUXVxRUlwYklXZitRVzJoQ0ViQjN1R3Y4CnFpMDdpSTBTTzB6OEtjZnhCVUJXNmtxNkRJdHozbEo2Z1ZOTjdTNFRBblZkS2o2NjBuR2JuSENlOVJQMzRma3IKVEtuUTBHb0NEOHh2RTE3U1dsWThHcmFzRGxJbDUxcWJSRGx2RXJJS3QvRHFBbllkZk4rL1BLekxJMkxlUGNjSApRdVdKalA5UXZZTWhrci9VVmdyMGM4Ums3bmt2YXprYmtrS2JreGVUMkp3OC9WN2gveWE0aDhZb1B6MkJLd05RCmNRSURBUUFCCi0tLS0tRU5EIFJTQSBQVUJMSUMgS0VZLS0tLS0K" - }, - { - "OperatorID": 3, - "SSVOperatorPubKey": "LS0tLS1CRUdJTiBSU0EgUFVCTElDIEtFWS0tLS0tCk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBdG9pRlRVcUpwTDg0eHZoTUZTQU8KWUFxYkVZaXpEQlBsL2xNMmMxOEtzRzlJQVNEU3piTmZ4R25jMnBDMzdqanI3aDNibFN4RU5ZU0tPWVZIVzJOMgpxOGJ6TEJ1MDZrSzBnenNWRERKTU5jOGpwVnFOK0VJclBsSWpOWUwybXA1Wk5uYXp5YVdBYVZWa05ZeU1hYWpJCkF6VHlyWis2d3VvUVJvaXV6U2dsdTBSNmV1V1FaZThDY2lFVDFaRHJDMFJpaG4rYklCbzNlN3YwekZBZXczUXcKVTNJbEZvanp0SjVyaitKZmx5UWFVaS96VEN5OXFUUG5XV0ZBenRHWjZGZS8wM3VoVk4wczhXWnd0MnkxVjFiaQpIWUFQWXo2MmZpdENWNDRZcmt6RU9tSVNnUm4zVW9qT3prOHZORlltY0NSNDFMMncvbzE3UjBEM0xnOG54QzZNCkpRSURBUUFCCi0tLS0tRU5EIFJTQSBQVUJMSUMgS0VZLS0tLS0K" - }, - { - "OperatorID": 4, - "SSVOperatorPubKey": "LS0tLS1CRUdJTiBSU0EgUFVCTElDIEtFWS0tLS0tCk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBcVFYenEvNlh0VkVmSlRaL3YxUHcKa3pTa05SWGJwQy80MWE5TFNRdnNra0lDZEcyZEd3K1FhZ2tOVllwdktRc1Izd0F4QmZEb1FxZE1vRXY4R2g5eApCYVphZjZrTFdrbmFWWVlOSmVXbjZiRWlEbVhqVllETXE1ZGhsOW9kOVVoSzRFWVQ4cklmNWFsZnlFYTkrV3M5Cm9lQUxTMjFjVlBwUlBvYlFIeHNYOHhvOXVRQ3JMeE9xYzRFVzgyODVLajV2blFsZnBHRzIxV0ZCZmJIR1I0WGEKK2FtT2ZUS1BsUkxsZVZVTXp3WCs3cGVHSi81SDNqcExGbCtvRmFyMkMvWURIL0VKejArTnE2R0ptNzFpSjdNYwoxK2MwUDZGT2F5NlpxWitaRGo5ZHBKZC9tYnFZenkzcks2YlBvOE52TkVZSFNKZk9SRDRLak5NSXM0UzF5cHhaCkl3SURBUUFCCi0tLS0tRU5EIFJTQSBQVUJMSUMgS0VZLS0tLS0K" - } - ], - "DomainType": [ - 0, - 0, - 3, - 1 - ] - } - } -] \ No newline at end of file diff --git a/qbft/spectest/generate/tests/tests.ControllerSpecTest_qbft_controller_sorted_decided.json b/qbft/spectest/generate/tests/tests.ControllerSpecTest_qbft_controller_sorted_decided.json deleted file mode 100644 index edb359c5b..000000000 --- a/qbft/spectest/generate/tests/tests.ControllerSpecTest_qbft_controller_sorted_decided.json +++ /dev/null @@ -1,592 +0,0 @@ -{ - "Name": "sorted decided", - "RunInstanceData": [ - { - "InputValue": "AQIDBA==", - "InputMessages": [ - { - "Signatures": [ - "CzU9/GbbgfT1J/6fnAe07EDzLIirezU9AfNDzGNfautfsVAs4CKX/dQNXon/teMl7QeoZGEswQ2LqT7KuKvtaaX8QYXoO2+aTzpnI996omxXcYMf1UW3+kEfG+PeTqLzJgOR/y1iK4Fwry+znYDBJqbW2MhLFdSlqIIGB1FRQyM9HR+2fVncaLJdNAh6DPrjqXlgBHpvtiqFHLYPfPVER1+Yd18nufjUoUhamPlkaDzTsQq1TmPgYZf5+GCRmhS5zs+UwDf+fNwSnCfAjtvHHkmpLOtGDTrvWVoIj5XJmR3Nm3E8bXu2DY7Cpjj2LUS2swDLPQDl+LbzQdMfpj6yrQ==" - ], - "OperatorIDs": [ - 1 - ], - "SSVMessage": { - "MsgType": 0, - "MsgID": [ - 1, - 2, - 3, - 4, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "Data": "AAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAATAAAAL6Vb7ffTvN1MWgtWIMgCE/JFMPw/tM1Jj5bRAYubCm0AAAAAAAAAACEAAAAhAAAAAECAwQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" - }, - "FullData": "AQIDBAUGBwgJAQIDBAUGBwgJAQIDBAUGBwgJ" - }, - { - "Signatures": [ - "g0BBLoygeLOHqaIj4pmkzrTfJc+5ChUS5DzxiV4EFVyRkQp7w1x4hGsS++AwQqcUC6Z+j7i/icSFuQnSMdS5W/SUYiyWgzY75xd+fa/IBRFqAZkJICUdtIcBBo4U7DgenowmoSfArGNm/swIP+zlZ8akA9VWWGgh9EoBpEYyumGPSnsbVSbLvD/iSIuv2myboKPuEI8NqQzjUezRQC+ahB/ml1m6S341ymfTjsdGbhVlPBZsWXUlJUHFpn3rl8hDUiSz4yROPgSC4xXH++0CesXLWeUgEisx5e0NRFs8OGLnnH6vBSgdWYYnQy5nfWCEZSQgZdWhlOUwoX/zjoqVzg==" - ], - "OperatorIDs": [ - 1 - ], - "SSVMessage": { - "MsgType": 0, - "MsgID": [ - 1, - 2, - 3, - 4, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "Data": "AQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAATAAAAL6Vb7ffTvN1MWgtWIMgCE/JFMPw/tM1Jj5bRAYubCm0AAAAAAAAAACEAAAAhAAAAAECAwQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" - }, - "FullData": null - }, - { - "Signatures": [ - "dfmNuoBlZZxe8CWQO/iBCeSWtOt+xijMhsyx6xsxR1kpOjXdjZ5GQbYEeClVjRw/tywFtAFAyw1HB2DHmpPeCHsIn+BsLhkT4r8eZYldPXWLjuKlMw8OrqUiBQ11YgngEvLLJpLsk5mZf3ccU6KyM1/xj7Z8Yl6WsotukYMSGB8t3OJyxbD/go0IUtafOqI3Hgkb0A9m3uDybjRfBWICreNrcHgnjKxIowiigIwpNx2pmdCi+j3MLKVcTqfhOIqcMHVDMM5LVMNQi9MXp0ymsqXf3TGT133kcnjvLPj6/2WdAYwuWs9BrrKqQ1dDC627n4Lbje8mnNKcxDTCCi+8TA==" - ], - "OperatorIDs": [ - 2 - ], - "SSVMessage": { - "MsgType": 0, - "MsgID": [ - 1, - 2, - 3, - 4, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "Data": "AQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAATAAAAL6Vb7ffTvN1MWgtWIMgCE/JFMPw/tM1Jj5bRAYubCm0AAAAAAAAAACEAAAAhAAAAAECAwQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" - }, - "FullData": null - }, - { - "Signatures": [ - "CK+6dEz+S2R4iGi6DHHTa1BSXt6DqMp6maTtXMe2HyX7Y7+xU6J1z49rKH61VMzLhBJI3itygLd734iO6Lae7n9dC2AMEaS4NsajETlzGZGrAvNEU5+W/ORzOkt0zuAh1vqMJV9wkps1CwCuV5m4Tt2Uw6kpZfc5/W24Jmjux1sF0v1colJ2ehmGGmVONA2w38mMZZvnQSd7J4ENR/PqPD6j3qkP/OQk4gWJJKY/W82IXNLadHdcvJN7JDdstPzx9FzM1b6zmuP0qwRzjpjIdPAzWh1l4q/yw+WgqS0kMKJPVpDJFt1OdX4ygQ1dEtJx2l7YaOpf0C6KAZv83ricrg==" - ], - "OperatorIDs": [ - 3 - ], - "SSVMessage": { - "MsgType": 0, - "MsgID": [ - 1, - 2, - 3, - 4, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "Data": "AQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAATAAAAL6Vb7ffTvN1MWgtWIMgCE/JFMPw/tM1Jj5bRAYubCm0AAAAAAAAAACEAAAAhAAAAAECAwQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" - }, - "FullData": null - }, - { - "Signatures": [ - "QP3Rd93H73AyuvCmfsENVK9NBmcx+f1E33UtE9dYqUOIIu289CLlnO9BiRKPXMNY141jeNr8JsqbivEpzelbMulkmxUXbGdp0uwRxcRenU3oc6LEGw+EjUYASMyT1rXrfCCBwE5vzGybTJAUxvGqEuJL42wz6POVtmK9/wYp2KpX0H9ehUsFvHUipm5dmGkg4gzJW9VuOTwgCtHtr+ZL090EPgaw2WDKNYeE1sScZoh3UWn+DhDmLchDhOxfstYxcbfDrd0NWnkVXJDzE7DlCvBRO2QrEov30ea27hh5dKb493m8XhyO0A1bFURPQUhE8S2rMVDkKDZ9orojrM8TgQ==" - ], - "OperatorIDs": [ - 4 - ], - "SSVMessage": { - "MsgType": 0, - "MsgID": [ - 1, - 2, - 3, - 4, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "Data": "AgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAATAAAAL6Vb7ffTvN1MWgtWIMgCE/JFMPw/tM1Jj5bRAYubCm0AAAAAAAAAACEAAAAhAAAAAECAwQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" - }, - "FullData": null - }, - { - "Signatures": [ - "VOEYr49ORL61wVkIif9Jv0Z85Mdl/T0za/v8dblspGhfvr7V1a/CbBQkiKCs7h8IeDJZrJ2v0aDnc9j49LUC0buORfskygfjvg9U0AuwMJ1ohRKWJ79WG8PdcH0r4h9JyspSqM4YjQrO2TCDthutLAsFbdklo28Hl6koVWPqqRlh7FJjJYYBMbkPh8slLvVdl8Mz2aWY8jSaVF5oZE8pmP4uZcPws03NA3r0s7zdQ80usxgj225ahSvMOwiXtKOlaENuU1pRJXFiQV3ptIOZH86UeJWp/e04pLiFyQVrz4Rk43tmN1Vf4RkwM9chx/ZXomLT8J1Ri1zu5N42cCGWtg==" - ], - "OperatorIDs": [ - 2 - ], - "SSVMessage": { - "MsgType": 0, - "MsgID": [ - 1, - 2, - 3, - 4, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "Data": "AgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAATAAAAL6Vb7ffTvN1MWgtWIMgCE/JFMPw/tM1Jj5bRAYubCm0AAAAAAAAAACEAAAAhAAAAAECAwQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" - }, - "FullData": null - }, - { - "Signatures": [ - "DyAKAM84BaQy3UZy+sJO2tgfutZ73863DIw3S0nxD2jbj8EYJ2K9Cv1W7zF1uLJ/q14A478XYtj62zHqVpN15R65X8mZs6PIscY040nUlsuM46we81Q6uCxRtQxBkASl9ubwihhsPXTRfkhL4MfpDpk9J7uGZ9mQhT7dnGXjZ/9dRyJQv3t0mDKQpcc3UmECvDtYvjFtLZGKguBmhAC6mtwgcC/5reKoQoBi8M5aoAC7ycNZW9kn7DwgQj//qvWB9EwoRQpObNiEWyHiiuDSOW4uFh7ott4fk92bD2qleCNMfEURT+1uwW4OdhjIzOgj4aZJM3iTc4T/3uwjYAXPMg==" - ], - "OperatorIDs": [ - 3 - ], - "SSVMessage": { - "MsgType": 0, - "MsgID": [ - 1, - 2, - 3, - 4, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "Data": "AgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAATAAAAL6Vb7ffTvN1MWgtWIMgCE/JFMPw/tM1Jj5bRAYubCm0AAAAAAAAAACEAAAAhAAAAAECAwQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" - }, - "FullData": null - } - ], - "ControllerPostRoot": "", - "ExpectedTimerState": null, - "ExpectedDecidedState": { - "DecidedVal": "AQIDBAUGBwgJAQIDBAUGBwgJAQIDBAUGBwgJ", - "DecidedCnt": 1, - "BroadcastedDecided": { - "Signatures": [ - "VOEYr49ORL61wVkIif9Jv0Z85Mdl/T0za/v8dblspGhfvr7V1a/CbBQkiKCs7h8IeDJZrJ2v0aDnc9j49LUC0buORfskygfjvg9U0AuwMJ1ohRKWJ79WG8PdcH0r4h9JyspSqM4YjQrO2TCDthutLAsFbdklo28Hl6koVWPqqRlh7FJjJYYBMbkPh8slLvVdl8Mz2aWY8jSaVF5oZE8pmP4uZcPws03NA3r0s7zdQ80usxgj225ahSvMOwiXtKOlaENuU1pRJXFiQV3ptIOZH86UeJWp/e04pLiFyQVrz4Rk43tmN1Vf4RkwM9chx/ZXomLT8J1Ri1zu5N42cCGWtg==", - "DyAKAM84BaQy3UZy+sJO2tgfutZ73863DIw3S0nxD2jbj8EYJ2K9Cv1W7zF1uLJ/q14A478XYtj62zHqVpN15R65X8mZs6PIscY040nUlsuM46we81Q6uCxRtQxBkASl9ubwihhsPXTRfkhL4MfpDpk9J7uGZ9mQhT7dnGXjZ/9dRyJQv3t0mDKQpcc3UmECvDtYvjFtLZGKguBmhAC6mtwgcC/5reKoQoBi8M5aoAC7ycNZW9kn7DwgQj//qvWB9EwoRQpObNiEWyHiiuDSOW4uFh7ott4fk92bD2qleCNMfEURT+1uwW4OdhjIzOgj4aZJM3iTc4T/3uwjYAXPMg==", - "QP3Rd93H73AyuvCmfsENVK9NBmcx+f1E33UtE9dYqUOIIu289CLlnO9BiRKPXMNY141jeNr8JsqbivEpzelbMulkmxUXbGdp0uwRxcRenU3oc6LEGw+EjUYASMyT1rXrfCCBwE5vzGybTJAUxvGqEuJL42wz6POVtmK9/wYp2KpX0H9ehUsFvHUipm5dmGkg4gzJW9VuOTwgCtHtr+ZL090EPgaw2WDKNYeE1sScZoh3UWn+DhDmLchDhOxfstYxcbfDrd0NWnkVXJDzE7DlCvBRO2QrEov30ea27hh5dKb493m8XhyO0A1bFURPQUhE8S2rMVDkKDZ9orojrM8TgQ==" - ], - "OperatorIDs": [ - 2, - 3, - 4 - ], - "SSVMessage": { - "MsgType": 0, - "MsgID": [ - 1, - 2, - 3, - 4, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - ], - "Data": "AgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAATAAAAL6Vb7ffTvN1MWgtWIMgCE/JFMPw/tM1Jj5bRAYubCm0AAAAAAAAAACEAAAAhAAAAAECAwQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" - }, - "FullData": "AQIDBAUGBwgJAQIDBAUGBwgJAQIDBAUGBwgJ" - } - }, - "omitempty": null - } - ], - "OutputMessages": null, - "ExpectedError": "", - "omitempty": null -} \ No newline at end of file diff --git a/ssv/runner.go b/ssv/runner.go index cd3562d07..fe27247d5 100644 --- a/ssv/runner.go +++ b/ssv/runner.go @@ -34,9 +34,9 @@ type Runner interface { ProcessPostConsensus(signedMsg *types.PartialSignatureMessages) error // expectedPreConsensusRootsAndDomain an INTERNAL function, returns the expected pre-consensus roots to sign - expectedPreConsensusRootsAndDomain() ([]ssz.HashRoot, types.DomainType, error) + expectedPreConsensusRootsAndDomain() ([]ssz.HashRoot, phase0.DomainType, error) // expectedPostConsensusRootsAndDomain an INTERNAL function, returns the expected post-consensus roots to sign - expectedPostConsensusRootsAndDomain() ([]ssz.HashRoot, types.DomainType, error) + expectedPostConsensusRootsAndDomain() ([]ssz.HashRoot, phase0.DomainType, error) // executeDuty an INTERNAL function, executes a duty. executeDuty(duty types.Duty) error } diff --git a/ssv/runner_signatures.go b/ssv/runner_signatures.go index 9e267adbc..b351ccb1b 100644 --- a/ssv/runner_signatures.go +++ b/ssv/runner_signatures.go @@ -1,7 +1,7 @@ package ssv import ( - "github.com/attestantio/go-eth2-client/spec/phase0" + spec "github.com/attestantio/go-eth2-client/spec/phase0" ssz "github.com/ferranbt/fastssz" "github.com/herumi/bls-eth-go-binary/bls" "github.com/pkg/errors" @@ -9,7 +9,7 @@ import ( ) func (b *BaseRunner) signBeaconObject(runner Runner, duty *types.ValidatorDuty, - obj ssz.HashRoot, slot phase0.Slot, domainType types.DomainType) (*types.PartialSignatureMessage, error) { + obj ssz.HashRoot, slot spec.Slot, domainType spec.DomainType) (*types.PartialSignatureMessage, error) { epoch := runner.GetBaseRunner().BeaconNetwork.EstimatedEpochAtSlot(slot) domain, err := runner.GetBeaconNode().DomainData(epoch, domainType) if err != nil { @@ -34,7 +34,7 @@ func (b *BaseRunner) signBeaconObject(runner Runner, duty *types.ValidatorDuty, // Validate message content without verifying signatures func (b *BaseRunner) validatePartialSigMsgForSlot( psigMsgs *types.PartialSignatureMessages, - slot phase0.Slot, + slot spec.Slot, ) error { if err := psigMsgs.Validate(); err != nil { return errors.Wrap(err, "PartialSignatureMessages invalid") diff --git a/types/signer.go b/types/signer.go index 1ec253fce..202842a66 100644 --- a/types/signer.go +++ b/types/signer.go @@ -3,7 +3,7 @@ package types import ( "bytes" - "github.com/attestantio/go-eth2-client/spec/phase0" + spec "github.com/attestantio/go-eth2-client/spec/phase0" ssz "github.com/ferranbt/fastssz" ) @@ -24,9 +24,9 @@ var ( type BeaconSigner interface { // SignBeaconObject returns signature and root. - SignBeaconObject(obj ssz.HashRoot, domain phase0.Domain, pk []byte, domainType DomainType) (Signature, [32]byte, error) + SignBeaconObject(obj ssz.HashRoot, domain spec.Domain, pk []byte, domainType spec.DomainType) (Signature, [32]byte, error) // IsAttestationSlashable returns error if attestation is slashable - IsAttestationSlashable(pk ShareValidatorPK, data *phase0.AttestationData) error + IsAttestationSlashable(pk ShareValidatorPK, data *spec.AttestationData) error // IsBeaconBlockSlashable returns error if the given block is slashable - IsBeaconBlockSlashable(pk []byte, slot phase0.Slot) error + IsBeaconBlockSlashable(pk []byte, slot spec.Slot) error }