public void Setup() { InMemoryReceiptStorage receiptStorage = new InMemoryReceiptStorage(); _specProvider = new TestSpecProvider(Homestead.Instance); _blockTree = Build.A.BlockTree().WithTransactions(receiptStorage, _specProvider).OfChainLength(10).TestObject; _dbProvider = new MemDbProvider(); ProofModuleFactory moduleFactory = new ProofModuleFactory( _dbProvider, _blockTree, new CompositeBlockPreprocessorStep(new RecoverSignatures(new EthereumEcdsa(ChainId.Mainnet, LimboLogs.Instance), NullTxPool.Instance, _specProvider, LimboLogs.Instance)), receiptStorage, _specProvider, LimboLogs.Instance); _proofModule = moduleFactory.Create(); }
public void Get_receipt_when_block_has_few_receipts(bool withHeader, string expectedResult) { IReceiptFinder _receiptFinder = Substitute.For <IReceiptFinder>(); LogEntry[] logEntries = new[] { Build.A.LogEntry.TestObject, Build.A.LogEntry.TestObject }; TxReceipt receipt1 = new TxReceipt() { Bloom = new Bloom(logEntries), Index = 0, Recipient = TestItem.AddressA, Sender = TestItem.AddressB, BlockHash = _blockTree.FindBlock(1).Hash, BlockNumber = 1, ContractAddress = TestItem.AddressC, GasUsed = 1000, TxHash = _blockTree.FindBlock(1).Transactions[0].Hash, StatusCode = 0, GasUsedTotal = 2000, Logs = logEntries }; TxReceipt receipt2 = new TxReceipt() { Bloom = new Bloom(logEntries), Index = 1, Recipient = TestItem.AddressC, Sender = TestItem.AddressD, BlockHash = _blockTree.FindBlock(1).Hash, BlockNumber = 1, ContractAddress = TestItem.AddressC, GasUsed = 1000, TxHash = _blockTree.FindBlock(1).Transactions[1].Hash, StatusCode = 0, GasUsedTotal = 2000, Logs = logEntries }; Block block = _blockTree.FindBlock(1); Keccak txHash = _blockTree.FindBlock(1).Transactions[1].Hash; TxReceipt[] receipts = { receipt1, receipt2 }; _receiptFinder.Get(Arg.Any <Block>()).Returns(receipts); _receiptFinder.Get(Arg.Any <Keccak>()).Returns(receipts); _receiptFinder.FindBlockHash(Arg.Any <Keccak>()).Returns(_blockTree.FindBlock(1).Hash); ProofModuleFactory moduleFactory = new ProofModuleFactory( _dbProvider, _blockTree, new TrieStore(_dbProvider.StateDb, LimboLogs.Instance).AsReadOnly(), new CompositeBlockPreprocessorStep(new RecoverSignatures(new EthereumEcdsa(ChainId.Mainnet, LimboLogs.Instance), NullTxPool.Instance, _specProvider, LimboLogs.Instance)), _receiptFinder, _specProvider, LimboLogs.Instance); _proofRpcModule = moduleFactory.Create(); ReceiptWithProof receiptWithProof = _proofRpcModule.proof_getTransactionReceipt(txHash, withHeader).Data; if (withHeader) { Assert.NotNull(receiptWithProof.BlockHeader); } else { Assert.Null(receiptWithProof.BlockHeader); } string response = RpcTest.TestSerializedRequest(_proofRpcModule, "proof_getTransactionReceipt", $"{txHash}", $"{withHeader}"); Assert.AreEqual(expectedResult, response); }