Esempio n. 1
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);
        }
Esempio n. 2
0
        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));
        }