Skip to content

Commit

Permalink
build: add avail and celestia crates behind feature flags (keep-stark…
Browse files Browse the repository at this point in the history
…net-strange#1355)

Co-authored-by: fishseabowl <xuefei.han@domichain.io>
  • Loading branch information
fishseabowl and fishseabowl authored Jan 8, 2024
1 parent 78bbebc commit bd1898a
Show file tree
Hide file tree
Showing 5 changed files with 31 additions and 18 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
- feat(settlement): e2e test with Madara node settling on Ethereum contract
- refactor: use `map` in `estimate_fee` to stop computation on error
- fix: `tempdir` crate has been deprecated; use `tempfile` instead
- dev: add avail and celestia crates behind a feature flag

## v0.6.0

Expand Down
16 changes: 7 additions & 9 deletions crates/client/data-availability/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -48,15 +48,6 @@ starknet_api = { workspace = true, default-features = true }
# Ethereum
ethers = { workspace = true }

# Avail subxt dependency
avail-subxt = { git = "https://github.com/availproject/avail", version = "0.4.0", tag = "v1.8.0.0" }
sp-keyring = { workspace = true }
subxt = { workspace = true }

# Celestia
celestia-rpc = { git = "https://github.com/eigerco/lumina", rev = "ccc5b9bfeac632cccd32d35ecb7b7d51d71fbb87" }
celestia-types = { git = "https://github.com/eigerco/lumina", rev = "ccc5b9bfeac632cccd32d35ecb7b7d51d71fbb87" }

# Madara
mp-digest-log = { workspace = true, default-features = true }
mp-hashers = { workspace = true, default-features = true }
Expand All @@ -66,8 +57,15 @@ mp-storage = { workspace = true, default-features = true }
prometheus-endpoint = { workspace = true }

# Optional
avail-subxt = { git = "https://github.com/availproject/avail", version = "0.4.0", tag = "v1.8.0.0", optional = true }
celestia-rpc = { git = "https://github.com/eigerco/lumina", rev = "ccc5b9bfeac632cccd32d35ecb7b7d51d71fbb87", optional = true }
celestia-types = { git = "https://github.com/eigerco/lumina", rev = "ccc5b9bfeac632cccd32d35ecb7b7d51d71fbb87", optional = true }
clap = { workspace = true, features = ["derive"], optional = true }
sp-keyring = { workspace = true, optional = true }
subxt = { workspace = true, optional = true }

[features]
default = []
clap = ["dep:clap"]
avail = ["dep:avail-subxt", "dep:sp-keyring", "dep:subxt"]
celestia = ["dep:celestia-rpc", "dep:celestia-types"]
4 changes: 4 additions & 0 deletions crates/client/data-availability/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
#[cfg(feature = "avail")]
pub mod avail;
#[cfg(feature = "celestia")]
pub mod celestia;
pub mod ethereum;
mod sharp;
Expand Down Expand Up @@ -34,8 +36,10 @@ pub struct DataAvailabilityWorker<B, H>(PhantomData<(B, H)>);
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "clap", derive(clap::ValueEnum))]
pub enum DaLayer {
#[cfg(feature = "celestia")]
Celestia,
Ethereum,
#[cfg(feature = "avail")]
Avail,
}

Expand Down
10 changes: 6 additions & 4 deletions crates/node/src/service.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@ use futures::prelude::*;
use madara_runtime::opaque::Block;
use madara_runtime::{self, Hash, RuntimeApi, SealingMode, StarknetHasher};
use mc_commitment_state_diff::CommitmentStateDiffWorker;
use mc_data_availability::avail::config::AvailConfig;
use mc_data_availability::avail::AvailClient;
use mc_data_availability::celestia::config::CelestiaConfig;
use mc_data_availability::celestia::CelestiaClient;
#[cfg(feature = "avail")]
use mc_data_availability::avail::{config::AvailConfig, AvailClient};
#[cfg(feature = "celestia")]
use mc_data_availability::celestia::{config::CelestiaConfig, CelestiaClient};
use mc_data_availability::ethereum::config::EthereumConfig;
use mc_data_availability::ethereum::EthereumClient;
use mc_data_availability::{DaClient, DaLayer, DataAvailabilityWorker};
Expand Down Expand Up @@ -432,6 +432,7 @@ pub fn new_full(
);

let da_client: Arc<dyn DaClient + Send + Sync> = match da_layer {
#[cfg(feature = "celestia")]
DaLayer::Celestia => {
let celestia_conf = CelestiaConfig::try_from(&da_path)?;
Arc::new(CelestiaClient::try_from(celestia_conf).map_err(|e| ServiceError::Other(e.to_string()))?)
Expand All @@ -440,6 +441,7 @@ pub fn new_full(
let ethereum_conf = EthereumConfig::try_from(&da_path)?;
Arc::new(EthereumClient::try_from(ethereum_conf)?)
}
#[cfg(feature = "avail")]
DaLayer::Avail => {
let avail_conf = AvailConfig::try_from(&da_path)?;
Arc::new(AvailClient::try_from(avail_conf).map_err(|e| ServiceError::Other(e.to_string()))?)
Expand Down
18 changes: 13 additions & 5 deletions da-test/src/utils.rs
Original file line number Diff line number Diff line change
@@ -1,19 +1,24 @@
use std::path::PathBuf;

use mc_data_availability::avail::config::AvailConfig;
use mc_data_availability::avail::AvailClient;
use mc_data_availability::celestia::config::CelestiaConfig;
use mc_data_availability::celestia::CelestiaClient;
#[cfg(feature = "avail")]
use mc_data_availability::avail::{config::AvailConfig, AvailClient};
#[cfg(feature = "celestia")]
use mc_data_availability::celestia::{config::CelestiaConfig, CelestiaClient};
use mc_data_availability::ethereum::config::EthereumConfig;
use mc_data_availability::ethereum::EthereumClient;
use mc_data_availability::{DaClient, DaLayer};

use crate::constants::{AVAIL_DA_CONFIG, CELESTIA_DA_CONFIG, ETHEREUM_DA_CONFIG};
#[cfg(feature = "avail")]
use crate::constants::AVAIL_DA_CONFIG;
#[cfg(feature = "celestia")]
use crate::constants::CELESTIA_DA_CONFIG;
use crate::constants::ETHEREUM_DA_CONFIG;

pub fn get_da_client(da_layer: DaLayer) -> Box<dyn DaClient + Send + Sync> {
let da_path = get_da_path(da_layer);

let da_client: Box<dyn DaClient + Send + Sync> = match da_layer {
#[cfg(feature = "celestia")]
DaLayer::Celestia => {
let celestia_conf = CelestiaConfig::try_from(&da_path).expect("Failed to read Celestia config");
Box::new(CelestiaClient::try_from(celestia_conf).expect("Failed to create Celestia client"))
Expand All @@ -22,6 +27,7 @@ pub fn get_da_client(da_layer: DaLayer) -> Box<dyn DaClient + Send + Sync> {
let ethereum_conf = EthereumConfig::try_from(&da_path).expect("Failed to read Ethereum config");
Box::new(EthereumClient::try_from(ethereum_conf).expect("Failed to create Ethereum client"))
}
#[cfg(feature = "avail")]
DaLayer::Avail => {
let avail_conf = AvailConfig::try_from(&da_path).expect("Failed to read Avail config");
Box::new(AvailClient::try_from(avail_conf).expect("Failed to create Avail client"))
Expand All @@ -33,8 +39,10 @@ pub fn get_da_client(da_layer: DaLayer) -> Box<dyn DaClient + Send + Sync> {

pub(crate) fn get_da_path(da_layer: DaLayer) -> PathBuf {
match da_layer {
#[cfg(feature = "celestia")]
DaLayer::Celestia => CELESTIA_DA_CONFIG.into(),
DaLayer::Ethereum => ETHEREUM_DA_CONFIG.into(),
#[cfg(feature = "avail")]
DaLayer::Avail => AVAIL_DA_CONFIG.into(),
}
}

0 comments on commit bd1898a

Please sign in to comment.