比特幣節點如何驗證一個區塊
據瞭解,任何一個下載並安裝執行的完整節點都會從比特幣網路中獲取區塊,並驗證區塊,以此更新節點的賬本。當一個節點通過p2p網路獲得一個新區塊時,都會執行驗證程式,以識別這個區塊是不是有效的區塊。比特幣區塊的驗證標準如下:
1、驗證工作量證明,即驗證區塊頭的雜湊值小於當前目標值。
2、驗證MerkleRoot是否是由區塊體中的交易得到的,即重構區塊Merkle樹得到的樹根,看是否和區塊頭中的hashMerkleRoot值相等。
3、驗證區塊大,即看區塊大小是否在設定範圍之內。(btc是資料區塊體不能大於1M,隔離驗證區塊不能大於3M;BCH是區塊不能大於32M;BSV現在是不能大於128M)
4、驗證是否只有一個Coinbase交易,即一個區塊,礦工只能給自己獎勵一次。
5、驗證所有的交易,即遍歷區塊內所有的交易,檢查是否是合法的交易。
以上就是比特幣節點(BTC、BCH、BSV都一樣)標準的驗證區塊程式,這部分程式碼叫CheckBlock函式。