diff --git a/Cargo.lock b/Cargo.lock index 96af9401d..85f1ce4e1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2197,6 +2197,7 @@ dependencies = [ "paste", "ream-bls", "ream-consensus-beacon", + "ream-consensus-lean", "ream-consensus-misc", "ream-execution-engine", "ream-execution-rpc-types", diff --git a/Cargo.toml b/Cargo.toml index 8d099a65c..605a2f54d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -145,10 +145,10 @@ ream-api-types-common = { path = "crates/common/api_types/common" } ream-api-types-lean = { path = "crates/common/api_types/lean" } ream-bls = { path = "crates/crypto/bls", features = ["zkcrypto"] } # Default feature is zkcrypto ream-chain-beacon = { path = "crates/common/chain/beacon" } -ream-chain-lean = { path = "crates/common/chain/lean" } +ream-chain-lean = { path = "crates/common/chain/lean", default-features = false } ream-checkpoint-sync = { path = "crates/common/checkpoint_sync" } ream-consensus-beacon = { path = "crates/common/consensus/beacon" } -ream-consensus-lean = { path = "crates/common/consensus/lean" } +ream-consensus-lean = { path = "crates/common/consensus/lean", default-features = false } ream-consensus-misc = { path = "crates/common/consensus/misc" } ream-discv5 = { path = "crates/networking/discv5" } ream-events-beacon = { path = "crates/common/events/beacon" } @@ -156,28 +156,28 @@ ream-execution-engine = { path = "crates/common/execution/engine" } ream-execution-rpc-types = { path = "crates/common/execution/rpc_types" } ream-executor = { path = "crates/common/executor" } ream-fork-choice-beacon = { path = "crates/common/fork_choice/beacon" } -ream-fork-choice-lean = { path = "crates/common/fork_choice/lean" } +ream-fork-choice-lean = { path = "crates/common/fork_choice/lean", default-features = false } ream-keystore = { path = "crates/crypto/keystore" } ream-light-client = { path = "crates/common/light_client" } ream-merkle = { path = "crates/crypto/merkle" } ream-metrics = { path = "crates/common/metrics" } ream-network-manager = { path = "crates/networking/manager" } ream-network-spec = { path = "crates/common/network_spec" } -ream-network-state-lean = { path = "crates/networking/network_state/lean" } +ream-network-state-lean = { path = "crates/networking/network_state/lean", default-features = false } ream-node = { path = "crates/common/node" } ream-operation-pool = { path = "crates/common/operation_pool" } -ream-p2p = { path = "crates/networking/p2p" } +ream-p2p = { path = "crates/networking/p2p", default-features = false } ream-peer = { path = "crates/networking/peer" } ream-polynomial-commitments = { path = "crates/common/polynomial_commitments" } ream-post-quantum-crypto = { path = "crates/crypto/post_quantum" } ream-rpc-beacon = { path = "crates/rpc/beacon" } ream-rpc-common = { path = "crates/rpc/common" } -ream-rpc-lean = { path = "crates/rpc/lean" } +ream-rpc-lean = { path = "crates/rpc/lean", default-features = false } ream-storage = { path = "crates/storage" } ream-sync = { path = "crates/common/sync" } ream-syncer = { path = "crates/networking/syncer" } ream-validator-beacon = { path = "crates/common/validator/beacon" } -ream-validator-lean = { path = "crates/common/validator/lean" } +ream-validator-lean = { path = "crates/common/validator/lean", default-features = false } [patch.crates-io] ethereum_hashing = { git = "https://github.com/ReamLabs/ethereum_hashing.git", rev = "c14a9ad96436e6b8b631faf49a3666e4558b71ae" } diff --git a/bin/ream/Cargo.toml b/bin/ream/Cargo.toml index e265fcb61..d245b0208 100644 --- a/bin/ream/Cargo.toml +++ b/bin/ream/Cargo.toml @@ -16,8 +16,22 @@ path = "src/main.rs" [features] default = ["devnet1"] -devnet1 = ["ream-consensus-lean/devnet1", "ream-p2p/devnet1"] -devnet2 = ["ream-consensus-lean/devnet2", "ream-p2p/devnet2"] +devnet1 = [ + "ream-chain-lean/devnet1", + "ream-consensus-lean/devnet1", + "ream-fork-choice-lean/devnet1", + "ream-p2p/devnet1", + "ream-rpc-lean/devnet1", + "ream-validator-lean/devnet1", +] +devnet2 = [ + "ream-chain-lean/devnet2", + "ream-consensus-lean/devnet2", + "ream-fork-choice-lean/devnet2", + "ream-p2p/devnet2", + "ream-rpc-lean/devnet2", + "ream-validator-lean/devnet2", +] [dependencies] alloy-primitives.workspace = true diff --git a/crates/common/chain/lean/Cargo.toml b/crates/common/chain/lean/Cargo.toml index 9ee38835e..131a588e1 100644 --- a/crates/common/chain/lean/Cargo.toml +++ b/crates/common/chain/lean/Cargo.toml @@ -11,8 +11,16 @@ version.workspace = true [features] default = ["devnet1"] -devnet1 = [] -devnet2 = [] +devnet1 = [ + "ream-consensus-lean/devnet1", + "ream-fork-choice-lean/devnet1", + "ream-network-state-lean/devnet1", +] +devnet2 = [ + "ream-consensus-lean/devnet2", + "ream-fork-choice-lean/devnet2", + "ream-network-state-lean/devnet2", +] [dependencies] alloy-primitives.workspace = true diff --git a/crates/common/chain/lean/src/lib.rs b/crates/common/chain/lean/src/lib.rs index aa64716bb..86199f305 100644 --- a/crates/common/chain/lean/src/lib.rs +++ b/crates/common/chain/lean/src/lib.rs @@ -1,3 +1,11 @@ +#[cfg(all(feature = "devnet1", feature = "devnet2"))] +compile_error!( + "Features 'devnet1' and 'devnet2' are mutually exclusive. Use --no-default-features --features devnet2 to build for devnet2." +); + +#[cfg(not(any(feature = "devnet1", feature = "devnet2")))] +compile_error!("Either 'devnet1' or 'devnet2' feature must be enabled."); + pub mod clock; pub mod messages; pub mod p2p_request; diff --git a/crates/common/consensus/lean/src/block.rs b/crates/common/consensus/lean/src/block.rs index d95b1ae0a..d2fdf0406 100644 --- a/crates/common/consensus/lean/src/block.rs +++ b/crates/common/consensus/lean/src/block.rs @@ -8,12 +8,10 @@ use ssz_types::{VariableList, typenum::U4096}; use tree_hash::TreeHash; use tree_hash_derive::TreeHash; -#[cfg(feature = "devnet2")] -use crate::attestation::AggregatedAttestation; -#[cfg(feature = "devnet2")] -use crate::attestation::AggregatedAttestations; #[cfg(feature = "devnet1")] use crate::attestation::Attestation; +#[cfg(feature = "devnet2")] +use crate::attestation::{AggregatedAttestation, AggregatedAttestations}; use crate::state::LeanState; #[derive(Debug, PartialEq, Eq, Clone, Serialize, Deserialize, Encode, Decode)] diff --git a/crates/common/consensus/lean/src/lib.rs b/crates/common/consensus/lean/src/lib.rs index 5565f5ff5..e37a1b0b1 100644 --- a/crates/common/consensus/lean/src/lib.rs +++ b/crates/common/consensus/lean/src/lib.rs @@ -1,3 +1,11 @@ +#[cfg(all(feature = "devnet1", feature = "devnet2"))] +compile_error!( + "Features 'devnet1' and 'devnet2' are mutually exclusive. Use --no-default-features --features devnet2 to build for devnet2." +); + +#[cfg(not(any(feature = "devnet1", feature = "devnet2")))] +compile_error!("Either 'devnet1' or 'devnet2' feature must be enabled."); + pub mod attestation; pub mod block; pub mod checkpoint; diff --git a/crates/common/fork_choice/lean/Cargo.toml b/crates/common/fork_choice/lean/Cargo.toml index dbfdc2eeb..4d1135d2f 100644 --- a/crates/common/fork_choice/lean/Cargo.toml +++ b/crates/common/fork_choice/lean/Cargo.toml @@ -11,8 +11,8 @@ version.workspace = true [features] default = ["devnet1"] -devnet1 = [] -devnet2 = [] +devnet1 = ["ream-consensus-lean/devnet1", "ream-network-state-lean/devnet1"] +devnet2 = ["ream-consensus-lean/devnet2", "ream-network-state-lean/devnet2"] [dependencies] alloy-consensus.workspace = true diff --git a/crates/common/validator/lean/Cargo.toml b/crates/common/validator/lean/Cargo.toml index f19eca607..150d0987c 100644 --- a/crates/common/validator/lean/Cargo.toml +++ b/crates/common/validator/lean/Cargo.toml @@ -11,8 +11,8 @@ version.workspace = true [features] default = ["devnet1"] -devnet1 = [] -devnet2 = [] +devnet1 = ["ream-consensus-lean/devnet1", "ream-chain-lean/devnet1"] +devnet2 = ["ream-consensus-lean/devnet2", "ream-chain-lean/devnet2"] [dependencies] alloy-primitives.workspace = true diff --git a/crates/networking/network_state/lean/Cargo.toml b/crates/networking/network_state/lean/Cargo.toml index 8507eeacf..bb009b5dc 100644 --- a/crates/networking/network_state/lean/Cargo.toml +++ b/crates/networking/network_state/lean/Cargo.toml @@ -9,6 +9,11 @@ repository.workspace = true rust-version.workspace = true version.workspace = true +[features] +default = ["devnet1"] +devnet1 = ["ream-consensus-lean/devnet1"] +devnet2 = ["ream-consensus-lean/devnet2"] + [dependencies] libp2p.workspace = true parking_lot.workspace = true diff --git a/crates/networking/p2p/Cargo.toml b/crates/networking/p2p/Cargo.toml index 7db8bf119..445cdc2d9 100644 --- a/crates/networking/p2p/Cargo.toml +++ b/crates/networking/p2p/Cargo.toml @@ -11,8 +11,16 @@ version.workspace = true [features] default = ["devnet1"] -devnet1 = [] -devnet2 = [] +devnet1 = [ + "ream-consensus-lean/devnet1", + "ream-chain-lean/devnet1", + "ream-network-state-lean/devnet1", +] +devnet2 = [ + "ream-consensus-lean/devnet2", + "ream-chain-lean/devnet2", + "ream-network-state-lean/devnet2", +] [dependencies] alloy-primitives.workspace = true diff --git a/crates/networking/p2p/src/lib.rs b/crates/networking/p2p/src/lib.rs index 81c4083da..7657842a9 100644 --- a/crates/networking/p2p/src/lib.rs +++ b/crates/networking/p2p/src/lib.rs @@ -1,3 +1,11 @@ +#[cfg(all(feature = "devnet1", feature = "devnet2"))] +compile_error!( + "Features 'devnet1' and 'devnet2' are mutually exclusive. Use --no-default-features --features devnet2 to build for devnet2." +); + +#[cfg(not(any(feature = "devnet1", feature = "devnet2")))] +compile_error!("Either 'devnet1' or 'devnet2' feature must be enabled."); + pub mod bootnodes; pub mod config; pub mod constants; diff --git a/crates/rpc/lean/Cargo.toml b/crates/rpc/lean/Cargo.toml index 4d263eb8a..d73126a74 100644 --- a/crates/rpc/lean/Cargo.toml +++ b/crates/rpc/lean/Cargo.toml @@ -9,6 +9,19 @@ repository.workspace = true rust-version.workspace = true version.workspace = true +[features] +default = ["devnet1"] +devnet1 = [ + "ream-consensus-lean/devnet1", + "ream-fork-choice-lean/devnet1", + "ream-network-state-lean/devnet1", +] +devnet2 = [ + "ream-consensus-lean/devnet2", + "ream-fork-choice-lean/devnet2", + "ream-network-state-lean/devnet2", +] + [dependencies] actix-web.workspace = true libp2p.workspace = true diff --git a/testing/ef-tests/Cargo.toml b/testing/ef-tests/Cargo.toml index 8dae605a6..7f9fa9c49 100644 --- a/testing/ef-tests/Cargo.toml +++ b/testing/ef-tests/Cargo.toml @@ -10,6 +10,9 @@ rust-version.workspace = true version.workspace = true [features] +default = ["devnet1"] +devnet1 = ["ream-consensus-lean/devnet1"] +devnet2 = ["ream-consensus-lean/devnet2"] ef-tests = [] [dependencies] @@ -30,6 +33,7 @@ tree_hash.workspace = true # ream dependencies ream-bls.workspace = true ream-consensus-beacon = { workspace = true, features = ["test_consensus"] } +ream-consensus-lean.workspace = true ream-consensus-misc.workspace = true ream-execution-engine.workspace = true ream-execution-rpc-types.workspace = true