public virtual Task Init(INethermindApi nethermindApi) { _api = nethermindApi; _mergeConfig = nethermindApi.Config <IMergeConfig>(); _syncConfig = nethermindApi.Config <ISyncConfig>(); _logger = _api.LogManager.GetClassLogger(); if (MergeEnabled) { if (_api.DbProvider == null) { throw new ArgumentException(nameof(_api.DbProvider)); } if (_api.BlockTree == null) { throw new ArgumentException(nameof(_api.BlockTree)); } if (_api.SpecProvider == null) { throw new ArgumentException(nameof(_api.SpecProvider)); } if (_api.ChainSpec == null) { throw new ArgumentException(nameof(_api.ChainSpec)); } if (_api.SealValidator == null) { throw new ArgumentException(nameof(_api.SealValidator)); } EnsureJsonRpcUrl(); EnsureReceiptAvailable(); _blockCacheService = new BlockCacheService(); _poSSwitcher = new PoSSwitcher( _mergeConfig, _syncConfig, _api.DbProvider.GetDb <IDb>(DbNames.Metadata), _api.BlockTree, _api.SpecProvider, _api.LogManager); _invalidChainTracker = new InvalidChainTracker.InvalidChainTracker( _poSSwitcher, _api.BlockTree, _blockCacheService, _api.LogManager); _api.DisposeStack.Push(_invalidChainTracker); _blockFinalizationManager = new ManualBlockFinalizationManager(); _api.RewardCalculatorSource = new MergeRewardCalculatorSource( _api.RewardCalculatorSource ?? NoBlockRewards.Instance, _poSSwitcher); _api.SealValidator = new MergeSealValidator(_poSSwitcher, _api.SealValidator); _api.GossipPolicy = new MergeGossipPolicy(_api.GossipPolicy, _poSSwitcher, _blockCacheService); _api.BlockPreprocessor.AddFirst(new MergeProcessingRecoveryStep(_poSSwitcher)); } return(Task.CompletedTask); }
public MergeBlockDownloaderFactory(IPoSSwitcher poSSwitcher, IBeaconPivot beaconPivot, ISpecProvider specProvider, IBlockTree blockTree, IBlockCacheService blockCacheService, IReceiptStorage receiptStorage, IBlockValidator blockValidator, ISealValidator sealValidator, ISyncPeerPool peerPool, ISyncConfig syncConfig, IBetterPeerStrategy betterPeerStrategy, ISyncReport syncReport, ISyncProgressResolver syncProgressResolver, ILogManager logManager) { _poSSwitcher = poSSwitcher ?? throw new ArgumentNullException(nameof(poSSwitcher)); _beaconPivot = beaconPivot ?? throw new ArgumentNullException(nameof(beaconPivot)); _specProvider = specProvider ?? throw new ArgumentNullException(nameof(specProvider)); _blockTree = blockTree ?? throw new ArgumentNullException(nameof(blockTree)); _receiptStorage = receiptStorage ?? throw new ArgumentNullException(nameof(receiptStorage)); _blockValidator = blockValidator ?? throw new ArgumentNullException(nameof(blockValidator)); _sealValidator = sealValidator ?? throw new ArgumentNullException(nameof(sealValidator)); _syncPeerPool = peerPool ?? throw new ArgumentNullException(nameof(peerPool)); _betterPeerStrategy = betterPeerStrategy ?? throw new ArgumentNullException(nameof(betterPeerStrategy)); _logManager = logManager ?? throw new ArgumentNullException(nameof(logManager)); _syncReport = syncReport ?? throw new ArgumentNullException(nameof(syncReport)); _chainLevelHelper = new ChainLevelHelper(_blockTree, _beaconPivot, syncConfig, _logManager); _syncProgressResolver = syncProgressResolver ?? throw new ArgumentNullException(nameof(syncProgressResolver));; }
public ForkchoiceUpdatedV1Handler( IBlockTree blockTree, IManualBlockFinalizationManager manualBlockFinalizationManager, IPoSSwitcher poSSwitcher, IPayloadPreparationService payloadPreparationService, IBlockProcessingQueue processingQueue, IBlockCacheService blockCacheService, IInvalidChainTracker invalidChainTracker, IMergeSyncController mergeSyncController, IBeaconPivot beaconPivot, IPeerRefresher peerRefresher, ILogManager logManager) { _blockTree = blockTree ?? throw new ArgumentNullException(nameof(blockTree)); _manualBlockFinalizationManager = manualBlockFinalizationManager ?? throw new ArgumentNullException(nameof(manualBlockFinalizationManager)); _poSSwitcher = poSSwitcher ?? throw new ArgumentNullException(nameof(poSSwitcher)); _payloadPreparationService = payloadPreparationService; _processingQueue = processingQueue; _blockCacheService = blockCacheService; _invalidChainTracker = invalidChainTracker; _mergeSyncController = mergeSyncController; _beaconPivot = beaconPivot; _peerRefresher = peerRefresher; _logger = logManager.GetClassLogger(); }
public MergeGossipPolicy( IGossipPolicy?apiGossipPolicy, IPoSSwitcher?poSSwitcher, IBlockCacheService blockCacheService) { _preMergeGossipPolicy = apiGossipPolicy ?? throw new ArgumentNullException(nameof(apiGossipPolicy)); _poSSwitcher = poSSwitcher ?? throw new ArgumentNullException(nameof(poSSwitcher)); _blockCacheService = blockCacheService ?? throw new ArgumentNullException(nameof(blockCacheService)); }
public BeaconSync( IBeaconPivot beaconPivot, IBlockTree blockTree, ISyncConfig syncConfig, IBlockCacheService blockCacheService, ILogManager logManager) { _beaconPivot = beaconPivot; _blockTree = blockTree; _syncConfig = syncConfig; _blockCacheService = blockCacheService; _logger = logManager.GetClassLogger(); }