Skip to content

Commit 5086ea3

Browse files
committed
dolos AuthoritySelectionDataSource draft
1 parent 9b98fc3 commit 5086ea3

File tree

5 files changed

+384
-36
lines changed

5 files changed

+384
-36
lines changed

demo/node/src/data_sources.rs

Lines changed: 53 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use sidechain_mc_hash::McHashDataSource;
77
use sp_block_participation::inherent_data::BlockParticipationDataSource;
88
use sp_governed_map::GovernedMapDataSource;
99
use sp_partner_chains_bridge::TokenBridgeDataSource;
10-
use std::{error::Error, sync::Arc};
10+
use std::{error::Error, sync::Arc, time::Duration};
1111

1212
pub const DATA_SOURCE_VAR: &str = "CARDANO_DATA_SOURCE";
1313

@@ -81,7 +81,7 @@ pub(crate) async fn create_cached_data_sources(
8181
ServiceError::Application(format!("Failed to create mock data sources: {err}").into())
8282
}),
8383

84-
DataSourceType::Dolos => create_dolos_data_sources().map_err(|err| {
84+
DataSourceType::Dolos => create_dolos_data_sources(metrics_opt).await.map_err(|err| {
8585
ServiceError::Application(format!("Failed to create dolos data sources: {err}").into())
8686
}),
8787
}
@@ -101,16 +101,58 @@ pub fn create_mock_data_sources()
101101
})
102102
}
103103

104-
pub fn create_dolos_data_sources()
105-
-> std::result::Result<DataSources, Box<dyn Error + Send + Sync + 'static>> {
106-
use partner_chains_dolos_data_sources::*;
104+
// Currently uses db-sync for unimplemented dolos data sources
105+
pub async fn create_dolos_data_sources(
106+
metrics_opt: Option<McFollowerMetrics>,
107+
) -> std::result::Result<DataSources, Box<dyn Error + Send + Sync + 'static>> {
108+
let dolos_client = partner_chains_dolos_data_sources::client::MiniBFClient::new(
109+
"http://localhost:3000",
110+
Duration::from_secs(5),
111+
);
112+
let pool = partner_chains_db_sync_data_sources::get_connection_from_env().await?;
113+
// block data source is reused between mc_hash and sidechain_rpc to share cache
114+
let block = Arc::new(
115+
partner_chains_db_sync_data_sources::BlockDataSourceImpl::new_from_env(pool.clone())
116+
.await?,
117+
);
107118
Ok(DataSources {
108-
sidechain_rpc: Arc::new(SidechainRpcDataSourceImpl::new()),
109-
mc_hash: Arc::new(McHashDataSourceImpl::new()),
110-
authority_selection: Arc::new(AuthoritySelectionDataSourceImpl::new()),
111-
block_participation: Arc::new(StakeDistributionDataSourceImpl::new()),
112-
governed_map: Arc::new(GovernedMapDataSourceImpl::default()),
113-
bridge: Arc::new(TokenBridgeDataSourceImpl::new()),
119+
sidechain_rpc: Arc::new(
120+
partner_chains_dolos_data_sources::SidechainRpcDataSourceImpl::new(
121+
dolos_client.clone(),
122+
),
123+
),
124+
mc_hash: Arc::new(partner_chains_dolos_data_sources::McHashDataSourceImpl::new(
125+
dolos_client.clone(),
126+
)),
127+
authority_selection: Arc::new(
128+
partner_chains_dolos_data_sources::AuthoritySelectionDataSourceImpl::new(
129+
dolos_client.clone(),
130+
),
131+
),
132+
block_participation: Arc::new(
133+
partner_chains_db_sync_data_sources::StakeDistributionDataSourceImpl::new(
134+
pool.clone(),
135+
metrics_opt.clone(),
136+
STAKE_CACHE_SIZE,
137+
),
138+
),
139+
governed_map: Arc::new(
140+
partner_chains_db_sync_data_sources::GovernedMapDataSourceCachedImpl::new(
141+
pool.clone(),
142+
metrics_opt.clone(),
143+
GOVERNED_MAP_CACHE_SIZE,
144+
block.clone(),
145+
)
146+
.await?,
147+
),
148+
bridge: Arc::new(
149+
partner_chains_db_sync_data_sources::CachedTokenBridgeDataSourceImpl::new(
150+
pool,
151+
metrics_opt,
152+
block,
153+
BRIDGE_TRANSFER_CACHE_LOOKAHEAD,
154+
),
155+
),
114156
})
115157
}
116158

0 commit comments

Comments
 (0)