Example #1
0
        private async Task PushTransactions(IClientProxy clientsCaller, SubscribeModel subscribeModel,
                                            BlockRpcEntity model,
                                            BlockOperations operations)
        {
            foreach (var transaction in operations.Transactions)
            {
                var content = transaction.contents.Where(c =>
                                                         c.kind == TezosBlockOperationConstants.Transaction && c.metadata.operation_result.status ==
                                                         TezosBlockOperationConstants.OperationResultStatusApplied).ToList();
                foreach (var transactionContent in content)
                {
                    // Babylon upgrade - KT1 transactions are smart contract operations
                    var txSource      = transactionContent.GetTransactionSource();
                    var txDestination = transactionContent.GetTransactionDestination();
                    var txContent     = transactionContent.GetInternalTransactionContent();
                    if (subscribeModel.TransactionAddresses.Contains("all") ||
                        subscribeModel.TransactionAddresses.Contains(txSource) ||
                        subscribeModel.TransactionAddresses.Contains(txDestination))
                    {
                        var message = new PushMessage(new TransactionModel(model, transaction, txContent));
                        await clientsCaller.SendAsync("transactions", message);

                        _log.LogDebug($"History Block {model.header.level} | " +
                                      $"Operation hash {transaction.hash} has been sent. TxSource={txSource}, TxDestination={txDestination}");
                    }
                }
            }
        }
Example #2
0
        private async Task PushTransactions(BlockRpcEntity model, BlockOperations operations)
        {
            foreach (var transaction in operations.Transactions)
            {
                var content = transaction.contents.Where(c =>
                                                         c.kind == TezosBlockOperationConstants.Transaction && c.metadata.operation_result.status ==
                                                         TezosBlockOperationConstants.OperationResultStatusApplied).ToList();
                foreach (var transactionContent in content)
                {
                    // Babylon upgrade - KT1 transactions are smart contract operations
                    var txSource      = transactionContent.GetTransactionSource();
                    var txDestination = transactionContent.GetTransactionDestination();
                    var txContent     = transactionContent.GetInternalTransactionContent();

                    var message = new PushMessage(new TransactionModel(model, transaction, txContent));
                    await _hubContext.Clients.Groups(
                        $"transactions_{txSource}",
                        $"transactions_{txDestination}",
                        "transactions_all"
                        )
                    .SendAsync("transactions", message);

                    _log.LogDebug($"Block {model.header.level} | " +
                                  $"Operation hash {transaction.hash} has been sent to the following groups [transactions_{transactionContent.source}, transactions_{transactionContent.destination}, transactions_all]");
                }
            }
        }
Example #3
0
        private async Task PushOriginations(BlockRpcEntity model, BlockOperations operations)
        {
            foreach (var originations in operations.Originations)
            {
                var content = originations.contents.Where(c =>
                                                          c.kind == TezosBlockOperationConstants.Origination && c.metadata.operation_result.status ==
                                                          TezosBlockOperationConstants.OperationResultStatusApplied).ToList();
                foreach (var originationContent in content)
                {
                    var message = new PushMessage(new OriginationModel(model, originations, originationContent));
                    await _hubContext.Clients.Groups(
                        $"originations_{originationContent.source}",
                        "originations_all"
                        )
                    .SendAsync("originations", message);

                    _log.LogDebug($"Block {model.header.level} | " +
                                  $"Operation hash {originations.hash} has been sent to the following groups [originations_{originationContent.source}, originations_all]");
                }
            }
        }
Example #4
0
        private async Task PushOriginations(IClientProxy clientsCaller, SubscribeModel subscribeModel,
                                            BlockRpcEntity model,
                                            BlockOperations operations)
        {
            foreach (var originations in operations.Originations)
            {
                var content = originations.contents.Where(c =>
                                                          c.kind == TezosBlockOperationConstants.Origination && c.metadata.operation_result.status ==
                                                          TezosBlockOperationConstants.OperationResultStatusApplied).ToList();
                foreach (var originationContent in content)
                {
                    if (subscribeModel.OriginationAddresses.Contains("all") ||
                        subscribeModel.OriginationAddresses.Contains(originationContent.source))
                    {
                        var message = new PushMessage(new OriginationModel(model, originations, originationContent));
                        await clientsCaller.SendAsync("originations", message);

                        _log.LogDebug($"History block {model.header.level} | " +
                                      $"Operation hash {originations.hash} has been sent. OriginationSource={originationContent.source}");
                    }
                }
            }
        }
Example #5
0
 private static void PushDelegations(IAsyncCollector <SignalRMessage> signalRMessages, BlockOperations operations, BlockRpcEntity model)
 {
     foreach (var delegation in operations.Delegations)
     {
         var content = delegation.contents.Where(c =>
                                                 c.kind == TezosBlockOperationConstants.Delegation && c.metadata.operation_result.status ==
                                                 TezosBlockOperationConstants.OperationResultStatusApplied).ToList();
         foreach (var delegationContent in content)
         {
             signalRMessages.AddAsync(new SignalRMessage
             {
                 GroupName = $"delegations_{delegationContent.source}",
                 Arguments = new object[] { new PushMessage(new DelegationModel(model, delegation, delegationContent)) },
                 Target    = "delegations"
             });
             signalRMessages.AddAsync(new SignalRMessage
             {
                 GroupName = $"delegations_{delegationContent.@delegate}",
                 Arguments = new object[] { new PushMessage(new DelegationModel(model, delegation, delegationContent)) },
                 Target    = "delegations"
             });
             signalRMessages.AddAsync(new SignalRMessage
             {
                 GroupName = "delegations_all",
                 Arguments = new object[] { new PushMessage(new DelegationModel(model, delegation, delegationContent)) },
                 Target    = "delegations"
             });
         }
     }
 }
Example #6
0
        private static void PushTransactions(IAsyncCollector <SignalRMessage> signalRMessages, BlockOperations operations,
                                             BlockRpcEntity model)
        {
            foreach (var transaction in operations.Transactions)
            {
                var content = transaction.contents.Where(c =>
                                                         c.kind == TezosBlockOperationConstants.Transaction && c.metadata.operation_result.status ==
                                                         TezosBlockOperationConstants.OperationResultStatusApplied).ToList();
                foreach (var operationContent in content)
                {
                    var transactionContent = (BlockTransactionContent)operationContent;
                    // Babylon upgrade - KT1 transactions are smart contract operations
                    var txSource      = transactionContent.GetTransactionSource();
                    var txDestination = transactionContent.GetTransactionDestination();
                    var txContent     = transactionContent.GetInternalTransactionContent();

                    signalRMessages.AddAsync(new SignalRMessage
                    {
                        GroupName = $"transactions_{txSource}",
                        Arguments = new object[] { new PushMessage(new TransactionModel(model, transaction, txContent)) },
                        Target    = "transactions"
                    });
                    signalRMessages.AddAsync(new SignalRMessage
                    {
                        GroupName = $"transactions_{txDestination}",
                        Arguments = new object[] { new PushMessage(new TransactionModel(model, transaction, txContent)) },
                        Target    = "transactions"
                    });
                    signalRMessages.AddAsync(new SignalRMessage
                    {
                        GroupName = "transactions_all",
                        Arguments = new object[] { new PushMessage(new TransactionModel(model, transaction, txContent)) },
                        Target    = "transactions"
                    });
                }
            }
        }