public override byte[] ToBytes() { var bytes = new Byte[0].AsEnumerable(); bytes = bytes.Concat(BitConverter.GetBytes(Version)); bytes = bytes.Concat(PreviousBlockHash); bytes = bytes.Concat(MerkleRoot); bytes = bytes.Concat(BitConverter.GetBytes(TimeStamp)); bytes = bytes.Concat(BitConverter.GetBytes(Bits)); bytes = bytes.Concat(BitConverter.GetBytes(Nonce)); var pcmBytes = PrimeChainMultiplier.ToByteArray(); var pcmCount = new IntegerPayload((UInt64)pcmBytes.Length); bytes = bytes.Concat(pcmCount.ToBytes()).Concat(pcmBytes); var txCount = new IntegerPayload((UInt64)Transactions.Count); bytes = bytes.Concat(txCount.ToBytes()); foreach (TransactionPayload tx in Transactions) { bytes = bytes.Concat(tx.ToBytes()); } return(bytes.ToArray()); }
public Byte[] Hash() { var version = BitConverter.GetBytes(Version); var timeStamp = BitConverter.GetBytes(TimeStamp); var bits = BitConverter.GetBytes(Bits); var nonce = BitConverter.GetBytes(Nonce); var pcmBytes = PrimeChainMultiplier.ToByteArray(); var pcmCount = new IntegerPayload((UInt64)pcmBytes.Length); var pcm = pcmCount.ToBytes().Concat(pcmBytes); var bytes = version .Concat(PreviousBlockHash) .Concat(MerkleRoot) .Concat(timeStamp) .Concat(bits) .Concat(nonce) .Concat(pcm) .ToArray(); SHA256 sha256 = SHA256Managed.Create(); return(sha256.ComputeHash(sha256.ComputeHash(bytes))); }