/// <summary>
/// Previous block hash.
/// </summary>
- public ScryptHash256 prevHash;
+ public uint256 prevHash;
/// <summary>
/// Merkle root hash.
/// </summary>
- public Hash256 merkleRoot;
+ public uint256 merkleRoot;
/// <summary>
/// Block timestamp.
public CBlockHeader ()
{
nVersion = 6;
- prevHash = new ScryptHash256();
- merkleRoot = new Hash256();
+ prevHash = new uint256();
+ merkleRoot = new uint256();
nTime = Interop.GetTime();
nBits = 0;
nNonce = 0;
}
- public CBlockHeader(CBlockHeader h)
+ public CBlockHeader(CBlockHeader header)
{
- nVersion = h.nVersion;
- prevHash = new ScryptHash256(h.prevHash);
- merkleRoot = new Hash256(h.merkleRoot);
- nTime = h.nTime;
- nBits = h.nBits;
- nNonce = h.nNonce;
+ nVersion = header.nVersion;
+ prevHash = header.prevHash;
+ merkleRoot = header.merkleRoot;
+ nTime = header.nTime;
+ nBits = header.nBits;
+ nNonce = header.nNonce;
+ }
+
+ internal CBlockHeader(ref BinaryReader reader)
+ {
+ nVersion = reader.ReadUInt32();
+ prevHash = reader.ReadBytes(32);
+ merkleRoot = reader.ReadBytes(32);
+ nTime = reader.ReadUInt32();
+ nBits = reader.ReadUInt32();
+ nNonce = reader.ReadUInt32();
}
/// <summary>
var reader = new BinaryReader(stream);
nVersion = reader.ReadUInt32();
- prevHash = new ScryptHash256(reader.ReadBytes(32));
- merkleRoot = new Hash256(reader.ReadBytes(32));
+ prevHash = reader.ReadBytes(32);
+ merkleRoot = reader.ReadBytes(32);
nTime = reader.ReadUInt32();
nBits = reader.ReadUInt32();
nNonce = reader.ReadUInt32();
/// Convert current block header instance into sequence of bytes
/// </summary>
/// <returns>Byte sequence</returns>
- public static implicit operator byte[] (CBlockHeader h)
+ public static implicit operator byte[] (CBlockHeader header)
{
var stream = new MemoryStream();
var writer = new BinaryWriter(stream);
- writer.Write(h.nVersion);
- writer.Write(h.prevHash);
- writer.Write(h.merkleRoot);
- writer.Write(h.nTime);
- writer.Write(h.nBits);
- writer.Write(h.nNonce);
+ writer.Write(header.nVersion);
+ writer.Write(header.prevHash);
+ writer.Write(header.merkleRoot);
+ writer.Write(header.nTime);
+ writer.Write(header.nBits);
+ writer.Write(header.nNonce);
var resultBytes = stream.ToArray();
return resultBytes;
}
- public ScryptHash256 Hash
+ public uint256 Hash
{
get {
- return ScryptHash256.Compute256(this);
+ return CryptoUtils.ComputeScryptHash256(this);
}
}
public override string ToString()
{
var sb = new StringBuilder();
- sb.AppendFormat("CBlockHeader(nVersion={0}, prevHash={1}, merkleRoot={2}, nTime={3}, nBits={4}, nNonce={5})", nVersion, prevHash.ToString(), merkleRoot.ToString(), nTime, nBits, nNonce);
+ sb.AppendFormat("CBlockHeader(nVersion={0}, prevHash={1}, merkleRoot={2}, nTime={3}, nBits={4}, nNonce={5})", nVersion, prevHash, merkleRoot, nTime, nBits, nNonce);
return sb.ToString();
}
}