mirror of
https://github.com/sigp/lighthouse.git
synced 2026-04-25 00:38:22 +00:00
Merge remote-tracking branch 'upstream/unstable' into electra_attestation_changes
This commit is contained in:
@@ -12,7 +12,7 @@ pub fn build_block_contents<E: EthSpec>(
|
||||
Ok(ProduceBlockV3Response::Blinded(block.block))
|
||||
}
|
||||
BeaconBlockResponseWrapper::Full(block) => match fork_name {
|
||||
ForkName::Base | ForkName::Altair | ForkName::Merge | ForkName::Capella => Ok(
|
||||
ForkName::Base | ForkName::Altair | ForkName::Bellatrix | ForkName::Capella => Ok(
|
||||
ProduceBlockV3Response::Full(FullBlockContents::Block(block.block)),
|
||||
),
|
||||
ForkName::Deneb | ForkName::Electra => {
|
||||
|
||||
@@ -53,7 +53,7 @@ fn get_next_withdrawals_sanity_checks<T: BeaconChainTypes>(
|
||||
}
|
||||
|
||||
let fork = chain.spec.fork_name_at_slot::<T::EthSpec>(proposal_slot);
|
||||
if let ForkName::Base | ForkName::Altair | ForkName::Merge = fork {
|
||||
if let ForkName::Base | ForkName::Altair | ForkName::Bellatrix = fork {
|
||||
return Err(warp_utils::reject::custom_bad_request(
|
||||
"the specified state is a pre-capella state.".to_string(),
|
||||
));
|
||||
|
||||
@@ -4301,7 +4301,7 @@ pub fn serve<T: BeaconChainTypes>(
|
||||
|task_spawner: TaskSpawner<T::EthSpec>, chain: Arc<BeaconChain<T>>| {
|
||||
task_spawner.spawn_async_with_rejection(Priority::P1, async move {
|
||||
let current_slot = chain.slot_clock.now_or_genesis().unwrap_or(Slot::new(0));
|
||||
let merge_readiness = chain.check_merge_readiness(current_slot).await;
|
||||
let merge_readiness = chain.check_bellatrix_readiness(current_slot).await;
|
||||
Ok::<_, warp::reject::Rejection>(
|
||||
warp::reply::json(&api_types::GenericResponse::from(merge_readiness))
|
||||
.into_response(),
|
||||
@@ -4363,6 +4363,12 @@ pub fn serve<T: BeaconChainTypes>(
|
||||
api_types::EventTopic::BlockReward => {
|
||||
event_handler.subscribe_block_reward()
|
||||
}
|
||||
api_types::EventTopic::AttesterSlashing => {
|
||||
event_handler.subscribe_attester_slashing()
|
||||
}
|
||||
api_types::EventTopic::ProposerSlashing => {
|
||||
event_handler.subscribe_proposer_slashing()
|
||||
}
|
||||
};
|
||||
|
||||
receivers.push(
|
||||
|
||||
@@ -20,8 +20,8 @@ use tokio::sync::mpsc::UnboundedSender;
|
||||
use tree_hash::TreeHash;
|
||||
use types::{
|
||||
AbstractExecPayload, BeaconBlockRef, BlobSidecarList, EthSpec, ExecPayload, ExecutionBlockHash,
|
||||
ForkName, FullPayload, FullPayloadMerge, Hash256, SignedBeaconBlock, SignedBlindedBeaconBlock,
|
||||
VariableList,
|
||||
ForkName, FullPayload, FullPayloadBellatrix, Hash256, SignedBeaconBlock,
|
||||
SignedBlindedBeaconBlock, VariableList,
|
||||
};
|
||||
use warp::http::StatusCode;
|
||||
use warp::{reply::Response, Rejection, Reply};
|
||||
@@ -80,7 +80,7 @@ pub async fn publish_block<T: BeaconChainTypes, B: IntoGossipVerifiedBlockConten
|
||||
match block.as_ref() {
|
||||
SignedBeaconBlock::Base(_)
|
||||
| SignedBeaconBlock::Altair(_)
|
||||
| SignedBeaconBlock::Merge(_)
|
||||
| SignedBeaconBlock::Bellatrix(_)
|
||||
| SignedBeaconBlock::Capella(_) => {
|
||||
crate::publish_pubsub_message(&sender, PubsubMessage::BeaconBlock(block))
|
||||
.map_err(|_| BlockError::BeaconChainError(BeaconChainError::UnableToPublish))?;
|
||||
@@ -331,8 +331,8 @@ pub async fn reconstruct_block<T: BeaconChainTypes>(
|
||||
let fork_name = chain
|
||||
.spec
|
||||
.fork_name_at_epoch(block.slot().epoch(T::EthSpec::slots_per_epoch()));
|
||||
if fork_name == ForkName::Merge {
|
||||
let payload: FullPayload<T::EthSpec> = FullPayloadMerge::default().into();
|
||||
if fork_name == ForkName::Bellatrix {
|
||||
let payload: FullPayload<T::EthSpec> = FullPayloadBellatrix::default().into();
|
||||
ProvenancedPayload::Local(FullPayloadContents::Payload(payload.into()))
|
||||
} else {
|
||||
Err(warp_utils::reject::custom_server_error(
|
||||
|
||||
@@ -5230,6 +5230,8 @@ impl ApiTester {
|
||||
EventTopic::Block,
|
||||
EventTopic::Head,
|
||||
EventTopic::FinalizedCheckpoint,
|
||||
EventTopic::AttesterSlashing,
|
||||
EventTopic::ProposerSlashing,
|
||||
];
|
||||
let mut events_future = self
|
||||
.client
|
||||
@@ -5369,6 +5371,42 @@ impl ApiTester {
|
||||
.await;
|
||||
assert_eq!(reorg_event.as_slice(), &[expected_reorg]);
|
||||
|
||||
// Test attester slashing event
|
||||
let mut attester_slashing_event_future = self
|
||||
.client
|
||||
.get_events::<E>(&[EventTopic::AttesterSlashing])
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
self.harness.add_attester_slashing(vec![1, 2, 3]).unwrap();
|
||||
|
||||
let attester_slashing_event = poll_events(
|
||||
&mut attester_slashing_event_future,
|
||||
1,
|
||||
Duration::from_millis(10000),
|
||||
)
|
||||
.await;
|
||||
|
||||
assert!(attester_slashing_event.len() == 1);
|
||||
|
||||
// Test proposer slashing event
|
||||
let mut proposer_slashing_event_future = self
|
||||
.client
|
||||
.get_events::<E>(&[EventTopic::ProposerSlashing])
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
self.harness.add_proposer_slashing(1).unwrap();
|
||||
|
||||
let proposer_slashing_event = poll_events(
|
||||
&mut proposer_slashing_event_future,
|
||||
1,
|
||||
Duration::from_millis(10000),
|
||||
)
|
||||
.await;
|
||||
|
||||
assert!(proposer_slashing_event.len() == 1);
|
||||
|
||||
self
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user