Example #1
0
        public static (TxPriorityContract?Contract, TxPriorityContract.LocalDataSource?DataSource) CreateTxPrioritySources(
            IAuraConfig config,
            AuRaNethermindApi api,
            IReadOnlyTxProcessorSource readOnlyTxProcessorSource)
        {
            Address.TryParse(config.TxPriorityContractAddress, out Address? txPriorityContractAddress);
            bool usesTxPriorityContract = txPriorityContractAddress != null;

            TxPriorityContract?txPriorityContract = null;

            if (usesTxPriorityContract)
            {
                txPriorityContract = new TxPriorityContract(api.AbiEncoder, txPriorityContractAddress, readOnlyTxProcessorSource);
            }

            string?auraConfigTxPriorityConfigFilePath = config.TxPriorityConfigFilePath;
            bool   usesTxPriorityLocalData            = auraConfigTxPriorityConfigFilePath != null;

            if (usesTxPriorityLocalData)
            {
                api.TxPriorityContractLocalDataSource ??= new TxPriorityContract.LocalDataSource(auraConfigTxPriorityConfigFilePath, api.EthereumJsonSerializer, api.FileSystem, api.LogManager);
            }

            return(txPriorityContract, api.TxPriorityContractLocalDataSource);
        }
        public async Task With_steps_from_here_AuRa()
        {
            AuRaNethermindApi runnerContext = new AuRaNethermindApi(
                new ConfigProvider(),
                new EthereumJsonSerializer(),
                LimboLogs.Instance);

            IEthereumStepsLoader stepsLoader  = new EthereumStepsLoader(GetType().Assembly);
            EthereumStepsManager stepsManager = new EthereumStepsManager(
                stepsLoader,
                runnerContext,
                LimboLogs.Instance);

            using CancellationTokenSource source = new CancellationTokenSource(TimeSpan.FromSeconds(1));

            try
            {
                await stepsManager.InitializeAll(source.Token);
            }
            catch (Exception e)
            {
                if (!(e is OperationCanceledException))
                {
                    throw new AssertionFailedException($"Exception should be {nameof(OperationCanceledException)}");
                }
            }
        }
Example #3
0
        public static ITxFilter?CreateTxPermissionFilter(AuRaNethermindApi api, IReadOnlyTxProcessorSource readOnlyTxProcessorSource)
        {
            if (api.ChainSpec == null)
            {
                throw new StepDependencyException(nameof(api.ChainSpec));
            }

            if (api.ChainSpec.Parameters.TransactionPermissionContract != null)
            {
                api.TxFilterCache ??= new PermissionBasedTxFilter.Cache();

                var txPermissionFilter = new PermissionBasedTxFilter(
                    new VersionedTransactionPermissionContract(api.AbiEncoder,
                                                               api.ChainSpec.Parameters.TransactionPermissionContract,
                                                               api.ChainSpec.Parameters.TransactionPermissionContractTransition ?? 0,
                                                               readOnlyTxProcessorSource,
                                                               api.TransactionPermissionContractVersions,
                                                               api.LogManager),
                    api.TxFilterCache,
                    api.LogManager);

                return(txPermissionFilter);
            }

            return(null);
        }
Example #4
0
        private static ITxFilter CreateBaseAuRaTxFilter(
            IMiningConfig miningConfig,
            AuRaNethermindApi api,
            IReadOnlyTxProcessorSource readOnlyTxProcessorSource,
            IDictionaryContractDataStore <TxPriorityContract.Destination>?minGasPricesContractDataStore,
            ISpecProvider specProvider)
        {
            IMinGasPriceTxFilter minGasPriceTxFilter = CreateStandardMinGasPriceTxFilter(miningConfig, specProvider);
            ITxFilter            gasPriceTxFilter    = minGasPriceTxFilter;

            if (minGasPricesContractDataStore != null)
            {
                gasPriceTxFilter = new MinGasPriceContractTxFilter(minGasPriceTxFilter, minGasPricesContractDataStore);
            }

            Address?registrar = api.ChainSpec?.Parameters.Registrar;

            if (registrar != null)
            {
                RegisterContract  registerContract  = new(api.AbiEncoder, registrar, readOnlyTxProcessorSource);
                CertifierContract certifierContract = new(api.AbiEncoder, registerContract, readOnlyTxProcessorSource);
                return(new TxCertifierFilter(certifierContract, gasPriceTxFilter, specProvider, api.LogManager));
            }

            return(gasPriceTxFilter);
        }
Example #5
0
        public static ITxFilter CreateAuRaTxFilter(
            AuRaNethermindApi api,
            IReadOnlyTxProcessorSource readOnlyTxProcessorSource,
            ISpecProvider specProvider)
        {
            ITxFilter baseAuRaTxFilter   = CreateBaseAuRaTxFilter(api, readOnlyTxProcessorSource, specProvider);
            ITxFilter?txPermissionFilter = CreateTxPermissionFilter(api, readOnlyTxProcessorSource);

            return(txPermissionFilter != null
                ? new CompositeTxFilter(baseAuRaTxFilter, txPermissionFilter)
                : baseAuRaTxFilter);
        }
Example #6
0
        public static ITxFilter CreateAuRaTxFilter(
            IMiningConfig miningConfig,
            AuRaNethermindApi api,
            IReadOnlyTxProcessorSource readOnlyTxProcessorSource,
            IDictionaryContractDataStore <TxPriorityContract.Destination>?minGasPricesContractDataStore)
        {
            ITxFilter baseAuRaTxFilter   = CreateBaseAuRaTxFilter(miningConfig, api, readOnlyTxProcessorSource, minGasPricesContractDataStore);
            ITxFilter?txPermissionFilter = CreateTxPermissionFilter(api, readOnlyTxProcessorSource);

            return(txPermissionFilter != null
                ? new CompositeTxFilter(baseAuRaTxFilter, txPermissionFilter)
                : baseAuRaTxFilter);
        }
Example #7
0
 public static DictionaryContractDataStore <TxPriorityContract.Destination>?CreateMinGasPricesDataStore(
     AuRaNethermindApi api,
     TxPriorityContract?txPriorityContract,
     TxPriorityContract.LocalDataSource?localDataSource)
 {
     return(txPriorityContract != null || localDataSource != null
         ? new DictionaryContractDataStore <TxPriorityContract.Destination>(
                new TxPriorityContract.DestinationSortedListContractDataStoreCollection(),
                txPriorityContract?.MinGasPrices,
                api.BlockTree,
                api.ReceiptFinder,
                api.LogManager,
                localDataSource?.GetMinGasPricesLocalDataSource())
         : null);
 }
Example #8
0
        private static ITxFilter CreateBaseAuRaTxFilter(
            AuRaNethermindApi api,
            IReadOnlyTxProcessorSource readOnlyTxProcessorSource,
            ISpecProvider specProvider)
        {
            Address?registrar = api.ChainSpec?.Parameters.Registrar;

            if (registrar != null)
            {
                RegisterContract  registerContract  = new(api.AbiEncoder, registrar, readOnlyTxProcessorSource);
                CertifierContract certifierContract = new(api.AbiEncoder, registerContract, readOnlyTxProcessorSource);
                return(new TxCertifierFilter(certifierContract, NullTxFilter.Instance, specProvider, api.LogManager));
            }

            return(NullTxFilter.Instance);
        }
Example #9
0
 protected override BlockProcessor NewBlockProcessor(AuRaNethermindApi api, ITxFilter txFilter, ContractRewriter contractRewriter)
 {
     return(new AuRaMergeBlockProcessor(
                _api.PoSSwitcher !,
                _api.SpecProvider !,
                _api.BlockValidator !,
                _api.RewardCalculatorSource !.Get(_api.TransactionProcessor !),
                new BlockProcessor.BlockValidationTransactionsExecutor(_api.TransactionProcessor !, _api.StateProvider !),
                _api.StateProvider !,
                _api.StorageProvider !,
                _api.ReceiptStorage !,
                _api.LogManager,
                _api.BlockTree !,
                txFilter,
                GetGasLimitCalculator(),
                contractRewriter
                ));
 }
 public InitializeNetworkAuRa(AuRaNethermindApi context) : base(context)
 {
 }
Example #11
0
 public StartBlockProducerAuRa(AuRaNethermindApi api) : base(api)
 {
     _api = api;
 }
 public InitializeBlockchainAuRa(AuRaNethermindApi api) : base(api)
 {
     _api        = api;
     _auraConfig = NethermindApi.Config <IAuraConfig>();
 }
Example #13
0
 public InitRlpAuRa(AuRaNethermindApi context) : base(context)
 {
 }
Example #14
0
 public InitializeNetworkAuRa(AuRaNethermindApi api) : base(api)
 {
 }
 public StepCAuRa(AuRaNethermindApi runnerContext)
 {
 }
 public StartBlockProducerAuRa(AuRaNethermindApi api) : base(api)
 {
     _api        = api;
     _auraConfig = NethermindApi.Config <IAuraConfig>();
 }
 public LoadGenesisBlockAuRa(AuRaNethermindApi api) : base(api)
 {
     _api = api;
 }
Example #18
0
 public StartBlockProcessorAuRa(AuRaNethermindApi api) : base(api)
 {
 }
 public InitializeBlockchainAuRa(AuRaNethermindApi api) : base(api)
 {
     _api = api;
 }