Hash-Dosent-Match-nbits

Ich versuche, eine Münze zu klonen, und ich habe einen Genesis-Block erstellt, aber wenn ich die Brieftasche ausführe, startet sie nicht. Wenn ich zur Protokolldatei gehe, sehe ich diesen Fehler und ich weiß ehrlich gesagt nicht, wie ich das Problem lösen soll. Wie erstelle ich den Genesis-Block für den Quark-Hash-Algorithmus. Ich habe einige Generatoren ausprobiert und es hat nicht funktioniert. Jede Hilfe wäre willkommen.

Dies ist aus der Datei debug.log ...

FEHLER: CheckProofOfWork(): Hash stimmt nicht mit nBits überein FEHLER: CheckBlockHeader(): Arbeitsnachweis fehlgeschlagen FEHLER: CheckBlock(): CheckBlockHeader fehlgeschlagen FEHLER: ConnectTip(): ConnectBlock 7451cc25dd4fdfc6f441298e59dfc012d2dc078d687a120bf94a20d98beefd16 fehlgeschlagen

Antworten (2)

Ok, also klon ich BitcoinGreen ... Es verwendet den Quark-Algorithmus. Die Art und Weise, wie ich den Genesis-Block und MerkleRoot generiere, besteht darin, den Code in die chainparams.cpp einzufügen, was dies ist.

printf("genesis.GetHash = %s\n", genesis.GetHash().ToString().c_str());

printf("Gensis Hash Merkle: %s\n", genesis.hashMerkleRoot.ToString().c_str());

Obwohl mir dies den Code für den Genesis-Block gab, wurde nicht der richtige Code für die Münze generiert. Ich benutze sogar diesen speziellen Code, der auch den Genesis-Block generiert ...

const int SCRYPT_SCRATCHPAD_SIZE = 131072 + 63;

      //if (true && genesis.GetHash() != hashGenesisBlock)
    if(true)
    {
        printf("Searching for genesis block...\n");
        // This will figure out a valid hash and Nonce if you're
        // creating a different genesis block:
        uint256 hashTarget = CBigNum().SetCompact(genesis.nBits).getuint256();
        uint256 thash;
        char scratchpad[SCRYPT_SCRATCHPAD_SIZE];

        while(true)
        {
            scrypt_1024_1_1_256_sp_generic(BEGIN(genesis.nVersion), BEGIN(thash), scratchpad);
            if (thash <= hashTarget)
                break;
            if ((genesis.nNonce & 0xFFF) == 0)
            {
                printf("nonce %08X: hash = %s (target = %s)\n", genesis.nNonce, thash.ToString().c_str(), hashTarget.ToString().c_str());
            }
            ++genesis.nNonce;
            if (genesis.nNonce == 0)
            {
                printf("NONCE WRAPPED, incrementing time\n");
                ++genesis.nTime;
            }
        }
        printf("block.nTime = %u \n", genesis.nTime);
        printf("block.nNonce = %u \n", genesis.nNonce);
        printf("block.GetHash = %s\n", genesis.GetHash().ToString().c_str());

        }

Auch dies hat nicht funktioniert. Das ist es also schon. Ich habe es versucht.

Bitte aktualisieren Sie beim nächsten Mal Ihre ursprüngliche Frage, anstatt Ihr Update als Antwort hinzuzufügen. Ich ging, um Ihrer Frage eine positive Bewertung für einige Forschungsanstrengungen zu geben, und gab sie stattdessen Ihrer Antwort.

Bitte geben Sie weitere Daten an. Wie haben Sie Ihren Genesis-Block generiert? (Spezifische Parameter) Welche Münze klonen Sie mit welchem ​​PoW-Algorithmus? Welche Schritte haben Sie in Bezug auf die Bearbeitung des Quellcodes unternommen?

BEARBEITEN:

Okay, es sieht so aus, als wären Sie vom Client abhängig, um den Genesis-Hash in das Debug-Protokoll zu drucken, was nicht funktioniert, wenn der Client nie erfolgreich gestartet wird. Es ist entweder dies oder eine Art Checkpoint-Fehler, der auf der Ausgabe des Debug-Protokolls basiert. In jedem Fall empfehle ich die Verwendung des Genesis-Python-Skripts @ https://github.com/lhartikk/GenesisH0/blob/master/genesis.py

Nachdem Sie alle Abhängigkeiten erfolgreich heruntergeladen haben, können Sie den Terminalbefehl python genesis.py help in dem Verzeichnis ausführen, in das Sie ihn heruntergeladen haben, um eine vollständige Liste der verfügbaren Befehle/Flags zu erhalten. Im Wesentlichen fragt es nach allen erforderlichen Parametern (Unix-Zeitstempel, pzTimestamp, PubKey, PoW-Algorithmus, Nonce usw.), die erforderlich sind, um einen gültigen Genesis-Hash zu erzeugen.

Sie müssen dann alle diese Parameter im Quellcode sowie den eigentlichen Genesis-Hash selbst ersetzen und sicherstellen, dass es KEINE Verweise auf KEINEN anderen Block gibt, da wir tatsächlich vom Genesis-Block ausgehen.

Bitte zögern Sie nicht, Updates für weitere Unterstützung zu posten, falls erforderlich.