protected override void InitSealEngine()
        {
            if (_api.BlockTree == null)
            {
                throw new StepDependencyException(nameof(_api.BlockTree));
            }
            if (_api.ChainSpec == null)
            {
                throw new StepDependencyException(nameof(_api.ChainSpec));
            }
            if (_api.EthereumEcdsa == null)
            {
                throw new StepDependencyException(nameof(_api.EthereumEcdsa));
            }
            if (_api.DbProvider == null)
            {
                throw new StepDependencyException(nameof(_api.DbProvider));
            }
            if (_api.Signer == null)
            {
                throw new StepDependencyException(nameof(_api.Signer));
            }

            _api.RewardCalculatorSource = NoBlockRewards.Instance;
            CliqueConfig cliqueConfig = new CliqueConfig {
                BlockPeriod = _api.ChainSpec.Clique.Period, Epoch = _api.ChainSpec.Clique.Epoch
            };

            _api.SnapshotManager = new SnapshotManager(cliqueConfig, _api.DbProvider.BlocksDb, _api.BlockTree, _api.EthereumEcdsa, _api.LogManager);
            _api.SealValidator   = new CliqueSealValidator(cliqueConfig, _api.SnapshotManager, _api.LogManager);
            _api.RecoveryStep    = new CompositeDataRecoveryStep(_api.RecoveryStep, new AuthorRecoveryStep(_api.SnapshotManager));
            if (_api.Config <IInitConfig>().IsMining)
            {
                _api.Sealer = new CliqueSealer(_api.Signer, cliqueConfig, _api.SnapshotManager, _api.LogManager);
            }
            else
            {
                ((NethermindApi)_api).Sealer = NullSealEngine.Instance;
            }
        }