예제 #1
0
        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);
                }
            }
        }
예제 #2
0
        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);
        }
예제 #3
0
        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) },
예제 #5
0
        public void Assigns_Specified_Contract_Address()
        {
            var contractAddress =
                "0xC03cDD393C89D169bd4877d58f0554f320f21037";

            var filter = new NewFilterInputBuilder <TransferEvent>().Build(contractAddress);

            Assert.Single(filter.Address, contractAddress);
        }
예제 #6
0
        public void Assigns_Specified_Contract_Addresses()
        {
            var ContractAddresses = new []
            {
                "0xC03cDD393C89D169bd4877d58f0554f320f21037",
                "0xD03cDD393C89D169bd4877d58f0554f320f21037"
            };

            var filter = new NewFilterInputBuilder <TransferEvent>().Build(ContractAddresses);

            Assert.True(filter.Address.SequenceEqual(ContractAddresses));
        }
예제 #7
0
        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));
        }
예제 #8
0
        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));
        }
예제 #9
0
        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));
        }
예제 #10
0
        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());
        }
예제 #11
0
        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));
        }
예제 #12
0
        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));
        }