diff --git a/src/Nethermind/Nethermind.AccountAbstraction/AccountAbstractionPlugin.cs b/src/Nethermind/Nethermind.AccountAbstraction/AccountAbstractionPlugin.cs index 91cc33c8754..972f654dd15 100644 --- a/src/Nethermind/Nethermind.AccountAbstraction/AccountAbstractionPlugin.cs +++ b/src/Nethermind/Nethermind.AccountAbstraction/AccountAbstractionPlugin.cs @@ -348,7 +348,7 @@ public ValueTask DisposeAsync() return ValueTask.CompletedTask; } - public Task InitBlockProducer(IBlockProducerFactory consensusPlugin, ITxSource? additionalTxSource) + public IBlockProducer InitBlockProducer(IBlockProducerFactory consensusPlugin, ITxSource? additionalTxSource) { if (!Enabled) throw new InvalidOperationException("Account Abstraction plugin is disabled"); diff --git a/src/Nethermind/Nethermind.Api/Extensions/IConsensusWrapperPlugin.cs b/src/Nethermind/Nethermind.Api/Extensions/IConsensusWrapperPlugin.cs index 576a3ba9656..b81722632bc 100644 --- a/src/Nethermind/Nethermind.Api/Extensions/IConsensusWrapperPlugin.cs +++ b/src/Nethermind/Nethermind.Api/Extensions/IConsensusWrapperPlugin.cs @@ -9,7 +9,7 @@ namespace Nethermind.Api.Extensions { public interface IConsensusWrapperPlugin : INethermindPlugin { - Task InitBlockProducer(IBlockProducerFactory baseBlockProducerFactory, ITxSource? txSource); + IBlockProducer InitBlockProducer(IBlockProducerFactory baseBlockProducerFactory, ITxSource? txSource); IBlockProducerRunner InitBlockProducerRunner(IBlockProducerRunner baseRunner) => baseRunner; diff --git a/src/Nethermind/Nethermind.Consensus.AuRa/AuRaPlugin.cs b/src/Nethermind/Nethermind.Consensus.AuRa/AuRaPlugin.cs index 0e1dd922ded..a1234f68bc9 100644 --- a/src/Nethermind/Nethermind.Consensus.AuRa/AuRaPlugin.cs +++ b/src/Nethermind/Nethermind.Consensus.AuRa/AuRaPlugin.cs @@ -69,14 +69,14 @@ public Task InitSynchronization() return Task.CompletedTask; } - public Task InitBlockProducer(ITxSource? additionalTxSource = null) + public IBlockProducer InitBlockProducer(ITxSource? additionalTxSource = null) { if (_nethermindApi is not null) { return _blockProducerStarter!.BuildProducer(additionalTxSource); } - return Task.FromResult(null); + return null; } public IBlockProducerRunner CreateBlockProducerRunner() diff --git a/src/Nethermind/Nethermind.Consensus.AuRa/InitializationSteps/StartBlockProducerAuRa.cs b/src/Nethermind/Nethermind.Consensus.AuRa/InitializationSteps/StartBlockProducerAuRa.cs index f2d37f98e6c..99a553389ad 100644 --- a/src/Nethermind/Nethermind.Consensus.AuRa/InitializationSteps/StartBlockProducerAuRa.cs +++ b/src/Nethermind/Nethermind.Consensus.AuRa/InitializationSteps/StartBlockProducerAuRa.cs @@ -72,7 +72,7 @@ public IBlockProductionTrigger CreateTrigger() return onlyWhenNotProcessing; } - public Task BuildProducer(ITxSource? additionalTxSource = null) + public IBlockProducer BuildProducer(ITxSource? additionalTxSource = null) { if (_api.EngineSigner is null) throw new StepDependencyException(nameof(_api.EngineSigner)); if (_api.ChainSpec is null) throw new StepDependencyException(nameof(_api.ChainSpec)); @@ -99,7 +99,7 @@ public Task BuildProducer(ITxSource? additionalTxSource = null) _api.LogManager, _api.ConfigProvider.GetConfig()); - return Task.FromResult(blockProducer); + return blockProducer; } private BlockProcessor CreateBlockProcessor(ReadOnlyTxProcessingEnv changeableTxProcessingEnv) diff --git a/src/Nethermind/Nethermind.Consensus.Clique/CliquePlugin.cs b/src/Nethermind/Nethermind.Consensus.Clique/CliquePlugin.cs index d2d8eb24a28..d1c78a5f68d 100644 --- a/src/Nethermind/Nethermind.Consensus.Clique/CliquePlugin.cs +++ b/src/Nethermind/Nethermind.Consensus.Clique/CliquePlugin.cs @@ -68,11 +68,11 @@ public Task Init(INethermindApi nethermindApi) return Task.CompletedTask; } - public Task InitBlockProducer(ITxSource? additionalTxSource = null) + public IBlockProducer InitBlockProducer(ITxSource? additionalTxSource = null) { if (_nethermindApi!.SealEngineType != Nethermind.Core.SealEngineType.Clique) { - return Task.FromResult((IBlockProducer)null); + return null; } (IApiWithBlockchain getFromApi, IApiWithBlockchain setInApi) = _nethermindApi!.ForProducer; @@ -151,7 +151,7 @@ public Task InitBlockProducer(ITxSource? additionalTxSource = nu _cliqueConfig!, getFromApi.LogManager); - return Task.FromResult((IBlockProducer)blockProducer); + return blockProducer; } public IBlockProducerRunner CreateBlockProducerRunner() diff --git a/src/Nethermind/Nethermind.Consensus.Ethash/EthashPlugin.cs b/src/Nethermind/Nethermind.Consensus.Ethash/EthashPlugin.cs index a080f3c9240..731e7d53fd0 100644 --- a/src/Nethermind/Nethermind.Consensus.Ethash/EthashPlugin.cs +++ b/src/Nethermind/Nethermind.Consensus.Ethash/EthashPlugin.cs @@ -46,9 +46,9 @@ public Task Init(INethermindApi nethermindApi) return Task.CompletedTask; } - public Task InitBlockProducer(ITxSource? additionalTxSource = null) + public IBlockProducer InitBlockProducer(ITxSource? additionalTxSource = null) { - return Task.FromResult((IBlockProducer)null); + return null; } public Task InitNetworkProtocol() diff --git a/src/Nethermind/Nethermind.Consensus.Ethash/NethDevPlugin.cs b/src/Nethermind/Nethermind.Consensus.Ethash/NethDevPlugin.cs index 0cd98539550..54e89399722 100644 --- a/src/Nethermind/Nethermind.Consensus.Ethash/NethDevPlugin.cs +++ b/src/Nethermind/Nethermind.Consensus.Ethash/NethDevPlugin.cs @@ -37,11 +37,11 @@ public Task Init(INethermindApi nethermindApi) return Task.CompletedTask; } - public Task InitBlockProducer(ITxSource? additionalTxSource = null) + public IBlockProducer InitBlockProducer(ITxSource? additionalTxSource = null) { if (_nethermindApi!.SealEngineType != Nethermind.Core.SealEngineType.NethDev) { - return Task.FromResult((IBlockProducer)null); + return null; } var (getFromApi, _) = _nethermindApi!.ForProducer; @@ -98,7 +98,7 @@ public Task InitBlockProducer(ITxSource? additionalTxSource = nu getFromApi.Config(), getFromApi.LogManager); - return Task.FromResult(blockProducer); + return blockProducer; } public string SealEngineType => Nethermind.Core.SealEngineType.NethDev; diff --git a/src/Nethermind/Nethermind.Consensus/IBlockProducerFactory.cs b/src/Nethermind/Nethermind.Consensus/IBlockProducerFactory.cs index 9f5ea204121..46735b2501a 100644 --- a/src/Nethermind/Nethermind.Consensus/IBlockProducerFactory.cs +++ b/src/Nethermind/Nethermind.Consensus/IBlockProducerFactory.cs @@ -16,5 +16,5 @@ public interface IBlockProducerFactory /// /// Can be called many times, with different parameters, each time should create a new instance. Example usage in MEV plugin. /// - Task InitBlockProducer(ITxSource? additionalTxSource = null); + IBlockProducer InitBlockProducer(ITxSource? additionalTxSource = null); } diff --git a/src/Nethermind/Nethermind.Init/Steps/InitializeBlockProducer.cs b/src/Nethermind/Nethermind.Init/Steps/InitializeBlockProducer.cs index c36f2c3985f..380c4baa4f1 100644 --- a/src/Nethermind/Nethermind.Init/Steps/InitializeBlockProducer.cs +++ b/src/Nethermind/Nethermind.Init/Steps/InitializeBlockProducer.cs @@ -24,11 +24,11 @@ public InitializeBlockProducer(INethermindApi api) _api = api; } - public async Task Execute(CancellationToken _) + public Task Execute(CancellationToken _) { if (_api.BlockProductionPolicy!.ShouldStartBlockProduction()) { - _api.BlockProducer = await BuildProducer(); + _api.BlockProducer = BuildProducer(); _api.BlockProducerRunner = _api.GetConsensusPlugin()!.CreateBlockProducerRunner(); @@ -37,9 +37,11 @@ public async Task Execute(CancellationToken _) _api.BlockProducerRunner = wrapperPlugin.InitBlockProducerRunner(_api.BlockProducerRunner); } } + + return Task.CompletedTask; } - protected virtual async Task BuildProducer() + protected virtual IBlockProducer BuildProducer() { _api.BlockProducerEnvFactory = new BlockProducerEnvFactory( _api.WorldStateManager!, @@ -66,7 +68,7 @@ protected virtual async Task BuildProducer() blockProducerFactory = new ConsensusWrapperToBlockProducerFactoryAdapter(wrapperPlugin, blockProducerFactory); } - return await blockProducerFactory.InitBlockProducer(); + return blockProducerFactory.InitBlockProducer(); } else { @@ -78,7 +80,7 @@ private class ConsensusWrapperToBlockProducerFactoryAdapter( IConsensusWrapperPlugin consensusWrapperPlugin, IBlockProducerFactory baseBlockProducerFactory) : IBlockProducerFactory { - public Task InitBlockProducer(ITxSource? additionalTxSource = null) + public IBlockProducer InitBlockProducer(ITxSource? additionalTxSource = null) { return consensusWrapperPlugin.InitBlockProducer(baseBlockProducerFactory, additionalTxSource); } diff --git a/src/Nethermind/Nethermind.Merge.AuRa/AuRaMergePlugin.cs b/src/Nethermind/Nethermind.Merge.AuRa/AuRaMergePlugin.cs index 027231d5e49..ac61be06612 100644 --- a/src/Nethermind/Nethermind.Merge.AuRa/AuRaMergePlugin.cs +++ b/src/Nethermind/Nethermind.Merge.AuRa/AuRaMergePlugin.cs @@ -46,7 +46,7 @@ originalFilter is MinGasPriceContractTxFilter ? originalFilter } } - public override Task InitBlockProducer(IBlockProducerFactory consensusPlugin, ITxSource? txSource) + public override IBlockProducer InitBlockProducer(IBlockProducerFactory consensusPlugin, ITxSource? txSource) { _api.BlockProducerEnvFactory = new AuRaMergeBlockProducerEnvFactory( (AuRaNethermindApi)_api, diff --git a/src/Nethermind/Nethermind.Merge.Plugin.Test/MergePluginTests.cs b/src/Nethermind/Nethermind.Merge.Plugin.Test/MergePluginTests.cs index ffa59787d67..ae09a209b5c 100644 --- a/src/Nethermind/Nethermind.Merge.Plugin.Test/MergePluginTests.cs +++ b/src/Nethermind/Nethermind.Merge.Plugin.Test/MergePluginTests.cs @@ -96,7 +96,7 @@ public void Init_merge_plugin_does_not_throw_exception(bool enabled) Assert.DoesNotThrowAsync(async () => await _plugin.Init(_context)); Assert.DoesNotThrowAsync(async () => await _plugin.InitNetworkProtocol()); Assert.DoesNotThrowAsync(async () => await _plugin.InitSynchronization()); - Assert.DoesNotThrowAsync(async () => await _plugin.InitBlockProducer(_consensusPlugin!, null)); + Assert.DoesNotThrow(() => _plugin.InitBlockProducer(_consensusPlugin!, null)); Assert.DoesNotThrowAsync(async () => await _plugin.InitRpcModules()); Assert.DoesNotThrowAsync(async () => await _plugin.DisposeAsync()); } @@ -111,7 +111,7 @@ public async Task Initializes_correctly() ISyncConfig syncConfig = _context.Config(); Assert.IsTrue(syncConfig.NetworkingEnabled); Assert.IsTrue(_context.GossipPolicy.CanGossipBlocks); - await _plugin.InitBlockProducer(_consensusPlugin!, null); + _plugin.InitBlockProducer(_consensusPlugin!, null); Assert.IsInstanceOf(_context.BlockProducer); await _plugin.InitRpcModules(); _context.RpcModuleProvider!.Received().Register(Arg.Is>(m => m is SingletonModulePool)); diff --git a/src/Nethermind/Nethermind.Merge.Plugin/MergePlugin.BlockProducer.cs b/src/Nethermind/Nethermind.Merge.Plugin/MergePlugin.BlockProducer.cs index 33e86a6a6ef..2ad0d4f412e 100644 --- a/src/Nethermind/Nethermind.Merge.Plugin/MergePlugin.BlockProducer.cs +++ b/src/Nethermind/Nethermind.Merge.Plugin/MergePlugin.BlockProducer.cs @@ -19,7 +19,7 @@ public partial class MergePlugin protected virtual PostMergeBlockProducerFactory CreateBlockProducerFactory() => new(_api.SpecProvider!, _api.SealEngine, _manualTimestamper!, _blocksConfig, _api.LogManager); - public virtual async Task InitBlockProducer(IBlockProducerFactory baseBlockProducerFactory, ITxSource? txSource) + public virtual IBlockProducer InitBlockProducer(IBlockProducerFactory baseBlockProducerFactory, ITxSource? txSource) { if (MergeEnabled) { @@ -42,7 +42,7 @@ public virtual async Task InitBlockProducer(IBlockProducerFactor if (_logger.IsInfo) _logger.Info("Starting Merge block producer & sealer"); IBlockProducer? blockProducer = _mergeBlockProductionPolicy.ShouldInitPreMergeBlockProduction() - ? await baseBlockProducerFactory.InitBlockProducer(txSource) + ? baseBlockProducerFactory.InitBlockProducer(txSource) : null; _manualTimestamper ??= new ManualTimestamper(); BlockProducerEnv blockProducerEnv = _api.BlockProducerEnvFactory.Create(); diff --git a/src/Nethermind/Nethermind.Mev.Test/MevPluginTests.cs b/src/Nethermind/Nethermind.Mev.Test/MevPluginTests.cs index 56ba308d73c..f9a4def7e3f 100644 --- a/src/Nethermind/Nethermind.Mev.Test/MevPluginTests.cs +++ b/src/Nethermind/Nethermind.Mev.Test/MevPluginTests.cs @@ -51,9 +51,9 @@ public async Task Can_initialize_block_producer() IConsensusPlugin consensusPlugin = Substitute.For(); consensusPlugin.InitBlockProducer(null).Returns(Substitute.For()); - Task blockProducer = plugin.InitBlockProducer(consensusPlugin, null); + IBlockProducer blockProducer = plugin.InitBlockProducer(consensusPlugin, null); - blockProducer.Result.Should().BeOfType(typeof(MevBlockProducer)); + blockProducer.Should().BeOfType(typeof(MevBlockProducer)); } } } diff --git a/src/Nethermind/Nethermind.Mev/MevPlugin.cs b/src/Nethermind/Nethermind.Mev/MevPlugin.cs index c67c998349b..1eba1f786b2 100644 --- a/src/Nethermind/Nethermind.Mev/MevPlugin.cs +++ b/src/Nethermind/Nethermind.Mev/MevPlugin.cs @@ -133,7 +133,7 @@ public Task InitRpcModules() return Task.CompletedTask; } - public async Task InitBlockProducer(IBlockProducerFactory consensusPlugin, ITxSource? txSource) + public IBlockProducer InitBlockProducer(IBlockProducerFactory consensusPlugin, ITxSource? txSource) { if (!Enabled) { @@ -147,28 +147,28 @@ public async Task InitBlockProducer(IBlockProducerFactory consen new(_mevConfig.MaxMergedBundles + megabundleProducerCount + 1); // Add non-mev block - MevBlockProducer.MevBlockProducerInfo standardProducer = await CreateProducer(consensusPlugin); + MevBlockProducer.MevBlockProducerInfo standardProducer = CreateProducer(consensusPlugin); blockProducers.Add(standardProducer); // Try blocks with all bundle numbers <= MaxMergedBundles for (int bundleLimit = 1; bundleLimit <= _mevConfig.MaxMergedBundles; bundleLimit++) { BundleSelector bundleSelector = new(BundlePool, bundleLimit); - MevBlockProducer.MevBlockProducerInfo bundleProducer = await CreateProducer(consensusPlugin, bundleLimit, new BundleTxSource(bundleSelector, _nethermindApi.Timestamper)); + MevBlockProducer.MevBlockProducerInfo bundleProducer = CreateProducer(consensusPlugin, bundleLimit, new BundleTxSource(bundleSelector, _nethermindApi.Timestamper)); blockProducers.Add(bundleProducer); } if (megabundleProducerCount > 0) { MegabundleSelector megabundleSelector = new(BundlePool); - MevBlockProducer.MevBlockProducerInfo bundleProducer = await CreateProducer(consensusPlugin, 0, new BundleTxSource(megabundleSelector, _nethermindApi.Timestamper)); + MevBlockProducer.MevBlockProducerInfo bundleProducer = CreateProducer(consensusPlugin, 0, new BundleTxSource(megabundleSelector, _nethermindApi.Timestamper)); blockProducers.Add(bundleProducer); } return new MevBlockProducer(_nethermindApi.LogManager, blockProducers.ToArray()); } - private async Task CreateProducer( + private MevBlockProducer.MevBlockProducerInfo CreateProducer( IBlockProducerFactory consensusPlugin, int bundleLimit = 0, ITxSource? additionalTxSource = null) @@ -177,7 +177,7 @@ public async Task InitBlockProducer(IBlockProducerFactory consen AlwaysOkBlockProductionCondition.Instance : new BundleLimitBlockProductionTrigger(_nethermindApi.BlockTree!, _nethermindApi.Timestamper!, BundlePool, bundleLimit); - IBlockProducer producer = await consensusPlugin.InitBlockProducer(additionalTxSource); + IBlockProducer producer = consensusPlugin.InitBlockProducer(additionalTxSource); return new MevBlockProducer.MevBlockProducerInfo(producer, condition, new BeneficiaryTracer()); } diff --git a/src/Nethermind/Nethermind.Optimism/InitializeBlockProducerOptimism.cs b/src/Nethermind/Nethermind.Optimism/InitializeBlockProducerOptimism.cs index debe95dbbda..d0deef60401 100644 --- a/src/Nethermind/Nethermind.Optimism/InitializeBlockProducerOptimism.cs +++ b/src/Nethermind/Nethermind.Optimism/InitializeBlockProducerOptimism.cs @@ -19,7 +19,7 @@ public InitializeBlockProducerOptimism(OptimismNethermindApi api) : base(api) _api = api; } - protected override Task BuildProducer() + protected override IBlockProducer BuildProducer() { if (_api.DbProvider is null) throw new StepDependencyException(nameof(_api.DbProvider)); if (_api.BlockTree is null) throw new StepDependencyException(nameof(_api.BlockTree)); @@ -65,6 +65,6 @@ protected override Task BuildProducer() _api.LogManager, _api.Config()); - return Task.FromResult(_api.BlockProducer); + return _api.BlockProducer; } } diff --git a/src/Nethermind/Nethermind.Optimism/OptimismPlugin.cs b/src/Nethermind/Nethermind.Optimism/OptimismPlugin.cs index e5bd7c56d2b..1b74c5d0dc2 100644 --- a/src/Nethermind/Nethermind.Optimism/OptimismPlugin.cs +++ b/src/Nethermind/Nethermind.Optimism/OptimismPlugin.cs @@ -54,7 +54,7 @@ public class OptimismPlugin : IConsensusPlugin, ISynchronizationPlugin, IInitial public IBlockProductionTrigger DefaultBlockProductionTrigger => NeverProduceTrigger.Instance; - public Task InitBlockProducer(ITxSource? additionalTxSource = null) + public IBlockProducer InitBlockProducer(ITxSource? additionalTxSource = null) { if (additionalTxSource is not null) throw new ArgumentException( @@ -63,7 +63,7 @@ public Task InitBlockProducer(ITxSource? additionalTxSource = nu ArgumentNullException.ThrowIfNull(_api); ArgumentNullException.ThrowIfNull(_api.BlockProducer); - return Task.FromResult(_api.BlockProducer); + return _api.BlockProducer; } #endregion