static void Main(string[] args) { string[] tx = { "fd636107ceb6de2486331ad662955d09abf0414079f2ea59f12da2cfa15c4561", "088b7d88355a96633fb9586806d75d9c7e6e08b8ddaea8155f4be5ef180df3a7", "dee47a1af1fbdc1ea8415ad046677234b008aac1a1f46365c5b59a33eca48065", "126dbb8968504661d68adfdee5d969993e9d5262900b40ba10a92b7403e33164", "9014543cdfe4f59d03f3e58d0e3cd34b1205e3173080d6252ba2c4d19977b672", "ab41defef0fd2929868848dd853087e39544772b3469812d3530dc7a93604fd4", "4ab90706d1162c6ef46bf7f4ab6a39cfae2f47a939a33bb9aed31e3bbe3bd86e", "c6475296a18ad0423dacc3a94a231a60609f34ff068b7374880a42cbc5316307", "4059bab2ec2255c0fe0c74afc774cefbbfddb1073745f6f9469c5545938f4891", "e1622b99c933d518389f1793cac5fe482e5a6e8835d4803bb5deb60634fbc7bd", "965fc983603545eab3571170940bb77fc301bdd02d4703504f580fdcf57abbfd", "49f0f8198def669faefe2a9b30310edbd96ee685ea46e91c7a694863dcfa6c40", "3751b0c8ea70985bcefbe0fd57e5977af32484a80a3bc6c96002ef94782e502b", "33bb6d11961394dfa6262ca0a9e7d8ef8a090d02486be0067a0eea2462fc53b0", "44195b102d6adf310530be98c9f216450bb66849030dc37a1bb832a3b1f0aa49", "890756e5b2010f0a2514155450c9c1a40a5cfcd0f8f863b8820edbd93cb804ef", "032a93ec78dfa141671e39bc482068d833f8ecf0c1c3daf580fcf97815a37e25", "fd21f47e89e9bd3dca07e6d8274a49e7838ac8851e96228102f31fd1a7dd755f", "69d184c03a2ca64a8ddfc84839f7dd71c66ec5a8ecde726e8834bfd71c3ae496", "57aad7b35748c1d494240b3f4eaad3edd28edcfd645de4cb04aa430b2b870ca5", "80f5f39bf798a2a13338cbe4f71aaca2c155e5fc9f97b50ca83e770e98deba90" }; Console.WriteLine(MerkleRoot.merkle(tx)); Console.ReadLine(); }
public StackItem ToStackItem() { return(new VM.Types.Array ( new StackItem[] { // Computed properties new ByteArray(Hash.ToArray()), // BlockBase properties new Integer(Version), new ByteArray(PrevHash.ToArray()), new ByteArray(MerkleRoot.ToArray()), new Integer(Timestamp), new Integer(Index), new ByteArray(NextConsensus.ToArray()), // Witness // Block properties // Count // ConsensusData new Integer(Transactions.Length) } )); }
public byte[] ToArray() { var ret = new byte[Size]; var v = BitConverter.GetBytes(Version); Buffer.BlockCopy(v, 0, ret, 0, v.Length); var pb = PrevBlock.ToArray(); Buffer.BlockCopy(pb, 0, ret, 4, pb.Length); var mr = MerkleRoot.ToArray(); Buffer.BlockCopy(mr, 0, ret, 36, mr.Length); var t = BitConverter.GetBytes(Time); Buffer.BlockCopy(t, 0, ret, 68, t.Length); var nb = BitConverter.GetBytes(Target); Buffer.BlockCopy(nb, 0, ret, 72, nb.Length); var nn = BitConverter.GetBytes(Nonce); Buffer.BlockCopy(nn, 0, ret, 76, nn.Length); return(ret); }
public override void WriteToBitcoinBuffer(byte[] buffer, int offset) { Version.WriteBytes(buffer, offset); PreviousBlock.WriteToBitcoinBuffer(buffer, PreviousBlock_Offset(ref offset)); MerkleRoot.WriteToBitcoinBuffer(buffer, MerkleRoot_Offset(ref offset)); Timestamp.WriteBytes(buffer, Timestamp_Offset(ref offset)); Bits.WriteBytes(buffer, Bits_Offset(ref offset)); Nonce.WriteBytes(buffer, Nonce_Offset(ref offset)); Transactions.WriteToBitcoinBuffer(buffer, Transactions_Offset(ref offset)); }
public void SerializeHeader(Stream stream) { ContractsCommon.NotNull(stream, "stream"); Write(stream, Version); PreviousBlockHash.Serialize(stream); MerkleRoot.Serialize(stream); Write(stream, Timestamp); Write(stream, DifficultyBits); Write(stream, Nonce); }
/// <summary> /// Returns a copy of the block, but without any transactions. /// </summary> public Block CloneAsHeader() { var block = new Block(Params); block._nonce = _nonce; block._prevBlockHash = _prevBlockHash.Duplicate(); block._merkleRoot = MerkleRoot.Duplicate(); block._version = _version; block._time = _time; block._difficultyTarget = _difficultyTarget; block.Transactions = null; block._hash = Hash.Duplicate(); return(block); }
public byte[] ToArray() { var woffset = 0; var ret = new byte[Size]; ret.CopyAndIncr(BitConverter.GetBytes(Version), ref woffset); ret.CopyAndIncr(PrevBlock.ToArray(), ref woffset); ret.CopyAndIncr(MerkleRoot.ToArray(), ref woffset); ret.CopyAndIncr(BitConverter.GetBytes(Time), ref woffset); ret.CopyAndIncr(BitConverter.GetBytes(Target), ref woffset); ret.CopyAndIncr(BitConverter.GetBytes(Nonce), ref woffset); return(ret); }
/// <summary> /// Returns a copy of the block, but without any transactions. /// </summary> public Block CloneAsHeader() { var block = new Block(Params) { _nonce = _nonce, _prevBlockHash = _prevBlockHash.Duplicate(), _merkleRoot = MerkleRoot.Duplicate(), _version = _version, _time = _time, _difficultyTarget = _difficultyTarget, Transactions = null, _hash = Hash.Duplicate() }; return(block); }
/// <summary> /// Returns a copy of the block, but without any transactions. /// </summary> /// <returns></returns> public Block cloneAsHeader() { EnsureParsedHeader(); return(new Block(Parameters) { nonce = nonce, PreviousBlockHash = PreviousBlockHash.Duplicate(), MerkleRoot = MerkleRoot.Duplicate(), Version = Version, TimeSeconds = TimeSeconds, DifficultyTarget = DifficultyTarget, Transactions = null, hash = Hash.Duplicate() }); }
StackItem IInteroperable.ToStackItem(ReferenceCounter referenceCounter) { return(new VM.Types.Array(referenceCounter, new StackItem[] { // Computed properties Hash.ToArray(), // BlockBase properties Version, PrevHash.ToArray(), MerkleRoot.ToArray(), Timestamp, Index, NextConsensus.ToArray(), // Block properties Hashes.Length - 1 })); }
public StackItem ToStackItem(ReferenceCounter referenceCounter) { return(new Array(referenceCounter, new StackItem[] { // Computed properties Hash.ToArray(), // BlockBase properties Version, PrevHash.ToArray(), MerkleRoot.ToArray(), Timestamp, Index, NextConsensus.ToArray(), // Block properties Transactions.Length })); }
public override byte[] GetBytes() { byte[] headerSerialized = new byte[COUNT_HEADER_BYTES]; BitConverter.GetBytes(Version) .CopyTo(headerSerialized, 0); HashPrevious.CopyTo(headerSerialized, 4); MerkleRoot.CopyTo(headerSerialized, 36); BitConverter.GetBytes(UnixTimeSeconds) .CopyTo(headerSerialized, 68); BitConverter.GetBytes(NBits) .CopyTo(headerSerialized, 72); BitConverter.GetBytes(Nonce) .CopyTo(headerSerialized, 76); return(headerSerialized); }
public override int GetHashCode() { return(Version.GetHashCode() + PrevBlockHash.GetHashCode() + MerkleRoot.GetHashCode() + Time.GetHashCode()); }