mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-05-06 13:48:03 +00:00
5208bed7d2
Extract `WarpSync` (and `StateSync` as part of warp sync) from `ChainSync` as independent syncing strategy called by `SyncingEngine`. Introduce `SyncingStrategy` enum as a proxy between `SyncingEngine` and specific syncing strategies. ## Limitations Gap sync is kept in `ChainSync` for now because it shares the same set of peers as block syncing implementation in `ChainSync`. Extraction of a common context responsible for peer management in syncing strategies able to run in parallel is planned for a follow-up PR. ## Further improvements A possibility of conversion of `SyncingStartegy` into a trait should be evaluated. The main stopper for this is that different strategies need to communicate different actions to `SyncingEngine` and respond to different events / provide different APIs (e.g., requesting justifications is only possible via `ChainSync` and not through `WarpSync`; `SendWarpProofRequest` action is only relevant to `WarpSync`, etc.) --------- Co-authored-by: Aaro Altonen <48052676+altonen@users.noreply.github.com>
45 lines
1.4 KiB
Rust
45 lines
1.4 KiB
Rust
// This file is part of Substrate.
|
|
|
|
// Copyright (C) Parity Technologies (UK) Ltd.
|
|
// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0
|
|
|
|
// This program is free software: you can redistribute it and/or modify
|
|
// it under the terms of the GNU General Public License as published by
|
|
// the Free Software Foundation, either version 3 of the License, or
|
|
// (at your option) any later version.
|
|
|
|
// This program is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU General Public License for more details.
|
|
|
|
// You should have received a copy of the GNU General Public License
|
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
|
|
//! Blockchain syncing implementation in Substrate.
|
|
|
|
pub use service::syncing_service::SyncingService;
|
|
pub use strategy::warp::{WarpSyncParams, WarpSyncPhase, WarpSyncProgress};
|
|
pub use types::{SyncEvent, SyncEventStream, SyncState, SyncStatus, SyncStatusProvider};
|
|
|
|
mod block_announce_validator;
|
|
mod extra_requests;
|
|
mod futures_stream;
|
|
mod pending_responses;
|
|
mod request_metrics;
|
|
mod schema;
|
|
mod types;
|
|
|
|
pub mod block_relay_protocol;
|
|
pub mod block_request_handler;
|
|
pub mod blocks;
|
|
pub mod engine;
|
|
pub mod mock;
|
|
pub mod service;
|
|
pub mod state_request_handler;
|
|
pub mod strategy;
|
|
pub mod warp_request_handler;
|
|
|
|
/// Log target for this crate.
|
|
const LOG_TARGET: &str = "sync";
|