Documentation ¶
Index ¶
- Constants
- Variables
- func GetSSZRootNoError(obj ssz.HashRoot) string
- func NewTestingKeyManager() *testingKeyManager
- func NewTestingKeyManagerWithSlashableRoots(slashableDataRoots [][]byte) *testingKeyManager
- func NewTestingQBFTController(identifier []byte, share *types.Share, config qbft.IConfig) *qbft.Controller
- func NewTestingStorage() *testingStorage
- func NewTestingTimer() qbft.Timer
- func TestingCommitMessageWithHeightIdentifierAndFullData(sk *bls.SecretKey, id types.OperatorID, height qbft.Height, ...) *qbft.SignedMessage
- func TestingCommitMultiSignerMessageWithHeightIdentifierAndFullData(sks []*bls.SecretKey, ids []types.OperatorID, height qbft.Height, ...) *qbft.SignedMessage
- func TestingProposalMessageWithIdentifierAndFullData(sk *bls.SecretKey, id types.OperatorID, identifier, fullData []byte, ...) *qbft.SignedMessage
- func TestingValidatorRegistrationBySlot(slot phase0.Slot) *v1.ValidatorRegistration
- func TestingVoluntaryExitBySlot(slot phase0.Slot) *phase0.VoluntaryExit
- func UnknownDutyValueCheck() qbft.ProposedValueCheckF
- type TestKeySet
- type TestQBFTTimer
- type TestingBeaconNode
- func (bn *TestingBeaconNode) DomainData(epoch phase0.Epoch, domain phase0.DomainType) (phase0.Domain, error)
- func (bn *TestingBeaconNode) GetAttestationData(slot phase0.Slot, committeeIndex phase0.CommitteeIndex) (ssz.Marshaler, spec.DataVersion, error)
- func (bn *TestingBeaconNode) GetBeaconBlock(slot phase0.Slot, graffiti, randao []byte) (ssz.Marshaler, spec.DataVersion, error)
- func (bn *TestingBeaconNode) GetBeaconNetwork() types.BeaconNetwork
- func (bn *TestingBeaconNode) GetBlindedBeaconBlock(slot phase0.Slot, graffiti, randao []byte) (ssz.Marshaler, spec.DataVersion, error)
- func (bn *TestingBeaconNode) GetSyncCommitteeContribution(slot phase0.Slot, selectionProofs []phase0.BLSSignature, subnetIDs []uint64) (ssz.Marshaler, spec.DataVersion, error)
- func (bn *TestingBeaconNode) GetSyncMessageBlockRoot(slot phase0.Slot) (phase0.Root, spec.DataVersion, error)
- func (bn *TestingBeaconNode) IsSyncCommitteeAggregator(proof []byte) (bool, error)
- func (bn *TestingBeaconNode) SetSyncCommitteeAggregatorRootHexes(roots map[string]bool)
- func (bn *TestingBeaconNode) SubmitAggregateSelectionProof(slot phase0.Slot, committeeIndex phase0.CommitteeIndex, committeeLength uint64, ...) (ssz.Marshaler, spec.DataVersion, error)
- func (bn *TestingBeaconNode) SubmitAttestation(attestation *phase0.Attestation) error
- func (bn *TestingBeaconNode) SubmitBeaconBlock(block *api.VersionedProposal, sig phase0.BLSSignature) error
- func (bn *TestingBeaconNode) SubmitBlindedBeaconBlock(block *api.VersionedBlindedProposal, sig phase0.BLSSignature) error
- func (bn *TestingBeaconNode) SubmitSignedAggregateSelectionProof(msg *phase0.SignedAggregateAndProof) error
- func (bn *TestingBeaconNode) SubmitSignedContributionAndProof(contribution *altair.SignedContributionAndProof) error
- func (bn *TestingBeaconNode) SubmitSyncMessage(msg *altair.SyncCommitteeMessage) error
- func (bn *TestingBeaconNode) SubmitValidatorRegistration(pubkey []byte, feeRecipient bellatrix.ExecutionAddress, ...) error
- func (bn *TestingBeaconNode) SubmitVoluntaryExit(voluntaryExit *phase0.SignedVoluntaryExit) error
- func (bn *TestingBeaconNode) SyncCommitteeSubnetID(index phase0.CommitteeIndex) (uint64, error)
- type TestingNetwork
- type TimerState
Constants ¶
const ( TestingDutySlot = 12 TestingDutySlot2 = 50 TestingDutyEpoch = 0 TestingValidatorIndex = 1 UnknownDutyType = 100 )
const ( //Deneb Fork Epoch ForkEpochPraterDeneb = 231680 // ForkEpochPraterCapella Goerli taken from https://github.com/ethereum/execution-specs/blob/37a8f892341eb000e56e962a051a87e05a2e4443/network-upgrades/mainnet-upgrades/shanghai.md?plain=1#L18 ForkEpochPraterCapella = 162304 TestingDutyEpochCapella = ForkEpochPraterCapella TestingDutySlotCapella = ForkEpochPraterCapella * 32 TestingDutySlotCapellaNextEpoch = TestingDutySlotCapella + 32 TestingDutySlotCapellaInvalid = TestingDutySlotCapella + 50 TestingDutyEpochDeneb = ForkEpochPraterDeneb TestingDutySlotDeneb = ForkEpochPraterDeneb * 32 TestingDutySlotDenebNextEpoch = TestingDutySlotDeneb + 32 TestingDutySlotDenebInvalid = TestingDutySlotDeneb + 50 )
Variables ¶
var AggregatorMsgID = func() []byte { ret := types.NewMsgID(TestingSSVDomainType, TestingValidatorPubKey[:], types.BNRoleAggregator) return ret[:] }()
var AggregatorRunner = func(keySet *TestKeySet) ssv.Runner { return baseRunner(types.BNRoleAggregator, ssv.AggregatorValueCheckF(NewTestingKeyManager(), types.BeaconTestNetwork, TestingValidatorPubKey[:], TestingValidatorIndex), keySet) }
var AttesterMsgID = func() []byte { ret := types.NewMsgID(TestingSSVDomainType, TestingValidatorPubKey[:], types.BNRoleAttester) return ret[:] }()
var AttesterRunner = func(keySet *TestKeySet) ssv.Runner { return baseRunner(types.BNRoleAttester, ssv.AttesterValueCheckF(NewTestingKeyManager(), types.BeaconTestNetwork, TestingValidatorPubKey[:], TestingValidatorIndex, nil), keySet) }
var AttesterRunner7Operators = func(keySet *TestKeySet) ssv.Runner { return baseRunner(types.BNRoleAttester, ssv.AttesterValueCheckF(NewTestingKeyManager(), types.BeaconTestNetwork, TestingValidatorPubKey[:], TestingValidatorIndex, nil), keySet) }
var BaseInstance = func() *qbft.Instance { return baseInstance(TestingShare(Testing4SharesSet()), Testing4SharesSet(), []byte{1, 2, 3, 4}) }
var BaseValidator = func(keySet *TestKeySet) *ssv.Validator { return ssv.NewValidator( NewTestingNetwork(), NewTestingBeaconNode(), TestingShare(keySet), NewTestingKeyManager(), map[types.BeaconRole]ssv.Runner{ types.BNRoleAttester: AttesterRunner(keySet), types.BNRoleProposer: ProposerRunner(keySet), types.BNRoleAggregator: AggregatorRunner(keySet), types.BNRoleSyncCommittee: SyncCommitteeRunner(keySet), types.BNRoleSyncCommitteeContribution: SyncCommitteeContributionRunner(keySet), }, ) }
var DecidedRunner = func(keySet *TestKeySet) ssv.Runner { return decideRunner(TestAttesterConsensusData, qbft.FirstHeight, keySet) }
var DecidedRunnerUnknownDutyType = func(keySet *TestKeySet) ssv.Runner { return decideRunner(TestConsensusUnkownDutyTypeData, qbft.FirstHeight, keySet) }
var DecidedRunnerWithHeight = func(height qbft.Height, keySet *TestKeySet) ssv.Runner { return decideRunner(TestAttesterConsensusData, height, keySet) }
var DecidingMsgsForHeight = func(consensusData *types.ConsensusData, msgIdentifier []byte, height qbft.Height, keySet *TestKeySet) []*qbft.SignedMessage { byts, _ := consensusData.Encode() r, _ := qbft.HashDataRoot(byts) fullData, _ := consensusData.MarshalSSZ() return DecidingMsgsForHeightWithRoot(r, fullData, msgIdentifier, height, keySet) }
//////////////////// For QBFT TESTS /////////////////////////////////////////////////////////////////////////
var DecidingMsgsForHeightWithRoot = func(root [32]byte, fullData, msgIdentifier []byte, height qbft.Height, keySet *TestKeySet) []*qbft.SignedMessage { msgs := make([]*qbft.SignedMessage, 0) for h := qbft.FirstHeight; h <= height; h++ { s := SignQBFTMsg(keySet.Shares[1], 1, &qbft.Message{ MsgType: qbft.ProposalMsgType, Height: h, Round: qbft.FirstRound, Identifier: msgIdentifier, Root: root, }) s.FullData = fullData msgs = append(msgs, s) for i := uint64(1); i <= keySet.Threshold; i++ { msgs = append(msgs, SignQBFTMsg(keySet.Shares[types.OperatorID(i)], types.OperatorID(i), &qbft.Message{ MsgType: qbft.PrepareMsgType, Height: h, Round: qbft.FirstRound, Identifier: msgIdentifier, Root: root, })) } for i := uint64(1); i <= keySet.Threshold; i++ { msgs = append(msgs, SignQBFTMsg(keySet.Shares[types.OperatorID(i)], types.OperatorID(i), &qbft.Message{ MsgType: qbft.CommitMsgType, Height: h, Round: qbft.FirstRound, Identifier: msgIdentifier, Root: root, })) } } return msgs }
var DifferentFullData = append(TestingQBFTFullData, []byte("different")...)
var DifferentRoot = func() [32]byte { return sha256.Sum256(DifferentFullData) }()
var ExpectedDecidingMsgsForHeight = func(consensusData *types.ConsensusData, msgIdentifier []byte, height qbft.Height, keySet *TestKeySet) []*qbft.SignedMessage { byts, _ := consensusData.Encode() r, _ := qbft.HashDataRoot(byts) fullData, _ := consensusData.MarshalSSZ() return ExpectedDecidingMsgsForHeightWithRoot(r, fullData, msgIdentifier, height, keySet) }
var ExpectedDecidingMsgsForHeightWithRoot = func(root [32]byte, fullData, msgIdentifier []byte, height qbft.Height, keySet *TestKeySet) []*qbft.SignedMessage { msgs := make([]*qbft.SignedMessage, 0) for h := qbft.FirstHeight; h <= height; h++ { s := SignQBFTMsg(keySet.Shares[1], 1, &qbft.Message{ MsgType: qbft.ProposalMsgType, Height: h, Round: qbft.FirstRound, Identifier: msgIdentifier, Root: root, }) s.FullData = fullData msgs = append(msgs, s) for i := uint64(1); i <= keySet.Threshold; i++ { msgs = append(msgs, SignQBFTMsg(keySet.Shares[types.OperatorID(i)], types.OperatorID(i), &qbft.Message{ MsgType: qbft.PrepareMsgType, Height: h, Round: qbft.FirstRound, Identifier: msgIdentifier, Root: root, })) } for i := uint64(1); i <= keySet.Threshold; i++ { msgs = append(msgs, SignQBFTMsg(keySet.Shares[types.OperatorID(i)], types.OperatorID(i), &qbft.Message{ MsgType: qbft.CommitMsgType, Height: h, Round: qbft.FirstRound, Identifier: msgIdentifier, Root: root, })) } } return msgs }
var ExpectedSSVDecidingMsgsV = func(consensusData *types.ConsensusData, ks *TestKeySet, role types.BeaconRole) []*types.SSVMessage { id := types.NewMsgID(TestingSSVDomainType, TestingValidatorPubKey[:], role) ssvMsgF := func(qbftMsg *qbft.SignedMessage, partialSigMsg *types.SignedPartialSignatureMessage) *types.SSVMessage { var byts []byte var msgType types.MsgType if partialSigMsg != nil { msgType = types.SSVPartialSignatureMsgType byts, _ = partialSigMsg.Encode() } else { msgType = types.SSVConsensusMsgType byts, _ = qbftMsg.Encode() } return &types.SSVMessage{ MsgType: msgType, MsgID: id, Data: byts, } } base := make([]*types.SSVMessage, 0) if role == types.BNRoleProposer { for i := uint64(1); i <= ks.Threshold; i++ { base = append(base, ssvMsgF(nil, PreConsensusRandaoMsgV(ks.Shares[types.OperatorID(i)], types.OperatorID(i), consensusData.Version))) } } if role == types.BNRoleAggregator { for i := uint64(1); i <= ks.Threshold; i++ { base = append(base, ssvMsgF(nil, PreConsensusSelectionProofMsg(ks.Shares[types.OperatorID(i)], ks.Shares[types.OperatorID(i)], types.OperatorID(i), types.OperatorID(i)))) } } if role == types.BNRoleSyncCommitteeContribution { for i := uint64(1); i <= ks.Threshold; i++ { base = append(base, ssvMsgF(nil, PreConsensusContributionProofMsg(ks.Shares[types.OperatorID(i)], ks.Shares[types.OperatorID(i)], types.OperatorID(i), types.OperatorID(i)))) } } qbftMsgs := SSVExpectedDecidingMsgsForHeight(consensusData, id[:], qbft.Height(consensusData.Duty.Slot), ks) for _, msg := range qbftMsgs { base = append(base, ssvMsgF(msg, nil)) } return base }
var MarshalJustifications = func(msgs []*qbft.SignedMessage) [][]byte { bytes, err := qbft.MarshalJustifications(msgs) if err != nil { panic(err) } return bytes }
var MultiSignQBFTMsg = func(sks []*bls.SecretKey, ids []types.OperatorID, msg *qbft.Message) *qbft.SignedMessage { if len(sks) == 0 || len(ids) != len(sks) { panic("sks != ids") } var signed *qbft.SignedMessage for i, sk := range sks { if signed == nil { signed = SignQBFTMsg(sk, ids[i], msg) } else { if err := signed.Aggregate(SignQBFTMsg(sk, ids[i], msg)); err != nil { panic(err.Error()) } } } return signed }
var PostConsensusAggregatorMsg = func(sk *bls.SecretKey, id types.OperatorID) *types.SignedPartialSignatureMessage { return postConsensusAggregatorMsg(sk, id, false, false) }
var PostConsensusAggregatorTooFewRootsMsg = func(sk *bls.SecretKey, id types.OperatorID) *types.SignedPartialSignatureMessage { msg := &types.PartialSignatureMessages{ Type: types.PostConsensusPartialSig, Slot: TestingDutySlot, Messages: []*types.PartialSignatureMessage{}, } sig, _ := NewTestingKeyManager().SignRoot(msg, types.PartialSignatureType, sk.GetPublicKey().Serialize()) return &types.SignedPartialSignatureMessage{ Message: *msg, Signature: sig, Signer: id, } }
var PostConsensusAggregatorTooManyRootsMsg = func(sk *bls.SecretKey, id types.OperatorID) *types.SignedPartialSignatureMessage { ret := postConsensusAggregatorMsg(sk, id, false, false) ret.Message.Messages = append(ret.Message.Messages, ret.Message.Messages[0]) msg := &types.PartialSignatureMessages{ Type: types.PostConsensusPartialSig, Slot: TestingDutySlot, Messages: ret.Message.Messages, } sig, _ := NewTestingKeyManager().SignRoot(msg, types.PartialSignatureType, sk.GetPublicKey().Serialize()) return &types.SignedPartialSignatureMessage{ Message: *msg, Signature: sig, Signer: id, } }
var PostConsensusAttestationMsg = func(sk *bls.SecretKey, id types.OperatorID, height qbft.Height) *types.SignedPartialSignatureMessage { return postConsensusAttestationMsg(sk, id, height, false, false) }
var PostConsensusAttestationTooFewRootsMsg = func(sk *bls.SecretKey, id types.OperatorID, height qbft.Height) *types.SignedPartialSignatureMessage { msg := &types.PartialSignatureMessages{ Type: types.PostConsensusPartialSig, Slot: TestingDutySlot, Messages: []*types.PartialSignatureMessage{}, } sig, _ := NewTestingKeyManager().SignRoot(msg, types.PartialSignatureType, sk.GetPublicKey().Serialize()) return &types.SignedPartialSignatureMessage{ Message: *msg, Signature: sig, Signer: id, } }
var PostConsensusAttestationTooManyRootsMsg = func(sk *bls.SecretKey, id types.OperatorID, height qbft.Height) *types.SignedPartialSignatureMessage { ret := postConsensusAttestationMsg(sk, id, height, false, false) ret.Message.Messages = append(ret.Message.Messages, ret.Message.Messages[0]) msg := &types.PartialSignatureMessages{ Type: types.PostConsensusPartialSig, Slot: TestingDutySlot, Messages: ret.Message.Messages, } sig, _ := NewTestingKeyManager().SignRoot(msg, types.PartialSignatureType, sk.GetPublicKey().Serialize()) return &types.SignedPartialSignatureMessage{ Message: *msg, Signature: sig, Signer: id, } }
var PostConsensusProposerMsgV = func(sk *bls.SecretKey, id types.OperatorID, version spec.DataVersion) *types.SignedPartialSignatureMessage { return postConsensusBeaconBlockMsgV(sk, id, false, false, version) }
var PostConsensusProposerTooFewRootsMsgV = func(sk *bls.SecretKey, id types.OperatorID, version spec.DataVersion) *types.SignedPartialSignatureMessage { msg := &types.PartialSignatureMessages{ Type: types.PostConsensusPartialSig, Slot: TestingProposerDutyV(version).Slot, Messages: []*types.PartialSignatureMessage{}, } sig, _ := NewTestingKeyManager().SignRoot(msg, types.PartialSignatureType, sk.GetPublicKey().Serialize()) return &types.SignedPartialSignatureMessage{ Message: *msg, Signature: sig, Signer: id, } }
var PostConsensusProposerTooManyRootsMsgV = func(sk *bls.SecretKey, id types.OperatorID, version spec.DataVersion) *types.SignedPartialSignatureMessage { ret := postConsensusBeaconBlockMsgV(sk, id, false, false, version) ret.Message.Messages = append(ret.Message.Messages, ret.Message.Messages[0]) msg := &types.PartialSignatureMessages{ Type: types.PostConsensusPartialSig, Slot: TestingProposerDutyV(version).Slot, Messages: ret.Message.Messages, } sig, _ := NewTestingKeyManager().SignRoot(msg, types.PartialSignatureType, sk.GetPublicKey().Serialize()) return &types.SignedPartialSignatureMessage{ Message: *msg, Signature: sig, Signer: id, } }
var PostConsensusSigAggregatorWrongBeaconSignerMsg = func(sk *bls.SecretKey, id, beaconSigner types.OperatorID) *types.SignedPartialSignatureMessage { ret := postConsensusAggregatorMsg(sk, beaconSigner, false, true) ret.Signer = id return ret }
var PostConsensusSigAttestationWrongBeaconSignerMsg = func(sk *bls.SecretKey, id, beaconSigner types.OperatorID, height qbft.Height) *types.SignedPartialSignatureMessage { ret := postConsensusAttestationMsg(sk, beaconSigner, height, false, true) ret.Signer = id return ret }
var PostConsensusSigProposerWrongBeaconSignerMsgV = func(sk *bls.SecretKey, id, beaconSigner types.OperatorID, version spec.DataVersion) *types.SignedPartialSignatureMessage { ret := postConsensusBeaconBlockMsgV(sk, beaconSigner, false, true, version) ret.Signer = id return ret }
var PostConsensusSigSyncCommitteeContributionWrongSignerMsg = func(sk *bls.SecretKey, id, beaconSigner types.OperatorID, keySet *TestKeySet) *types.SignedPartialSignatureMessage { ret := postConsensusSyncCommitteeContributionMsg(sk, beaconSigner, TestingValidatorIndex, keySet, false, false, false) ret.Signer = id return ret }
var PostConsensusSigSyncCommitteeWrongBeaconSignerMsg = func(sk *bls.SecretKey, id, beaconSigner types.OperatorID) *types.SignedPartialSignatureMessage { ret := postConsensusSyncCommitteeMsg(sk, beaconSigner, false, true) ret.Signer = id return ret }
var PostConsensusSyncCommitteeContributionMsg = func(sk *bls.SecretKey, id types.OperatorID, keySet *TestKeySet) *types.SignedPartialSignatureMessage { return postConsensusSyncCommitteeContributionMsg(sk, id, TestingValidatorIndex, keySet, false, false, false) }
var PostConsensusSyncCommitteeContributionTooFewRootsMsg = func(sk *bls.SecretKey, id types.OperatorID, keySet *TestKeySet) *types.SignedPartialSignatureMessage { ret := postConsensusSyncCommitteeContributionMsg(sk, id, TestingValidatorIndex, keySet, false, false, false) msg := &types.PartialSignatureMessages{ Type: types.PostConsensusPartialSig, Slot: TestingDutySlot, Messages: ret.Message.Messages[0:2], } sig, _ := NewTestingKeyManager().SignRoot(msg, types.PartialSignatureType, sk.GetPublicKey().Serialize()) return &types.SignedPartialSignatureMessage{ Message: *msg, Signature: sig, Signer: id, } }
var PostConsensusSyncCommitteeContributionTooManyRootsMsg = func(sk *bls.SecretKey, id types.OperatorID, keySet *TestKeySet) *types.SignedPartialSignatureMessage { ret := postConsensusSyncCommitteeContributionMsg(sk, id, TestingValidatorIndex, keySet, false, false, false) ret.Message.Messages = append(ret.Message.Messages, ret.Message.Messages[0]) msg := &types.PartialSignatureMessages{ Type: types.PostConsensusPartialSig, Slot: TestingDutySlot, Messages: ret.Message.Messages, } sig, _ := NewTestingKeyManager().SignRoot(msg, types.PartialSignatureType, sk.GetPublicKey().Serialize()) return &types.SignedPartialSignatureMessage{ Message: *msg, Signature: sig, Signer: id, } }
var PostConsensusSyncCommitteeContributionWrongOrderMsg = func(sk *bls.SecretKey, id types.OperatorID, keySet *TestKeySet) *types.SignedPartialSignatureMessage { return postConsensusSyncCommitteeContributionMsg(sk, id, TestingValidatorIndex, keySet, false, false, true) }
var PostConsensusSyncCommitteeMsg = func(sk *bls.SecretKey, id types.OperatorID) *types.SignedPartialSignatureMessage { return postConsensusSyncCommitteeMsg(sk, id, false, false) }
var PostConsensusSyncCommitteeTooFewRootsMsg = func(sk *bls.SecretKey, id types.OperatorID) *types.SignedPartialSignatureMessage { msg := &types.PartialSignatureMessages{ Type: types.PostConsensusPartialSig, Slot: TestingDutySlot, Messages: []*types.PartialSignatureMessage{}, } sig, _ := NewTestingKeyManager().SignRoot(msg, types.PartialSignatureType, sk.GetPublicKey().Serialize()) return &types.SignedPartialSignatureMessage{ Message: *msg, Signature: sig, Signer: id, } }
var PostConsensusSyncCommitteeTooManyRootsMsg = func(sk *bls.SecretKey, id types.OperatorID) *types.SignedPartialSignatureMessage { ret := postConsensusSyncCommitteeMsg(sk, id, false, false) ret.Message.Messages = append(ret.Message.Messages, ret.Message.Messages[0]) msg := &types.PartialSignatureMessages{ Type: types.PostConsensusPartialSig, Slot: TestingDutySlot, Messages: ret.Message.Messages, } sig, _ := NewTestingKeyManager().SignRoot(msg, types.PartialSignatureType, sk.GetPublicKey().Serialize()) return &types.SignedPartialSignatureMessage{ Message: *msg, Signature: sig, Signer: id, } }
var PostConsensusWrongAggregatorMsg = func(sk *bls.SecretKey, id types.OperatorID) *types.SignedPartialSignatureMessage { return postConsensusAggregatorMsg(sk, id, true, false) }
var PostConsensusWrongAttestationMsg = func(sk *bls.SecretKey, id types.OperatorID, height qbft.Height) *types.SignedPartialSignatureMessage { return postConsensusAttestationMsg(sk, id, height, true, false) }
var PostConsensusWrongProposerMsgV = func(sk *bls.SecretKey, id types.OperatorID, version spec.DataVersion) *types.SignedPartialSignatureMessage { return postConsensusBeaconBlockMsgV(sk, id, true, false, version) }
var PostConsensusWrongSigAggregatorMsg = func(sk *bls.SecretKey, id types.OperatorID) *types.SignedPartialSignatureMessage { return postConsensusAggregatorMsg(sk, id, false, true) }
var PostConsensusWrongSigAttestationMsg = func(sk *bls.SecretKey, id types.OperatorID, height qbft.Height) *types.SignedPartialSignatureMessage { return postConsensusAttestationMsg(sk, id, height, false, true) }
var PostConsensusWrongSigProposerMsgV = func(sk *bls.SecretKey, id types.OperatorID, version spec.DataVersion) *types.SignedPartialSignatureMessage { return postConsensusBeaconBlockMsgV(sk, id, false, true, version) }
var PostConsensusWrongSigSyncCommitteeContributionMsg = func(sk *bls.SecretKey, id types.OperatorID, keySet *TestKeySet) *types.SignedPartialSignatureMessage { return postConsensusSyncCommitteeContributionMsg(sk, id, TestingValidatorIndex, keySet, false, true, false) }
var PostConsensusWrongSigSyncCommitteeMsg = func(sk *bls.SecretKey, id types.OperatorID) *types.SignedPartialSignatureMessage { return postConsensusSyncCommitteeMsg(sk, id, false, true) }
var PostConsensusWrongSyncCommitteeContributionMsg = func(sk *bls.SecretKey, id types.OperatorID, keySet *TestKeySet) *types.SignedPartialSignatureMessage { return postConsensusSyncCommitteeContributionMsg(sk, id, TestingValidatorIndex, keySet, true, false, false) }
var PostConsensusWrongSyncCommitteeMsg = func(sk *bls.SecretKey, id types.OperatorID) *types.SignedPartialSignatureMessage { return postConsensusSyncCommitteeMsg(sk, id, true, false) }
var PreConsensusContributionProofMsg = func(msgSK, beaconSK *bls.SecretKey, msgID, beaconID types.OperatorID) *types.SignedPartialSignatureMessage { return PreConsensusCustomSlotContributionProofMsg(msgSK, beaconSK, msgID, beaconID, TestingDutySlot) }
var PreConsensusContributionProofNextEpochMsg = func(msgSK, beaconSK *bls.SecretKey, msgID, beaconID types.OperatorID) *types.SignedPartialSignatureMessage { return contributionProofMsg(msgSK, beaconSK, msgID, beaconID, TestingDutySlot2, TestingDutySlot2, false, false) }
var PreConsensusContributionProofTooFewRootsMsg = func(msgSK, beaconSK *bls.SecretKey, msgID, beaconID types.OperatorID) *types.SignedPartialSignatureMessage { ret := contributionProofMsg(msgSK, beaconSK, msgID, beaconID, TestingDutySlot, TestingDutySlot, false, false) msg := &types.PartialSignatureMessages{ Type: types.ContributionProofs, Slot: TestingDutySlot, Messages: ret.Message.Messages[0:2], } msgSig, _ := NewTestingKeyManager().SignRoot(msg, types.PartialSignatureType, beaconSK.GetPublicKey().Serialize()) return &types.SignedPartialSignatureMessage{ Message: *msg, Signature: msgSig, Signer: msgID, } }
var PreConsensusContributionProofTooManyRootsMsg = func(msgSK, beaconSK *bls.SecretKey, msgID, beaconID types.OperatorID) *types.SignedPartialSignatureMessage { ret := contributionProofMsg(msgSK, beaconSK, msgID, beaconID, TestingDutySlot, TestingDutySlot, false, false) msg := &types.PartialSignatureMessages{ Type: types.ContributionProofs, Slot: TestingDutySlot, Messages: append(ret.Message.Messages, ret.Message.Messages[0]), } msgSig, _ := NewTestingKeyManager().SignRoot(msg, types.PartialSignatureType, beaconSK.GetPublicKey().Serialize()) return &types.SignedPartialSignatureMessage{ Message: *msg, Signature: msgSig, Signer: msgID, } }
var PreConsensusContributionProofWrongBeaconSigMsg = func(msgSK, beaconSK *bls.SecretKey, msgID, beaconID types.OperatorID) *types.SignedPartialSignatureMessage { return contributionProofMsg(msgSK, beaconSK, msgID, beaconID, TestingDutySlot, TestingDutySlot+1, false, true) }
var PreConsensusCustomSlotContributionProofMsg = func(msgSK, beaconSK *bls.SecretKey, msgID, beaconID types.OperatorID, slot phase0.Slot) *types.SignedPartialSignatureMessage { return contributionProofMsg(msgSK, beaconSK, msgID, beaconID, slot, TestingDutySlot, false, false) }
var PreConsensusCustomSlotSelectionProofMsg = func(msgSK, beaconSK *bls.SecretKey, msgID, beaconID types.OperatorID, slot phase0.Slot) *types.SignedPartialSignatureMessage { return selectionProofMsg(msgSK, beaconSK, msgID, beaconID, slot, TestingDutySlot, 1, false) }
var PreConsensusFailedMsg = func(msgSigner *bls.SecretKey, msgSignerID types.OperatorID) *types.SignedPartialSignatureMessage { signer := NewTestingKeyManager() beacon := NewTestingBeaconNode() d, _ := beacon.DomainData(TestingDutyEpoch, types.DomainRandao) signed, root, _ := signer.SignBeaconObject(types.SSZUint64(TestingDutyEpoch), d, msgSigner.GetPublicKey().Serialize(), types.DomainRandao) msg := types.PartialSignatureMessages{ Type: types.RandaoPartialSig, Slot: TestingDutySlot, Messages: []*types.PartialSignatureMessage{ { PartialSignature: signed[:], SigningRoot: root, Signer: msgSignerID, }, }, } sig, _ := signer.SignRoot(msg, types.PartialSignatureType, msgSigner.GetPublicKey().Serialize()) return &types.SignedPartialSignatureMessage{ Message: msg, Signature: sig, Signer: msgSignerID, } }
var PreConsensusRandaoDifferentEpochMsgV = func(sk *bls.SecretKey, id types.OperatorID, version spec.DataVersion) *types.SignedPartialSignatureMessage { return randaoMsgV(sk, id, false, TestingDutyEpochV(version)+1, 1, false, version) }
var PreConsensusRandaoDifferentSignerMsgV = func( msgSigner, randaoSigner *bls.SecretKey, msgSignerID, randaoSignerID types.OperatorID, version spec.DataVersion, ) *types.SignedPartialSignatureMessage { signer := NewTestingKeyManager() beacon := NewTestingBeaconNode() epoch := TestingDutyEpochV(version) d, _ := beacon.DomainData(epoch, types.DomainRandao) signed, root, _ := signer.SignBeaconObject(types.SSZUint64(epoch), d, randaoSigner.GetPublicKey().Serialize(), types.DomainRandao) msg := types.PartialSignatureMessages{ Type: types.RandaoPartialSig, Slot: TestingProposerDutyV(version).Slot, Messages: []*types.PartialSignatureMessage{ { PartialSignature: signed[:], SigningRoot: root, Signer: randaoSignerID, }, }, } sig, _ := signer.SignRoot(msg, types.PartialSignatureType, msgSigner.GetPublicKey().Serialize()) return &types.SignedPartialSignatureMessage{ Message: msg, Signature: sig, Signer: msgSignerID, } }
var PreConsensusRandaoMsg = func(sk *bls.SecretKey, id types.OperatorID) *types.SignedPartialSignatureMessage { return randaoMsg(sk, id, false, TestingDutyEpoch, 1, false) }
var PreConsensusRandaoMsgV = func(sk *bls.SecretKey, id types.OperatorID, version spec.DataVersion) *types.SignedPartialSignatureMessage { return randaoMsgV(sk, id, false, TestingDutyEpochV(version), 1, false, version) }
var PreConsensusRandaoNextEpochMsgV = func(sk *bls.SecretKey, id types.OperatorID, version spec.DataVersion) *types.SignedPartialSignatureMessage { return randaoMsgV(sk, id, false, TestingDutyEpochV(version)+1, 1, false, version) }
PreConsensusRandaoNextEpochMsgV testing for a second duty start
var PreConsensusRandaoNoMsgV = func(sk *bls.SecretKey, id types.OperatorID, version spec.DataVersion) *types.SignedPartialSignatureMessage { return randaoMsgV(sk, id, false, TestingDutyEpochV(version), 0, false, version) }
var PreConsensusRandaoTooFewRootsMsgV = func(sk *bls.SecretKey, id types.OperatorID, version spec.DataVersion) *types.SignedPartialSignatureMessage { return randaoMsgV(sk, id, false, TestingDutyEpochV(version), 0, false, version) }
var PreConsensusRandaoTooManyRootsMsgV = func(sk *bls.SecretKey, id types.OperatorID, version spec.DataVersion) *types.SignedPartialSignatureMessage { return randaoMsgV(sk, id, false, TestingDutyEpochV(version), 2, false, version) }
var PreConsensusRandaoWrongBeaconSigMsgV = func(sk *bls.SecretKey, id types.OperatorID, version spec.DataVersion) *types.SignedPartialSignatureMessage { return randaoMsgV(sk, id, false, TestingDutyEpochV(version), 1, true, version) }
var PreConsensusSelectionProofMsg = func(msgSK, beaconSK *bls.SecretKey, msgID, beaconID types.OperatorID) *types.SignedPartialSignatureMessage { return PreConsensusCustomSlotSelectionProofMsg(msgSK, beaconSK, msgID, beaconID, TestingDutySlot) }
var PreConsensusSelectionProofNextEpochMsg = func(msgSK, beaconSK *bls.SecretKey, msgID, beaconID types.OperatorID) *types.SignedPartialSignatureMessage { return selectionProofMsg(msgSK, beaconSK, msgID, beaconID, TestingDutySlot2, TestingDutySlot2, 1, false) }
var PreConsensusSelectionProofTooFewRootsMsg = func(msgSK, beaconSK *bls.SecretKey, msgID, beaconID types.OperatorID) *types.SignedPartialSignatureMessage { return selectionProofMsg(msgSK, beaconSK, msgID, beaconID, TestingDutySlot, TestingDutySlot, 0, false) }
var PreConsensusSelectionProofTooManyRootsMsg = func(msgSK, beaconSK *bls.SecretKey, msgID, beaconID types.OperatorID) *types.SignedPartialSignatureMessage { return selectionProofMsg(msgSK, beaconSK, msgID, beaconID, TestingDutySlot, TestingDutySlot, 3, false) }
var PreConsensusSelectionProofWrongBeaconSigMsg = func(msgSK, beaconSK *bls.SecretKey, msgID, beaconID types.OperatorID) *types.SignedPartialSignatureMessage { return selectionProofMsg(msgSK, beaconSK, msgID, beaconID, TestingDutySlot, TestingDutySlot, 1, true) }
var PreConsensusValidatorRegistrationMsg = func(msgSK *bls.SecretKey, msgID types.OperatorID) *types.SignedPartialSignatureMessage { return validatorRegistrationMsg(msgSK, msgSK, msgID, msgID, 1, false, TestingDutySlot, false) }
var PreConsensusValidatorRegistrationNextEpochMsg = func(msgSK *bls.SecretKey, msgID types.OperatorID) *types.SignedPartialSignatureMessage { return validatorRegistrationMsg(msgSK, msgSK, msgID, msgID, 1, false, TestingDutySlot2, false) }
var PreConsensusValidatorRegistrationTooFewRootsMsg = func(msgSK *bls.SecretKey, msgID types.OperatorID) *types.SignedPartialSignatureMessage { return validatorRegistrationMsg(msgSK, msgSK, msgID, msgID, 0, false, TestingDutySlot, false) }
var PreConsensusValidatorRegistrationTooManyRootsMsg = func(msgSK *bls.SecretKey, msgID types.OperatorID) *types.SignedPartialSignatureMessage { return validatorRegistrationMsg(msgSK, msgSK, msgID, msgID, 2, false, TestingDutySlot, false) }
var PreConsensusValidatorRegistrationWrongRootMsg = func(msgSK *bls.SecretKey, msgID types.OperatorID) *types.SignedPartialSignatureMessage { return validatorRegistrationMsg(msgSK, msgSK, msgID, msgID, 1, true, TestingDutySlot, false) }
var PreConsensusVoluntaryExitMsg = func(msgSK *bls.SecretKey, msgID types.OperatorID) *types.SignedPartialSignatureMessage { return VoluntaryExitMsg(msgSK, msgSK, msgID, msgID, 1, false, TestingDutySlot, false) }
var PreConsensusVoluntaryExitNextEpochMsg = func(msgSK *bls.SecretKey, msgID types.OperatorID) *types.SignedPartialSignatureMessage { return VoluntaryExitMsg(msgSK, msgSK, msgID, msgID, 1, false, TestingDutySlot2, false) }
var PreConsensusVoluntaryExitTooFewRootsMsg = func(msgSK *bls.SecretKey, msgID types.OperatorID) *types.SignedPartialSignatureMessage { return VoluntaryExitMsg(msgSK, msgSK, msgID, msgID, 0, false, TestingDutySlot, false) }
var PreConsensusVoluntaryExitTooManyRootsMsg = func(msgSK *bls.SecretKey, msgID types.OperatorID) *types.SignedPartialSignatureMessage { return VoluntaryExitMsg(msgSK, msgSK, msgID, msgID, 2, false, TestingDutySlot, false) }
var PreConsensusVoluntaryExitWrongRootMsg = func(msgSK *bls.SecretKey, msgID types.OperatorID) *types.SignedPartialSignatureMessage { return VoluntaryExitMsg(msgSK, msgSK, msgID, msgID, 1, true, TestingDutySlot, false) }
var PreConsensusWrongMsgSlotContributionProofMsg = func(msgSK, beaconSK *bls.SecretKey, msgID, beaconID types.OperatorID) *types.SignedPartialSignatureMessage { return contributionProofMsg(msgSK, beaconSK, msgID, beaconID, TestingDutySlot, TestingDutySlot+1, false, false) }
var PreConsensusWrongMsgSlotSelectionProofMsg = func(msgSK, beaconSK *bls.SecretKey, msgID, beaconID types.OperatorID) *types.SignedPartialSignatureMessage { return selectionProofMsg(msgSK, beaconSK, msgID, beaconID, TestingDutySlot, TestingDutySlot+1, 1, false) }
var PreConsensusWrongOrderContributionProofMsg = func(msgSK, beaconSK *bls.SecretKey, msgID, beaconID types.OperatorID) *types.SignedPartialSignatureMessage { return contributionProofMsg(msgSK, beaconSK, msgID, beaconID, TestingDutySlot, TestingDutySlot, true, false) }
var ProposerBlindedBlockRunner = func(keySet *TestKeySet) ssv.Runner { ret := baseRunner( types.BNRoleProposer, ssv.ProposerValueCheckF(NewTestingKeyManager(), types.BeaconTestNetwork, TestingValidatorPubKey[:], TestingValidatorIndex, nil), keySet, ) ret.(*ssv.ProposerRunner).ProducesBlindedBlocks = true return ret }
var ProposerMsgID = func() []byte { ret := types.NewMsgID(TestingSSVDomainType, TestingValidatorPubKey[:], types.BNRoleProposer) return ret[:] }()
var ProposerRunner = func(keySet *TestKeySet) ssv.Runner { return baseRunner(types.BNRoleProposer, ssv.ProposerValueCheckF(NewTestingKeyManager(), types.BeaconTestNetwork, TestingValidatorPubKey[:], TestingValidatorIndex, nil), keySet) }
var SSVDecidingMsgsForHeight = func(consensusData *types.ConsensusData, msgIdentifier []byte, height qbft.Height, keySet *TestKeySet) []*qbft.SignedMessage { byts, _ := consensusData.Encode() r, _ := qbft.HashDataRoot(byts) fullData, _ := consensusData.MarshalSSZ() return SSVDecidingMsgsForHeightWithRoot(r, fullData, msgIdentifier, height, keySet) }
//////////////////////////////// For SSV Tests ////////////////////////////////////////////////////////////////
var SSVDecidingMsgsForHeightWithRoot = func(root [32]byte, fullData, msgIdentifier []byte, height qbft.Height, keySet *TestKeySet) []*qbft.SignedMessage { msgs := make([]*qbft.SignedMessage, 0) s := SignQBFTMsg(keySet.Shares[1], 1, &qbft.Message{ MsgType: qbft.ProposalMsgType, Height: height, Round: qbft.FirstRound, Identifier: msgIdentifier, Root: root, }) s.FullData = fullData msgs = append(msgs, s) for i := uint64(1); i <= keySet.Threshold; i++ { msgs = append(msgs, SignQBFTMsg(keySet.Shares[types.OperatorID(i)], types.OperatorID(i), &qbft.Message{ MsgType: qbft.PrepareMsgType, Height: height, Round: qbft.FirstRound, Identifier: msgIdentifier, Root: root, })) } for i := uint64(1); i <= keySet.Threshold; i++ { msgs = append(msgs, SignQBFTMsg(keySet.Shares[types.OperatorID(i)], types.OperatorID(i), &qbft.Message{ MsgType: qbft.CommitMsgType, Height: height, Round: qbft.FirstRound, Identifier: msgIdentifier, Root: root, })) } return msgs }
var SSVDecidingMsgsV = func(consensusData *types.ConsensusData, ks *TestKeySet, role types.BeaconRole) []*types.SSVMessage { id := types.NewMsgID(TestingSSVDomainType, TestingValidatorPubKey[:], role) ssvMsgF := func(qbftMsg *qbft.SignedMessage, partialSigMsg *types.SignedPartialSignatureMessage) *types.SSVMessage { var byts []byte var msgType types.MsgType if partialSigMsg != nil { msgType = types.SSVPartialSignatureMsgType byts, _ = partialSigMsg.Encode() } else { msgType = types.SSVConsensusMsgType byts, _ = qbftMsg.Encode() } return &types.SSVMessage{ MsgType: msgType, MsgID: id, Data: byts, } } base := make([]*types.SSVMessage, 0) if role == types.BNRoleProposer { for i := uint64(1); i <= ks.Threshold; i++ { base = append(base, ssvMsgF(nil, PreConsensusRandaoMsgV(ks.Shares[types.OperatorID(i)], types.OperatorID(i), consensusData.Version))) } } if role == types.BNRoleAggregator { for i := uint64(1); i <= ks.Threshold; i++ { base = append(base, ssvMsgF(nil, PreConsensusSelectionProofMsg(ks.Shares[types.OperatorID(i)], ks.Shares[types.OperatorID(i)], types.OperatorID(i), types.OperatorID(i)))) } } if role == types.BNRoleSyncCommitteeContribution { for i := uint64(1); i <= ks.Threshold; i++ { base = append(base, ssvMsgF(nil, PreConsensusContributionProofMsg(ks.Shares[types.OperatorID(i)], ks.Shares[types.OperatorID(i)], types.OperatorID(i), types.OperatorID(i)))) } } qbftMsgs := SSVDecidingMsgsForHeight(consensusData, id[:], qbft.Height(consensusData.Duty.Slot), ks) for _, msg := range qbftMsgs { base = append(base, ssvMsgF(msg, nil)) } return base }
var SSVExpectedDecidingMsgsForHeight = func(consensusData *types.ConsensusData, msgIdentifier []byte, height qbft.Height, keySet *TestKeySet) []*qbft.SignedMessage { byts, _ := consensusData.Encode() r, _ := qbft.HashDataRoot(byts) fullData, _ := consensusData.MarshalSSZ() return SSVExpectedDecidingMsgsForHeightWithRoot(r, fullData, msgIdentifier, height, keySet) }
var SSVExpectedDecidingMsgsForHeightWithRoot = func(root [32]byte, fullData, msgIdentifier []byte, height qbft.Height, keySet *TestKeySet) []*qbft.SignedMessage { msgs := make([]*qbft.SignedMessage, 0) s := SignQBFTMsg(keySet.Shares[1], 1, &qbft.Message{ MsgType: qbft.ProposalMsgType, Height: height, Round: qbft.FirstRound, Identifier: msgIdentifier, Root: root, }) s.FullData = fullData msgs = append(msgs, s) for i := uint64(1); i <= keySet.Threshold; i++ { msgs = append(msgs, SignQBFTMsg(keySet.Shares[types.OperatorID(i)], types.OperatorID(i), &qbft.Message{ MsgType: qbft.PrepareMsgType, Height: height, Round: qbft.FirstRound, Identifier: msgIdentifier, Root: root, })) } for i := uint64(1); i <= keySet.Threshold; i++ { msgs = append(msgs, SignQBFTMsg(keySet.Shares[types.OperatorID(i)], types.OperatorID(i), &qbft.Message{ MsgType: qbft.CommitMsgType, Height: height, Round: qbft.FirstRound, Identifier: msgIdentifier, Root: root, })) } return msgs }
var SSVMsgAggregator = func(qbftMsg *qbft.SignedMessage, partialSigMsg *types.SignedPartialSignatureMessage) *types.SSVMessage { return ssvMsg(qbftMsg, partialSigMsg, types.NewMsgID(TestingSSVDomainType, TestingValidatorPubKey[:], types.BNRoleAggregator)) }
var SSVMsgAttester = func(qbftMsg *qbft.SignedMessage, partialSigMsg *types.SignedPartialSignatureMessage) *types.SSVMessage { return ssvMsg(qbftMsg, partialSigMsg, types.NewMsgID(TestingSSVDomainType, TestingValidatorPubKey[:], types.BNRoleAttester)) }
var SSVMsgProposer = func(qbftMsg *qbft.SignedMessage, partialSigMsg *types.SignedPartialSignatureMessage) *types.SSVMessage { return ssvMsg(qbftMsg, partialSigMsg, types.NewMsgID(TestingSSVDomainType, TestingValidatorPubKey[:], types.BNRoleProposer)) }
var SSVMsgSyncCommittee = func(qbftMsg *qbft.SignedMessage, partialSigMsg *types.SignedPartialSignatureMessage) *types.SSVMessage { return ssvMsg(qbftMsg, partialSigMsg, types.NewMsgID(TestingSSVDomainType, TestingValidatorPubKey[:], types.BNRoleSyncCommittee)) }
var SSVMsgSyncCommitteeContribution = func(qbftMsg *qbft.SignedMessage, partialSigMsg *types.SignedPartialSignatureMessage) *types.SSVMessage { return ssvMsg(qbftMsg, partialSigMsg, types.NewMsgID(TestingSSVDomainType, TestingValidatorPubKey[:], types.BNRoleSyncCommitteeContribution)) }
var SSVMsgValidatorRegistration = func(qbftMsg *qbft.SignedMessage, partialSigMsg *types.SignedPartialSignatureMessage) *types.SSVMessage { return ssvMsg(qbftMsg, partialSigMsg, types.NewMsgID(TestingSSVDomainType, TestingValidatorPubKey[:], types.BNRoleValidatorRegistration)) }
var SSVMsgVoluntaryExit = func(qbftMsg *qbft.SignedMessage, partialSigMsg *types.SignedPartialSignatureMessage) *types.SSVMessage { return ssvMsg(qbftMsg, partialSigMsg, types.NewMsgID(TestingSSVDomainType, TestingValidatorPubKey[:], types.BNRoleVoluntaryExit)) }
var SSVMsgWrongID = func(qbftMsg *qbft.SignedMessage, partialSigMsg *types.SignedPartialSignatureMessage) *types.SSVMessage { return ssvMsg(qbftMsg, partialSigMsg, types.NewMsgID(TestingSSVDomainType, TestingWrongValidatorPubKey[:], types.BNRoleAttester)) }
var SevenOperatorsInstance = func() *qbft.Instance { return baseInstance(TestingShare(Testing7SharesSet()), Testing7SharesSet(), []byte{1, 2, 3, 4}) }
var SignQBFTMsg = func(sk *bls.SecretKey, id types.OperatorID, msg *qbft.Message) *qbft.SignedMessage { domain := TestingSSVDomainType sigType := types.QBFTSignatureType r, _ := types.ComputeSigningRoot(msg, types.ComputeSignatureDomain(domain, sigType)) sig := sk.SignByte(r[:]) return &qbft.SignedMessage{ Message: *msg, Signers: []types.OperatorID{id}, Signature: sig.Serialize(), } }
var SupportedBlockVersions = []spec.DataVersion{spec.DataVersionCapella, spec.DataVersionDeneb}
SupportedBlockVersions is a list of supported regular/blinded beacon block versions by spec.
var SyncCommitteeContributionMsgID = func() []byte { ret := types.NewMsgID(TestingSSVDomainType, TestingValidatorPubKey[:], types.BNRoleSyncCommitteeContribution) return ret[:] }()
var SyncCommitteeContributionRunner = func(keySet *TestKeySet) ssv.Runner { return baseRunner(types.BNRoleSyncCommitteeContribution, ssv.SyncCommitteeContributionValueCheckF(NewTestingKeyManager(), types.BeaconTestNetwork, TestingValidatorPubKey[:], TestingValidatorIndex), keySet) }
var SyncCommitteeMsgID = func() []byte { ret := types.NewMsgID(TestingSSVDomainType, TestingValidatorPubKey[:], types.BNRoleSyncCommittee) return ret[:] }()
var SyncCommitteeRunner = func(keySet *TestKeySet) ssv.Runner { return baseRunner(types.BNRoleSyncCommittee, ssv.SyncCommitteeValueCheckF(NewTestingKeyManager(), types.BeaconTestNetwork, TestingValidatorPubKey[:], TestingValidatorIndex), keySet) }
var TenOperatorsInstance = func() *qbft.Instance { return baseInstance(TestingShare(Testing10SharesSet()), Testing10SharesSet(), []byte{1, 2, 3, 4}) }
var TestAggregatorConsensusData = &types.ConsensusData{ Duty: TestingAggregatorDuty, DataSSZ: TestingAggregateAndProofBytes, Version: spec.DataVersionPhase0, }
var TestAggregatorConsensusDataByts, _ = TestAggregatorConsensusData.Encode()
var TestAggregatorWithJustificationsConsensusData = func(ks *TestKeySet) *types.ConsensusData { justif := make([]*types.SignedPartialSignatureMessage, 0) for i := uint64(1); i <= ks.Threshold; i++ { justif = append(justif, PreConsensusSelectionProofMsg(ks.Shares[i], ks.Shares[i], i, i)) } return &types.ConsensusData{ Duty: TestingAggregatorDuty, Version: spec.DataVersionBellatrix, PreConsensusJustifications: justif, DataSSZ: TestingAggregateAndProofBytes, } }
var TestAttesterConsensusData = &types.ConsensusData{ Duty: TestingAttesterDuty, DataSSZ: TestingAttestationDataBytes, Version: spec.DataVersionPhase0, }
var TestAttesterConsensusDataByts, _ = TestAttesterConsensusData.Encode()
var TestAttesterNextEpochConsensusData = &types.ConsensusData{ Duty: TestingAttesterDutyNextEpoch, DataSSZ: TestingAttestationNextEpochDataBytes, Version: spec.DataVersionPhase0, }
var TestAttesterWithJustificationsConsensusData = func(ks *TestKeySet) *types.ConsensusData { justif := make([]*types.SignedPartialSignatureMessage, 0) for i := uint64(1); i <= ks.Threshold; i++ { justif = append(justif, PreConsensusRandaoMsg(ks.Shares[i], i)) } return &types.ConsensusData{ Duty: TestingAttesterDuty, Version: spec.DataVersionDeneb, PreConsensusJustifications: justif, DataSSZ: TestingAttestationDataBytes, } }
var TestConsensusUnkownDutyTypeData = &types.ConsensusData{ Duty: TestingUnknownDutyType, DataSSZ: TestingAttestationDataBytes, Version: spec.DataVersionPhase0, }
var TestConsensusUnkownDutyTypeDataByts, _ = TestConsensusUnkownDutyTypeData.Encode()
var TestConsensusWrongDutyPKData = &types.ConsensusData{ Duty: TestingWrongDutyPK, DataSSZ: TestingAttestationDataBytes, Version: spec.DataVersionPhase0, }
var TestConsensusWrongDutyPKDataByts, _ = TestConsensusWrongDutyPKData.Encode()
var TestContributionProofWithJustificationsConsensusData = func(ks *TestKeySet) *types.ConsensusData { justif := make([]*types.SignedPartialSignatureMessage, 0) for i := uint64(0); i <= ks.Threshold; i++ { justif = append(justif, PreConsensusContributionProofMsg(ks.Shares[i+1], ks.Shares[i+1], i+1, i+1)) } return &types.ConsensusData{ Duty: TestingSyncCommitteeContributionDuty, Version: spec.DataVersionDeneb, PreConsensusJustifications: justif, DataSSZ: TestingContributionsDataBytes, } }
var TestProposerBlindedBlockConsensusDataBytsV = func(version spec.DataVersion) []byte { cd := TestProposerBlindedBlockConsensusDataV(version) byts, _ := cd.Encode() return byts }
var TestProposerBlindedBlockConsensusDataV = func(version spec.DataVersion) *types.ConsensusData { return &types.ConsensusData{ Duty: *TestingProposerDutyV(version), Version: version, DataSSZ: TestingBlindedBeaconBlockBytesV(version), } }
var TestProposerBlindedWithJustificationsConsensusDataV = func(ks *TestKeySet, version spec.DataVersion) *types.ConsensusData { justif := make([]*types.SignedPartialSignatureMessage, 0) for i := uint64(0); i <= ks.Threshold; i++ { justif = append(justif, PreConsensusRandaoMsgV(ks.Shares[i+1], i+1, version)) } cd := TestProposerBlindedBlockConsensusDataV(version) cd.PreConsensusJustifications = justif return cd }
var TestProposerConsensusDataBytsV = func(version spec.DataVersion) []byte { cd := TestProposerConsensusDataV(version) byts, _ := cd.Encode() return byts }
var TestProposerConsensusDataV = func(version spec.DataVersion) *types.ConsensusData { duty := TestingProposerDutyV(version) return &types.ConsensusData{ Duty: *duty, Version: version, DataSSZ: TestingBeaconBlockBytesV(version), } }
var TestProposerWithJustificationsConsensusDataV = func(ks *TestKeySet, version spec.DataVersion) *types.ConsensusData { justif := make([]*types.SignedPartialSignatureMessage, 0) for i := uint64(0); i <= ks.Threshold; i++ { justif = append(justif, PreConsensusRandaoMsgV(ks.Shares[i+1], i+1, version)) } cd := TestProposerConsensusDataV(version) cd.PreConsensusJustifications = justif return cd }
var TestSelectionProofWithJustificationsConsensusData = func(ks *TestKeySet) *types.ConsensusData { justif := make([]*types.SignedPartialSignatureMessage, 0) for i := uint64(0); i <= ks.Threshold; i++ { justif = append(justif, PreConsensusSelectionProofMsg(ks.Shares[i+1], ks.Shares[i+1], i+1, i+1)) } return &types.ConsensusData{ Duty: TestingAggregatorDuty, Version: spec.DataVersionDeneb, PreConsensusJustifications: justif, DataSSZ: TestingAggregateAndProofBytes, } }
var TestSyncCommitteeConsensusData = &types.ConsensusData{ Duty: TestingSyncCommitteeDuty, DataSSZ: TestingSyncCommitteeBlockRoot[:], Version: spec.DataVersionPhase0, }
var TestSyncCommitteeConsensusDataByts, _ = TestSyncCommitteeConsensusData.Encode()
var TestSyncCommitteeContributionConsensusData = &types.ConsensusData{ Duty: TestingSyncCommitteeContributionDuty, DataSSZ: TestingContributionsDataBytes, Version: spec.DataVersionPhase0, }
var TestSyncCommitteeContributionConsensusDataByts, _ = TestSyncCommitteeContributionConsensusData.Encode()
var TestSyncCommitteeContributionConsensusDataRoot = func() [32]byte { return sha256.Sum256(TestSyncCommitteeContributionConsensusDataByts) }()
var TestSyncCommitteeNextEpochConsensusData = &types.ConsensusData{ Duty: TestingSyncCommitteeDutyNextEpoch, DataSSZ: TestingSyncCommitteeBlockRoot[:], Version: spec.DataVersionPhase0, }
var TestSyncCommitteeNextEpochConsensusDataByts, _ = TestSyncCommitteeNextEpochConsensusData.Encode()
var TestSyncCommitteeWithJustificationsConsensusData = func(ks *TestKeySet) *types.ConsensusData { justif := make([]*types.SignedPartialSignatureMessage, 0) for i := uint64(0); i <= ks.Threshold; i++ { justif = append(justif, PreConsensusRandaoMsg(ks.Shares[i+1], i+1)) } return &types.ConsensusData{ Duty: TestingSyncCommitteeDuty, Version: spec.DataVersionDeneb, PreConsensusJustifications: justif, DataSSZ: TestingSyncCommitteeBlockRoot[:], } }
TestSyncCommitteeWithJustificationsConsensusData is an invalid sync committee msg (doesn't have pre-consensus)
var TestingAggregateAndProof = &phase0.AggregateAndProof{ AggregatorIndex: 1, SelectionProof: phase0.BLSSignature{}, Aggregate: &phase0.Attestation{ AggregationBits: bitfield.NewBitlist(128), Signature: phase0.BLSSignature{}, Data: TestingAttestationData, }, }
var TestingAggregateAndProofBytes = func() []byte { ret, _ := TestingAggregateAndProof.MarshalSSZ() return ret }()
var TestingAggregatorDuty = types.Duty{ Type: types.BNRoleAggregator, PubKey: TestingValidatorPubKey, Slot: TestingDutySlot, ValidatorIndex: TestingValidatorIndex, CommitteeIndex: 22, CommitteesAtSlot: 36, CommitteeLength: 128, ValidatorCommitteeIndex: 11, }
var TestingAggregatorDutyFirstSlot = types.Duty{ Type: types.BNRoleAggregator, PubKey: TestingValidatorPubKey, Slot: 0, ValidatorIndex: TestingValidatorIndex, CommitteeIndex: 22, CommitteesAtSlot: 36, CommitteeLength: 128, ValidatorCommitteeIndex: 11, }
TestingAggregatorDutyFirstSlot
var TestingAggregatorDutyNextEpoch = types.Duty{ Type: types.BNRoleAggregator, PubKey: TestingValidatorPubKey, Slot: TestingDutySlot2, ValidatorIndex: TestingValidatorIndex, CommitteeIndex: 22, CommitteesAtSlot: 36, CommitteeLength: 128, ValidatorCommitteeIndex: 11, }
TestingAggregatorDutyNextEpoch testing for a second duty start
var TestingAttestationData = &phase0.AttestationData{ Slot: TestingDutySlot, Index: 3, BeaconBlockRoot: 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: 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: &phase0.Checkpoint{ Epoch: 1, 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}, }, }
var TestingAttestationDataBytes = func() []byte { ret, _ := TestingAttestationData.MarshalSSZ() return ret }()
var TestingAttestationNextEpochData = &phase0.AttestationData{ Slot: TestingDutySlot2, Index: 3, BeaconBlockRoot: 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: 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: &phase0.Checkpoint{ Epoch: 1, 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}, }, }
var TestingAttestationNextEpochDataBytes = func() []byte { ret, _ := TestingAttestationNextEpochData.MarshalSSZ() return ret }()
var TestingAttesterDuty = types.Duty{ Type: types.BNRoleAttester, PubKey: TestingValidatorPubKey, Slot: TestingDutySlot, ValidatorIndex: TestingValidatorIndex, CommitteeIndex: 3, CommitteesAtSlot: 36, CommitteeLength: 128, ValidatorCommitteeIndex: 11, }
var TestingAttesterDutyFirstSlot = types.Duty{ Type: types.BNRoleAttester, PubKey: TestingValidatorPubKey, Slot: 0, ValidatorIndex: TestingValidatorIndex, CommitteeIndex: 3, CommitteesAtSlot: 36, CommitteeLength: 128, ValidatorCommitteeIndex: 11, }
TestingAttesterDutyFirstSlot
var TestingAttesterDutyNextEpoch = types.Duty{ Type: types.BNRoleAttester, PubKey: TestingValidatorPubKey, Slot: TestingDutySlot2, ValidatorIndex: TestingValidatorIndex, CommitteeIndex: 3, CommitteesAtSlot: 36, CommitteeLength: 128, ValidatorCommitteeIndex: 11, }
var TestingAttesterNextEpochConsensusDataByts, _ = TestAttesterNextEpochConsensusData.Encode()
var TestingBeaconBlockBytesV = func(version spec.DataVersion) []byte { var ret []byte vBlk := TestingBeaconBlockV(version) switch version { case spec.DataVersionCapella: if vBlk.Capella == nil { panic("empty block") } ret, _ = vBlk.Capella.MarshalSSZ() case spec.DataVersionDeneb: if vBlk.Deneb == nil { panic("empty block") } ret, _ = vBlk.Deneb.MarshalSSZ() default: panic("unsupported version") } return ret }
var TestingBeaconBlockCapella = func() *capella.BeaconBlock { var res capella.BeaconBlock err := json.Unmarshal(capellaBlock, &res) if err != nil { panic(err) } res.Slot = TestingDutySlotCapella return &res }()
var TestingBeaconBlockV = func(version spec.DataVersion) *api.VersionedProposal { switch version { case spec.DataVersionCapella: return &api.VersionedProposal{ Version: version, Capella: TestingBeaconBlockCapella, } case spec.DataVersionDeneb: return &api.VersionedProposal{ Version: version, Deneb: TestingBlockContentsDeneb, } default: panic("unsupported version") } }
var TestingBlindedBeaconBlockBytesV = func(version spec.DataVersion) []byte { var ret []byte vBlk := TestingBlindedBeaconBlockV(version) switch version { case spec.DataVersionCapella: if vBlk.Capella == nil { panic("empty block") } ret, _ = vBlk.Capella.MarshalSSZ() case spec.DataVersionDeneb: if vBlk.Deneb == nil { panic("empty block") } ret, _ = vBlk.Deneb.MarshalSSZ() default: panic("unsupported version") } return ret }
var TestingBlindedBeaconBlockCapella = func() *apiv1capella.BlindedBeaconBlock { fullBlk := TestingBeaconBlockCapella txRoot, _ := types.SSZTransactions(fullBlk.Body.ExecutionPayload.Transactions).HashTreeRoot() withdrawalsRoot, _ := types.SSZWithdrawals(fullBlk.Body.ExecutionPayload.Withdrawals).HashTreeRoot() ret := &apiv1capella.BlindedBeaconBlock{ Slot: fullBlk.Slot, ProposerIndex: fullBlk.ProposerIndex, ParentRoot: fullBlk.ParentRoot, StateRoot: fullBlk.StateRoot, Body: &apiv1capella.BlindedBeaconBlockBody{ RANDAOReveal: fullBlk.Body.RANDAOReveal, ETH1Data: fullBlk.Body.ETH1Data, Graffiti: fullBlk.Body.Graffiti, ProposerSlashings: fullBlk.Body.ProposerSlashings, AttesterSlashings: fullBlk.Body.AttesterSlashings, Attestations: fullBlk.Body.Attestations, Deposits: fullBlk.Body.Deposits, VoluntaryExits: fullBlk.Body.VoluntaryExits, SyncAggregate: fullBlk.Body.SyncAggregate, ExecutionPayloadHeader: &capella.ExecutionPayloadHeader{ ParentHash: fullBlk.Body.ExecutionPayload.ParentHash, FeeRecipient: fullBlk.Body.ExecutionPayload.FeeRecipient, StateRoot: fullBlk.Body.ExecutionPayload.StateRoot, ReceiptsRoot: fullBlk.Body.ExecutionPayload.ReceiptsRoot, LogsBloom: fullBlk.Body.ExecutionPayload.LogsBloom, PrevRandao: fullBlk.Body.ExecutionPayload.PrevRandao, BlockNumber: fullBlk.Body.ExecutionPayload.BlockNumber, GasLimit: fullBlk.Body.ExecutionPayload.GasLimit, GasUsed: fullBlk.Body.ExecutionPayload.GasUsed, Timestamp: fullBlk.Body.ExecutionPayload.Timestamp, ExtraData: fullBlk.Body.ExecutionPayload.ExtraData, BaseFeePerGas: fullBlk.Body.ExecutionPayload.BaseFeePerGas, BlockHash: fullBlk.Body.ExecutionPayload.BlockHash, TransactionsRoot: txRoot, WithdrawalsRoot: withdrawalsRoot, }, BLSToExecutionChanges: fullBlk.Body.BLSToExecutionChanges, }, } return ret }()
var TestingBlindedBeaconBlockDeneb = func() *apiv1deneb.BlindedBeaconBlock { blockContents := TestingBlockContentsDeneb txRoot, _ := types.SSZTransactions(blockContents.Block.Body.ExecutionPayload.Transactions).HashTreeRoot() withdrawalsRoot, _ := types.SSZWithdrawals(blockContents.Block.Body.ExecutionPayload.Withdrawals).HashTreeRoot() ret := &apiv1deneb.BlindedBeaconBlock{ Slot: blockContents.Block.Slot, ProposerIndex: blockContents.Block.ProposerIndex, ParentRoot: blockContents.Block.ParentRoot, StateRoot: blockContents.Block.StateRoot, Body: &apiv1deneb.BlindedBeaconBlockBody{ RANDAOReveal: blockContents.Block.Body.RANDAOReveal, ETH1Data: blockContents.Block.Body.ETH1Data, Graffiti: blockContents.Block.Body.Graffiti, ProposerSlashings: blockContents.Block.Body.ProposerSlashings, AttesterSlashings: blockContents.Block.Body.AttesterSlashings, Attestations: blockContents.Block.Body.Attestations, Deposits: blockContents.Block.Body.Deposits, VoluntaryExits: blockContents.Block.Body.VoluntaryExits, SyncAggregate: blockContents.Block.Body.SyncAggregate, ExecutionPayloadHeader: &deneb.ExecutionPayloadHeader{ ParentHash: blockContents.Block.Body.ExecutionPayload.ParentHash, FeeRecipient: blockContents.Block.Body.ExecutionPayload.FeeRecipient, StateRoot: blockContents.Block.Body.ExecutionPayload.StateRoot, ReceiptsRoot: blockContents.Block.Body.ExecutionPayload.ReceiptsRoot, LogsBloom: blockContents.Block.Body.ExecutionPayload.LogsBloom, PrevRandao: blockContents.Block.Body.ExecutionPayload.PrevRandao, BlockNumber: blockContents.Block.Body.ExecutionPayload.BlockNumber, GasLimit: blockContents.Block.Body.ExecutionPayload.GasLimit, GasUsed: blockContents.Block.Body.ExecutionPayload.GasUsed, Timestamp: blockContents.Block.Body.ExecutionPayload.Timestamp, ExtraData: blockContents.Block.Body.ExecutionPayload.ExtraData, BaseFeePerGas: blockContents.Block.Body.ExecutionPayload.BaseFeePerGas, BlockHash: blockContents.Block.Body.ExecutionPayload.BlockHash, TransactionsRoot: txRoot, WithdrawalsRoot: withdrawalsRoot, BlobGasUsed: blockContents.Block.Body.ExecutionPayload.BlobGasUsed, ExcessBlobGas: blockContents.Block.Body.ExecutionPayload.ExcessBlobGas, }, BLSToExecutionChanges: blockContents.Block.Body.BLSToExecutionChanges, BlobKZGCommitments: blockContents.Block.Body.BlobKZGCommitments, }, } return ret }()
var TestingBlindedBeaconBlockV = func(version spec.DataVersion) *api.VersionedBlindedProposal { switch version { case spec.DataVersionCapella: return &api.VersionedBlindedProposal{ Version: version, Capella: TestingBlindedBeaconBlockCapella, } case spec.DataVersionDeneb: return &api.VersionedBlindedProposal{ Version: version, Deneb: TestingBlindedBeaconBlockDeneb, } default: panic("unsupported version") } }
var TestingBlockContentsDeneb = func() *apiv1deneb.BlockContents { var res apiv1deneb.BlockContents if err := json.Unmarshal(denebBlockContents, &res); err != nil { panic(err) } res.Block.Slot = ForkEpochPraterDeneb return &res }()
var TestingCommitMessage = func(sk *bls.SecretKey, id types.OperatorID) *qbft.SignedMessage { return TestingCommitMessageWithRound(sk, id, qbft.FirstRound) }
* Commit messages
var TestingCommitMessageWithHeight = func(sk *bls.SecretKey, id types.OperatorID, height qbft.Height) *qbft.SignedMessage { return TestingCommitMessageWithParams(sk, id, qbft.FirstRound, height, TestingIdentifier, TestingQBFTRootData) }
var TestingCommitMessageWithIdentifierAndRoot = func(sk *bls.SecretKey, id types.OperatorID, identifier []byte, root [32]byte) *qbft.SignedMessage { msg := &qbft.Message{ MsgType: qbft.CommitMsgType, Height: qbft.FirstHeight, Round: qbft.FirstRound, Identifier: identifier, Root: root, } ret := SignQBFTMsg(sk, id, msg) ret.FullData = []byte{} return ret }
var TestingCommitMessageWithParams = func( sk *bls.SecretKey, id types.OperatorID, round qbft.Round, height qbft.Height, identifier []byte, root [32]byte, ) *qbft.SignedMessage { msg := &qbft.Message{ MsgType: qbft.CommitMsgType, Height: height, Round: round, Identifier: identifier, Root: root, } ret := SignQBFTMsg(sk, id, msg) return ret }
var TestingCommitMessageWithRound = func(sk *bls.SecretKey, id types.OperatorID, round qbft.Round) *qbft.SignedMessage { return TestingCommitMessageWithParams(sk, id, round, qbft.FirstHeight, TestingIdentifier, TestingQBFTRootData) }
var TestingCommitMessageWrongHeight = func(sk *bls.SecretKey, id types.OperatorID) *qbft.SignedMessage { return TestingCommitMessageWithParams(sk, id, qbft.FirstRound, 10, TestingIdentifier, DifferentRoot) }
var TestingCommitMessageWrongRoot = func(sk *bls.SecretKey, id types.OperatorID) *qbft.SignedMessage { return TestingCommitMessageWithParams(sk, id, qbft.FirstRound, qbft.FirstHeight, TestingIdentifier, DifferentRoot) }
var TestingCommitMultiSignerMessage = func(sks []*bls.SecretKey, ids []types.OperatorID) *qbft.SignedMessage { return TestingCommitMultiSignerMessageWithRound(sks, ids, qbft.FirstRound) }
var TestingCommitMultiSignerMessageWithHeight = func(sks []*bls.SecretKey, ids []types.OperatorID, height qbft.Height) *qbft.SignedMessage { return TestingCommitMultiSignerMessageWithParams(sks, ids, qbft.FirstRound, height, TestingIdentifier, TestingQBFTRootData, TestingQBFTFullData) }
var TestingCommitMultiSignerMessageWithHeightAndIdentifier = func(sks []*bls.SecretKey, ids []types.OperatorID, height qbft.Height, identifier []byte) *qbft.SignedMessage { return TestingCommitMultiSignerMessageWithParams(sks, ids, qbft.FirstRound, height, identifier, TestingQBFTRootData, TestingQBFTFullData) }
var TestingCommitMultiSignerMessageWithParams = func( sks []*bls.SecretKey, ids []types.OperatorID, round qbft.Round, height qbft.Height, identifier []byte, root [32]byte, fullData []byte, ) *qbft.SignedMessage { msg := &qbft.Message{ MsgType: qbft.CommitMsgType, Height: height, Round: round, Identifier: identifier, Root: root, } ret := MultiSignQBFTMsg(sks, ids, msg) ret.FullData = fullData return ret }
var TestingCommitMultiSignerMessageWithRound = func(sks []*bls.SecretKey, ids []types.OperatorID, round qbft.Round) *qbft.SignedMessage { return TestingCommitMultiSignerMessageWithParams(sks, ids, round, qbft.FirstHeight, TestingIdentifier, TestingQBFTRootData, TestingQBFTFullData) }
var TestingConfig = func(keySet *TestKeySet) *qbft.Config { return &qbft.Config{ Signer: NewTestingKeyManager(), SigningPK: keySet.Shares[1].GetPublicKey().Serialize(), Domain: TestingSSVDomainType, ValueCheckF: func(data []byte) error { if bytes.Equal(data, TestingInvalidValueCheck) { return errors.New("invalid value") } if len(data) == 0 { return errors.New("invalid value") } return nil }, ProposerF: func(state *qbft.State, round qbft.Round) types.OperatorID { return 1 }, Network: NewTestingNetwork(), Timer: NewTestingTimer(), } }
var TestingContributionProofIndexes = []uint64{0, 1, 2}
var TestingContributionProofsSigned = func() []phase0.BLSSignature { byts1, _ := hex.DecodeString("b18833bb7549ec33e8ac414ba002fd45bb094ca300bd24596f04a434a89beea462401da7c6b92fb3991bd17163eb603604a40e8dd6781266c990023446776ff42a9313df26a0a34184a590e57fa4003d610c2fa214db4e7dec468592010298bc") byts2, _ := hex.DecodeString("9094342c95146554df849dc20f7425fca692dacee7cb45258ddd264a8e5929861469fda3d1567b9521cba83188ffd61a0dbe6d7180c7a96f5810d18db305e9143772b766d368aa96d3751f98d0ce2db9f9e6f26325702088d87f0de500c67c68") byts3, _ := hex.DecodeString("a7f88ce43eff3aa8cdd2e3957c5bead4e21353fbecac6079a5398d03019bc45ff7c951785172deee70e9bc5abbc8ca6a0f0441e9d4cc9da74c31121357f7d7c7de9533f6f457da493e3314e22d554ab76613e469b050e246aff539a33807197c") ret := make([]phase0.BLSSignature, 0) for _, byts := range [][]byte{byts1, byts2, byts3} { b := phase0.BLSSignature{} copy(b[:], byts) ret = append(ret, b) } return ret }()
var TestingContributionsData = func() types.Contributions { d := types.Contributions{} d = append(d, &types.Contribution{ SelectionProofSig: TestingContributionProofsSigned[0], Contribution: *TestingSyncCommitteeContributions[0], }) d = append(d, &types.Contribution{ SelectionProofSig: TestingContributionProofsSigned[1], Contribution: *TestingSyncCommitteeContributions[1], }) d = append(d, &types.Contribution{ SelectionProofSig: TestingContributionProofsSigned[2], Contribution: *TestingSyncCommitteeContributions[2], }) return d }()
var TestingContributionsDataBytes = func() []byte { ret, _ := TestingContributionsData.MarshalSSZ() return ret }()
var TestingDutyEpochV = func(version spec.DataVersion) phase0.Epoch { switch version { case spec.DataVersionCapella: return TestingDutyEpochCapella case spec.DataVersionDeneb: return TestingDutyEpochDeneb default: panic("unsupported version") } }
var TestingDutySlotV = func(version spec.DataVersion) phase0.Slot { switch version { case spec.DataVersionCapella: return TestingDutySlotCapella case spec.DataVersionDeneb: return TestingDutySlotDeneb default: panic("unsupported version") } }
var TestingFeeRecipient = bellatrix.ExecutionAddress(ethAddressFromHex("535953b5a6040074948cf185eaa7d2abbd66808f"))
var TestingForkData = types.ForkData{Epoch: TestingDutyEpoch, Domain: TestingSSVDomainType}
var TestingHighestDecidedSlot = phase0.Slot(0)
var TestingIdentifier = []byte{1, 2, 3, 4}
var TestingInvalidDutySlotV = func(version spec.DataVersion) phase0.Slot { switch version { case spec.DataVersionCapella: return TestingDutySlotCapellaInvalid case spec.DataVersionDeneb: return TestingDutySlotDenebInvalid default: panic("unsupported version") } }
var TestingInvalidMessage = func(sk *bls.SecretKey, id types.OperatorID, msgType qbft.MessageType) *qbft.SignedMessage { return TestingMultiSignerInvalidMessage([]*bls.SecretKey{sk}, []types.OperatorID{id}, msgType) }
var TestingInvalidValueCheck = []byte{1, 1, 1, 1}
var TestingMultiSignerInvalidMessage = func(sks []*bls.SecretKey, ids []types.OperatorID, msgType qbft.MessageType) *qbft.SignedMessage { msg := &qbft.Message{ MsgType: msgType, Height: qbft.FirstHeight, Round: qbft.FirstRound, Identifier: []byte{}, Root: TestingQBFTRootData, } ret := MultiSignQBFTMsg(sks, ids, msg) ret.FullData = TestingQBFTFullData return ret }
var TestingMultiSignerProposalMessage = func(sks []*bls.SecretKey, ids []types.OperatorID) *qbft.SignedMessage { return TestingMultiSignerProposalMessageWithParams(sks, ids, qbft.FirstRound, qbft.FirstHeight, TestingIdentifier, TestingQBFTFullData, TestingQBFTRootData) }
var TestingMultiSignerProposalMessageWithHeight = func(sks []*bls.SecretKey, ids []types.OperatorID, height qbft.Height) *qbft.SignedMessage { return TestingMultiSignerProposalMessageWithParams(sks, ids, qbft.FirstRound, height, TestingIdentifier, TestingQBFTFullData, TestingQBFTRootData) }
var TestingMultiSignerProposalMessageWithParams = func( sk []*bls.SecretKey, id []types.OperatorID, round qbft.Round, height qbft.Height, identifier, fullData []byte, root [32]byte, ) *qbft.SignedMessage { msg := &qbft.Message{ MsgType: qbft.ProposalMsgType, Height: height, Round: round, Identifier: identifier, Root: root, } ret := MultiSignQBFTMsg(sk, id, msg) ret.FullData = fullData return ret }
var TestingMultiSignerRoundChangeMessage = func(sks []*bls.SecretKey, ids []types.OperatorID) *qbft.SignedMessage { return TestingMultiSignerRoundChangeMessageWithParams(sks, ids, qbft.FirstRound, qbft.FirstHeight, TestingQBFTRootData) }
var TestingMultiSignerRoundChangeMessageWithHeight = func(sks []*bls.SecretKey, ids []types.OperatorID, height qbft.Height) *qbft.SignedMessage { return TestingMultiSignerRoundChangeMessageWithParams(sks, ids, qbft.FirstRound, height, TestingQBFTRootData) }
var TestingMultiSignerRoundChangeMessageWithParams = func(sk []*bls.SecretKey, id []types.OperatorID, round qbft.Round, height qbft.Height, root [32]byte) *qbft.SignedMessage { msg := &qbft.Message{ MsgType: qbft.RoundChangeMsgType, Height: height, Round: round, Identifier: TestingIdentifier, Root: root, } ret := MultiSignQBFTMsg(sk, id, msg) ret.FullData = TestingQBFTFullData return ret }
var TestingMultiSignerRoundChangeMessageWithRound = func(sks []*bls.SecretKey, ids []types.OperatorID, round qbft.Round) *qbft.SignedMessage { return TestingMultiSignerRoundChangeMessageWithParams(sks, ids, round, qbft.FirstHeight, TestingQBFTRootData) }
var TestingPrepareMessage = func(sk *bls.SecretKey, id types.OperatorID) *qbft.SignedMessage { return TestingPrepareMessageWithRound(sk, id, qbft.FirstRound) }
* Prepare messages
var TestingPrepareMessageWithFullData = func(sk *bls.SecretKey, id types.OperatorID, fullData []byte) *qbft.SignedMessage { msg := &qbft.Message{ MsgType: qbft.PrepareMsgType, Height: qbft.FirstHeight, Round: qbft.FirstRound, Identifier: TestingIdentifier, Root: sha256.Sum256(fullData), } ret := SignQBFTMsg(sk, id, msg) ret.FullData = fullData return ret }
var TestingPrepareMessageWithHeight = func(sk *bls.SecretKey, id types.OperatorID, height qbft.Height) *qbft.SignedMessage { return TestingPrepareMessageWithParams(sk, id, qbft.FirstRound, height, TestingIdentifier, TestingQBFTRootData) }
var TestingPrepareMessageWithIdentifierAndRoot = func(sk *bls.SecretKey, id types.OperatorID, identifier []byte, root [32]byte) *qbft.SignedMessage { msg := &qbft.Message{ MsgType: qbft.PrepareMsgType, Height: qbft.FirstHeight, Round: qbft.FirstRound, Identifier: identifier, Root: root, RoundChangeJustification: [][]byte{}, PrepareJustification: [][]byte{}, } ret := SignQBFTMsg(sk, id, msg) ret.FullData = []byte{} return ret }
var TestingPrepareMessageWithParams = func( sk *bls.SecretKey, id types.OperatorID, round qbft.Round, height qbft.Height, identifier []byte, root [32]byte, ) *qbft.SignedMessage { msg := &qbft.Message{ MsgType: qbft.PrepareMsgType, Height: height, Round: round, Identifier: identifier, Root: root, } ret := SignQBFTMsg(sk, id, msg) ret.FullData = TestingQBFTFullData return ret }
var TestingPrepareMessageWithRound = func(sk *bls.SecretKey, id types.OperatorID, round qbft.Round) *qbft.SignedMessage { return TestingPrepareMessageWithParams(sk, id, round, qbft.FirstHeight, TestingIdentifier, TestingQBFTRootData) }
var TestingPrepareMessageWithRoundAndFullData = func( sk *bls.SecretKey, id types.OperatorID, round qbft.Round, fullData []byte, ) *qbft.SignedMessage { msg := &qbft.Message{ MsgType: qbft.PrepareMsgType, Height: qbft.FirstHeight, Round: round, Identifier: TestingIdentifier, Root: sha256.Sum256(fullData), } ret := SignQBFTMsg(sk, id, msg) ret.FullData = fullData return ret }
var TestingPrepareMessageWrongRoot = func(sk *bls.SecretKey, id types.OperatorID) *qbft.SignedMessage { return TestingPrepareMessageWithParams(sk, id, qbft.FirstRound, qbft.FirstHeight, TestingIdentifier, DifferentRoot) }
var TestingPrepareMultiSignerMessage = func(sks []*bls.SecretKey, ids []types.OperatorID) *qbft.SignedMessage { return TestingPrepareMultiSignerMessageWithRound(sks, ids, qbft.FirstRound) }
var TestingPrepareMultiSignerMessageWithHeight = func(sks []*bls.SecretKey, ids []types.OperatorID, height qbft.Height) *qbft.SignedMessage { return TestingPrepareMultiSignerMessageWithParams(sks, ids, qbft.FirstRound, height, TestingIdentifier, TestingQBFTRootData) }
var TestingPrepareMultiSignerMessageWithHeightAndIdentifier = func(sks []*bls.SecretKey, ids []types.OperatorID, height qbft.Height, identifier []byte) *qbft.SignedMessage { return TestingPrepareMultiSignerMessageWithParams(sks, ids, qbft.FirstRound, height, identifier, TestingQBFTRootData) }
var TestingPrepareMultiSignerMessageWithParams = func(sks []*bls.SecretKey, ids []types.OperatorID, round qbft.Round, height qbft.Height, identifier []byte, root [32]byte) *qbft.SignedMessage { msg := &qbft.Message{ MsgType: qbft.PrepareMsgType, Height: height, Round: round, Identifier: identifier, Root: root, } ret := MultiSignQBFTMsg(sks, ids, msg) ret.FullData = TestingQBFTFullData return ret }
var TestingPrepareMultiSignerMessageWithRound = func(sks []*bls.SecretKey, ids []types.OperatorID, round qbft.Round) *qbft.SignedMessage { return TestingPrepareMultiSignerMessageWithParams(sks, ids, round, qbft.FirstHeight, TestingIdentifier, TestingQBFTRootData) }
var TestingProposalMessage = func(sk *bls.SecretKey, id types.OperatorID) *qbft.SignedMessage { return TestingProposalMessageWithRound(sk, id, qbft.FirstRound) }
* Proposal messages
var TestingProposalMessageDifferentRoot = func(sk *bls.SecretKey, id types.OperatorID) *qbft.SignedMessage { msg := &qbft.Message{ MsgType: qbft.ProposalMsgType, Height: qbft.FirstHeight, Round: qbft.FirstRound, Identifier: TestingIdentifier, Root: DifferentRoot, } ret := SignQBFTMsg(sk, id, msg) ret.FullData = DifferentFullData return ret }
var TestingProposalMessageWithHeight = func(sk *bls.SecretKey, id types.OperatorID, height qbft.Height) *qbft.SignedMessage { return TestingProposalMessageWithParams(sk, id, qbft.FirstRound, height, TestingQBFTRootData, nil, nil) }
var TestingProposalMessageWithID = func(sk *bls.SecretKey, id types.OperatorID, msgID types.MessageID) *qbft.SignedMessage { ret := TestingProposalMessageWithRound(sk, id, qbft.FirstRound) ret.Message.Identifier = msgID[:] ret.Signature = SignQBFTMsg(sk, id, &ret.Message).Signature return ret }
var TestingProposalMessageWithParams = func( sk *bls.SecretKey, id types.OperatorID, round qbft.Round, height qbft.Height, root [32]byte, roundChangeJustification [][]byte, prepareJustification [][]byte, ) *qbft.SignedMessage { msg := &qbft.Message{ MsgType: qbft.ProposalMsgType, Height: height, Round: round, Identifier: TestingIdentifier, Root: root, RoundChangeJustification: roundChangeJustification, PrepareJustification: prepareJustification, } ret := SignQBFTMsg(sk, id, msg) ret.FullData = TestingQBFTFullData return ret }
var TestingProposalMessageWithRound = func(sk *bls.SecretKey, id types.OperatorID, round qbft.Round) *qbft.SignedMessage { return TestingProposalMessageWithParams(sk, id, round, qbft.FirstHeight, TestingQBFTRootData, nil, nil) }
var TestingProposalMessageWithRoundAndRC = func(sk *bls.SecretKey, id types.OperatorID, round qbft.Round, roundChangeJustification [][]byte) *qbft.SignedMessage { return TestingProposalMessageWithParams(sk, id, round, qbft.FirstHeight, TestingQBFTRootData, roundChangeJustification, nil) }
var TestingProposerDutyFirstSlot = types.Duty{ Type: types.BNRoleProposer, PubKey: TestingValidatorPubKey, Slot: 0, ValidatorIndex: TestingValidatorIndex, }
TestingProposerDutyFirstSlot
var TestingProposerDutyNextEpochV = func(version spec.DataVersion) *types.Duty { duty := &types.Duty{ Type: types.BNRoleProposer, PubKey: TestingValidatorPubKey, ValidatorIndex: TestingValidatorIndex, CommitteeIndex: 3, CommitteesAtSlot: 36, CommitteeLength: 128, ValidatorCommitteeIndex: 11, } switch version { case spec.DataVersionCapella: duty.Slot = TestingDutySlotCapellaNextEpoch case spec.DataVersionDeneb: duty.Slot = TestingDutySlotDenebNextEpoch default: panic("unsupported version") } return duty }
var TestingProposerDutyV = func(version spec.DataVersion) *types.Duty { duty := &types.Duty{ Type: types.BNRoleProposer, PubKey: TestingValidatorPubKey, Slot: TestingDutySlotV(version), ValidatorIndex: TestingValidatorIndex, CommitteeIndex: 3, CommitteesAtSlot: 36, CommitteeLength: 128, ValidatorCommitteeIndex: 11, } return duty }
var TestingQBFTFullData = []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9}
var TestingQBFTRootData = func() [32]byte { return sha256.Sum256(TestingQBFTFullData) }()
var TestingRoundChangeMessage = func(sk *bls.SecretKey, id types.OperatorID) *qbft.SignedMessage { return TestingRoundChangeMessageWithRound(sk, id, qbft.FirstRound) }
* Round Change messages
var TestingRoundChangeMessageWithHeight = func(sk *bls.SecretKey, id types.OperatorID, height qbft.Height) *qbft.SignedMessage { return TestingRoundChangeMessageWithParams(sk, id, qbft.FirstRound, height, TestingQBFTRootData, qbft.NoRound, nil) }
var TestingRoundChangeMessageWithHeightAndIdentifier = func(sk *bls.SecretKey, id types.OperatorID, height qbft.Height, identifier []byte) *qbft.SignedMessage { msg := &qbft.Message{ MsgType: qbft.RoundChangeMsgType, Height: height, Round: qbft.FirstRound, Identifier: TestingIdentifier, Root: TestingQBFTRootData, } ret := SignQBFTMsg(sk, id, msg) ret.FullData = TestingQBFTFullData return ret }
var TestingRoundChangeMessageWithParams = func( sk *bls.SecretKey, id types.OperatorID, round qbft.Round, height qbft.Height, root [32]byte, dataRound qbft.Round, roundChangeJustification [][]byte, ) *qbft.SignedMessage { msg := &qbft.Message{ MsgType: qbft.RoundChangeMsgType, Height: height, Round: round, Identifier: TestingIdentifier, Root: root, DataRound: dataRound, RoundChangeJustification: roundChangeJustification, } ret := SignQBFTMsg(sk, id, msg) ret.FullData = TestingQBFTFullData return ret }
var TestingRoundChangeMessageWithParamsAndFullData = func( sk *bls.SecretKey, id types.OperatorID, round qbft.Round, height qbft.Height, root [32]byte, dataRound qbft.Round, fullData []byte, roundChangeJustification [][]byte, ) *qbft.SignedMessage { msg := &qbft.Message{ MsgType: qbft.RoundChangeMsgType, Height: height, Round: round, Identifier: TestingIdentifier, Root: root, DataRound: dataRound, RoundChangeJustification: roundChangeJustification, } ret := SignQBFTMsg(sk, id, msg) ret.FullData = fullData return ret }
var TestingRoundChangeMessageWithRound = func(sk *bls.SecretKey, id types.OperatorID, round qbft.Round) *qbft.SignedMessage { return TestingRoundChangeMessageWithParams(sk, id, round, qbft.FirstHeight, TestingQBFTRootData, qbft.NoRound, nil) }
var TestingRoundChangeMessageWithRoundAndFullData = func( sk *bls.SecretKey, id types.OperatorID, round qbft.Round, fullData []byte, ) *qbft.SignedMessage { msg := &qbft.Message{ MsgType: qbft.RoundChangeMsgType, Height: qbft.FirstHeight, Round: round, Identifier: TestingIdentifier, Root: sha256.Sum256(fullData), } ret := SignQBFTMsg(sk, id, msg) ret.FullData = fullData return ret }
var TestingRoundChangeMessageWithRoundAndHeight = func(sk *bls.SecretKey, id types.OperatorID, round qbft.Round, height qbft.Height) *qbft.SignedMessage { return TestingRoundChangeMessageWithParams(sk, id, round, height, TestingQBFTRootData, qbft.NoRound, nil) }
var TestingRoundChangeMessageWithRoundAndRC = func(sk *bls.SecretKey, id types.OperatorID, round qbft.Round, roundChangeJustification [][]byte) *qbft.SignedMessage { return TestingRoundChangeMessageWithParams(sk, id, round, qbft.FirstHeight, TestingQBFTRootData, qbft.FirstRound, roundChangeJustification) }
var TestingRoundChangeMessageWrongRoot = func(sk *bls.SecretKey, id types.OperatorID) *qbft.SignedMessage { return TestingRoundChangeMessageWithParams(sk, id, qbft.FirstRound, qbft.FirstHeight, DifferentRoot, qbft.NoRound, nil) }
var TestingSSVDomainType = types.JatoTestnet
types.Share{ OperatorID: 1, ValidatorPubKey: keysSet.ValidatorPK.Serialize(), SharePubKey: keysSet.Shares[1].GetPublicKey().Serialize(), DomainType: TestingSSVDomainType, Quorum: keysSet.Threshold, PartialQuorum: keysSet.PartialThreshold, Committee: keysSet.Committee(), FeeRecipientAddress: TestingFeeRecipient, } }return &
var TestingSignedAggregateAndProof = func(ks *TestKeySet) *phase0.SignedAggregateAndProof { return &phase0.SignedAggregateAndProof{ Message: TestingAggregateAndProof, Signature: signBeaconObject(TestingAggregateAndProof, types.DomainAggregateAndProof, ks), } }
var TestingSignedAttestation = func(ks *TestKeySet) *phase0.Attestation { aggregationBitfield := bitfield.NewBitlist(TestingAttesterDuty.CommitteeLength) aggregationBitfield.SetBitAt(TestingAttesterDuty.ValidatorCommitteeIndex, true) return &phase0.Attestation{ Data: TestingAttestationData, Signature: signBeaconObject(TestingAttestationData, types.DomainAttester, ks), AggregationBits: aggregationBitfield, } }
var TestingSignedBeaconBlockV = func(ks *TestKeySet, version spec.DataVersion) ssz.HashRoot { vBlk := TestingBeaconBlockV(version) switch version { case spec.DataVersionCapella: if vBlk.Capella == nil { panic("empty block") } return &capella.SignedBeaconBlock{ Message: vBlk.Capella, Signature: signBeaconObject(vBlk.Capella, types.DomainProposer, ks), } case spec.DataVersionDeneb: if vBlk.Deneb == nil { panic("empty block contents") } if vBlk.Deneb.Block == nil { panic("empty block") } return &apiv1deneb.SignedBlockContents{ SignedBlock: &deneb.SignedBeaconBlock{ Message: vBlk.Deneb.Block, Signature: signBeaconObject(vBlk.Deneb.Block, types.DomainProposer, ks), }, KZGProofs: vBlk.Deneb.KZGProofs, Blobs: vBlk.Deneb.Blobs, } default: panic("unsupported version") } }
var TestingSignedBlindedBeaconBlockV = func(ks *TestKeySet, version spec.DataVersion) ssz.HashRoot { vBlk := TestingBlindedBeaconBlockV(version) switch version { case spec.DataVersionCapella: if vBlk.Capella == nil { panic("empty block") } return &apiv1capella.SignedBlindedBeaconBlock{ Message: vBlk.Capella, Signature: signBeaconObject(vBlk.Capella, types.DomainProposer, ks), } case spec.DataVersionDeneb: if vBlk.Deneb == nil { panic("empty block") } return &apiv1deneb.SignedBlindedBeaconBlock{ Message: vBlk.Deneb, Signature: signBeaconObject(vBlk.Deneb, types.DomainProposer, ks), } default: panic("unsupported version") } }
var TestingSignedSyncCommitteeBlockRoot = func(ks *TestKeySet) *altair.SyncCommitteeMessage { return &altair.SyncCommitteeMessage{ Slot: TestingDutySlot, BeaconBlockRoot: TestingSyncCommitteeBlockRoot, ValidatorIndex: TestingValidatorIndex, Signature: signBeaconObject(types.SSZBytes(TestingSyncCommitteeBlockRoot[:]), types.DomainSyncCommittee, ks), } }
var TestingSignedSyncCommitteeContributions = func( contrib *altair.SyncCommitteeContribution, proof phase0.BLSSignature, ks *TestKeySet) *altair.SignedContributionAndProof { msg := &altair.ContributionAndProof{ AggregatorIndex: TestingValidatorIndex, Contribution: contrib, SelectionProof: proof, } return &altair.SignedContributionAndProof{ Message: msg, Signature: signBeaconObject(msg, types.DomainContributionAndProof, ks), } }
var TestingSignedVoluntaryExit = func(ks *TestKeySet) *phase0.SignedVoluntaryExit { return &phase0.SignedVoluntaryExit{ Message: TestingVoluntaryExit, Signature: signBeaconObject(TestingVoluntaryExit, types.DomainVoluntaryExit, ks), } }
var TestingSyncCommitteeBlockRoot = phase0.Root{2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2}
var TestingSyncCommitteeContributionDuty = types.Duty{ Type: types.BNRoleSyncCommitteeContribution, PubKey: TestingValidatorPubKey, Slot: TestingDutySlot, ValidatorIndex: TestingValidatorIndex, CommitteeIndex: 3, CommitteesAtSlot: 36, CommitteeLength: 128, ValidatorCommitteeIndex: 11, ValidatorSyncCommitteeIndices: TestingContributionProofIndexes, }
var TestingSyncCommitteeContributionDutyFirstSlot = types.Duty{ Type: types.BNRoleSyncCommitteeContribution, PubKey: TestingValidatorPubKey, Slot: 0, ValidatorIndex: TestingValidatorIndex, CommitteeIndex: 3, CommitteesAtSlot: 36, CommitteeLength: 128, ValidatorCommitteeIndex: 11, ValidatorSyncCommitteeIndices: TestingContributionProofIndexes, }
TestingSyncCommitteeContributionDutyFirstSlot
var TestingSyncCommitteeContributionNexEpochDuty = types.Duty{ Type: types.BNRoleSyncCommitteeContribution, PubKey: TestingValidatorPubKey, Slot: TestingDutySlot2, ValidatorIndex: TestingValidatorIndex, CommitteeIndex: 3, CommitteesAtSlot: 36, CommitteeLength: 128, ValidatorCommitteeIndex: 11, ValidatorSyncCommitteeIndices: TestingContributionProofIndexes, }
TestingSyncCommitteeContributionNexEpochDuty testing for a second duty start
var TestingSyncCommitteeContributions = []*altair.SyncCommitteeContribution{ { Slot: TestingDutySlot, BeaconBlockRoot: TestingSyncCommitteeBlockRoot, SubcommitteeIndex: 0, AggregationBits: bitfield.NewBitvector128(), Signature: phase0.BLSSignature{}, }, { Slot: TestingDutySlot, BeaconBlockRoot: TestingSyncCommitteeBlockRoot, SubcommitteeIndex: 1, AggregationBits: bitfield.NewBitvector128(), Signature: phase0.BLSSignature{}, }, { Slot: TestingDutySlot, BeaconBlockRoot: TestingSyncCommitteeBlockRoot, SubcommitteeIndex: 2, AggregationBits: bitfield.NewBitvector128(), Signature: phase0.BLSSignature{}, }, }
var TestingSyncCommitteeDuty = types.Duty{ Type: types.BNRoleSyncCommittee, PubKey: TestingValidatorPubKey, Slot: TestingDutySlot, ValidatorIndex: TestingValidatorIndex, CommitteeIndex: 3, CommitteesAtSlot: 36, CommitteeLength: 128, ValidatorCommitteeIndex: 11, ValidatorSyncCommitteeIndices: TestingContributionProofIndexes, }
var TestingSyncCommitteeDutyFirstSlot = types.Duty{ Type: types.BNRoleSyncCommittee, PubKey: TestingValidatorPubKey, Slot: 0, ValidatorIndex: TestingValidatorIndex, CommitteeIndex: 3, CommitteesAtSlot: 36, CommitteeLength: 128, ValidatorCommitteeIndex: 11, ValidatorSyncCommitteeIndices: TestingContributionProofIndexes, }
TestingSyncCommitteeDutyFirstSlot
var TestingSyncCommitteeDutyNextEpoch = types.Duty{ Type: types.BNRoleSyncCommittee, PubKey: TestingValidatorPubKey, Slot: TestingDutySlot2, ValidatorIndex: TestingValidatorIndex, CommitteeIndex: 3, CommitteesAtSlot: 36, CommitteeLength: 128, ValidatorCommitteeIndex: 11, ValidatorSyncCommitteeIndices: TestingContributionProofIndexes, }
var TestingSyncCommitteeWrongBlockRoot = phase0.Root{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}
var TestingUnknownDutyType = types.Duty{ Type: UnknownDutyType, PubKey: TestingValidatorPubKey, Slot: 12, ValidatorIndex: TestingValidatorIndex, CommitteeIndex: 22, CommitteesAtSlot: 36, CommitteeLength: 128, ValidatorCommitteeIndex: 11, }
var TestingValidatorPubKey = func() spec.BLSPubKey { pk, _ := hex.DecodeString("8e80066551a81b318258709edaf7dd1f63cd686a0e4db8b29bbb7acfe65608677af5a527d9448ee47835485e02b50bc0") blsPK := spec.BLSPubKey{} copy(blsPK[:], pk) return blsPK }()
var TestingValidatorRegistration = &v1.ValidatorRegistration{ FeeRecipient: TestingFeeRecipient, GasLimit: types.DefaultGasLimit, Timestamp: types.PraterNetwork.EpochStartTime(TestingDutyEpoch), Pubkey: TestingValidatorPubKey, }
var TestingValidatorRegistrationDuty = types.Duty{ Type: types.BNRoleValidatorRegistration, PubKey: TestingValidatorPubKey, Slot: TestingDutySlot, ValidatorIndex: TestingValidatorIndex, }
var TestingValidatorRegistrationDutyNextEpoch = types.Duty{ Type: types.BNRoleValidatorRegistration, PubKey: TestingValidatorPubKey, Slot: TestingDutySlot2, ValidatorIndex: TestingValidatorIndex, }
var TestingValidatorRegistrationWrong = &v1.ValidatorRegistration{ FeeRecipient: TestingFeeRecipient, GasLimit: 5, Timestamp: types.PraterNetwork.EpochStartTime(TestingDutyEpoch), Pubkey: TestingValidatorPubKey, }
var TestingVoluntaryExit = &phase0.VoluntaryExit{ Epoch: 0, ValidatorIndex: TestingValidatorIndex, }
var TestingVoluntaryExitDuty = types.Duty{ Type: types.BNRoleVoluntaryExit, PubKey: TestingValidatorPubKey, Slot: TestingDutySlot, ValidatorIndex: TestingValidatorIndex, }
var TestingVoluntaryExitDutyNextEpoch = types.Duty{ Type: types.BNRoleVoluntaryExit, PubKey: TestingValidatorPubKey, Slot: TestingDutySlot2, ValidatorIndex: TestingValidatorIndex, }
var TestingVoluntaryExitWrong = &phase0.VoluntaryExit{ Epoch: 1, ValidatorIndex: TestingValidatorIndex, }
var TestingWrongAggregateAndProof = func() *phase0.AggregateAndProof { byts, err := TestingAggregateAndProof.MarshalSSZ() if err != nil { panic(err.Error()) } ret := &phase0.AggregateAndProof{} if err := ret.UnmarshalSSZ(byts); err != nil { panic(err.Error()) } ret.AggregatorIndex = 100 return ret }()
var TestingWrongAttestationData = func() *phase0.AttestationData { byts, _ := TestingAttestationData.MarshalSSZ() ret := &phase0.AttestationData{} if err := ret.UnmarshalSSZ(byts); err != nil { panic(err.Error()) } ret.Slot = 100 return ret }()
var TestingWrongBeaconBlockV = func(version spec.DataVersion) *api.VersionedProposal { blkByts := TestingBeaconBlockBytesV(version) switch version { case spec.DataVersionCapella: ret := &capella.BeaconBlock{} if err := ret.UnmarshalSSZ(blkByts); err != nil { panic(err.Error()) } ret.Slot = TestingDutySlotCapella + 100 return &api.VersionedProposal{ Version: version, Capella: ret, } case spec.DataVersionDeneb: ret := &apiv1deneb.BlockContents{} if err := ret.UnmarshalSSZ(blkByts); err != nil { panic(err.Error()) } ret.Block.Slot = TestingDutySlotDeneb + 100 return &api.VersionedProposal{ Version: version, Deneb: ret, } default: panic("unsupported version") } }
var TestingWrongDutyPK = types.Duty{ Type: types.BNRoleAttester, PubKey: TestingWrongValidatorPubKey, Slot: 12, ValidatorIndex: TestingValidatorIndex, CommitteeIndex: 3, CommitteesAtSlot: 36, CommitteeLength: 128, ValidatorCommitteeIndex: 11, }
var TestingWrongValidatorPubKey = func() spec.BLSPubKey { pk, _ := hex.DecodeString("948fb44582ce25336fdb17122eac64fe5a1afc39174ce92d6013becac116766dc5a778c880dd47de7dfff6a0f86ba42b") blsPK := spec.BLSPubKey{} copy(blsPK[:], pk) return blsPK }()
var ThirteenOperatorsInstance = func() *qbft.Instance { return baseInstance(TestingShare(Testing13SharesSet()), Testing13SharesSet(), []byte{1, 2, 3, 4}) }
var UnknownDutyTypeRunner = func(keySet *TestKeySet) ssv.Runner { return baseRunner(UnknownDutyType, UnknownDutyValueCheck(), keySet) }
var ValidatorRegistrationMsgID = func() []byte { ret := types.NewMsgID(TestingSSVDomainType, TestingValidatorPubKey[:], types.BNRoleValidatorRegistration) return ret[:] }()
var ValidatorRegistrationRunner = func(keySet *TestKeySet) ssv.Runner { return baseRunner(types.BNRoleValidatorRegistration, nil, keySet) }
var VersionBySlot = func(slot phase0.Slot) spec.DataVersion { if slot < ForkEpochPraterDeneb*32 { return spec.DataVersionCapella } return spec.DataVersionDeneb }
var VoluntaryExitMsg = func( sk, beaconSK *bls.SecretKey, id, beaconID types.OperatorID, msgCnt int, wrongRoot bool, slot phase0.Slot, wrongBeaconSig bool, ) *types.SignedPartialSignatureMessage { signer := NewTestingKeyManager() beacon := NewTestingBeaconNode() d, _ := beacon.DomainData(TestingDutyEpoch, types.DomainVoluntaryExit) signed, root, _ := signer.SignBeaconObject(TestingVoluntaryExitBySlot(slot), d, beaconSK.GetPublicKey().Serialize(), types.DomainVoluntaryExit) if wrongRoot { signed, root, _ = signer.SignBeaconObject(TestingVoluntaryExitWrong, d, beaconSK.GetPublicKey().Serialize(), types.DomainVoluntaryExit) } if wrongBeaconSig { signed, root, _ = signer.SignBeaconObject(TestingVoluntaryExit, d, Testing7SharesSet().ValidatorPK.Serialize(), types.DomainVoluntaryExit) } msgs := types.PartialSignatureMessages{ Type: types.VoluntaryExitPartialSig, Slot: slot, Messages: []*types.PartialSignatureMessage{}, } for i := 0; i < msgCnt; i++ { msg := &types.PartialSignatureMessage{ PartialSignature: signed[:], SigningRoot: root, Signer: beaconID, } msgs.Messages = append(msgs.Messages, msg) } msg := &types.PartialSignatureMessage{ PartialSignature: signed[:], SigningRoot: root, Signer: id, } if wrongRoot { msg.SigningRoot = [32]byte{} } sig, _ := signer.SignRoot(msgs, types.PartialSignatureType, sk.GetPublicKey().Serialize()) return &types.SignedPartialSignatureMessage{ Message: msgs, Signature: sig, Signer: id, } }
var VoluntaryExitMsgID = func() []byte { ret := types.NewMsgID(TestingSSVDomainType, TestingValidatorPubKey[:], types.BNRoleVoluntaryExit) return ret[:] }()
var VoluntaryExitRunner = func(keySet *TestKeySet) ssv.Runner { return baseRunner(types.BNRoleVoluntaryExit, nil, keySet) }
Functions ¶
func GetSSZRootNoError ¶ added in v0.3.1
func NewTestingKeyManager ¶
func NewTestingKeyManager() *testingKeyManager
func NewTestingKeyManagerWithSlashableRoots ¶ added in v0.2.7
func NewTestingKeyManagerWithSlashableRoots(slashableDataRoots [][]byte) *testingKeyManager
func NewTestingStorage ¶
func NewTestingStorage() *testingStorage
func NewTestingTimer ¶
func TestingCommitMessageWithHeightIdentifierAndFullData ¶ added in v0.3.1
func TestingCommitMessageWithHeightIdentifierAndFullData(sk *bls.SecretKey, id types.OperatorID, height qbft.Height, identifier, fullData []byte) *qbft.SignedMessage
func TestingCommitMultiSignerMessageWithHeightIdentifierAndFullData ¶ added in v0.3.1
func TestingCommitMultiSignerMessageWithHeightIdentifierAndFullData( sks []*bls.SecretKey, ids []types.OperatorID, height qbft.Height, identifier, fullData []byte, ) *qbft.SignedMessage
func TestingProposalMessageWithIdentifierAndFullData ¶ added in v0.3.0
func TestingProposalMessageWithIdentifierAndFullData(sk *bls.SecretKey, id types.OperatorID, identifier, fullData []byte, height qbft.Height) *qbft.SignedMessage
func TestingValidatorRegistrationBySlot ¶ added in v0.3.4
func TestingValidatorRegistrationBySlot(slot phase0.Slot) *v1.ValidatorRegistration
TestingValidatorRegistrationBySlot receives a slot and calculates the correct timestamp
func TestingVoluntaryExitBySlot ¶ added in v0.3.4
func TestingVoluntaryExitBySlot(slot phase0.Slot) *phase0.VoluntaryExit
TestingVoluntaryExitBySlot receives a slot and calculates the correct epoch
func UnknownDutyValueCheck ¶ added in v0.2.7
func UnknownDutyValueCheck() qbft.ProposedValueCheckF
Types ¶
type TestKeySet ¶
func KeySetForShare ¶ added in v0.2.7
func KeySetForShare(share *types.Share) *TestKeySet
func Testing10SharesSet ¶
func Testing10SharesSet() *TestKeySet
func Testing13SharesSet ¶
func Testing13SharesSet() *TestKeySet
func Testing4SharesSet ¶
func Testing4SharesSet() *TestKeySet
func Testing7SharesSet ¶
func Testing7SharesSet() *TestKeySet
func (*TestKeySet) Committee ¶
func (ks *TestKeySet) Committee() []*types.Operator
type TestQBFTTimer ¶
type TestQBFTTimer struct {
State TimerState
}
func (*TestQBFTTimer) TimeoutForRound ¶
func (t *TestQBFTTimer) TimeoutForRound(round qbft.Round)
type TestingBeaconNode ¶ added in v0.2.7
type TestingBeaconNode struct { BroadcastedRoots []phase0.Root // contains filtered or unexported fields }
func NewTestingBeaconNode ¶
func NewTestingBeaconNode() *TestingBeaconNode
func (*TestingBeaconNode) DomainData ¶ added in v0.2.7
func (bn *TestingBeaconNode) DomainData(epoch phase0.Epoch, domain phase0.DomainType) (phase0.Domain, error)
func (*TestingBeaconNode) GetAttestationData ¶ added in v0.2.7
func (bn *TestingBeaconNode) GetAttestationData(slot phase0.Slot, committeeIndex phase0.CommitteeIndex) (ssz.Marshaler, spec.DataVersion, error)
GetAttestationData returns attestation data by the given slot and committee index
func (*TestingBeaconNode) GetBeaconBlock ¶ added in v0.2.7
func (bn *TestingBeaconNode) GetBeaconBlock(slot phase0.Slot, graffiti, randao []byte) (ssz.Marshaler, spec.DataVersion, error)
GetBeaconBlock returns beacon block by the given slot, graffiti, and randao.
func (*TestingBeaconNode) GetBeaconNetwork ¶ added in v0.2.7
func (bn *TestingBeaconNode) GetBeaconNetwork() types.BeaconNetwork
GetBeaconNetwork returns the beacon network the node is on
func (*TestingBeaconNode) GetBlindedBeaconBlock ¶ added in v0.3.0
func (bn *TestingBeaconNode) GetBlindedBeaconBlock(slot phase0.Slot, graffiti, randao []byte) (ssz.Marshaler, spec.DataVersion, error)
GetBlindedBeaconBlock returns blinded beacon block by the given slot, graffiti, and randao.
func (*TestingBeaconNode) GetSyncCommitteeContribution ¶ added in v0.2.7
func (bn *TestingBeaconNode) GetSyncCommitteeContribution(slot phase0.Slot, selectionProofs []phase0.BLSSignature, subnetIDs []uint64) (ssz.Marshaler, spec.DataVersion, error)
GetSyncCommitteeContribution returns
func (*TestingBeaconNode) GetSyncMessageBlockRoot ¶ added in v0.2.7
func (bn *TestingBeaconNode) GetSyncMessageBlockRoot(slot phase0.Slot) (phase0.Root, spec.DataVersion, error)
GetSyncMessageBlockRoot returns beacon block root for sync committee
func (*TestingBeaconNode) IsSyncCommitteeAggregator ¶ added in v0.2.7
func (bn *TestingBeaconNode) IsSyncCommitteeAggregator(proof []byte) (bool, error)
IsSyncCommitteeAggregator returns tru if aggregator
func (*TestingBeaconNode) SetSyncCommitteeAggregatorRootHexes ¶ added in v0.2.7
func (bn *TestingBeaconNode) SetSyncCommitteeAggregatorRootHexes(roots map[string]bool)
SetSyncCommitteeAggregatorRootHexes FOR TESTING ONLY!! sets which sync committee aggregator roots will return true for aggregator
func (*TestingBeaconNode) SubmitAggregateSelectionProof ¶ added in v0.2.7
func (bn *TestingBeaconNode) SubmitAggregateSelectionProof(slot phase0.Slot, committeeIndex phase0.CommitteeIndex, committeeLength uint64, index phase0.ValidatorIndex, slotSig []byte) (ssz.Marshaler, spec.DataVersion, error)
SubmitAggregateSelectionProof returns an AggregateAndProof object
func (*TestingBeaconNode) SubmitAttestation ¶ added in v0.2.7
func (bn *TestingBeaconNode) SubmitAttestation(attestation *phase0.Attestation) error
SubmitAttestation submit the attestation to the node
func (*TestingBeaconNode) SubmitBeaconBlock ¶ added in v0.2.7
func (bn *TestingBeaconNode) SubmitBeaconBlock(block *api.VersionedProposal, sig phase0.BLSSignature) error
SubmitBeaconBlock submit the block to the node
func (*TestingBeaconNode) SubmitBlindedBeaconBlock ¶ added in v0.3.0
func (bn *TestingBeaconNode) SubmitBlindedBeaconBlock(block *api.VersionedBlindedProposal, sig phase0.BLSSignature) error
SubmitBlindedBeaconBlock submit the blinded block to the node
func (*TestingBeaconNode) SubmitSignedAggregateSelectionProof ¶ added in v0.2.7
func (bn *TestingBeaconNode) SubmitSignedAggregateSelectionProof(msg *phase0.SignedAggregateAndProof) error
SubmitSignedAggregateSelectionProof broadcasts a signed aggregator msg
func (*TestingBeaconNode) SubmitSignedContributionAndProof ¶ added in v0.2.7
func (bn *TestingBeaconNode) SubmitSignedContributionAndProof(contribution *altair.SignedContributionAndProof) error
SubmitSignedContributionAndProof broadcasts to the network
func (*TestingBeaconNode) SubmitSyncMessage ¶ added in v0.2.7
func (bn *TestingBeaconNode) SubmitSyncMessage(msg *altair.SyncCommitteeMessage) error
SubmitSyncMessage submits a signed sync committee msg
func (*TestingBeaconNode) SubmitValidatorRegistration ¶ added in v0.3.1
func (bn *TestingBeaconNode) SubmitValidatorRegistration(pubkey []byte, feeRecipient bellatrix.ExecutionAddress, sig phase0.BLSSignature) error
func (*TestingBeaconNode) SubmitVoluntaryExit ¶ added in v0.3.2
func (bn *TestingBeaconNode) SubmitVoluntaryExit(voluntaryExit *phase0.SignedVoluntaryExit) error
SubmitVoluntaryExit submit the VoluntaryExit object to the node
func (*TestingBeaconNode) SyncCommitteeSubnetID ¶ added in v0.2.7
func (bn *TestingBeaconNode) SyncCommitteeSubnetID(index phase0.CommitteeIndex) (uint64, error)
SyncCommitteeSubnetID returns sync committee subnet ID from subcommittee index
type TestingNetwork ¶
type TestingNetwork struct {
BroadcastedMsgs []*types.SSVMessage
}
func NewTestingNetwork ¶
func NewTestingNetwork() *TestingNetwork
func (*TestingNetwork) Broadcast ¶
func (net *TestingNetwork) Broadcast(message *types.SSVMessage) error