def __init__(self, chain: AsyncChainAPI, db: BaseAsyncChainDB, peer_pool: ETHPeerPool, enable_backfill: bool = True, checkpoint: Checkpoint = None) -> None: self.logger = get_logger('trinity.sync.header.chain.HeaderChainSyncer') self._db = db self._checkpoint = checkpoint self._enable_backfill = enable_backfill self._chain = chain self._peer_pool = peer_pool if checkpoint is None: self._launch_strategy: SyncLaunchStrategyAPI = FromGenesisLaunchStrategy( db) else: self._launch_strategy = FromCheckpointLaunchStrategy( db, chain, checkpoint, peer_pool, ) self._header_syncer = ETHHeaderChainSyncer(chain, db, peer_pool, self._launch_strategy)
def __init__(self, chain: AsyncChainAPI, db: BaseAsyncHeaderDB, peer: TChainPeer, launch_strategy: SyncLaunchStrategyAPI = None) -> None: self.logger = get_logger('trinity.sync.common.headers.SkeletonSyncer') self._chain = chain self._db = db if launch_strategy is None: launch_strategy = FromGenesisLaunchStrategy(db, chain) self._launch_strategy = launch_strategy self.peer = peer max_pending_headers = peer.max_headers_fetch * 8 self._fetched_headers = asyncio.Queue(max_pending_headers)
def __init__(self, chain: AsyncChainAPI, db: BaseAsyncHeaderDB, peer: TChainPeer, token: CancelToken, launch_strategy: SyncLaunchStrategyAPI = None) -> None: super().__init__(token=token) self._chain = chain self._db = db if launch_strategy is None: launch_strategy = FromGenesisLaunchStrategy(db, chain) self._launch_strategy = launch_strategy self.peer = peer max_pending_headers = peer.max_headers_fetch * 8 self._fetched_headers = asyncio.Queue(max_pending_headers)
def __init__(self, chain: AsyncChainAPI, db: BaseAsyncHeaderDB, peer_pool: BaseChainPeerPool, launch_strategy: SyncLaunchStrategyAPI = None) -> None: self.logger = get_logger('trinity.sync.common.headers.SkeletonSyncer') self._db = db self._chain = chain self._peer_pool = peer_pool self._tip_monitor = self.tip_monitor_class(peer_pool) self._last_target_header_hash: Hash32 = None self._skeleton: SkeletonSyncer[TChainPeer] = None if launch_strategy is None: launch_strategy = FromGenesisLaunchStrategy(self._db, self._chain) self._launch_strategy = launch_strategy # Track if there is capacity for syncing more headers self._buffer_capacity = asyncio.Event() self._reset_buffer()
def __init__( self, chain: AsyncChainAPI, db: AtomicDatabaseAPI, chain_db: BaseAsyncChainDB, peer_pool: ETHPeerPool, event_bus: EndpointAPI, metrics_registry: MetricsRegistry, checkpoint: Checkpoint = None, force_beam_block_number: BlockNumber = None, enable_backfill: bool = True, enable_state_backfill: bool = True) -> None: self.logger = get_logger('trinity.sync.beam.chain.BeamSyncer') self.metrics_registry = metrics_registry self._body_for_header_exists = body_for_header_exists(chain_db, chain) if checkpoint is None: self._launch_strategy: SyncLaunchStrategyAPI = FromGenesisLaunchStrategy(chain_db) else: self._launch_strategy = FromCheckpointLaunchStrategy( chain_db, chain, checkpoint, peer_pool, ) self._header_syncer = ETHHeaderChainSyncer( chain, chain_db, peer_pool, self._launch_strategy, ) self._header_persister = HeaderOnlyPersist( self._header_syncer, chain_db, force_beam_block_number, self._launch_strategy, ) self._backfiller = BeamStateBackfill(db, peer_pool) if enable_state_backfill: self._queen_queue: QueenTrackerAPI = self._backfiller else: self._queen_queue = QueeningQueue(peer_pool) self._state_downloader = BeamDownloader( db, peer_pool, self._queen_queue, event_bus, ) self._data_hunter = MissingDataEventHandler( self._state_downloader, event_bus, self.metrics_registry, ) self._block_importer = BeamBlockImporter( chain, db, self._state_downloader, self._backfiller, event_bus, self.metrics_registry, ) self._launchpoint_header_syncer = HeaderLaunchpointSyncer(self._header_syncer) self._body_syncer = RegularChainBodySyncer( chain, chain_db, peer_pool, self._launchpoint_header_syncer, self._block_importer, ) self._manual_header_syncer = ManualHeaderSyncer() self._fast_syncer = RigorousFastChainBodySyncer( chain, chain_db, peer_pool, self._manual_header_syncer, ) self._header_backfill = SequentialHeaderChainGapSyncer(chain, chain_db, peer_pool) self._block_backfill = BodyChainGapSyncer(chain, chain_db, peer_pool) self._chain = chain self._enable_backfill = enable_backfill self._enable_state_backfill = enable_state_backfill
def __init__(self, chain: AsyncChainAPI, db: BaseAtomicDB, chain_db: BaseAsyncChainDB, peer_pool: ETHPeerPool, event_bus: EndpointAPI, checkpoint: Checkpoint = None, force_beam_block_number: int = None, token: CancelToken = None) -> None: super().__init__(token=token) if checkpoint is None: self._launch_strategy: SyncLaunchStrategyAPI = FromGenesisLaunchStrategy( chain_db, chain) else: self._launch_strategy = FromCheckpointLaunchStrategy( chain_db, chain, checkpoint, peer_pool, ) self._header_syncer = ETHHeaderChainSyncer(chain, chain_db, peer_pool, self._launch_strategy, self.cancel_token) self._header_persister = HeaderOnlyPersist( self._header_syncer, chain_db, force_beam_block_number, self._launch_strategy, self.cancel_token, ) self._state_downloader = BeamDownloader(db, peer_pool, event_bus, self.cancel_token) self._data_hunter = MissingDataEventHandler( self._state_downloader, event_bus, token=self.cancel_token, ) self._block_importer = BeamBlockImporter( chain, db, self._state_downloader, event_bus, self.cancel_token, ) self._checkpoint_header_syncer = HeaderCheckpointSyncer( self._header_syncer) self._body_syncer = RegularChainBodySyncer( chain, chain_db, peer_pool, self._checkpoint_header_syncer, self._block_importer, self.cancel_token, ) self._manual_header_syncer = ManualHeaderSyncer() self._fast_syncer = RigorousFastChainBodySyncer( chain, chain_db, peer_pool, self._manual_header_syncer, self.cancel_token, ) self._chain = chain
def __init__(self, chain: AsyncChainAPI, db: AtomicDatabaseAPI, chain_db: BaseAsyncChainDB, peer_pool: ETHPeerPool, event_bus: EndpointAPI, checkpoint: Checkpoint = None, force_beam_block_number: BlockNumber = None) -> None: self.logger = get_logger('trinity.sync.beam.chain.BeamSyncer') if checkpoint is None: self._launch_strategy: SyncLaunchStrategyAPI = FromGenesisLaunchStrategy( chain_db, chain) else: self._launch_strategy = FromCheckpointLaunchStrategy( chain_db, chain, checkpoint, peer_pool, ) self._header_syncer = ETHHeaderChainSyncer( chain, chain_db, peer_pool, self._launch_strategy, ) self._header_persister = HeaderOnlyPersist( self._header_syncer, chain_db, force_beam_block_number, self._launch_strategy, ) self._backfiller = BeamStateBackfill(db, peer_pool) self._state_downloader = BeamDownloader( db, peer_pool, self._backfiller, event_bus, ) self._data_hunter = MissingDataEventHandler( self._state_downloader, event_bus, ) self._block_importer = BeamBlockImporter( chain, db, self._state_downloader, self._backfiller, event_bus, ) self._checkpoint_header_syncer = HeaderCheckpointSyncer( self._header_syncer) self._body_syncer = RegularChainBodySyncer( chain, chain_db, peer_pool, self._checkpoint_header_syncer, self._block_importer, ) self._manual_header_syncer = ManualHeaderSyncer() self._fast_syncer = RigorousFastChainBodySyncer( chain, chain_db, peer_pool, self._manual_header_syncer, ) self._chain = chain