public override Task GetTransactionInfos(FullBlockRequest request, IServerStreamWriter <TransactionInfo> responseStream, ServerCallContext context) { return(Task.Run(async() => { RegistryFullBlock registryFullBlock = (RegistryFullBlock)_registryChainDataService.Get(new DoubleHeightKey(request.SyncBlockHeight, request.Round)); foreach (RegistryRegisterBlock transactionWitness in registryFullBlock.StateWitnesses) { try { PacketBase blockBase = _transactionalDataService.Get(new SyncHashKey(transactionWitness.SyncBlockHeight, transactionWitness.ReferencedBodyHash)); if (blockBase != null) { await responseStream.WriteAsync( new TransactionInfo { SyncBlockHeight = transactionWitness.SyncBlockHeight, PacketType = (uint)transactionWitness.ReferencedPacketType, BlockType = transactionWitness.ReferencedBlockType, Content = ByteString.CopyFrom(blockBase.RawData.ToArray()) }); } } catch (Exception ex) { _logger.Error($"Failed to retrieve block for SyncBlockHeight {request.SyncBlockHeight} and Round {request.Round}", ex); } } foreach (RegistryRegisterUtxoConfidential transactionWitness in registryFullBlock.UtxoWitnesses) { try { PacketBase blockBase = _utxoConfidentialDataService.Get(new SyncHashKey(transactionWitness.SyncBlockHeight, transactionWitness.ReferencedBodyHash)); if (blockBase != null) { await responseStream.WriteAsync( new TransactionInfo { SyncBlockHeight = transactionWitness.SyncBlockHeight, PacketType = (uint)transactionWitness.ReferencedPacketType, BlockType = transactionWitness.ReferencedBlockType, Content = ByteString.CopyFrom(blockBase.RawData.ToArray()) }); } } catch (Exception ex) { _logger.Error($"Failed to retrieve block for SyncBlockHeight {request.SyncBlockHeight} and Round {request.Round}", ex); } } }, context.CancellationToken)); }
public override Task GetTransactionRegistryBlockInfos(FullBlockRequest request, IServerStreamWriter <TransactionRegistryBlockInfo> responseStream, ServerCallContext context) { return(Task.Run(async() => { RegistryFullBlock registryFullBlock = (RegistryFullBlock)_registryChainDataService.Get(new DoubleHeightKey(request.SyncBlockHeight, request.Round)); foreach (RegistryRegisterBlock transactionWitness in registryFullBlock.StateWitnesses) { TransactionRegistryBlockInfo blockInfo = new TransactionRegistryBlockInfo(); blockInfo.AccountedHeader = new AccountedTransactionHeaderDescriptor { SyncBlockHeight = transactionWitness.SyncBlockHeight, ReferencedBlockType = transactionWitness.ReferencedBlockType, ReferencedPacketType = (uint)transactionWitness.ReferencedPacketType, ReferencedTarget = ByteString.CopyFrom(transactionWitness.ReferencedTarget), ReferencedHeight = transactionWitness.BlockHeight }; await responseStream.WriteAsync(blockInfo); } foreach (RegistryRegisterUtxoConfidential transactionWitness in registryFullBlock.UtxoWitnesses) { TransactionRegistryBlockInfo blockInfo = new TransactionRegistryBlockInfo(); blockInfo.UtxoHeader = new UtxoTransactionHeaderDescriptor { SyncBlockHeight = transactionWitness.SyncBlockHeight, ReferencedBlockType = transactionWitness.ReferencedBlockType, ReferencedPacketType = (uint)transactionWitness.ReferencedPacketType, ReferencedTarget = ByteString.CopyFrom(transactionWitness.DestinationKey), ReferencedTransactionKey = ByteString.CopyFrom(transactionWitness.TransactionPublicKey), KeyImage = ByteString.CopyFrom(transactionWitness.KeyImage.Value.ToArray()) }; await responseStream.WriteAsync(blockInfo); } })); }