Предположим, что вы спрашиваете о блокчейнах на основе транзакций UTXO, таких как биткойны.
Существует 2 типа проверки
FullNode Verification
Проверка SPV
Полный узел
Полный узел - это программа, которая полностью проверяет транзакции и блоки, такие как bitcoind
, litecoind
или geth
.
Таким образом, каждый раз, когда полный узел получает новый блок от другого узла, он проверяет все транзакции в блоке и добавляет его в блокчейн и обновляет список UTXO только в том случае, если блок является полностью действительным.
для проверки транзакций, полный узел проверяет что-то вроде
- Формат транзакции
- подпись (я) транзакции
- найти предыдущие транзакции из своей цепочки блоков
- наличие транзакции двойных расходов
Поскольку полный узел имеет список UTXO, которые он считает правильными, проверки формата / подписей транзакций и списка UTXO достаточно для проверки новой транзакции.
SPV
Клиент SPV не имеет полных данных блокчейна или списка UTXO, SPV проверяет, только находится ли транзакция в блоке, используя MarkleTree, и блок, который содержит транзакцию, удовлетворяет трудности блока или нет. И это все, что может проверить SPV, потому что он должен проверять все заголовки блоков и блочные тела один за другим, чтобы создать список UTXO.
Таким образом, SPV не может проверить, является ли это двойной транзакцией или нет.
Но, тем не менее, поскольку создание поддельного блока стоит дорого, пока блокчейн имеет достаточную сложность, проверка пригодна для использования.
как и @Haardik, упомянутый в комментарии, в будущем обновлении может появиться получение списка надежных UTXO без загрузки всех данных блокчейна с использованием дерева маркеров