Erhöhen alle Miner im Mining-Pool die Nonce-Variable eins nach dem anderen, beginnend bei Null?

Nehmen wir an, wir haben n Miner in unserem Mining-Pool. Nun hat der Manager des Pools die Transaktionen verifiziert und in einen zu minenden Block gepackt. Dann hat es den Block an alle n Miner im Pool weitergegeben.

Nehmen wir an, dass unser Block wie folgt ist:

    to_mine_block = {
    Block No: 1000
    Prev Block:999 
    timestamp: "1000-01-01 00:00:00"
    Data : "XYZ"
    nonce : ?
}

Nun wird to_mine_block an alle n Miner gesendet. Will n Miners führt den folgenden Code aus

String target = new String(new char[difficulty]).replace('\0', '0'); 

while(!hash.substring( 0, difficulty).equals(target)) {
    nonce ++;
    hash = calculateHash();
}

Werden alle n Miner diesen Code einzeln im Pool ausführen? Wenn dies der Fall ist, wird dieses Rennen immer von den Bergleuten mit der höchsten Bergbauleistung gewonnen. Denn derjenige mit der höchsten Mining-Power wird sich in der Schleife weiterbewegen als diejenigen mit geringer Hash-Power.

Antworten (1)

So funktioniert Mining normalerweise nicht in einem Pool. Die Mining-Software weist normalerweise extranoncejedem Miner einen anderen zu, der Teil der Coinbase-Transaktion ist, und führt zu einem anderen Merkle-Root (und einem anderen Block-Header). Dann können sie alle bei Nonce 0 beginnen, wie Sie vorschlagen, aber sie werden kein Rennen fahren einander für denselben Block, weil sie unterschiedlich sind. Siehe https://bitcointalk.org/index.php?topic=9438.msg136344#msg136344 .

Nur zur Verdeutlichung, die Daten, die während des Minings gehasht werden, sind der Block-Header, der aus Folgendem besteht:

  • Ausführung
  • hashPrevBlock
  • hashMerkleRoot
  • Zeit
  • Bits
  • Nonce

Siehe https://en.bitcoin.it/wiki/Block_hashing_algorithm