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