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 static ITxFilter?CreateTxPermissionFilter(AuRaNethermindApi api, IReadOnlyTxProcessorSource readOnlyTxProcessorSource) { if (api.ChainSpec == null) { throw new StepDependencyException(nameof(api.ChainSpec)); } if (api.SpecProvider == null) { throw new StepDependencyException(nameof(api.SpecProvider)); } if (api.ChainSpec.Parameters.TransactionPermissionContract != null) { api.TxFilterCache ??= new PermissionBasedTxFilter.Cache(); var txPermissionFilter = CreateFilter(new PermissionBasedTxFilter( new VersionedTransactionPermissionContract(api.AbiEncoder, api.ChainSpec.Parameters.TransactionPermissionContract, api.ChainSpec.Parameters.TransactionPermissionContractTransition ?? 0, readOnlyTxProcessorSource, api.TransactionPermissionContractVersions, api.LogManager, api.SpecProvider), api.TxFilterCache, api.LogManager)); return(txPermissionFilter); } return(null); }
private static ITxFilter CreateBaseAuRaTxFilter( IMiningConfig miningConfig, AuRaNethermindApi api, IReadOnlyTxProcessorSource readOnlyTxProcessorSource, IDictionaryContractDataStore <TxPriorityContract.Destination>?minGasPricesContractDataStore, ISpecProvider specProvider) { IMinGasPriceTxFilter minGasPriceTxFilter = TxFilterBuilders.CreateStandardMinGasPriceTxFilter(miningConfig, specProvider); ITxFilter gasPriceTxFilter = minGasPriceTxFilter; if (minGasPricesContractDataStore != null) { gasPriceTxFilter = CreateFilter(new MinGasPriceContractTxFilter(minGasPriceTxFilter, minGasPricesContractDataStore), minGasPriceTxFilter); } Address?registrar = api.ChainSpec?.Parameters.Registrar; if (registrar != null) { RegisterContract registerContract = new(api.AbiEncoder, registrar, readOnlyTxProcessorSource); CertifierContract certifierContract = new(api.AbiEncoder, registerContract, readOnlyTxProcessorSource); return(CreateFilter(new TxCertifierFilter(certifierContract, gasPriceTxFilter, specProvider, api.LogManager), gasPriceTxFilter)); } return(gasPriceTxFilter); }
public static ITxFilter CreateAuRaTxFilter( AuRaNethermindApi api, IReadOnlyTxProcessorSource readOnlyTxProcessorSource, ISpecProvider specProvider, ITxFilter baseTxFilter) { ITxFilter baseAuRaTxFilter = CreateBaseAuRaTxFilter(api, readOnlyTxProcessorSource, specProvider, baseTxFilter); ITxFilter?txPermissionFilter = CreateTxPermissionFilter(api, readOnlyTxProcessorSource); return(txPermissionFilter != null ? new CompositeTxFilter(baseAuRaTxFilter, txPermissionFilter) : baseAuRaTxFilter); }
public static ITxFilter CreateAuRaTxFilterForProducer( IMiningConfig miningConfig, AuRaNethermindApi api, IReadOnlyTxProcessorSource readOnlyTxProcessorSource, IDictionaryContractDataStore <TxPriorityContract.Destination>?minGasPricesContractDataStore, ISpecProvider specProvider) { ITxFilter baseAuRaTxFilter = CreateBaseAuRaTxFilter(miningConfig, api, readOnlyTxProcessorSource, minGasPricesContractDataStore, specProvider); ITxFilter?txPermissionFilter = CreateTxPermissionFilter(api, readOnlyTxProcessorSource); return(txPermissionFilter != null ? new CompositeTxFilter(baseAuRaTxFilter, txPermissionFilter) : baseAuRaTxFilter); }
protected virtual BlockProcessor NewBlockProcessor(AuRaNethermindApi api, ITxFilter txFilter, ContractRewriter contractRewriter) => new AuRaBlockProcessor( _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 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); }
private static ITxFilter CreateBaseAuRaTxFilter( AuRaNethermindApi api, IReadOnlyTxProcessorSource readOnlyTxProcessorSource, ISpecProvider specProvider, ITxFilter baseTxFilter) { Address?registrar = api.ChainSpec?.Parameters.Registrar; if (registrar != null) { RegisterContract registerContract = new(api.AbiEncoder, registrar, readOnlyTxProcessorSource); CertifierContract certifierContract = new(api.AbiEncoder, registerContract, readOnlyTxProcessorSource); return(CreateFilter(new TxCertifierFilter(certifierContract, baseTxFilter, specProvider, api.LogManager))); } return(baseTxFilter); }
public StartBlockProducerAuRa(AuRaNethermindApi api) { _api = api; _auraConfig = NethermindApi.Config <IAuraConfig>(); }
public InitializeBlockchainAuRa(AuRaNethermindApi api) : base(api) { _api = api; _auraConfig = NethermindApi.Config <IAuraConfig>(); }
public InitializeNetworkAuRa(AuRaNethermindApi api) : base(api) { }
public LoadGenesisBlockAuRa(AuRaNethermindApi api) : base(api) { _api = api; }
public InitRlpAuRa(AuRaNethermindApi context) : base(context) { }
public StartBlockProcessorAuRa(AuRaNethermindApi api) : base(api) { }