mirror of
https://github.com/sigp/lighthouse.git
synced 2026-05-30 04:37:13 +00:00
resolve merge conflicts
This commit is contained in:
@@ -7,5 +7,6 @@ authors = ["Sigma Prime <contact@sigmaprime.io>"]
|
||||
[dependencies]
|
||||
bls = { workspace = true }
|
||||
eth2 = { workspace = true }
|
||||
futures = { workspace = true }
|
||||
slashing_protection = { workspace = true }
|
||||
types = { workspace = true }
|
||||
|
||||
@@ -1,13 +1,16 @@
|
||||
use bls::{PublicKeyBytes, Signature};
|
||||
use eth2::types::{FullBlockContents, PublishBlockRequest};
|
||||
use futures::Stream;
|
||||
use slashing_protection::NotSafe;
|
||||
use std::fmt::Debug;
|
||||
use std::future::Future;
|
||||
use std::sync::Arc;
|
||||
use types::{
|
||||
Address, Attestation, AttestationError, BlindedBeaconBlock, Epoch, EthSpec, Graffiti, Hash256,
|
||||
InclusionList, SelectionProof, SignedAggregateAndProof, SignedBlindedBeaconBlock,
|
||||
SignedContributionAndProof, SignedInclusionList, SignedValidatorRegistrationData, Slot,
|
||||
Address, Attestation, AttestationError, BlindedBeaconBlock, Epoch, EthSpec,
|
||||
ExecutionPayloadEnvelope, Graffiti, Hash256, InclusionList, PayloadAttestationData,
|
||||
PayloadAttestationMessage, SelectionProof, SignedAggregateAndProof, SignedBlindedBeaconBlock,
|
||||
SignedContributionAndProof, SignedExecutionPayloadEnvelope, SignedInclusionList,
|
||||
SignedValidatorRegistrationData, Slot,
|
||||
SyncCommitteeContribution, SyncCommitteeMessage, SyncSelectionProof, SyncSubnetId,
|
||||
ValidatorRegistrationData,
|
||||
};
|
||||
@@ -20,9 +23,9 @@ pub enum Error<T> {
|
||||
Slashable(NotSafe),
|
||||
SameData,
|
||||
GreaterThanCurrentSlot { slot: Slot, current_slot: Slot },
|
||||
GreaterThanCurrentEpoch { epoch: Epoch, current_epoch: Epoch },
|
||||
UnableToSignAttestation(AttestationError),
|
||||
SpecificError(T),
|
||||
ExecutorError,
|
||||
Middleware(String),
|
||||
}
|
||||
|
||||
@@ -32,6 +35,38 @@ impl<T> From<T> for Error<T> {
|
||||
}
|
||||
}
|
||||
|
||||
/// Input for batch attestation signing
|
||||
pub struct AttestationToSign<E: EthSpec> {
|
||||
pub validator_index: u64,
|
||||
pub pubkey: PublicKeyBytes,
|
||||
pub validator_committee_index: usize,
|
||||
pub attestation: Attestation<E>,
|
||||
}
|
||||
|
||||
/// Input for batch aggregate signing
|
||||
pub struct AggregateToSign<E: EthSpec> {
|
||||
pub pubkey: PublicKeyBytes,
|
||||
pub aggregator_index: u64,
|
||||
pub aggregate: Attestation<E>,
|
||||
pub selection_proof: SelectionProof,
|
||||
}
|
||||
|
||||
/// Input for batch sync committee message signing
|
||||
pub struct SyncMessageToSign {
|
||||
pub slot: Slot,
|
||||
pub beacon_block_root: Hash256,
|
||||
pub validator_index: u64,
|
||||
pub pubkey: PublicKeyBytes,
|
||||
}
|
||||
|
||||
/// Input for batch sync committee contribution signing
|
||||
pub struct ContributionToSign<E: EthSpec> {
|
||||
pub aggregator_index: u64,
|
||||
pub aggregator_pubkey: PublicKeyBytes,
|
||||
pub contribution: SyncCommitteeContribution<E>,
|
||||
pub selection_proof: SyncSelectionProof,
|
||||
}
|
||||
|
||||
/// A helper struct, used for passing data from the validator store to services.
|
||||
pub struct ProposalData {
|
||||
pub validator_index: Option<u64>,
|
||||
@@ -104,31 +139,26 @@ pub trait ValidatorStore: Send + Sync {
|
||||
current_slot: Slot,
|
||||
) -> impl Future<Output = Result<SignedBlock<Self::E>, Error<Self::Error>>> + Send;
|
||||
|
||||
fn sign_attestation(
|
||||
&self,
|
||||
validator_pubkey: PublicKeyBytes,
|
||||
validator_committee_position: usize,
|
||||
attestation: &mut Attestation<Self::E>,
|
||||
current_epoch: Epoch,
|
||||
) -> impl Future<Output = Result<(), Error<Self::Error>>> + Send;
|
||||
/// Sign a batch of `attestations` and apply slashing protection to them.
|
||||
///
|
||||
/// Returns a stream of batches of successfully signed attestations. Each batch contains
|
||||
/// attestations that passed slashing protection, along with the validator index of the signer.
|
||||
/// Eventually this will be replaced by `SingleAttestation` use.
|
||||
///
|
||||
/// Output:
|
||||
///
|
||||
/// * Vec of (validator_index, signed_attestation).
|
||||
#[allow(clippy::type_complexity)]
|
||||
fn sign_attestations(
|
||||
self: &Arc<Self>,
|
||||
attestations: Vec<AttestationToSign<Self::E>>,
|
||||
) -> impl Stream<Item = Result<Vec<(u64, Attestation<Self::E>)>, Error<Self::Error>>> + Send;
|
||||
|
||||
fn sign_validator_registration_data(
|
||||
&self,
|
||||
validator_registration_data: ValidatorRegistrationData,
|
||||
) -> impl Future<Output = Result<SignedValidatorRegistrationData, Error<Self::Error>>> + Send;
|
||||
|
||||
/// Signs an `AggregateAndProof` for a given validator.
|
||||
///
|
||||
/// The resulting `SignedAggregateAndProof` is sent on the aggregation channel and cannot be
|
||||
/// modified by actors other than the signing validator.
|
||||
fn produce_signed_aggregate_and_proof(
|
||||
&self,
|
||||
validator_pubkey: PublicKeyBytes,
|
||||
aggregator_index: u64,
|
||||
aggregate: Attestation<Self::E>,
|
||||
selection_proof: SelectionProof,
|
||||
) -> impl Future<Output = Result<SignedAggregateAndProof<Self::E>, Error<Self::Error>>> + Send;
|
||||
|
||||
/// Produces a `SelectionProof` for the `slot`, signed by with corresponding secret key to
|
||||
/// `validator_pubkey`.
|
||||
fn produce_selection_proof(
|
||||
@@ -145,21 +175,23 @@ pub trait ValidatorStore: Send + Sync {
|
||||
subnet_id: SyncSubnetId,
|
||||
) -> impl Future<Output = Result<SyncSelectionProof, Error<Self::Error>>> + Send;
|
||||
|
||||
fn produce_sync_committee_signature(
|
||||
&self,
|
||||
slot: Slot,
|
||||
beacon_block_root: Hash256,
|
||||
validator_index: u64,
|
||||
validator_pubkey: &PublicKeyBytes,
|
||||
) -> impl Future<Output = Result<SyncCommitteeMessage, Error<Self::Error>>> + Send;
|
||||
/// Sign a batch of aggregate and proofs and return results as a stream of batches.
|
||||
fn sign_aggregate_and_proofs(
|
||||
self: &Arc<Self>,
|
||||
aggregates: Vec<AggregateToSign<Self::E>>,
|
||||
) -> impl Stream<Item = Result<Vec<SignedAggregateAndProof<Self::E>>, Error<Self::Error>>> + Send;
|
||||
|
||||
fn produce_signed_contribution_and_proof(
|
||||
&self,
|
||||
aggregator_index: u64,
|
||||
aggregator_pubkey: PublicKeyBytes,
|
||||
contribution: SyncCommitteeContribution<Self::E>,
|
||||
selection_proof: SyncSelectionProof,
|
||||
) -> impl Future<Output = Result<SignedContributionAndProof<Self::E>, Error<Self::Error>>> + Send;
|
||||
/// Sign a batch of sync committee messages and return results as a stream of batches.
|
||||
fn sign_sync_committee_signatures(
|
||||
self: &Arc<Self>,
|
||||
messages: Vec<SyncMessageToSign>,
|
||||
) -> impl Stream<Item = Result<Vec<SyncCommitteeMessage>, Error<Self::Error>>> + Send;
|
||||
|
||||
/// Sign a batch of sync committee contributions and return results as a stream of batches.
|
||||
fn sign_sync_committee_contributions(
|
||||
self: &Arc<Self>,
|
||||
contributions: Vec<ContributionToSign<Self::E>>,
|
||||
) -> impl Stream<Item = Result<Vec<SignedContributionAndProof<Self::E>>, Error<Self::Error>>> + Send;
|
||||
|
||||
fn sign_inclusion_list(
|
||||
&self,
|
||||
@@ -174,6 +206,20 @@ pub trait ValidatorStore: Send + Sync {
|
||||
/// runs.
|
||||
fn prune_slashing_protection_db(&self, current_epoch: Epoch, first_run: bool);
|
||||
|
||||
/// Sign an `ExecutionPayloadEnvelope` for Gloas.
|
||||
fn sign_execution_payload_envelope(
|
||||
&self,
|
||||
validator_pubkey: PublicKeyBytes,
|
||||
envelope: ExecutionPayloadEnvelope<Self::E>,
|
||||
) -> impl Future<Output = Result<SignedExecutionPayloadEnvelope<Self::E>, Error<Self::Error>>> + Send;
|
||||
|
||||
/// Sign a `PayloadAttestationData` for the PTC.
|
||||
fn sign_payload_attestation(
|
||||
&self,
|
||||
validator_pubkey: PublicKeyBytes,
|
||||
data: PayloadAttestationData,
|
||||
) -> impl Future<Output = Result<PayloadAttestationMessage, Error<Self::Error>>> + Send;
|
||||
|
||||
/// Returns `ProposalData` for the provided `pubkey` if it exists in `InitializedValidators`.
|
||||
/// `ProposalData` fields include defaulting logic described in `get_fee_recipient_defaulting`,
|
||||
/// `get_gas_limit_defaulting`, and `get_builder_proposals_defaulting`.
|
||||
|
||||
Reference in New Issue
Block a user