private async void DistributeBlock(EncodedBlock encodedBlock) { encodedBlock.NodeSenderId = BlockchainNodeConfiguration.NodeId; encodedBlock.NodesAcceptedIds.Add(BlockchainNodeConfiguration.NodeId); await _consensusHubContext.Clients.All.ReceiveBlock(encodedBlock); }
private void DistributeBlock(DAM.Block.BlockBase blockBase) { var blockJson = JsonConvert.SerializeObject(blockBase); var base64String = Convert.ToBase64String(Encoding.UTF8.GetBytes(blockJson)); var encodedBlock = new EncodedBlock { Id = Guid.NewGuid().ToString(), Base64Block = base64String, NodeSenderId = BlockchainNodeConfiguration.NodeId, NodesAcceptedIds = new List <string>() }; DistributeBlock(encodedBlock); }
public void AcceptExternalBlock(EncodedBlock encodedBlock) { _backgroundQueue.Enqueue(token => new Task(() => { if (encodedBlock?.Base64Block != null && !_encodedBlocksStorage.EncodedBlocksIds.Contains(encodedBlock.Id)) { _encodedBlocksStorage.EncodedBlocksIds.Add(encodedBlock.Id); var blockchainJson = Encoding.UTF8.GetString(Convert.FromBase64String(encodedBlock.Base64Block)); var incomingBlock = BlockchainConverter.DeserializeBlock(blockchainJson); var result = AcceptBlock(incomingBlock, encodedBlock.NodeSenderId); if (result.IsSuccess) { DistributeBlock(encodedBlock); } } }, token)); }
public byte[] DecodeBlock(string key, EncodedBlock block) { var transform = GetCryptoProvider(block.IV).CreateDecryptor(); return(transform.TransformEntireBlock(block.Data)); }
public byte[] DecodeBlock(string key, EncodedBlock block) { var transform = GetCryptoProvider(block.IV).CreateDecryptor(); return transform.TransformEntireBlock(block.Data); }