tg-me.com/CryptoBotan/939
Last Update:
✅✅✅
Хотел написать о Neutrino для стека Bitcoin, но прежде нужно разобраться вот с чем.
Технология SPV "Simplified Payment Verification" (SPV)
⬇️⬇️⬇️
В оригинальном White Paper Bitcoin (раздел 8), Сатоши Накамото описал технологию "Simplified Payment Verification" (SPV) - "Упрощенная проверка платежей".
(Выдержка из White Paper Bitcoin)
Верификация транзакций возможна без запуска полнофункционального узла. Пользователю необходимо лишь хранить заголовки блоков самой длинной цепочки, которую он получил от других узлов, и запрашивать хэш-поддерево для необходимой транзакции. Он не может проверить корректность транзакции самостоятельно, но получив ссылку на блок, в котором она находится, он может убедиться в том, что этот блок и все
последующие приняты и подтверждены сетью.
Узлы SPV, загружают только заголовки блоков и исключают транзакции каждого блока. Таким образом, у них есть цепочка блоков без транзакций, и это позволяет иметь результирующий объем данных, хранящихся локально более чем в тысячу раз меньше по размеру.
Используя SPV необходимо знать только корень Мёркла каждого блока для проверки транзакций. Следовательно появляется возможность хранения 80 байт на блок, а не 1Мб.
SPV выполняет 2 задачи:
1) Гарантирует, что ваши транзакции находятся в блоке.
2) Обеспечивает подтверждение того, что дополнительные блоки были добавлены в блокчейн.
Но не все так гладко.
SPV кошелек не проверяет никакие другие транзакции в блоке, но чисто гипотетически, блок может быть недействителен. Допустим, что сообщество приняло новые правила консенсуса и относительно большая группа узлов, которая не принимает новое правило, забыла обновиться. Несогласные узлы будут быстро отделены от сети, но пока это не произойдет, SPV клиент временно будет введен в заблуждение и будет считать, что не обновленные узлы имеют верную и самую длинную цепочку. Поэтому управление полным узлом обеспечивает «более быструю» систему безопасности – можно проверять все транзакции самостоятельно.
///
В 2013 году BIP0037 был добавлен в ядро биткойна, чтобы сделать SPV жизнеспособным. BIP0037 добавил новую поддержку к протоколу, который позволяет одноранговым узлам уменьшать объем передаваемых данных транзакций (создавались Light-узлы). Light-узлы могли запрашивать доказательства того, что определенная транзакция произошла в определенном блоке.
Одноранговые узлы имеют возможность устанавливать фильтры для каждого соединения. Затем сервер запускает фильтр по всем транзакциям нового блока и сообщает об этих транзакциях вместе с доказательством того, что они находятся в блоке, клиенту. Затем клиент проверяет доказательство и смотрит на транзакции, чтобы увидеть, принадлежат ли они кошельку.
BIP0037 имеет несколько недостатков:
Существуют векторы отказа в обслуживании (из-за необходимости запускать множество фильтров) для использования серверов, которые отвечают на запросы BIP0037.
Фильтры SPV-клиентов имеют абсолютно нулевую конфиденциальность, так как SPV клиенты должны обращаться к полным узлам и запрашивать информацию об определенных адресах и транзакциях. Хотя эту проблему и решает фильтр Блума, но использование узла SPV вместо полного дает пользователю более слабую конфиденциальность и безопасность. Фильтр Блума позволяет запрашивать конкретные транзакции, соответствующие шаблону, а не конкретные данные.
Узлы в сети должны обрабатывать чрезвычайно большой объем данных, чтобы возвращать результаты только для одного однорангового узла, и повторять работу для каждого отдельного однорангового узла, подключенного к приему нового блока.
Чтобы защитить узел SPV от возможности двойной атаки на сам SPV узел, узлы должны случайным образом соединяться с другими различными узлами, чтобы иметь максимальную вероятность получить правильную информацию. Вот почему, чтобы быть полностью уверенным в транзакции, нужно использовать только полный узел.
BY CryptoBotan

Share with your friend now:
tg-me.com/CryptoBotan/939