Полагаю, что это технически возможно, но абсолютно уверен, что это того не стоит.
Ведь основные ценности системы держатся на том, что каждый клиент все проверяет
самостоятельно. От этого есть децентрализованность, независимость и устойчивость
всей системы. Если кто-то будет "выкидывать" какие-то блоки - все будет держаться
исключительно на вере в правильность текущей цепочки, не на проверяемых фактах.
Со временем исходные первые блоки просто исчезнут за ненадобностью, а тот самый
ужиматель начнет вертеть системой - как ему вздумается. Последствия неприятные.
На данный момент я вижу самый безопасный вариант - это поставлять блоки вместе
с программой. Но никак не все блоки - это слишком опасно. Следует поставлять до
блока, хеш которого Сатоши благоразумно вшил в исходный код. Сейчас это 74638.
// Check that the block chain matches the known block chain up to a checkpoint
if ((nHeight == 11111 && hash != uint256("0x0000000069e244f73d78e8fd29ba2fd2ed618bd6fa2ee92559f542fdb26e7c1d")) ||
(nHeight == 33333 && hash != uint256("0x000000002dd5588a74784eaa7ab0507a18ad16a236e7b1ce69f00d7ddfb5d0a6")) ||
(nHeight == 68555 && hash != uint256("0x00000000001e1b4903550a0b96e9a9405c8a95f387162e4944e8d9fbe501cd6a")) ||
(nHeight == 70567 && hash != uint256("0x00000000006a49b14bcf27462068f1264c961f11fa2e0eddd2be0791e1d4124a")) ||
(nHeight == 74000 && hash != uint256("0x0000000000573993a3c9e41ce34471c079dcf5f52a0e824a81e7f953b8661a20")))
return error("AcceptBlock() : rejected by checkpoint lockin at %d", nHeight);
// Scanback checkpoint lockin
for (CBlockIndex* pindex = pindexPrev; pindex->nHeight >= 74000; pindex = pindex->pprev)
{
if (pindex->nHeight == 74000 && pindex->GetBlockHash() != uint256("0x0000000000573993a3c9e41ce34471c079dcf5f52a0e824a81e7f953b8661a20"))
return error("AcceptBlock() : rejected by scanback lockin at %d", pindex->nHeight);
if (pindex->nHeight == 74638 && pindex->GetBlockHash() == uint256("0x0000000000790ab3f22ec756ad43b6ab569abf0bddeb97c67a6f7b1470a7ec1c"))
return error("AcceptBlock() : rejected by scanback lockin at %d", pindex->nHeight);
}