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); }
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)) ); }
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)) )); }