Proof-of-Stake

如何為新的權益證明加密貨幣創建創世塊?

  • September 25, 2020

大約一周以來,我一直在嘗試分叉加密貨幣 Clams。我所有的程式碼都符合硬幣的規格,但我一直堅持創建區塊鏈。開發人員已經刪除了涉及創世塊的程式碼,我似乎沒有任何方法可以生成 PoS 創世塊。如果有人對 PoS 硬幣有任何經驗,我將非常感謝任何建議。謝謝你。

快速而骯髒的解決方案?使用他們自己的初始雜湊。

如何創建創世塊

Main.h

刪除 Main Merkle 和 Genesis Merkle(範例)

主創世塊

static const uint256 hashGenesisBlock("0x000004611c87517dfd29fe7f34bd6da2e1ad3d305ac12afe80a3229069390f68");

static const uint256 hashGenesisBlock("");

內部Main.h也是

Testnet Genesis

static const uint256 hashGenesisBlockTestNet("0x000004611c87517dfd29fe7f34bd6da2e1ad3d305ac12afe80a3229069390f68");

static const uint256 hashGenesisBlockTestNet("");

將其Main.cpp 更改為您想要的時間戳

(範例)

const char* pszTimestamp = "Blockchain.info Block #312427 2014-07-25 14:15:16";

內部:Main.cpp

將這些都更改為您想要的紀元時間 //Unixtime check google

txNew.nTime = 1406297716;  (example) (example) 
block.nTime    = 1406297716;  (example) (example) (example)

內部:Main.cpp 將這些更改為 0

block.nNonce   = !fTestNet ? 190271 : 190271;   (example) (example) (example)

inside:Main.cpp 將其更改為 true

if (false && (block.GetHash() != hashGenesisBlock))

進入

if (true && (block.GetHash() != hashGenesisBlock))

內部:Main.cpp 刪除 Merkle 根

assert(block.hashMerkleRoot == uint256("0xc9c8f6250a60dc79038b9ae68ff747488ac80d4a2db0b194cf49628495448d21"));

assert(block.hashMerkleRoot == uint256(""));

現在編譯錢包,讓它崩潰。接下來,您在調試文件中發現 Merkle Root/Hash 將其替換為您之前步驟的空白區域。但請確保您必須添加到開頭的 0x,只需將這些步驟與新資訊進行比較並撤消即可。


將 Main.cpp 與hashMerkleRoot您添加的 New 一起保存。並重新編譯。然後重新開始,讓錢包像以前一樣再次崩潰。再次訪問調試日誌並替換其他資訊。

您在調試中發現block.nNonce 您提醒您之前將其刪除。和 Genesis/Block Hash .. 你提醒你先刪除它。複製並粘貼到 Main.h 中的可用空間,並在開頭添加 0x。


而已。保存所有文件並再次編譯。你是一個硬幣開發者:-)

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