public BlockchainIndexingService(
     IEthereumNodeJobClient ethereumNodeJobClient,
     IIndexingStateRepository indexingStateRepository,
     IRabbitPublisher <EthereumWalletLinkingStatusChangeCompletedEvent>
     walletLinkingStatusChangeCompletedPublisher,
     IRabbitPublisher <TransferToExternalCompletedEvent> transferToExternalCompletedPublisher,
     IRabbitPublisher <TransferToInternalDetectedEvent> transferToInternalDetectedPublisher,
     IRabbitPublisher <SeizeToInternalDetectedEvent> seizeToInternalDetectedPublisher,
     int blockConfirmationLevel,
     ILogFactory logFactory,
     int?blockBatchSize = null)
 {
     _ethereumNodeJobClient   = ethereumNodeJobClient;
     _indexingStateRepository = indexingStateRepository;
     _walletLinkingStatusChangeCompletedPublisher = walletLinkingStatusChangeCompletedPublisher;
     _transferToExternalCompletedPublisher        = transferToExternalCompletedPublisher;
     _transferToInternalDetectedPublisher         = transferToInternalDetectedPublisher;
     _seizeToInternalDetectedPublisher            = seizeToInternalDetectedPublisher;
     _blockConfirmationLevel            = blockConfirmationLevel;
     _blockBatchSize                    = blockBatchSize;
     _publicAccountLinkedEventSignature =
         $"0x{ABITypedRegistry.GetEvent<PublicAccountLinkedEventDTO>().Sha3Signature}";
     _publicAccountUnlinkedEventSignature =
         $"0x{ABITypedRegistry.GetEvent<PublicAccountUnlinkedEventDTO>().Sha3Signature}";
     _transferredFromInternalNetworkEventSignature =
         $"0x{ABITypedRegistry.GetEvent<TransferredFromInternalNetworkEventDTO>().Sha3Signature}";
     _transferredToInternalNetworkEventSignature =
         $"0x{ABITypedRegistry.GetEvent<TransferredToInternalNetworkEventDTO>().Sha3Signature}";
     _publicAccountUnlinkedEventSignature =
         $"0x{ABITypedRegistry.GetEvent<PublicAccountUnlinkedEventDTO>().Sha3Signature}";
     _seizeFromEventSignature =
         $"0x{ABITypedRegistry.GetEvent<SeizeFromEventDTO>().Sha3Signature}";
     _eventTopicDecoder = new EventTopicDecoder();
     _log = logFactory.CreateLog(this);
 }
 public BlockchainEventDecoder(IMapper mapper)
 {
     _mapper            = mapper;
     _eventTopicDecoder = new EventTopicDecoder();
     _publicAccountLinkedEventSignature   = $"0x{ABITypedRegistry.GetEvent<PublicAccountLinkedEventDTO>().Sha3Signature}";
     _publicAccountUnlinkedEventSignature = $"0x{ABITypedRegistry.GetEvent<PublicAccountUnlinkedEventDTO>().Sha3Signature}";
 }
 public BlockchainEventDecoder(IMapper mapper)
 {
     _mapper            = mapper;
     _eventTopicDecoder = new EventTopicDecoder();
     _transferedFromPublicNetworkEventSignature = $"0x{ABITypedRegistry.GetEvent<TransferredFromPublicNetworkEventDTO>().Sha3Signature}";
     _transferedToPublicNetworkEventSignature   = $"0x{ABITypedRegistry.GetEvent<TransferredToPublicNetworkEventDTO>().Sha3Signature}";
 }
 public BlockchainEventDecoder(IMapper mapper)
 {
     _eventTopicDecoder = new EventTopicDecoder();
     _transferReceivedEventSignature = $"0x{ABITypedRegistry.GetEvent<TransferReceivedEventDTO>().Sha3Signature}";
     _transferAcceptedEventSignature = $"0x{ABITypedRegistry.GetEvent<TransferAcceptedEventDTO>().Sha3Signature}";
     _transferRejectedEventSignature = $"0x{ABITypedRegistry.GetEvent<TransferRejectedEventDTO>().Sha3Signature}";
     _mapper = mapper;
 }
Пример #5
0
        public static TEventDTO DecodeEvent <TEventDTO>(this TEventDTO eventDTO, EventABI eventABI, FilterLog log) where TEventDTO : IEventDTO
        {
            if (!IsLogForEvent(eventABI, log))
            {
                return(default(TEventDTO));
            }
            var eventDecoder = new EventTopicDecoder();

            return(eventDecoder.DecodeTopics(eventDTO, log.Topics, log.Data));
        }
Пример #6
0
        public static EventLog <TEventDTO> DecodeEvent <TEventDTO>(this EventABI eventABI, FilterLog log) where TEventDTO : new()
        {
            if (!IsLogForEvent(eventABI, log))
            {
                return(null);
            }
            var eventDecoder = new EventTopicDecoder();
            var eventObject  = eventDecoder.DecodeTopics <TEventDTO>(log.Topics, log.Data);

            return(new EventLog <TEventDTO>(eventObject, log));
        }
Пример #7
0
        public static EventLog <List <ParameterOutput> > DecodeEventDefaultTopics(this EventABI eventABI, FilterLog log)
        {
            if (!IsLogForEvent(eventABI, log))
            {
                return(null);
            }
            var eventDecoder = new EventTopicDecoder();
            var eventObject  = eventDecoder.DecodeDefaultTopics(eventABI, log.Topics, log.Data);

            return(new EventLog <List <ParameterOutput> >(eventObject, log));
        }
Пример #8
0
        public T DecodeEvent <T>(Event eventHandler) where T : new()
        {
            if (!eventHandler.IsLogForEvent(this))
            {
                return(default(T));
            }

            var decoder = new EventTopicDecoder();

            return(decoder.DecodeTopics <T>(Topics, Data));
        }
Пример #9
0
        public List <EventLog <T> > DecodeAllEvents <T>(FilterLog[] logs) where T : new()
        {
            var result       = new List <EventLog <T> >();
            var eventDecoder = new EventTopicDecoder();

            foreach (var log in logs)
            {
                var eventObject = eventDecoder.DecodeTopics <T>(log.Topics, log.Data);
                result.Add(new EventLog <T>(eventObject, log));
            }
            return(result);
        }
Пример #10
0
        /// <summary>
        /// Decodes event data into event DTO.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <returns>Decoded event DTO.</returns>
        /// <see href="https://nethereum.readthedocs.io/en/latest/contracts/calling-transactions-events/"/>
        public T DecodeEventDTO <T>() where T : new()
        {
            EventTopicDecoder eventTopicDecoder = new EventTopicDecoder();

            object[] topicStrings = new object[this.Topics.Length];
            for (int i = 0; i < this.Topics.Length; i++)
            {
                topicStrings[i] = CryptoUtils.BytesToHexString(this.Topics[i]);
            }

            return(eventTopicDecoder.DecodeTopics <T>(topicStrings, CryptoUtils.BytesToHexString(this.Data)));
        }
        public UndecodedEventSubscriber(
            IPurchaseService purchaseService,
            IOperationsService operationsService,
            ISettingsService settingsService,
            string connectionString,
            string exchangeName,
            string queueName,
            ILogFactory logFactory)
            : base(connectionString, exchangeName, queueName, true, logFactory)
        {
            _purchaseService   = purchaseService;
            _operationsService = operationsService;
            _log = logFactory.CreateLog(this);

            _eventTopicDecoder = new EventTopicDecoder();

            _transferReceivedEventSignature = $"0x{ABITypedRegistry.GetEvent<TransferReceivedEventDTO>().Sha3Signature}";
            _transferAcceptedEventSignature = $"0x{ABITypedRegistry.GetEvent<TransferAcceptedEventDTO>().Sha3Signature}";
            _transferRejectedEventSignature = $"0x{ABITypedRegistry.GetEvent<TransferRejectedEventDTO>().Sha3Signature}";
            _contractAddress = settingsService.GetContractAddress();
        }
Пример #12
0
        /// <summary>
        /// Decodes event data into event DTO.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <returns>Decoded event DTO.</returns>
        /// <see href="https://nethereum.readthedocs.io/en/latest/contracts/calling-transactions-events/"/>
        public T DecodeEventDTO <T>() where T : new()
        {
            EventTopicDecoder eventTopicDecoder = new EventTopicDecoder();

            return(eventTopicDecoder.DecodeTopics <T>(this.Topics, CryptoUtils.BytesToHexString(this.Data)));
        }
Пример #13
0
 public DecodingService()
 {
     _abiDeserializer     = new ABIDeserialiser();
     _eventTopicDecoder   = new EventTopicDecoder();
     _functionCallDecoder = new FunctionCallDecoder();
 }