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]"); } } }
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}"); } } } }
public OriginationModel(BlockRpcEntity block, BlockOperation <BlockOriginationContent> transactionOperation, BlockOriginationContent originationContent) { BlockHash = block.hash; BlockLevel = block.header.level; OperationHash = transactionOperation.hash; Timestamp = block.header.timestamp; OriginationContent = originationContent; }
public async Task PushOperations(IClientProxy clientsCaller, BlockRpcEntity blockModel, SubscribeModel subscribeModel) { var operations = blockModel.GetOperations(); await PushTransactions(clientsCaller, subscribeModel, blockModel, operations); await PushDelegations(clientsCaller, subscribeModel, blockModel, operations); await PushOriginations(clientsCaller, subscribeModel, blockModel, operations); _log.LogDebug($"Processing history block {blockModel.header.level}. All operation messages have been sent."); }
public async Task PushOperations(BlockRpcEntity model) { var operations = model.GetOperations(); await PushTransactions(model, operations); await PushDelegations(model, operations); await PushOriginations(model, operations); _log.LogDebug($"Processing block {model.header.level}. All operation messages have been sent."); }
public HeadModel(BlockRpcEntity model) { protocol = model.protocol; chain_id = model.chain_id; hash = model.hash; level = model.header.level; proto = model.header.proto; predecessor = model.header.predecessor; timestamp = model.header.timestamp; validation_pass = model.header.validation_pass; operations_hash = model.header.operations_hash; fitness = model.header.fitness; context = model.header.context; proof_of_work_nonce = model.header.proof_of_work_nonce; signature = model.header.signature; }
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]"); } } }
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}"); } } } }
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" }); } } }
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" }); } } }