got interop working~

This commit is contained in:
Eitan Seri-Levi
2025-06-09 10:07:53 +03:00
parent 30f28784ee
commit 7fe71d4db6
31 changed files with 282 additions and 249 deletions

View File

@@ -1,4 +1,6 @@
use super::{EthSpec, InclusionListTransactions, SignedInclusionList, Slot, Transaction};
use crate::Transactions;
use super::{EthSpec, SignedInclusionList, Slot, Transaction};
use std::collections::{HashMap, HashSet};
use tracing::debug;
@@ -81,10 +83,7 @@ impl<E: EthSpec> InclusionListCache<E> {
);
}
pub fn get_inclusion_list_transactions(
&self,
slot: Slot,
) -> Option<InclusionListTransactions<E>> {
pub fn get_inclusion_list_transactions(&self, slot: Slot) -> Option<Transactions<E>> {
let Some(inner) = self.inner_map.get(&slot) else {
return None;
};

View File

@@ -1,10 +1,11 @@
use crate::beacon_block_body::KzgCommitments;
use crate::test_utils::TestRandom;
use crate::{
ChainSpec, ContextDeserialize, EthSpec, ExecutionPayloadHeaderBellatrix,
ExecutionPayloadHeaderCapella, ExecutionPayloadHeaderDeneb, ExecutionPayloadHeaderEip7805,
ExecutionPayloadHeaderElectra, ExecutionPayloadHeaderFulu, ExecutionPayloadHeaderRef,
ExecutionPayloadHeaderRefMut, ExecutionRequests, ForkName, ForkVersionDecode,
SignedRoot, Uint256,
ExecutionPayloadHeaderRefMut, ExecutionRequests, ForkName, ForkVersionDecode, SignedRoot,
Uint256,
};
use bls::PublicKeyBytes;
use bls::Signature;
@@ -12,7 +13,6 @@ use serde::{Deserialize, Deserializer, Serialize};
use ssz::Decode;
use ssz_derive::{Decode, Encode};
use superstruct::superstruct;
use crate::test_utils::TestRandom;
use test_random_derive::TestRandom;
use tree_hash_derive::TreeHash;

View File

@@ -983,7 +983,7 @@ impl ChainSpec {
/*
* Fulu hard fork params
*/
fulu_fork_version: [0x06, 0x00, 0x00, 0x00],
fulu_fork_version: [0x07, 0x00, 0x00, 0x00],
fulu_fork_epoch: None,
custody_requirement: 4,
number_of_custody_groups: 128,
@@ -1113,7 +1113,7 @@ impl ChainSpec {
eip7805_fork_epoch: None,
eip7805_fork_version: [0x06, 0x00, 0x00, 0x00],
// Fulu
fulu_fork_version: [0x06, 0x00, 0x00, 0x01],
fulu_fork_version: [0x07, 0x00, 0x00, 0x00],
fulu_fork_epoch: None,
// Other
network_id: 2, // lighthouse testnet network id
@@ -1328,7 +1328,7 @@ impl ChainSpec {
/*
* Fulu hard fork params
*/
fulu_fork_version: [0x06, 0x00, 0x00, 0x64],
fulu_fork_version: [0x07, 0x00, 0x00, 0x00],
fulu_fork_epoch: None,
custody_requirement: 4,
number_of_custody_groups: 128,

View File

@@ -1,6 +1,6 @@
use crate::{
consts::altair, consts::deneb, AltairPreset, BasePreset, BellatrixPreset, CapellaPreset,
ChainSpec, Config, DenebPreset, ElectraPreset, EthSpec, ForkName, FuluPreset,
ChainSpec, Config, DenebPreset, Eip7805Preset, ElectraPreset, EthSpec, ForkName, FuluPreset,
};
use maplit::hashmap;
use serde::{Deserialize, Serialize};
@@ -34,6 +34,9 @@ pub struct ConfigAndPreset {
#[superstruct(only(Electra, Eip7805, Fulu))]
#[serde(flatten)]
pub electra_preset: ElectraPreset,
#[superstruct(only(Eip7805, Fulu))]
#[serde(flatten)]
pub eip7805_preset: Eip7805Preset,
#[superstruct(only(Fulu))]
#[serde(flatten)]
pub fulu_preset: FuluPreset,
@@ -58,6 +61,7 @@ impl ConfigAndPreset {
|| fork_name == Some(ForkName::Fulu)
{
let electra_preset = ElectraPreset::from_chain_spec::<E>(spec);
let eip7805_preset = Eip7805Preset::from_chain_spec::<E>(spec);
let fulu_preset = FuluPreset::from_chain_spec::<E>(spec);
ConfigAndPreset::Fulu(ConfigAndPresetFulu {
@@ -68,9 +72,28 @@ impl ConfigAndPreset {
capella_preset,
deneb_preset,
electra_preset,
eip7805_preset,
fulu_preset,
extra_fields,
})
} else if spec.electra_fork_epoch.is_some()
|| fork_name.is_none()
|| fork_name == Some(ForkName::Eip7805)
{
let electra_preset = ElectraPreset::from_chain_spec::<E>(spec);
let eip7805_preset = Eip7805Preset::from_chain_spec::<E>(spec);
ConfigAndPreset::Eip7805(ConfigAndPresetEip7805 {
config,
base_preset,
altair_preset,
bellatrix_preset,
capella_preset,
deneb_preset,
electra_preset,
eip7805_preset,
extra_fields,
})
} else if spec.electra_fork_epoch.is_some()
|| fork_name.is_none()
|| fork_name == Some(ForkName::Electra)

View File

@@ -1,18 +1,12 @@
use crate::test_utils::TestRandom;
use crate::{EthSpec, Hash256, Signature, SignedRoot, Slot, Transaction};
use crate::{EthSpec, Hash256, Signature, SignedRoot, Slot, Transactions};
use derivative::Derivative;
use serde::{Deserialize, Serialize};
use ssz_derive::{Decode, Encode};
use ssz_types::VariableList;
use test_random_derive::TestRandom;
use tree_hash_derive::TreeHash;
pub type InclusionListTransactions<E> = VariableList<
Transaction<<E as EthSpec>::MaxBytesPerTransaction>,
<E as EthSpec>::MaxTransactionsPerInclusionList,
>;
#[derive(
Debug,
Clone,
@@ -33,7 +27,7 @@ pub struct InclusionList<E: EthSpec> {
#[serde(with = "serde_utils::quoted_u64")]
pub validator_index: u64,
pub inclusion_list_committee_root: Hash256,
pub transactions: InclusionListTransactions<E>,
pub transactions: Transactions<E>,
}
impl<E: EthSpec> SignedRoot for InclusionList<E> {}

View File

@@ -186,7 +186,7 @@ pub use crate::fork_data::ForkData;
pub use crate::fork_name::{ForkName, InconsistentFork};
pub use crate::graffiti::{Graffiti, GRAFFITI_BYTES_LEN};
pub use crate::historical_batch::HistoricalBatch;
pub use crate::inclusion_list::{InclusionList, InclusionListTransactions, SignedInclusionList};
pub use crate::inclusion_list::{InclusionList, SignedInclusionList};
pub use crate::inclusion_list_committee::InclusionListCommittee;
pub use crate::inclusion_list_duty::InclusionListDuty;
pub use crate::indexed_attestation::{

View File

@@ -245,7 +245,7 @@ impl<'de, E: EthSpec> ContextDeserialize<'de, ForkName> for LightClientBootstrap
ForkName::Deneb => {
Self::Deneb(Deserialize::deserialize(deserializer).map_err(convert_err)?)
}
ForkName::Electra | ForkName::Eip7805 => {
ForkName::Electra | ForkName::Eip7805 => {
Self::Electra(Deserialize::deserialize(deserializer).map_err(convert_err)?)
}
ForkName::Fulu => {

View File

@@ -263,7 +263,7 @@ impl<'de, E: EthSpec> ContextDeserialize<'de, ForkName> for LightClientFinalityU
ForkName::Deneb => {
Self::Deneb(Deserialize::deserialize(deserializer).map_err(convert_err)?)
}
ForkName::Electra | ForkName::Eip7805 => {
ForkName::Electra | ForkName::Eip7805 => {
Self::Electra(Deserialize::deserialize(deserializer).map_err(convert_err)?)
}
ForkName::Fulu => {

View File

@@ -291,52 +291,17 @@ impl ElectraPreset {
#[derive(Debug, PartialEq, Clone, Serialize, Deserialize)]
#[serde(rename_all = "UPPERCASE")]
pub struct Eip7805Preset {
#[serde(with = "serde_utils::quoted_u32")]
pub domain_inclusion_list_committee: u32,
#[serde(with = "serde_utils::quoted_u64")]
pub min_activation_balance: u64,
#[serde(with = "serde_utils::quoted_u64")]
pub max_effective_balance_electra: u64,
#[serde(with = "serde_utils::quoted_u64")]
pub min_slashing_penalty_quotient_electra: u64,
#[serde(with = "serde_utils::quoted_u64")]
pub whistleblower_reward_quotient_electra: u64,
#[serde(with = "serde_utils::quoted_u64")]
pub max_pending_partials_per_withdrawals_sweep: u64,
#[serde(with = "serde_utils::quoted_u64")]
pub pending_deposits_limit: u64,
#[serde(with = "serde_utils::quoted_u64")]
pub pending_partial_withdrawals_limit: u64,
#[serde(with = "serde_utils::quoted_u64")]
pub pending_consolidations_limit: u64,
#[serde(with = "serde_utils::quoted_u64")]
pub max_consolidation_requests_per_payload: u64,
#[serde(with = "serde_utils::quoted_u64")]
pub max_deposit_requests_per_payload: u64,
#[serde(with = "serde_utils::quoted_u64")]
pub max_attester_slashings_electra: u64,
#[serde(with = "serde_utils::quoted_u64")]
pub max_attestations_electra: u64,
#[serde(with = "serde_utils::quoted_u64")]
pub max_withdrawal_requests_per_payload: u64,
pub inclusion_list_committee_size: u64,
}
impl Eip7805Preset {
pub fn from_chain_spec<E: EthSpec>(spec: &ChainSpec) -> Self {
Self {
min_activation_balance: spec.min_activation_balance,
max_effective_balance_electra: spec.max_effective_balance_electra,
min_slashing_penalty_quotient_electra: spec.min_slashing_penalty_quotient_electra,
whistleblower_reward_quotient_electra: spec.whistleblower_reward_quotient_electra,
max_pending_partials_per_withdrawals_sweep: spec
.max_pending_partials_per_withdrawals_sweep,
pending_deposits_limit: E::pending_deposits_limit() as u64,
pending_partial_withdrawals_limit: E::pending_partial_withdrawals_limit() as u64,
pending_consolidations_limit: E::pending_consolidations_limit() as u64,
max_consolidation_requests_per_payload: E::max_consolidation_requests_per_payload()
as u64,
max_deposit_requests_per_payload: E::max_deposit_requests_per_payload() as u64,
max_attester_slashings_electra: E::max_attester_slashings_electra() as u64,
max_attestations_electra: E::max_attestations_electra() as u64,
max_withdrawal_requests_per_payload: E::max_withdrawal_requests_per_payload() as u64,
domain_inclusion_list_committee: spec.domain_inclusion_list_committee,
inclusion_list_committee_size: spec.inclusion_list_committee_size,
}
}
}

View File

@@ -873,12 +873,12 @@ pub mod ssz_tagged_signed_beacon_block {
ForkName::Deneb => Ok(SignedBeaconBlock::Deneb(
SignedBeaconBlockDeneb::from_ssz_bytes(body)?,
)),
ForkName::Eip7805 => Ok(SignedBeaconBlock::Eip7805(
SignedBeaconBlockEip7805::from_ssz_bytes(body)?,
)),
ForkName::Electra => Ok(SignedBeaconBlock::Electra(
SignedBeaconBlockElectra::from_ssz_bytes(body)?,
)),
ForkName::Eip7805 => Ok(SignedBeaconBlock::Eip7805(
SignedBeaconBlockEip7805::from_ssz_bytes(body)?,
)),
ForkName::Fulu => Ok(SignedBeaconBlock::Fulu(
SignedBeaconBlockFulu::from_ssz_bytes(body)?,
)),