比特币的Checkpoint长什么样?

作者:maxdaic

时间:2020年5月30日

来源:CSDN

以前看一些比特币的技术资料的时候,一直有个概念叫检查点,模模糊糊的,不知道这检查点用来检查什么。今天认真看了一下源码才知道检查点长这样:

  1. checkpointData = (CCheckpointData) {
  2.             {
  3.                 { 11111, uint256S(“0x0000000069e244f73d78e8fd29ba2fd2ed618bd6fa2ee92559f542fdb26e7c1d”)},
  4.                 { 33333, uint256S(“0x000000002dd5588a74784eaa7ab0507a18ad16a236e7b1ce69f00d7ddfb5d0a6”)},
  5.                 { 74000, uint256S(“0x0000000000573993a3c9e41ce34471c079dcf5f52a0e824a81e7f953b8661a20”)},
  6.                 {105000, uint256S(“0x00000000000291ce28027faea320c8d2b054b2e0fe44a773f3eefb151d6bdc97”)},
  7.                 {134444, uint256S(“0x00000000000005b12ffd4cd315cd34ffd4a594f430ac814c91184a0d42d2b0fe”)},
  8.                 {168000, uint256S(“0x000000000000099e61ea72015e79632f216fe6cb33d7899acb35b75c8303b763”)},
  9.                 {193000, uint256S(“0x000000000000059f452a5f7340de6682a977387c17010ff6e6c3bd83ca8b1317”)},
  10.                 {210000, uint256S(“0x000000000000048b95347e83192f69cf0366076336c639f9b7228e9ba171342e”)},
  11.                 {216116, uint256S(“0x00000000000001b4f4b433e81ee46494af945cf96014816a4e2370f11b23df4e”)},
  12.                 {225430, uint256S(“0x00000000000001c108384350f74090433e7fcf79a606b8e797f065b130575932”)},
  13.                 {250000, uint256S(“0x000000000000003887df1f29024b06fc2200b55f8af8f35453d7be294df2d214”)},
  14.                 {279000, uint256S(“0x0000000000000001ae8c72a0b0c301f67e3afca10e819efa9041e458e9bd7e40”)},
  15.                 {295000, uint256S(“0x00000000000000004d9b4ef50f0f9d686fd69db2e03af35a100370c64632a983”)},
  16.             }
  17.         };

左边的数字是区块高度,右边的那一串字符串是相应区块的区块哈希值。

检查点的作用主要是为了验证下载的区块链数据是否是合法的。因为在同步区块的时候,就怕自己连上的是作恶节点,作恶节点上的区块是自己伪造的区块,同步了伪造的区块就太浪费资源了。为了避免这种情况发生,在比特币源码里专门设置了一些检查点。一旦检查下载好了检查点区块数据,就要去检查一下这个区块的哈希值是佛跟源代码里设置得检查点相等。如果相等,那就可以放心了,基本上可以说明我们到目前为止下载的是合法的区块数据(是非法区块的概率小到可以忽略不计)。

(全文完)

相关文章:

发表评论