private void AddGenesisBlock() { if (_chain.Count > 0) { return; } _logger.LogInformation("Adding genesis block"); var genesisData = new BlockData(Encoding.ASCII.GetBytes("This is the genesis block!!")); var sha512 = SHA512.Create(); var blockParams = new BlockParams { Hash = sha512.ComputeHash(genesisData.GetBytes().ToArray()), PreviousHash = new byte[0], Data = genesisData, Index = 0, Timestamp = DateTime.Now }; var genesisBlock = new Block(blockParams); _chain.AddLast(genesisBlock); }
public Block(BlockParams param) { this.Index = param.Index; this.PreviousHash = param.PreviousHash; this.TimeStamp = param.Timestamp; this.Hash = param.Hash; this.BlockData = param.Data; this.Signature = param.Signature; }
private Block GenerateNextBlock(BlockData newData) { var previousBlock = _chain.Last.Value; var nextIndex = previousBlock.Index + 1; var nextTimestamp = DateTime.Now; var blockParams = new BlockParams() { Data = newData, Timestamp = nextTimestamp, PreviousHash = previousBlock.Hash, Index = nextIndex, Hash = CalculateHash(previousBlock.Hash, nextIndex, nextTimestamp, newData.GetBytes()) }; return(new Block(blockParams)); }