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); }
public bool is_allowed_returns_correct(Address address, ulong gasLimit) { ITxFilter minGasPriceFilter = new MinGasPriceTxFilter(UInt256.One); IDictionaryContractDataStore <TxPriorityContract.Destination> dictionaryContractDataStore = Substitute.For <IDictionaryContractDataStore <TxPriorityContract.Destination> >(); dictionaryContractDataStore.TryGetValue( Arg.Any <BlockHeader>(), Arg.Is <TxPriorityContract.Destination>(d => d.Target == TestItem.AddressA), out Arg.Any <TxPriorityContract.Destination>()) .Returns(x => { x[2] = new TxPriorityContract.Destination(TestItem.AddressA, Array.Empty <byte>(), 5); return(true); }); var txFilter = new MinGasPriceContractTxFilter(minGasPriceFilter, dictionaryContractDataStore); var tx = Build.A.Transaction.WithTo(address).WithGasPrice(gasLimit).TestObject; return(txFilter.IsAllowed(tx, Build.A.BlockHeader.TestObject)); }