как вставить новые контрольные точки в биткойн-клон

Я знаю, что контрольные точки — это старые блоки, жестко закодированные в исходном коде: что такое контрольные точки?

{11111, uint256S("0x0000000069e244f73d78e8fd29ba2fd2ed618bd6fa2ee92559f542fdb26e7c1d")},
{33333, uint256S("0x000000002dd5588a74784eaa7ab0507a18ad16a236e7b1ce69f00d7ddfb5d0a6")},
{74000, uint256S("0x0000000000573993a3c9e41ce34471c079dcf5f52a0e824a81e7f953b8661a20")},
{105000, uint256S("0x00000000000291ce28027faea320c8d2b054b2e0fe44a773f3eefb151d6bdc97")},
{134444, uint256S("0x00000000000005b12ffd4cd315cd34ffd4a594f430ac814c91184a0d42d2b0fe")},
{168000, uint256S("0x000000000000099e61ea72015e79632f216fe6cb33d7899acb35b75c8303b763")},
{193000, uint256S("0x000000000000059f452a5f7340de6682a977387c17010ff6e6c3bd83ca8b1317")},
{210000, uint256S("0x000000000000048b95347e83192f69cf0366076336c639f9b7228e9ba171342e")},
{216116, uint256S("0x00000000000001b4f4b433e81ee46494af945cf96014816a4e2370f11b23df4e")},
{225430, uint256S("0x00000000000001c108384350f74090433e7fcf79a606b8e797f065b130575932")},
{250000, uint256S("0x000000000000003887df1f29024b06fc2200b55f8af8f35453d7be294df2d214")},
{279000, uint256S("0x0000000000000001ae8c72a0b0c301f67e3afca10e819efa9041e458e9bd7e40")},
{295000, uint256S("0x00000000000000004d9b4ef50f0f9d686fd69db2e03af35a100370c64632a983")},

это блоки, добытые цепочкой, верно?

как я могу получить эти блоки и вставить их в свою следующую сборку?

что это за числа? 11111, 33333, 74000

так дайте мне понять, что я вставляю эти контрольные точки и снова перестраиваю приложение?

так что, если я вставлю 10 контрольных точек, блокчейн начнется с 10 добытых блоков, верно?

как я могу получить хэш этих блоков?

редактировать:

Найден новый блок Proof-of-Work

 Block hash: 00000bbbcb87a6d709ec944f6bdccdc41a59240d27ba3bbb759ef933c93bc890
     Target: 00007fffff000000000000000000000000000000000000000000000000000000

CBlock(hash=00000bbbcb87a6d709ec, ver=1, hashPrevBlock=00000d7e8a80fec4057c, hashMerkleRoot=c5912b6765, nTime=1523401728, nBits=1e7fffff, nNonce=84537, vtx=1, vchBlockSig=3045022054f16ce64dbc74934f59bef40cc20d08d9a01ac7b43308f6aeecb9321eff56ac022100c96e1b59a7b7d4c6b2436b34f6559d24b2997fc77d7a64588b20997aa632eeb6)
CBlock General PoB(nBurnBits=1f00ffff nEffectiveBurnCoins=0 (formatted 0.00))
  Coinbase(hash=c5912b6765, nTime=1523401728, ver=1, vin.size=1, vout.size=1, nLockTime=0)
    CTxIn(COutPoint(0000000000000000000000000000000000000000000000000000000000000000, -1), coinbase 040044cd5a0101062f503253482f)
    CTxOut(nValue=42.04, scriptPubKey=0325fa33db34946070c7efb69e8fdfa74b9174e3abc2ec4232926bdf47725ac377 OP_CHECKSIG)
  vMerkleTree: c5912b6765 
2018-04-10 23:08:48 UTC generated 42.04
AddToWallet c5912b6765  new
SetBestChain: new best=00000bbbcb87a6d709ec  height=1  trust=2  moneysupply=42.04 nEffectiveBurnCoins=0.00
ProcessBlock: ACCEPTED
Running  with 1 transaction in block

в моем случае я полагаю, что майню монеты вручную, получаю высоту и хэш, вставляю в контрольные точки и перестраиваю кошелек, верно? то есть кошелек начинается с определенных добытых блоков, верно?

так что предоставление этой информации будет выглядеть так?:

{1, uint256S("0x00000bbbcb87a6d709ec944f6bdccdc41a59240d27ba3bbb759ef933c93bc890")},

Ответы (1)

Это в форме

{block_height, uint256S("0xblock_hash")},

Например,

{134444, uint256S("0x00000000000005b12ffd4cd315cd34ffd4a594f430ac814c91184a0d42d2b0fe")},

Если вы ищете «00000000000005b12ffd4cd315cd34ffd4a594f430ac814c91184a0d42d2b0fe», хэш этого блока на Blockchair, вы найдете блок с высотой 134444.

Просто, да?

РЕДАКТИРОВАТЬ : Ваше редактирование частично исправлено. Обратите внимание, что когда вы добавляете контрольную точку, вы не жестко кодируете блок в клиенте. Когда пользователь открывает его в первый раз, он загружает все блоки, начиная с первого блока. Контрольные точки позволяют клиентам убедиться, что кто-то, кто создал свою цепочку блоков, полностью отличающуюся от основной цепочки, отправляет вам поддельную цепочку. Клиенты загружают всю цепочку и проверяют блоки контрольными точками (см. также: assumevalid)

да очень просто, я редактирую свой вопрос, не могли бы вы подтвердить, что я сказал, имеет ли смысл? спасибо за ваше время