public ChainedHeader BuildProvenHeaderChainFromBlocks(List <Block> posBlocks) { ChainedHeader currentHeader = ChainedHeadersHelper.CreateGenesisChainedHeader(this.Network); foreach (PosBlock posBlock in posBlocks) { ProvenBlockHeader header = ((PosConsensusFactory)this.Network.Consensus.ConsensusFactory).CreateProvenBlockHeader(posBlock); header.Nonce = RandomUtils.GetUInt32(); header.HashPrevBlock = currentHeader.HashBlock; header.Bits = Target.Difficulty1; ChainedHeader prevHeader = currentHeader; currentHeader = new ChainedHeader(header, header.GetHash(), prevHeader); prevHeader.Next.Add(currentHeader); } return(currentHeader); }
/// <summary> /// Builds a chain of proven headers. /// </summary> /// <param name="blockCount">The amount of blocks to chain.</param> /// <param name="startingHeader">Build the chain from this header, if not start from genesis.</param> /// <returns>Tip of a created chain of headers.</returns> public ChainedHeader BuildProvenHeaderChain(int blockCount, ChainedHeader startingHeader = null) { startingHeader = startingHeader ?? ChainedHeadersHelper.CreateGenesisChainedHeader(this.Network); for (int i = 1; i < blockCount; i++) { PosBlock block = this.CreatePosBlock(); ProvenBlockHeader header = ((PosConsensusFactory)this.Network.Consensus.ConsensusFactory).CreateProvenBlockHeader(block); header.Nonce = RandomUtils.GetUInt32(); header.HashPrevBlock = startingHeader.HashBlock; header.Bits = Target.Difficulty1; ChainedHeader prevHeader = startingHeader; startingHeader = new ChainedHeader(header, header.GetHash(), prevHeader.Height + 1); startingHeader.SetPrivatePropertyValue("Previous", prevHeader); prevHeader.Next.Add(startingHeader); } return(startingHeader); }
/// <returns>Tip of a created chain of headers.</returns> public ChainedHeader BuildChainWithProvenHeaders(int blockCount) { ChainedHeader currentHeader = ChainedHeadersHelper.CreateGenesisChainedHeader(this.Network); for (int i = 1; i < blockCount; i++) { PosBlock block = this.CreatePosBlockMock(); ProvenBlockHeader header = ((PosConsensusFactory)this.Network.Consensus.ConsensusFactory).CreateProvenBlockHeader(block); header.Nonce = RandomUtils.GetUInt32(); header.HashPrevBlock = currentHeader.HashBlock; header.Bits = Target.Difficulty1; ChainedHeader prevHeader = currentHeader; currentHeader = new ChainedHeader(header, header.GetHash(), i); currentHeader.SetPrivatePropertyValue("Previous", prevHeader); prevHeader.Next.Add(currentHeader); } return(currentHeader); }