Технически есть как минимум две базы данных: в одной хранятся блоки, в другой хранятся непотраченные выходы.
Поясните это место, поскольку это противоречит технологии блокчейна, как такового. Безусловно, можно из блокчейна вытащить все UTXO и сформировать из них отдельную базу. Но это будет за рамками протокола.
За рамками какого протокола?
В статье Сатоши Накомото протокол не описан, там только базовые принципы.
В первых версиях клиента тоже кроме запакованного в рар архив экзешника ничего не было. База блоков изначально хранилась в формате berkeley db, потом ее перевели в формат LevelDB.
Протокол обмена информацией между p2p нодами описан в вики. В этом протоколе вообще никаких баз данных нет.
Так что непонятно, что вы подразумеваете под "протоколом", но так или иначе, а у клиента Bitcoin Core есть две базы данных. Противоречит этот факт чему-то или нет это уже вопрос к разработчикам клиента.
Во-первых, максимальный размер блока пока 1 Mb. Если, конечно, речь не идет о Bitcoin Cash. Но это отдельная история и меня этот форк не интересует.
Во-вторых, смысла хранить только последние блоки нет никакого. Поскольку в новом блоке может появиться транзакция с UTXO из более старых блоков.
Во-первых, после принятия сегвит, максимальный размер блока стал ограничен 3 Мб, но если вы в этом путаетесь - не расстраивайтесь вы не одиноки ) Сами разработчики клиента чтобы не путаться, кроме размера блока ввели в обиход новую сущность которая называется "вес блока". Сути это не меняет, потому что по факту вес это и есть размер который считается по новым правилам.
Во-вторых, смысл хранить последние блоки есть. Смысл в том, что если появится длинная орфан-цепочка, а у вас нет последних блоков, то для актуализации UTXO вам придется опять синхронизироваться с нуля.
Кстати, задолго до появления прунинга в Bitcoin Core, была реализована схема SPV в так называемых "легких кошельках". В этой схеме клиент хранит только заголовки блоков и только свои собственные транзакции.