Exemple #1
0
        public static InitiatedEventDTO ParseInitiatedEvent(
            this EtherScanApi.ContractEvent contractEvent)
        {
            var eventSignatureHash = EventSignatureExtractor.GetSignatureHash <InitiatedEventDTO>();

            if (contractEvent.Topics == null ||
                contractEvent.Topics.Count != 3 ||
                contractEvent.EventSignatureHash() != eventSignatureHash)
            {
                throw new Exception("Invalid contract event");
            }

            const int prefixOffset  = 2;
            var       initiatorHex  = contractEvent.HexData.Substring(prefixOffset, TopicSizeInHex);
            var       refundTimeHex = contractEvent.HexData.Substring(prefixOffset + TopicSizeInHex, TopicSizeInHex);
            var       valueHex      = contractEvent.HexData.Substring(prefixOffset + 2 * TopicSizeInHex, TopicSizeInHex);
            var       redeemFeeHex  = contractEvent.HexData.Substring(prefixOffset + 3 * TopicSizeInHex, TopicSizeInHex);

            return(new InitiatedEventDTO
            {
                HashedSecret = Hex.FromString(contractEvent.Topics[1], true),
                Participant =
                    $"0x{contractEvent.Topics[2].Substring(contractEvent.Topics[2].Length - AddressLengthInHex)}",
                Initiator =
                    $"0x{initiatorHex.Substring(initiatorHex.Length - AddressLengthInHex)}",
                RefundTimestamp = new HexBigInteger(refundTimeHex).Value,
                Value = new HexBigInteger(valueHex).Value,
                RedeemFee = new HexBigInteger(redeemFeeHex).Value
            });
        }
Exemple #2
0
        public static RefundedEventDTO ParseRefundedEvent(
            this EtherScanApi.ContractEvent contractEvent)
        {
            var eventSignatureHash = EventSignatureExtractor.GetSignatureHash <RefundedEventDTO>();

            if (contractEvent.Topics == null ||
                contractEvent.Topics.Count != 2 ||
                contractEvent.EventSignatureHash() != eventSignatureHash)
            {
                throw new Exception("Invalid contract event");
            }

            return(new RefundedEventDTO
            {
                HashedSecret = Hex.FromString(contractEvent.Topics[1], true),
            });
        }
Exemple #3
0
        public static AddedEventDTO ParseAddedEvent(
            this EtherScanApi.ContractEvent contractEvent)
        {
            var eventSignatureHash = EventSignatureExtractor.GetSignatureHash <AddedEventDTO>();

            if (contractEvent.Topics == null ||
                contractEvent.Topics.Count != 2 ||
                contractEvent.EventSignatureHash() != eventSignatureHash)
            {
                throw new Exception("Invalid contract event");
            }

            const int prefixOffset = 2;
            var       initiatorHex = contractEvent.HexData.Substring(prefixOffset, TopicSizeInHex);
            var       valueHex     = contractEvent.HexData.Substring(prefixOffset + TopicSizeInHex, TopicSizeInHex);

            return(new AddedEventDTO
            {
                HashedSecret = Hex.FromString(contractEvent.Topics[1], true),
                Initiator = $"0x{initiatorHex.Substring(initiatorHex.Length - AddressLengthInHex)}",
                Value = new HexBigInteger(valueHex).Value
            });
        }
Exemple #4
0
 public static bool IsRefundedEvent(this EtherScanApi.ContractEvent contractEvent)
 {
     return(contractEvent.EventSignatureHash() == EventSignatureExtractor.GetSignatureHash <RefundedEventDTO>());
 }