예제 #1
0
        public void TestEventEncode()
        {
            string        abiJson = "{\"anonymous\": false,\"inputs\": [{\"indexed\": true,\"name\": \"_from\",\"type\": \"address\"},{\"indexed\": true,\"name\": \"_to\",\"type\": \"address\"},{\"indexed\": false,\"name\": \"_value\",\"type\": \"uint256\"}],\"name\": \"Transfer\",\"type\": \"event\"}";
            AbiEventCoder coder   = new AbiEventCoder(abiJson);

            Dictionary <string, dynamic> indexed = new Dictionary <string, dynamic>();

            indexed.Add("_from", "0xe4aea9f855d6960d56190fb26e32d0ec2ab40d82");
            indexed.Add("_to", "0xf43a84be55e162034f4c13de65294a3875f15bc9");

            byte[][] filters = coder.EncodeFilter(indexed);

            Assert.True(filters[0].SequenceEqual("0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef".ToBytes()));
            Assert.True(filters[1].SequenceEqual("0x000000000000000000000000e4aea9f855d6960d56190fb26e32d0ec2ab40d82".ToBytes()));
            Assert.True(filters[2].SequenceEqual("0x000000000000000000000000f43a84be55e162034f4c13de65294a3875f15bc9".ToBytes()));
        }
예제 #2
0
        public void TestEventDecode()
        {
            string        abiJson = "{\"anonymous\": false,\"inputs\": [{\"indexed\": true,\"name\": \"_from\",\"type\": \"address\"},{\"indexed\": true,\"name\": \"_to\",\"type\": \"address\"},{\"indexed\": false,\"name\": \"_value\",\"type\": \"uint256\"}],\"name\": \"Transfer\",\"type\": \"event\"}";
            AbiEventCoder coder   = new AbiEventCoder(abiJson);

            List <byte[]> topics = new List <byte[]>();

            topics.Add("0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef".ToBytes());
            topics.Add("0x000000000000000000000000e4aea9f855d6960d56190fb26e32d0ec2ab40d82".ToBytes());
            topics.Add("0x000000000000000000000000f43a84be55e162034f4c13de65294a3875f15bc9".ToBytes());
            byte[] data = "0x0000000000000000000000000000000000000000000000056bc75e2d63100000".ToBytes();

            AbiEventTopic[] decode = coder.DecodeTopics(topics.ToArray(), data);

            Assert.True(decode.Length == 3);
            Assert.True(decode[0].Definition.Name == "_from" && decode[0].Definition.Indexed == true && (decode[0].Result as string).Equals("0xe4aea9f855d6960d56190fb26e32d0ec2ab40d82"));
            Assert.True(decode[1].Definition.Name == "_to" && decode[1].Definition.Indexed == true && (decode[1].Result as string).Equals("0xf43a84be55e162034f4c13de65294a3875f15bc9"));
            Assert.True(decode[2].Definition.Name == "_value" && decode[2].Definition.Indexed == false && decode[2].Result.ToString().Equals("100000000000000000000"));
        }