Blockchain
什麼是 nMinimumChainWork?
我試圖執行我自己的私有比特幣網路,所以我下載了原始碼並編譯了它,然後我
bitcoind
在兩個 docker 包含中啟動了兩個實例,並確保它們沒有連接到外部網路,使用-connect=0 -dns=0 -dnsseed=0
,然後-addnode
指定其他節點的ip和埠。然後當我嘗試執行本地礦工時,RPCgetblocktemplate
總是返回Bitcoin is downloading blocks...
. 通過查看原始碼,它看起來不會通過這一行:// in IsInitialBlockDownlaod if (chainActive.Tip()->nChainWork < nMinimumChainWork) { return true; }
定義在chainparams.cpp中找到:
// The best chain should have at least this much work. consensus.nMinimumChainWork = uint256S("0x000000000000000000000000000000000000000000f91c579d57cad4bc5278cc");
這是什麼意思?是
nMinimumChainWork
為了什麼?什麼是硬編碼的十六進制數,通過搜尋 blockchain.info 它不是塊雜湊。
如果攻擊者設法將它們與網路隔離,這是一個旨在保護新客戶端在最初同步時不接受假區塊鏈的數字。顧名思義,這是一條鏈在客戶認為有效之前必須完成的最小總工作量。根據發佈時區塊鏈中的總工作量,它在每次發佈時更新為更高的數字(十六進制格式比十進制數字更緊湊且與其他程式碼一致)