Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
            protected override async Task AddBlocksOnStart()
            {
                EthereumEcdsa ecdsa = new EthereumEcdsa(ChainSpec.ChainId, LimboLogs.Instance);

                await AddBlock(
                    SignTransactions(ecdsa, TestItem.PrivateKeyA, 1,
                                     TxPriorityContract.SetPriority(TestItem.AddressA, FnSignature2, UInt256.One),
                                     TxPriorityContract.SetPriority(TestItem.AddressB, FnSignature, 10),
                                     TxPriorityContract.SetPriority(TestItem.AddressB, FnSignature2, 4),

                                     TxPriorityContract.SetMinGasPrice(TestItem.AddressB, FnSignature, 10),
                                     TxPriorityContract.SetMinGasPrice(TestItem.AddressB, FnSignature2, 4),
                                     TxPriorityContract.SetSendersWhitelist(TestItem.AddressA, TestItem.AddressB))
                    );

                await AddBlock(
                    SignTransactions(ecdsa, TestItem.PrivateKeyA, State.GetNonce(TestItem.PrivateKeyA.Address),
                                     // overrides for some of previous block values:
                                     TxPriorityContract.SetPriority(TestItem.AddressB, FnSignature, 3),

                                     TxPriorityContract.SetMinGasPrice(TestItem.AddressB, FnSignature, 2),

                                     TxPriorityContract.SetSendersWhitelist(TestItem.AddressA, TestItem.AddressC))
                    );
            }
Exemplo n.º 3
0
            protected override TxPoolTxSource CreateTxPoolTxSource()
            {
                TxPoolTxSource txPoolTxSource = base.CreateTxPoolTxSource();

                TxPriorityContract = new TxPriorityContract(new AbiEncoder(), TestItem.AddressA,
                                                            new ReadOnlyTxProcessingEnv(DbProvider, TrieStore.AsReadOnly(), BlockTree, SpecProvider, LimboLogs.Instance));

                Priorities = new DictionaryContractDataStore <TxPriorityContract.Destination>(
                    new TxPriorityContract.DestinationSortedListContractDataStoreCollection(),
                    TxPriorityContract.Priorities,
                    BlockTree,
                    ReceiptStorage,
                    LimboLogs.Instance,
                    GetPrioritiesLocalDataStore());

                MinGasPrices = new DictionaryContractDataStore <TxPriorityContract.Destination>(
                    new TxPriorityContract.DestinationSortedListContractDataStoreCollection(),
                    TxPriorityContract.MinGasPrices,
                    BlockTree,
                    ReceiptStorage,
                    LimboLogs.Instance,
                    GetMinGasPricesLocalDataStore());

                SendersWhitelist = new ContractDataStoreWithLocalData <Address>(new HashSetContractDataStoreCollection <Address>(),
                                                                                TxPriorityContract.SendersWhitelist,
                                                                                BlockTree,
                                                                                ReceiptStorage,
                                                                                LimboLogs.Instance,
                                                                                GetWhitelistLocalDataStore());

                return(txPoolTxSource);
            }
            protected override TxPoolTxSource CreateTxPoolTxSource()
            {
                TxPoolTxSource txPoolTxSource = base.CreateTxPoolTxSource();

                TxPriorityContract = new TxPriorityContract(new AbiEncoder(), TestItem.AddressA,
                                                            new ReadOnlyTxProcessorSource(DbProvider, BlockTree, SpecProvider, LimboLogs.Instance));

                var comparer = TxPriorityContract.DestinationMethodComparer.Instance;

                Priorities       = new SortedListContractDataStore <TxPriorityContract.Destination>(TxPriorityContract.Priorities, BlockProcessor, comparer);
                MinGasPrices     = new DictionaryContractDataStore <TxPriorityContract.Destination>(TxPriorityContract.MinGasPrices, BlockProcessor, comparer);
                SendersWhitelist = new HashSetContractDataStore <Address>(TxPriorityContract.SendersWhitelist, BlockProcessor);
                return(txPoolTxSource);
            }
            protected override Task AddBlocksOnStart()
            {
                EthereumEcdsa ecdsa = new EthereumEcdsa(ChainSpec.ChainId, LimboLogs.Instance);

                return(AddBlock(
                           SignTransactions(ecdsa, TestItem.PrivateKeyA,
                                            TxPriorityContract.SetPriority(TestItem.AddressA, TxPriorityContract.Destination.FnSignatureEmpty, UInt256.One),
                                            TxPriorityContract.SetPriority(TestItem.AddressB, FnSignature, 3),

                                            TxPriorityContract.SetMinGasPrice(TestItem.AddressB, FnSignature, 2),
                                            TxPriorityContract.SetMinGasPrice(TestItem.AddressB, FnSignature, 4),

                                            TxPriorityContract.SetSendersWhitelist(TestItem.AddressA, TestItem.AddressB),
                                            TxPriorityContract.SetSendersWhitelist(TestItem.AddressA, TestItem.AddressC))
                           ));
            }