Может ли запуск биткойн-узла быть безопасным без проверки всей цепочки блоков?

На мой взгляд, одним из самых больших препятствий для увеличения количества работающих полных узлов являются начальные затраты, связанные с загрузкой блокчейна. Похожая, но менее важная (на мой взгляд) проблема — это объем дискового пространства, требуемый полной цепочкой блоков.

В разделе «Обрезка ветвей в Merkle Tree» Ник Оделл пишет: «[Биткойн-ядро] было построено на предположении, что вы загружаете и проверяете все блоки». В Поможет ли перемещение транзакции из старого блока в новый увеличить сокращение? Марч предложил проверить некоторые предположения, и я думаю, что одним из них было мое предположение о том, что нет необходимости анализировать весь блокчейн. Благодаря Марчу, этот вопрос призван ответить на это предположение.

Ответы (2)

Полные узлы выполняют несколько функций в сети:

  1. Проверка блокчейна от имени их владельца
  2. Предоставление предыдущих блоков и транзакций другим узлам
  3. Ретрансляция транзакций и блоков другим узлам

Отсутствие независимой проверки блокчейна в какой-то степени приносит в жертву каждую из этих функций.

  1. Если узел не проверяет блокчейн самостоятельно, владелец полного узла по-прежнему полагается на доверие к одноранговым узлам.
  2. Если узел не хранит предыдущие транзакции и блоки, он не может поставлять их другим узлам, догоняющим сеть
  3. Если узел не подтвердил блокчейн, его можно обмануть, заставив передать недействительные транзакции и блоки.

Так что да, узел может пропустить важный шаг по загрузке и проверке блокчейна, но я не думаю, что больше буду считать его «полным узлом». Это не помогло бы общему состоянию сети, и владелец не мог бы полностью доверять ему. В этот момент я бы предложил просто запустить узел SPV .

В общем, в Биткойне есть политика и правила . Каждый полный узел работает независимо, чтобы обеспечить соблюдение правил, проверяя каждый полученный блок, транзакцию и т. д. После того, как полученный блок будет проверен и проверен, полный узел затем обновит свой набор UTXO, чтобы отразить последнее состояние в цепочке блоков, которое хранится. в памяти.

Что делать с блокировкой, остается на усмотрение владельца полной ноды. Как владелец, вы можете выбрать, чтобы весь узел работал в режиме сокращения. Таким образом, вы избавляетесь от всех транзакций с его UTXO, потраченных на снижение использования хранилища, поскольку эти транзакции не добавляют ценности для поддержания текущего состояния. Обратите внимание, что ваше политическое решение не влияет на способность вашего полного узла обеспечивать соблюдение правил Биткойн.

Чтобы ответить на ваш вопрос напрямую. Нет. Биткойн не может безопасно запускаться без загрузки всего блокчейна. Будучи полным узлом, частью его функциональности является независимая проверка последовательности переходов состояний, ведущих к текущему состоянию биткойнов. Поэтому модель доверия запрещает доверять некоторому набору UTXO, совместно используемому каким-либо другим независимым узлом. Конечно, могут быть и другие реализации узлов, которые могут ослабить это требование, но мне ничего не известно.