Blockchain

雜湊劑量匹配 nbits

  • June 22, 2018

我試圖複製一個硬幣並創建了一個創世塊,但是當我執行錢包時,它沒有啟動。當我轉到日誌文件時,我看到了這個錯誤,老實說我不知道如何解決這個問題。如何為夸克雜湊算法創建創世塊。我嘗試了一些生成器,但它沒有工作。任何幫助,將不勝感激。

這是來自 debug.log 文件…

錯誤:CheckProofOfWork():雜湊與 nBits 不匹配錯誤:CheckBlockHeader():工作證明失敗錯誤:CheckBlock():CheckBlockHeader 失敗錯誤:ConnectTip():ConnectBlock 7451cc25dd4fdfc6f441298e59dfc012d2dc078d687a120bf94a20d98beefd16 失敗

好的,我正在複製BitcoinGreen…它使用夸克算法。我生成創世塊和 MerkleRoot 的方式是將程式碼粘貼到 chainparams.cpp 上,即這個..

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

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

即使這給了我創世塊的程式碼,它也沒有為硬幣生成正確的程式碼。我什至使用這個特殊的程式碼,它也生成了創世塊……

常量 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());

       }

這也沒有奏效。差不多就是這樣。我試過了。

請提供更多數據。你是如何產生你的創世區塊的?(具體參數)你用什麼PoW算法複製哪個幣?您在編輯原始碼方面採取了哪些步驟?

編輯:

好的,看起來您依賴客戶端將創世雜湊列印到調試日誌中,如果客戶端從未成功啟動,這將不起作用。要麼是這個,要麼是基於調試日誌輸出的某種檢查點錯誤。無論哪種方式,我都建議使用 genesis python 腳本 @ <https://github.com/lhartikk/GenesisH0/blob/master/genesis.py>

成功下載所有依賴項後,您可以在下載它的目錄中執行終端命令 python genesis.py help 以獲取可用命令/標誌的完整列表。本質上,它要求生成有效的創世雜湊所需的所有必需參數(Unix 時間戳、pzTimestamp、PubKey、PoW 算法、隨機數等)。

然後,您需要替換原始碼中的所有這些參數以及實際的創世雜湊本身,並確保沒有對任何其他區塊的引用,因為我們實際上是從創世區塊開始的。

如果需要,請隨時發布更新以獲得進一步的幫助。

引用自:https://bitcoin.stackexchange.com/questions/76156