public void Sync_is_disabled_when_needed(string configFile, bool isSyncEnabled) { ConfigProvider configProvider = GetConfigProviderFromFile(configFile); ISyncConfig config = configProvider.GetConfig <ISyncConfig>(); Assert.AreEqual(isSyncEnabled, config.SynchronizationEnabled); }
public FastBodiesSyncFeed(IBlockTree blockTree, ISyncPeerPool syncPeerPool, ISyncConfig syncConfig, ISyncReport syncReport, ILogManager logManager) : base(logManager) { _logger = logManager?.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager)); _blockTree = blockTree ?? throw new ArgumentNullException(nameof(blockTree)); _syncPeerPool = syncPeerPool ?? throw new ArgumentNullException(nameof(syncPeerPool)); _syncConfig = syncConfig ?? throw new ArgumentNullException(nameof(syncConfig)); _syncReport = syncReport ?? throw new ArgumentNullException(nameof(syncReport)); if (!_syncConfig.UseGethLimitsInFastBlocks) { _bodiesRequestSize = NethermindSyncLimits.MaxBodyFetch; } if (!_syncConfig.FastBlocks) { throw new InvalidOperationException("Entered fast blocks mode without fast blocks enabled in configuration."); } _pivotNumber = _syncConfig.PivotNumberParsed; _pivotHash = _syncConfig.PivotHashParsed; Block lowestInsertedBody = _blockTree.LowestInsertedBody; Keccak startBodyHash = lowestInsertedBody?.Hash ?? _pivotHash; _lowestRequestedBodyHash = startBodyHash; Activate(); }
public Synchronizer( ISpecProvider specProvider, IBlockTree blockTree, IReceiptStorage receiptStorage, IBlockValidator blockValidator, ISealValidator sealValidator, IEthSyncPeerPool peerPool, ISyncConfig syncConfig, INodeDataDownloader nodeDataDownloader, ISyncReport syncReport, ILogManager logManager) { _logger = logManager?.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager)); _specProvider = specProvider ?? throw new ArgumentNullException(nameof(specProvider)); _blockTree = blockTree ?? throw new ArgumentNullException(nameof(blockTree)); _receiptStorage = receiptStorage ?? throw new ArgumentNullException(nameof(receiptStorage)); _syncConfig = syncConfig ?? throw new ArgumentNullException(nameof(syncConfig)); _syncPeerPool = peerPool ?? throw new ArgumentNullException(nameof(peerPool)); _nodeDataDownloader = nodeDataDownloader ?? throw new ArgumentNullException(nameof(nodeDataDownloader)); _syncReport = syncReport ?? throw new ArgumentNullException(nameof(syncReport)); SyncProgressResolver syncProgressResolver = new SyncProgressResolver(_blockTree, receiptStorage, _nodeDataDownloader, syncConfig, logManager); _syncMode = new SyncModeSelector(syncProgressResolver, _syncPeerPool, _syncConfig, logManager); _blockDownloader = new BlockDownloader(_blockTree, blockValidator, sealValidator, syncReport, receiptStorage, specProvider, logManager); if (syncConfig.FastBlocks) { FastBlocksFeed feed = new FastBlocksFeed(_specProvider, _blockTree, _receiptStorage, _syncPeerPool, syncConfig, _syncReport, logManager); _fastBlockDownloader = new FastBlocksDownloader(_syncPeerPool, feed, blockValidator, sealValidator, logManager); } }
public IBlockchainBridge CreateBlockchainBridge() { ReadOnlyBlockTree readOnlyTree = new ReadOnlyBlockTree(BlockTree); IReadOnlyDbProvider readOnlyDbProvider = new ReadOnlyDbProvider(DbProvider, false); ReadOnlyTxProcessingEnv readOnlyTxProcessingEnv = new ReadOnlyTxProcessingEnv( readOnlyDbProvider, readOnlyTree, SpecProvider, LogManager); IMiningConfig miningConfig = ConfigProvider.GetConfig <IMiningConfig>(); ISyncConfig syncConfig = ConfigProvider.GetConfig <ISyncConfig>(); return(new BlockchainBridge( readOnlyTxProcessingEnv, TxPool, ReceiptFinder, FilterStore, FilterManager, EthereumEcdsa, Timestamper, LogFinder, miningConfig.Enabled, syncConfig.BeamSync && syncConfig.FastSync )); }
private IBeaconPivot PreparePivot(long blockNumber, ISyncConfig syncConfig, IBlockTree blockTree, BlockHeader?pivotHeader = null) { IBeaconPivot pivot = new BeaconPivot(syncConfig, new MemDb(), blockTree, LimboLogs.Instance); pivot.EnsurePivot(pivotHeader ?? Build.A.BlockHeader.WithNumber(blockNumber).TestObject); return(pivot); }
public ReceiptsSyncFeed( ISyncModeSelector syncModeSelector, ISpecProvider specProvider, IBlockTree blockTree, IReceiptStorage receiptStorage, ISyncPeerPool syncPeerPool, ISyncConfig syncConfig, ISyncReport syncReport, ILogManager logManager) : base(syncModeSelector) { _logger = logManager?.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager)); _receiptStorage = receiptStorage ?? throw new ArgumentNullException(nameof(receiptStorage)); _specProvider = specProvider ?? throw new ArgumentNullException(nameof(specProvider)); _syncPeerPool = syncPeerPool ?? throw new ArgumentNullException(nameof(syncPeerPool)); _syncConfig = syncConfig ?? throw new ArgumentNullException(nameof(syncConfig)); _syncReport = syncReport ?? throw new ArgumentNullException(nameof(syncReport)); _blockTree = blockTree ?? throw new ArgumentNullException(nameof(blockTree)); if (!_syncConfig.FastBlocks) { throw new InvalidOperationException("Entered fast blocks mode without fast blocks enabled in configuration."); } _pivotNumber = _syncConfig.PivotNumberParsed; _syncStatusList = new SyncStatusList( _blockTree, _pivotNumber, _receiptStorage.LowestInsertedReceiptBlockNumber); }
public async Task Execute() { ILogger logger = _context.LogManager.GetClassLogger(); /* sync */ IDbConfig dbConfig = _context.Config <IDbConfig>(); ISyncConfig syncConfig = _context.Config <ISyncConfig>(); IInitConfig initConfig = _context.Config <IInitConfig>(); foreach (PropertyInfo propertyInfo in typeof(IDbConfig).GetProperties()) { if (logger.IsDebug) { logger.Debug($"DB {propertyInfo.Name}: {propertyInfo.GetValue(dbConfig)}"); } } _context.DbProvider = await GetDbProvider(initConfig, dbConfig, initConfig.StoreReceipts || syncConfig.DownloadReceiptsInFastSync); if (syncConfig.BeamSync) { BeamSyncDbProvider beamSyncProvider = new BeamSyncDbProvider(_context.DbProvider, "processor DB", _context.LogManager); _context.DbProvider = beamSyncProvider; _context.NodeDataConsumer = beamSyncProvider.NodeDataConsumer; } }
public void Geth_limits_configs_are_correct(string configFile, bool useGethLimitsInFastSync) { ConfigProvider configProvider = GetConfigProviderFromFile(configFile); ISyncConfig config = configProvider.GetConfig <ISyncConfig>(); Assert.AreEqual(useGethLimitsInFastSync, config.UseGethLimitsInFastBlocks); }
public FastHeadersSyncFeed(IBlockTree blockTree, ISyncPeerPool syncPeerPool, ISyncConfig syncConfig, ISyncReport syncReport, ILogManager logManager) : base(logManager) { _syncPeerPool = syncPeerPool ?? throw new ArgumentNullException(nameof(syncPeerPool)); _syncReport = syncReport ?? throw new ArgumentNullException(nameof(syncReport)); _blockTree = blockTree ?? throw new ArgumentNullException(nameof(blockTree)); _syncConfig = syncConfig ?? throw new ArgumentNullException(nameof(syncConfig)); _logger = logManager?.GetClassLogger <FastHeadersSyncFeed>() ?? throw new ArgumentNullException(nameof(FastHeadersSyncFeed)); if (!_syncConfig.UseGethLimitsInFastBlocks) { _headersRequestSize = NethermindSyncLimits.MaxHeaderFetch; } if (!_syncConfig.FastBlocks) { throw new InvalidOperationException("Entered fast blocks mode without fast blocks enabled in configuration."); } _pivotNumber = _syncConfig.PivotNumberParsed; BlockHeader lowestInserted = _blockTree.LowestInsertedHeader; long startNumber = lowestInserted?.Number ?? _pivotNumber; Keccak startHeaderHash = lowestInserted?.Hash ?? _syncConfig.PivotHashParsed; UInt256 startTotalDifficulty = lowestInserted?.TotalDifficulty ?? _syncConfig.PivotTotalDifficultyParsed; _nextHeaderHash = startHeaderHash; _nextHeaderDiff = startTotalDifficulty; _lowestRequestedHeaderNumber = startNumber + 1; Activate(); }
public Synchronizer( IDbProvider dbProvider, ISpecProvider specProvider, IBlockTree blockTree, IReceiptStorage receiptStorage, IBlockValidator blockValidator, ISealValidator sealValidator, ISyncPeerPool peerPool, INodeStatsManager nodeStatsManager, ISyncModeSelector syncModeSelector, ISyncConfig syncConfig, ILogManager logManager) { _dbProvider = dbProvider ?? throw new ArgumentNullException(nameof(dbProvider)); _syncMode = syncModeSelector ?? throw new ArgumentNullException(nameof(syncModeSelector)); _logger = logManager?.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager)); _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)); _syncConfig = syncConfig ?? throw new ArgumentNullException(nameof(syncConfig)); _syncPeerPool = peerPool ?? throw new ArgumentNullException(nameof(peerPool)); _nodeStatsManager = nodeStatsManager ?? throw new ArgumentNullException(nameof(nodeStatsManager)); _logManager = logManager; _syncReport = new SyncReport(_syncPeerPool, _nodeStatsManager, _syncMode, syncConfig, logManager); }
public EthModuleFactory( IDbProvider dbProvider, ITxPool txPool, ITxSender txSender, IWallet wallet, IBlockTree blockTree, IEthereumEcdsa ethereumEcdsa, IBlockProcessor blockProcessor, IReceiptFinder receiptFinder, ISpecProvider specProvider, IJsonRpcConfig config, ISyncConfig syncConfig, IBloomStorage bloomStorage, ILogManager logManager, bool isMining) { _dbProvider = dbProvider ?? throw new ArgumentNullException(nameof(dbProvider)); _txPool = txPool ?? throw new ArgumentNullException(nameof(txPool)); _txSender = txSender ?? throw new ArgumentNullException(nameof(txSender)); _wallet = wallet ?? throw new ArgumentNullException(nameof(wallet)); _blockTree = blockTree ?? throw new ArgumentNullException(nameof(blockTree)); _ethereumEcdsa = ethereumEcdsa ?? throw new ArgumentNullException(nameof(ethereumEcdsa)); _receiptFinder = receiptFinder ?? throw new ArgumentNullException(nameof(receiptFinder)); _specProvider = specProvider ?? throw new ArgumentNullException(nameof(specProvider)); _rpcConfig = config ?? throw new ArgumentNullException(nameof(config)); _syncConfig = syncConfig ?? throw new ArgumentNullException(nameof(syncConfig)); _bloomStorage = bloomStorage ?? throw new ArgumentNullException(nameof(bloomStorage)); _logManager = logManager ?? throw new ArgumentNullException(nameof(logManager)); _isMining = isMining; _filterStore = new FilterStore(); _filterManager = new FilterManager(_filterStore, blockProcessor, _txPool, _logManager); }
public StartupBlockTreeFixer( ISyncConfig syncConfig, IBlockTree blockTree, IDb stateDb, ILogger logger, long batchSize = DefaultBatchSize) { _blockTree = blockTree ?? throw new ArgumentNullException(nameof(blockTree)); _stateDb = stateDb; _logger = logger ?? throw new ArgumentNullException(nameof(logger)); _batchSize = batchSize; long assumedHead = _blockTree.Head?.Number ?? 0; _startNumber = Math.Max(syncConfig.PivotNumberParsed, assumedHead + 1); _blocksToLoad = (assumedHead + 1) >= _startNumber ? (_blockTree.BestKnownNumber - _startNumber + 1) : 0; _currentLevelNumber = _startNumber - 1; // because we always increment on entering if (_blocksToLoad != 0) { _blockTree.NewHeadBlock += BlockTreeOnNewHeadBlock; } LogPlannedOperation(); }
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 void Sync_defaults_are_correct(string configFile, bool fastSyncEnabled) { ConfigProvider configProvider = GetConfigProviderFromFile(configFile); ISyncConfig config = configProvider.GetConfig <ISyncConfig>(); Assert.AreEqual(config.FastSync, fastSyncEnabled); }
public BodiesSyncFeed( ISyncModeSelector syncModeSelector, IBlockTree blockTree, ISyncPeerPool syncPeerPool, ISyncConfig syncConfig, ISyncReport syncReport, ISpecProvider specProvider, ILogManager logManager) : base(syncModeSelector) { _logger = logManager?.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager)); _blockTree = blockTree ?? throw new ArgumentNullException(nameof(blockTree)); _syncPeerPool = syncPeerPool ?? throw new ArgumentNullException(nameof(syncPeerPool)); _syncConfig = syncConfig ?? throw new ArgumentNullException(nameof(syncConfig)); _syncReport = syncReport ?? throw new ArgumentNullException(nameof(syncReport)); _specProvider = specProvider ?? throw new ArgumentNullException(nameof(specProvider)); if (!_syncConfig.FastBlocks) { throw new InvalidOperationException( "Entered fast blocks mode without fast blocks enabled in configuration."); } _pivotNumber = _syncConfig.PivotNumberParsed; _barrier = _barrier = _syncConfig.AncientBodiesBarrierCalc; if (_logger.IsInfo) { _logger.Info($"Using pivot {_pivotNumber} and barrier {_barrier} in bodies sync"); } _syncStatusList = new SyncStatusList( _blockTree, _pivotNumber, _blockTree.LowestInsertedBodyNumber); }
public IBlockchainBridge CreateBlockchainBridge() { ReadOnlyBlockTree readOnlyTree = BlockTree.AsReadOnly(); LazyInitializer.EnsureInitialized(ref _readOnlyDbProvider, () => new ReadOnlyDbProvider(DbProvider, false)); // TODO: reuse the same trie cache here ReadOnlyTxProcessingEnv readOnlyTxProcessingEnv = new( _readOnlyDbProvider, ReadOnlyTrieStore, readOnlyTree, SpecProvider, LogManager); IMiningConfig miningConfig = ConfigProvider.GetConfig <IMiningConfig>(); ISyncConfig syncConfig = ConfigProvider.GetConfig <ISyncConfig>(); return(new BlockchainBridge( readOnlyTxProcessingEnv, TxPool, ReceiptFinder, FilterStore, FilterManager, EthereumEcdsa, Timestamper, LogFinder, miningConfig.Enabled, syncConfig.BeamSync && syncConfig.FastSync )); }
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 void Setup() { _receiptStorage = Substitute.For <IReceiptStorage>(); _blockTree = Substitute.For <IBlockTree>(); _syncConfig = new SyncConfig { FastBlocks = true }; _syncConfig.PivotNumber = _pivotNumber.ToString(); _syncConfig.PivotHash = Keccak.Zero.ToString(); _syncPeerPool = Substitute.For <ISyncPeerPool>(); _syncReport = Substitute.For <ISyncReport>(); _measuredProgress = new MeasuredProgress(); _measuredProgressQueue = new MeasuredProgress(); _syncReport.FastBlocksReceipts.Returns(_measuredProgress); _syncReport.ReceiptsInQueue.Returns(_measuredProgressQueue); _selector = Substitute.For <ISyncModeSelector>(); _feed = new FastReceiptsSyncFeed( _selector, _specProvider, _blockTree, _receiptStorage, _syncPeerPool, _syncConfig, _syncReport, LimboLogs.Instance); }
private void LoadScenario(Scenario scenario, ISyncConfig syncConfig) { _syncConfig = syncConfig; _syncConfig.PivotNumber = _pivotNumber.ToString(); _syncConfig.PivotHash = scenario.Blocks.Last().Hash.ToString(); _feed = new FastReceiptsSyncFeed( _selector, _specProvider, _blockTree, _receiptStorage, _syncPeerPool, _syncConfig, _syncReport, LimboLogs.Instance); _feed.LagBehindBodies = 0; _blockTree.Genesis.Returns(scenario.Blocks[0].Header); _blockTree.FindBlock(Keccak.Zero, BlockTreeLookupOptions.None) .ReturnsForAnyArgs(ci => scenario.BlocksByHash.ContainsKey(ci.Arg <Keccak>()) ? scenario.BlocksByHash[ci.Arg <Keccak>()] : null); _receiptStorage.LowestInsertedReceiptBlock.Returns((long?)null); _blockTree.LowestInsertedBody.Returns(scenario.LowestInsertedBody); }
public async Task Execute(CancellationToken _) { ILogger logger = _context.LogManager.GetClassLogger(); /* sync */ IDbConfig dbConfig = _context.Config <IDbConfig>(); ISyncConfig syncConfig = _context.Config <ISyncConfig>(); IInitConfig initConfig = _context.Config <IInitConfig>(); foreach (PropertyInfo propertyInfo in typeof(IDbConfig).GetProperties()) { if (logger.IsDebug) { logger.Debug($"DB {propertyInfo.Name}: {propertyInfo.GetValue(dbConfig)}"); } } _context.DbProvider = await GetDbProvider(initConfig, dbConfig, initConfig.StoreReceipts || syncConfig.DownloadReceiptsInFastSync); if (syncConfig.BeamSync) { _context.SyncModeSelector = new PendingSyncModeSelector(); BeamSyncDbProvider beamSyncProvider = new BeamSyncDbProvider(_context.SyncModeSelector, _context.DbProvider, _context.Config <ISyncConfig>(), _context.LogManager); _context.DbProvider = beamSyncProvider; } }
public async Task Execute(CancellationToken _) { ILogger logger = _api.LogManager.GetClassLogger(); /* sync */ IDbConfig dbConfig = _api.Config <IDbConfig>(); ISyncConfig syncConfig = _api.Config <ISyncConfig>(); IInitConfig initConfig = _api.Config <IInitConfig>(); IPruningConfig pruningConfig = _api.Config <IPruningConfig>(); foreach (PropertyInfo propertyInfo in typeof(IDbConfig).GetProperties()) { if (logger.IsDebug) { logger.Debug($"DB {propertyInfo.Name}: {propertyInfo.GetValue(dbConfig)}"); } } try { bool useReceiptsDb = initConfig.StoreReceipts || syncConfig.DownloadReceiptsInFastSync; InitDbApi(initConfig, dbConfig, initConfig.StoreReceipts || syncConfig.DownloadReceiptsInFastSync); StandardDbInitializer dbInitializer = new(_api.DbProvider, _api.RocksDbFactory, _api.MemDbFactory, _api.FileSystem, pruningConfig.Mode.IsFull()); await dbInitializer.InitStandardDbsAsync(useReceiptsDb); } catch (TypeInitializationException e) { if (logger.IsError) { logger.Error("RocksDb was not found, please make sure it is installed on your machine. \n On macOs : 'brew install rocksdb'", e); } } }
public Synchronizer(IBlockTree blockTree, IBlockValidator blockValidator, ISealValidator sealValidator, IEthSyncPeerPool peerPool, ISyncConfig syncConfig, INodeDataDownloader nodeDataDownloader, ILogManager logManager) { _logger = logManager?.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager)); _syncConfig = syncConfig ?? throw new ArgumentNullException(nameof(syncConfig)); _nodeDataDownloader = nodeDataDownloader ?? throw new ArgumentNullException(nameof(nodeDataDownloader)); _syncPeerPool = peerPool ?? throw new ArgumentNullException(nameof(peerPool)); _blockTree = blockTree ?? throw new ArgumentNullException(nameof(blockTree)); _syncMode = new SyncModeSelector(_syncPeerPool, _syncConfig, logManager); _syncMode.Changed += (s, e) => RequestSynchronization(SyncTriggerType.SyncModeChange); _syncMode.Changed += (s, e) => { if (_blocksSyncAllocation == null && _syncMode.Current != SyncMode.StateNodes) { AllocateBlocksSync(); } if (_syncMode.Current == SyncMode.StateNodes) { FreeBlocksSyncAllocation(); } }; // make ctor parameter? _blockDownloader = new BlockDownloader(_blockTree, blockValidator, sealValidator, logManager); }
public InitializeNetwork(EthereumRunnerContext context) { _ctx = context; _logger = _ctx.LogManager.GetClassLogger(); _networkConfig = _ctx.Config <INetworkConfig>(); _syncConfig = _ctx.Config <ISyncConfig>(); }
private void UpdateDbConfig(uint cpuCount, ISyncConfig syncConfig, IDbConfig dbConfig, IInitConfig initConfig) { if (initConfig.DiagnosticMode == DiagnosticMode.MemDb) { DbMemory = _remainingMemory; return; } DbMemory = _remainingMemory; long remaining = DbMemory; DbNeeds dbNeeds = GetHeaderNeeds(cpuCount, syncConfig); DbGets dbGets = GiveItWhatYouCan(dbNeeds, DbMemory, remaining); remaining -= dbGets.CacheMem + dbGets.Buffers * dbGets.SingleBufferMem; dbConfig.HeadersDbWriteBufferNumber = dbGets.Buffers; dbConfig.HeadersDbWriteBufferSize = (ulong)dbGets.SingleBufferMem; dbConfig.HeadersDbBlockCacheSize = (ulong)dbGets.CacheMem; dbNeeds = GetBlocksNeeds(cpuCount, syncConfig); dbGets = GiveItWhatYouCan(dbNeeds, DbMemory, remaining); remaining -= dbGets.CacheMem + dbGets.Buffers * dbGets.SingleBufferMem; dbConfig.BlocksDbWriteBufferNumber = dbGets.Buffers; dbConfig.BlocksDbWriteBufferSize = (ulong)dbGets.SingleBufferMem; dbConfig.BlocksDbBlockCacheSize = (ulong)dbGets.CacheMem; dbNeeds = GetBlockInfosNeeds(cpuCount, syncConfig); dbGets = GiveItWhatYouCan(dbNeeds, DbMemory, remaining); remaining -= dbGets.CacheMem + dbGets.Buffers * dbGets.SingleBufferMem; dbConfig.BlockInfosDbWriteBufferNumber = dbGets.Buffers; dbConfig.BlockInfosDbWriteBufferSize = (ulong)dbGets.SingleBufferMem; dbConfig.BlockInfosDbBlockCacheSize = (ulong)dbGets.CacheMem; dbNeeds = GetReceiptsNeeds(cpuCount, syncConfig); dbGets = GiveItWhatYouCan(dbNeeds, DbMemory, remaining); remaining -= dbGets.CacheMem + dbGets.Buffers * dbGets.SingleBufferMem; dbConfig.ReceiptsDbWriteBufferNumber = dbGets.Buffers; dbConfig.ReceiptsDbWriteBufferSize = (ulong)dbGets.SingleBufferMem; dbConfig.ReceiptsDbBlockCacheSize = (ulong)dbGets.CacheMem; dbNeeds = GetCodeNeeds(cpuCount, syncConfig); dbGets = GiveItWhatYouCan(dbNeeds, DbMemory, remaining); remaining -= dbGets.CacheMem + dbGets.Buffers * dbGets.SingleBufferMem; dbConfig.CodeDbWriteBufferNumber = dbGets.Buffers; dbConfig.CodeDbWriteBufferSize = (ulong)dbGets.SingleBufferMem; dbConfig.CodeDbBlockCacheSize = (ulong)dbGets.CacheMem; dbNeeds = GetPendingTxNeeds(cpuCount, syncConfig); dbGets = GiveItWhatYouCan(dbNeeds, DbMemory, remaining); remaining -= dbGets.CacheMem + dbGets.Buffers * dbGets.SingleBufferMem; dbConfig.PendingTxsDbWriteBufferNumber = dbGets.Buffers; dbConfig.PendingTxsDbWriteBufferSize = (ulong)dbGets.SingleBufferMem; dbConfig.PendingTxsDbBlockCacheSize = (ulong)dbGets.CacheMem; dbNeeds = GetStateNeeds(cpuCount, syncConfig); dbGets = GiveItWhatYouCan(dbNeeds, DbMemory, remaining); remaining -= dbGets.CacheMem + dbGets.Buffers * dbGets.SingleBufferMem; dbConfig.WriteBufferNumber = dbGets.Buffers; dbConfig.WriteBufferSize = (ulong)dbGets.SingleBufferMem; dbConfig.BlockCacheSize = (ulong)dbGets.CacheMem; }
public InitializeNetwork(NethermindApi context) { _api = context; _logger = _api.LogManager.GetClassLogger(); _networkConfig = _api.Config <INetworkConfig>(); _syncConfig = _api.Config <ISyncConfig>(); }
public BlockProcessor( ISpecProvider specProvider, IBlockValidator blockValidator, IRewardCalculator rewardCalculator, ITransactionProcessor transactionProcessor, ISnapshotableDb stateDb, ISnapshotableDb codeDb, IDb traceDb, IStateProvider stateProvider, IStorageProvider storageProvider, ITxPool txPool, IReceiptStorage receiptStorage, ISyncConfig syncConfig, ILogManager logManager) { _logger = logManager?.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager)); _specProvider = specProvider ?? throw new ArgumentNullException(nameof(specProvider)); _blockValidator = blockValidator ?? throw new ArgumentNullException(nameof(blockValidator)); _stateProvider = stateProvider ?? throw new ArgumentNullException(nameof(stateProvider)); _storageProvider = storageProvider ?? throw new ArgumentNullException(nameof(storageProvider)); _txPool = txPool ?? throw new ArgumentNullException(nameof(txPool)); _receiptStorage = receiptStorage ?? throw new ArgumentNullException(nameof(receiptStorage)); _syncConfig = syncConfig ?? throw new ArgumentNullException(nameof(syncConfig)); _rewardCalculator = rewardCalculator ?? throw new ArgumentNullException(nameof(rewardCalculator)); _transactionProcessor = transactionProcessor ?? throw new ArgumentNullException(nameof(transactionProcessor)); _stateDb = stateDb ?? throw new ArgumentNullException(nameof(stateDb)); _codeDb = codeDb ?? throw new ArgumentNullException(nameof(codeDb)); _traceDb = traceDb ?? throw new ArgumentNullException(nameof(traceDb)); _receiptsTracer = new BlockReceiptsTracer(_specProvider, _stateProvider); }
public MultiSyncModeSelector( ISyncProgressResolver syncProgressResolver, ISyncPeerPool syncPeerPool, ISyncConfig syncConfig, ILogManager logManager, bool needToWaitForHeaders = false) { _logger = logManager.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager)); _syncConfig = syncConfig ?? throw new ArgumentNullException(nameof(syncConfig)); _syncPeerPool = syncPeerPool ?? throw new ArgumentNullException(nameof(syncPeerPool)); _syncProgressResolver = syncProgressResolver ?? throw new ArgumentNullException(nameof(syncProgressResolver)); _needToWaitForHeaders = needToWaitForHeaders; if (syncConfig.FastSyncCatchUpHeightDelta <= FastSyncLag) { if (_logger.IsWarn) { _logger.Warn($"'FastSyncCatchUpHeightDelta' parameter is less or equal to {FastSyncLag}, which is a threshold of blocks always downloaded in full sync. 'FastSyncCatchUpHeightDelta' will have no effect."); } } PivotNumber = _syncConfig.PivotNumberParsed; _timer = StartUpdateTimer(); }
public SyncServer( ISnapshotableDb stateDb, ISnapshotableDb codeDb, IBlockTree blockTree, IReceiptFinder receiptFinder, IBlockValidator blockValidator, ISealValidator sealValidator, ISyncPeerPool pool, ISyncModeSelector syncModeSelector, ISyncConfig syncConfig, ILogManager logManager, CanonicalHashTrie cht = null) { _syncConfig = syncConfig ?? throw new ArgumentNullException(nameof(syncConfig)); _pool = pool ?? throw new ArgumentNullException(nameof(pool)); _syncModeSelector = syncModeSelector ?? throw new ArgumentNullException(nameof(syncModeSelector)); _sealValidator = sealValidator ?? throw new ArgumentNullException(nameof(sealValidator)); _stateDb = stateDb ?? throw new ArgumentNullException(nameof(stateDb)); _codeDb = codeDb ?? throw new ArgumentNullException(nameof(codeDb)); _blockTree = blockTree ?? throw new ArgumentNullException(nameof(blockTree)); _receiptFinder = receiptFinder ?? throw new ArgumentNullException(nameof(receiptFinder)); _blockValidator = blockValidator ?? throw new ArgumentNullException(nameof(blockValidator)); _logger = logManager.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager)); _cht = cht; _pivotNumber = _syncConfig.PivotNumberParsed; _blockTree.NewHeadBlock += OnNewHeadBlock; _pivotHash = new Keccak(_syncConfig.PivotHash ?? Keccak.Zero.ToString()); }
public SyncProgressResolver(IBlockTree blockTree, IReceiptStorage receiptStorage, INodeDataDownloader nodeDataDownloader, ISyncConfig syncConfig, ILogManager logManager) { _logger = logManager?.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager)); _blockTree = blockTree ?? throw new ArgumentNullException(nameof(blockTree)); _receiptStorage = receiptStorage ?? throw new ArgumentNullException(nameof(receiptStorage)); _nodeDataDownloader = nodeDataDownloader ?? throw new ArgumentNullException(nameof(nodeDataDownloader)); _syncConfig = syncConfig ?? throw new ArgumentNullException(nameof(syncConfig)); }
public ApplyMemoryHint(EthereumRunnerContext context) { _context = context ?? throw new ArgumentNullException(nameof(context)); _initConfig = context.Config <IInitConfig>(); _dbConfig = context.Config <IDbConfig>(); _networkConfig = context.Config <INetworkConfig>(); _syncConfig = context.Config <ISyncConfig>(); }
public SyncService(ISyncConfig conf, ITaskService task) { _conf = conf; _task = task; }