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);
        }
Exemplo n.º 2
0
        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);
            }
        }