Ejemplo n.º 1
0
 public BlockHeader Clone()
 {
     var block = new BlockHeader();
     block.Version = Version;
     block.PrevBlockHash = PrevBlockHash.Duplicate();
     block.MerkleRoot = MerkleRoot.Duplicate();
     block.Time = Time;
     block.DifficultyTarget = DifficultyTarget;
     block.Nonce = Nonce;
     block.MinNonce = MinNonce;
     block.MaxNonce = MaxNonce;
     block.TaskUID = TaskUID;
     block.WriteHeader();
     return block;
 }
Ejemplo n.º 2
0
 private void StartMining()
 {
     Miners.Clear();
     uint range = (uint)((_currWork.MaxNonce - _currWork.MinNonce) / ThreadCount);
     for (int i = 0; i < ThreadCount; i++)
     {
         var block = new BlockHeader();
         block.Version = _currWork.Version;
         block.PrevBlockHash = new Sha256Hash(_currWork.PrevBlockHash);
         block.MerkleRoot = new Sha256Hash(_currWork.MerkleRoot);
         block.DifficultyTarget = _currWork.Bits;
         block.Time = _currWork.Time;
         block.MinNonce = (uint)(_currWork.MinNonce + (i * range));
         block.MaxNonce = (uint) (_currWork.MinNonce + ((i+1)*range));
         block.Nonce = block.MinNonce;
         block.TaskUID = _currWork.TaskUID;
         block.WriteHeader();
         var t = new Thread(MinerWorker);
         Miners.Add(t);
         t.Start(block);
     }
     _mining = true;
 }