public async Task WithAFilter() { var filter = new NewFilterInputBuilder <TransferEvent_ERC20>() .AddTopic(tfr => tfr.To, "0xdfa70b70b41d77a7cdd8b878f57521d47c064d8c") .Build(contractAddress: "0x3678FbEFC663FC28336b93A1FA397B67ae42114d", blockRange: new BlockRange(3860820, 3860820)); using (var processor = new AzureEventIndexingProcessor( AzureSearchServiceName, _azureSearchApiKey, BlockchainUrl, filters: new[] { filter })) { await ClearDown(processor); try { await processor.AddAsync <TransferEvent_ERC20>(AzureTransferIndexName); var blocksProcessed = await processor.ProcessAsync(3860820, 3860820); Assert.Equal((ulong)1, blocksProcessed); Assert.Equal(1, processor.Indexers[0].Indexed); } finally { await ClearDown(processor); } } }
public void Topic_Value_Array_Length_Always_Equals_Signature_Plus_Count_Of_Indexed_Parameters() { var filter = new NewFilterInputBuilder <TransferEvent_ERC20>().Build(); Assert.Equal(3, filter.Topics.Length); var filterFrom = new NewFilterInputBuilder <TransferEvent_ERC20>() .AddTopic(tfr => tfr.From, "0xdfa70b70b41d77a7cdd8b878f57521d47c064d8c") .Build(); Assert.Equal(3, filterFrom.Topics.Length); var filterTo = new NewFilterInputBuilder <TransferEvent_ERC20>() .AddTopic(tfr => tfr.To, "0xefa70b70b41d77a7cdd8b878f57521d47c064d8c") .Build(); Assert.Equal(3, filterTo.Topics.Length); var filterFromAndTo = new NewFilterInputBuilder <TransferEvent_ERC20>() .AddTopic(tfr => tfr.From, "0xdfa70b70b41d77a7cdd8b878f57521d47c064d8c") .AddTopic(tfr => tfr.To, "0xefa70b70b41d77a7cdd8b878f57521d47c064d8c") .Build(); Assert.Equal(3, filterFromAndTo.Topics.Length); }
public void Assigns_Specified_Block_Numbers() { var range = new BlockRange(15, 25); var filter = new NewFilterInputBuilder <TransferEvent>().Build(blockRange: range); Assert.Equal(range.From, filter.FromBlock.BlockNumber.Value); Assert.Equal(range.To, filter.ToBlock.BlockNumber.Value); }
public async Task TransfersInBlock() { var filter = new NewFilterInputBuilder <TransferEvent_ERC20>() .Build(blockRange: new BlockRange(3860820, 3860820)); var expectedLogs = new List <(string txHash, int logIndex)> { { ("0x99d3d6a1fe9eb4a44ff412bd02f3816b0b9061a2356b52a0f9bbc4b459d3f55a", 0) }, { ("0x70e78bcb16275e38dfd1048625b7a5cb22e21027955d8de301b9fbd411c692d6", 7) },
public void Assigns_Specified_Contract_Address() { var contractAddress = "0xC03cDD393C89D169bd4877d58f0554f320f21037"; var filter = new NewFilterInputBuilder <TransferEvent>().Build(contractAddress); Assert.Single(filter.Address, contractAddress); }
public void Assigns_Specified_Contract_Addresses() { var ContractAddresses = new [] { "0xC03cDD393C89D169bd4877d58f0554f320f21037", "0xD03cDD393C89D169bd4877d58f0554f320f21037" }; var filter = new NewFilterInputBuilder <TransferEvent>().Build(ContractAddresses); Assert.True(filter.Address.SequenceEqual(ContractAddresses)); }
public void Assigns_Event_Signature_To_Topic0() { var filter = new NewFilterInputBuilder <TransferEvent>().Build(); var eventAbi = ABITypedRegistry.GetEvent <TransferEvent>(); Assert.Equal(eventAbi.Sha3Signature.EnsureHexPrefix(), filter.Topics.FirstOrDefault()); Assert.False(filter.IsTopicFiltered(1)); Assert.False(filter.IsTopicFiltered(2)); Assert.False(filter.IsTopicFiltered(3)); }
public void Can_Assign_To_Topic3() { var value = BigInteger.One; var filter = new NewFilterInputBuilder <TransferEvent>() .AddTopic(template => template.Value, value) .Build(); Assert.False(filter.IsTopicFiltered(1)); Assert.False(filter.IsTopicFiltered(2)); Assert.Equal("0x0000000000000000000000000000000000000000000000000000000000000001", filter.GetFirstTopicValueAsString(3)); }
public void Can_Assign_To_Topic2() { var to = "0xc14934679e71ef4d18b6ae927fe2b953c7fd9b91"; var filter = new NewFilterInputBuilder <TransferEvent>() .AddTopic(template => template.To, to) .Build(); Assert.False(filter.IsTopicFiltered(1)); Assert.Equal("0x000000000000000000000000c14934679e71ef4d18b6ae927fe2b953c7fd9b91", filter.GetFirstTopicValueAsString(2)); Assert.False(filter.IsTopicFiltered(3)); }
public void Can_Assign_Many_Values_To_A_Topic_At_Once() { var address1 = "0xc14934679e71ef4d18b6ae927fe2b953c7fd9b91"; var address2 = "0xc24934679e71ef4d18b6ae927fe2b953c7fd9b91"; var filter = new NewFilterInputBuilder <TransferEvent>() .AddTopic((t) => t.From, new [] { address1, address2 }) .Build(); var topicValues = filter.GetTopicValues(1); Assert.Equal("0x000000000000000000000000c14934679e71ef4d18b6ae927fe2b953c7fd9b91", topicValues[0].ToString()); Assert.Equal("0x000000000000000000000000c24934679e71ef4d18b6ae927fe2b953c7fd9b91", topicValues[1].ToString()); }
public void When_Parameter_Name_Is_Empty_Uses_Order_To_Find_Topic() { var from = "0xc14934679e71ef4d18b6ae927fe2b953c7fd9b91"; var to = "0xc14934679e71ef4d18b6ae927fe2b953c7fd9b92"; var value = BigInteger.One; var filter = new NewFilterInputBuilder <TransferEvent_WithEmptyParameterNames>() .AddTopic(template => template.From, from) .AddTopic(template => template.To, to) .AddTopic(template => template.Value, value) .Build(); Assert.Equal("0x000000000000000000000000c14934679e71ef4d18b6ae927fe2b953c7fd9b91", filter.GetFirstTopicValueAsString(1)); Assert.Equal("0x000000000000000000000000c14934679e71ef4d18b6ae927fe2b953c7fd9b92", filter.GetFirstTopicValueAsString(2)); Assert.Equal("0x0000000000000000000000000000000000000000000000000000000000000001", filter.GetFirstTopicValueAsString(3)); }
public void Can_Assign_To_Multiple_Topics() { var from = "0xc14934679e71ef4d18b6ae927fe2b953c7fd9b91"; var to = "0xc14934679e71ef4d18b6ae927fe2b953c7fd9b92"; var value = BigInteger.One; var filter = new NewFilterInputBuilder <TransferEvent>() .AddTopic(template => template.From, from) .AddTopic(template => template.To, to) .AddTopic(template => template.Value, value) .Build(); Assert.Equal("0x000000000000000000000000c14934679e71ef4d18b6ae927fe2b953c7fd9b91", filter.GetFirstTopicValueAsString(1)); Assert.Equal("0x000000000000000000000000c14934679e71ef4d18b6ae927fe2b953c7fd9b92", filter.GetFirstTopicValueAsString(2)); Assert.Equal("0x0000000000000000000000000000000000000000000000000000000000000001", filter.GetFirstTopicValueAsString(3)); }