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
 internal void CheckShareAsync(BaseMiner miner, BlockHeader block)
 {
     Task.Run(() =>  CheckShare(miner, block));
 }
Ejemplo n.º 3
0
 internal void CheckShare(BaseMiner miner, BlockHeader block)
 {
     var data = new WorkResult();
     data.Time = block.Time;
     data.Nonce = block.Nonce;
     data.TaskUID = block.TaskUID;
     string hash = block.CalculateHash().ToString();
     try
     {
         var res = CheckWork(data);
         miner.ProcessShareStatus(res ,hash);
     }
     catch (Exception ex)
     {
         miner.ProcessShareStatus(new OperationResult() { Message = "Send error" }, hash);
     }
 }
Ejemplo n.º 4
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;
 }
Ejemplo n.º 5
0
 public static uint MScanHash_CryptoPP(BlockHeader block, /*ref byte[] phash,*/ ref uint hashCnt)
 {
     byte[] phash = new byte[32];
     uint res = ScanHash_CryptoPP(block.Header, phash, ref hashCnt);
     return res;
 }