private ITxPermissionFilter?GetTxPermissionFilter( ReadOnlyTxProcessingEnv environment, ReadOnlyTransactionProcessorSource readOnlyTransactionProcessorSource, IStateProvider?stateProvider = null) { if (_context.ChainSpec == null) { throw new StepDependencyException(nameof(_context.ChainSpec)); } if (_context.ChainSpec.Parameters.TransactionPermissionContract != null) { var txPermissionFilter = new TxPermissionFilter( new VersionedTransactionPermissionContract(_context.AbiEncoder, _context.ChainSpec.Parameters.TransactionPermissionContract, _context.ChainSpec.Parameters.TransactionPermissionContractTransition ?? 0, readOnlyTransactionProcessorSource, _context.TransactionPermissionContractVersions), _context.TxFilterCache, environment.StateProvider, _context.LogManager); return(txPermissionFilter); } return(null); }
private ITxPermissionFilter?GetTxPermissionFilter() { if (_context.ChainSpec == null) { throw new StepDependencyException(nameof(_context.ChainSpec)); } if (_context.ChainSpec.Parameters.TransactionPermissionContract != null) { _context.TxFilterCache = new ITxPermissionFilter.Cache(); var txPermissionFilter = new TxPermissionFilter( new TransactionPermissionContract( _context.TransactionProcessor, _context.AbiEncoder, _context.ChainSpec.Parameters.TransactionPermissionContract, _context.ChainSpec.Parameters.TransactionPermissionContractTransition ?? 0, GetReadOnlyTransactionProcessorSource()), _context.TxFilterCache, _context.StateProvider, _context.LogManager); return(txPermissionFilter); } return(null); }
public bool allows_transactions_before_transitions(long blockNumber) { var transactionPermissionContract = new VersionedTransactionPermissionContract(new AbiEncoder(), TestItem.AddressA, 5, Substitute.For <IReadOnlyTransactionProcessorSource>(), new LruCacheWithRecycling <Keccak, UInt256>(100, "TestCache")); var filter = new TxPermissionFilter(transactionPermissionContract, new ITxPermissionFilter.Cache(), Substitute.For <IStateProvider>(), LimboLogs.Instance); return(filter.IsAllowed(Build.A.Transaction.WithSenderAddress(TestItem.AddressB).TestObject, Build.A.BlockHeader.WithNumber(blockNumber).TestObject)); }
public bool allows_transactions_before_transitions(long blockNumber) { var transactionPermissionContract = new TransactionPermissionContract( Substitute.For <ITransactionProcessor>(), Substitute.For <IAbiEncoder>(), TestItem.AddressA, 5, Substitute.For <IReadOnlyTransactionProcessorSource>()); var filter = new TxPermissionFilter(transactionPermissionContract, new ITxPermissionFilter.Cache(), Substitute.For <IStateProvider>(), LimboLogs.Instance); return(filter.IsAllowed(Build.A.Transaction.TestObject, Build.A.BlockHeader.WithNumber(blockNumber).TestObject)); }
protected override BlockProcessor CreateBlockProcessor() { var validator = new AuRaParameters.Validator() { Addresses = TestItem.Addresses, ValidatorType = AuRaParameters.ValidatorType.List }; var transactionPermissionContract = new VersionedTransactionPermissionContract(TxProcessor, new AbiEncoder(), _contractAddress, 1, new ReadOnlyTransactionProcessorSource(DbProvider, BlockTree, SpecProvider, LimboLogs.Instance)); TxPermissionFilterCache = new ITxPermissionFilter.Cache(); TxPermissionFilter = new TxPermissionFilter(transactionPermissionContract, TxPermissionFilterCache, State, LimboLogs.Instance); return(new AuRaBlockProcessor(SpecProvider, Always.Valid, new RewardCalculator(SpecProvider), TxProcessor, StateDb, CodeDb, State, Storage, TxPool, ReceiptStorage, LimboLogs.Instance, BlockTree, TxPermissionFilter)); }
public bool allows_transactions_before_transitions(long blockNumber) { var transactionPermissionContract = new VersionedTransactionPermissionContract( Substitute.For <ITransactionProcessor>(), new AbiEncoder(), TestItem.AddressA, 5, Substitute.For <IReadOnlyTransactionProcessorSource>()); var filter = new TxPermissionFilter(transactionPermissionContract, new ITxPermissionFilter.Cache(), Substitute.For <IStateProvider>(), LimboLogs.Instance); try { return(filter.IsAllowed(Build.A.Transaction.TestObject, Build.A.BlockHeader.WithNumber(blockNumber).TestObject)); } catch (Exception) { // TODO: previously it was throwing exceptions as well return(false); } }