第0章 弁言
在11月份BCH的硬分叉晉級時,產生了兩個幣,BCH和BSV。abc開發組為BCH添加了一個叫Checkpoint的東西,BSV社區種種挖苦。本文表明Checkpoint畢竟是什么。
第1章 比特幣節點怎樣驗證一個區塊
任何一個下載并安裝運轉的完備節點都市從比特幣網絡中獲取區塊,并驗證區塊,以此更新節點的賬本。當一個節點經過p2p網絡取得一個新區塊時,都市實行驗證步驟,以識別這個區塊是不是好效的區塊。比特幣區塊的驗證標準如下:
1、驗證事情量證實,即驗證區塊頭的哈希值小于如今目標值。
2、驗證MerkleRoot對否是由區塊體中的買賣取得的,即重構區塊Merkle樹取得的樹根,看對否和區塊頭中的hashMerkleRoot值相稱。
3、驗證區塊大,即看區塊輕重對否在設定范圍之內。(BTC是數據區塊體不克不及大于1M,斷絕驗證區塊不克不及大于3M;BCH是區塊不克不及大于32M;BSV如今是不克不及大于128M)
4、驗證對否僅有一個Coinbase買賣,即一個區塊,礦工只能給本人嘉獎一次。
5、驗證一切的買賣,即遍歷區塊內一切的買賣,反省對否是合法的買賣。以上就是比特幣節點(BTC、BCH、BSV都一樣)標準的驗證區塊步驟,這局部代碼叫CheckBlock函數。
第2章 增長Checkpoint反省點驗證端正
比特幣節點在絕大大多情況下都是按外表的標準的驗證區塊步驟舉行驗證區塊的,但可以到場分外的端正,就是到場一個Checkpoint。
Checkpoint就是節點驗證區塊中的一個增補端正。這個增補端正是:
Checkpoint就是指定一個區塊高度的區塊哈希必需即是某個哈希值。
Checkpoint是一個數據,這個數據就是一個區塊高度值和對應的哈希值構成,一切Checkpoint會被存儲在一個叫CheckpointData的數據塊里。底下是BCH網絡上的汗青Checkpoint值。
我們可以看到,在11111高度就有一個Checkpoint,這是在2009年4月16日挖出來的,這估測是中本聰他們最早的幾一局部挖的。
上圖中最初那一個Checkpoint就是11月15日BCH硬分叉時添加的,區塊高度556767就是BCH和BSV崩潰后BCH挖出的第一個區塊高度,這個區塊被BSV回絕了。
Checkpoint是由開發組寫入節點軟件的,也可以是開發編寫一個函數指定顯現某種情況后就由函數添加一個Checkpoint。節點軟件在驗證區塊時,就會搜刮CheckpointData數據,以確定某一區塊高度對否必要到場Checkpoint這個驗證端正。
Checkpoint里指定的區塊高度那一定是在寫入之前就以前挖出來的。
當節點軟件搜刮CheckpointData發覺了某個區塊高度是一個Checkpoint時,那這個節點在驗證這一個區塊時,就會在上一章的5條驗證端正中到場第6條,即這個區塊的hash值必需即是Checkpoint里指定的哈希值。假如不相稱,那就是一個廢塊,會被丟棄掉。
第3章 Checkpoint有什么用?
一個節點只需供認了Checkpoint的區塊為合法的區塊,那就可以制止這個高度以之前的一切的區塊被其他力氣重組,特別是可以制止被51%上風算力打擊重組區塊。
我們必需確認的是一個區塊的哈希是無法偽造的。當指定一個區塊高度就是某一個哈希值,這意味著這個區塊高度的區塊就是無法變動了。哪怕是你擁有凌駕51%的算力,也是不克不及讓這些擁有Checkpoint的節點軟件聽從你變動這個區塊。
任何一個區塊中又包含了前一個區塊的哈希值,如此就相當于實行Checkpoint的節點認定了指定的區塊,也就認定了此區塊之前的一切區塊。
Checkpoint在一定水平上改動了最長鏈為好效鏈的準則,改成了僅有包含了Checkpoint的最長鏈才是好效鏈。
Checkpoint可以用來擺設協議分叉,一切節點都一致運轉帶有Checkpoint的完備節點軟件,然后一旦Checkpoint的區塊被挖出,那今后一切的協議就可以被一致變動。這也是UAHF的原理,這是BCH從2017年8月1日崩潰出來后每一次分叉晉級都使用Checkpoint來擺設。
帶有Checkpoint的協議厘革,就是明白報告整個生態在此區塊高度后協議就會有厘革了,你們要注意晉級。
第4章 Checkpoint有什么不佳?
必要廓清的是,很多人以為Checkpoint給了開發者更高的權利,我以為沒有。由于節點軟件都是開發者寫的,Checkpoint只是創始造確標志了一個接下去協議會怎樣改。這相當于我們寫文章的人,使用加粗標紅高亮來標注一個重點內容。Checkpoint是用來報告礦工和其他生態節點,我們要明白改一些什么東西,并且改的這些東西還不允許經過51%算力來舉行鏈上反對。
請注意,外表講的是“鏈上反對”,就是一旦有算力選擇認同了Checkpoint的節點軟件,那無論這局部算力是多大,那這條帶Checkpoint的鏈都是可以獨立挖下去的,不成能會被更大的算力經過51%打擊的辦法重組掉這個Checkpoint之前的區塊。只能重組之后的區塊。
這就意味著,Checkpoint本身是一個鏈下的辦理東西。各位經過鏈下討論對否承受Checkpoint以及之后的一切協議端正變動,假如承受,并且擺設,那就沒有轉頭路了。
以是Checkpoint有什么不佳?那只能是針對熱愛地道的經過鏈上算力投票的礦工來說是不佳的,信算力有決定權的人會以為Checkpoint不佳,而熱愛鏈下辦理的人則會以為Checkpoint是一個好東西。
(作者:閃電HSL,內容來自鏈得得內容開放平臺“得得號”;本文僅代表作者看法,不代表鏈得得官方態度)
版權聲明:本文來自互聯網整理發布,如有侵權,聯系刪除
原文鏈接:http://www.freetextsend.comhttp://www.freetextsend.com/wangluozixun/42224.html