Разница между сокращенным и несокращенным блокчейном

На Берлинской встрече по блокчейну Густав Симонссон дразнил релиз Homestead, который скоро выйдет (tm), и мы обсуждали раздувание блокчейна и текущий размер блокчейна Ethereum.

Берлинская встреча по блокчейну

Мы обсудили сокращенный и необрезанный блокчейн, а также опцию быстрой синхронизации geth. Теперь мне интересно:

  1. В чем разница между сокращенным и необрезанным блокчейном? Урезанный блокчейн по-прежнему состоит из блоков? Это даже «цепочка блоков» ?
  2. В чем разница в требованиях к площади? Полная несокращенная цепочка в настоящее время имеет размер 7 ГБ. Сколько места требуется для обрезанной цепи?
  3. Как насчет сокращения клиентов с быстрой синхронизацией до облегченных клиентов? Если требования к пространству ниже, не лучше ли использовать клиенты с быстрой синхронизацией, а не небезопасные легкие клиенты?

Можно ли считать клиентов сокращенной цепочки легкими клиентами?

Ответы (2)

Давайте сделаем это шаг за шагом.

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

Важно отметить, что в большинстве случаев вас не волнует, сколько средств было на счете 3 года назад, вас интересует только текущее состояние (возможно, несколько дней назад тоже). Так зачем хранить все это чрезвычайно старое прошлое переходное состояние? Отсечение состояния, по сути, берет все это промежуточное состояние и сбрасывает его в унитаз. Важно понимать, что вы отбрасываете только промежуточное мировоззрение, а не сами блоки или любые другие данные, которые могут быть вредными для сети (т. е. присоединяющемуся узлу нужны эти данные для синхронизации). Таким образом, сокращая ваше состояние, вы теряете возможность запрашивать прошлый баланс счетов, но получаете выгоду от уменьшения объема хранимых данных примерно до 1/5-1/6 от его исходного размера.

Хорошо, а как насчет быстрой синхронизации? Что ж, следуя предыдущей мыслительной схеме, если вас не волнует баланс случайной учетной записи трехлетней давности, зачем вам воспроизводить всю историю транзакций в блокчейне, просто чтобы добраться до текущего состояния. Итак, что делает быстрая синхронизация, так это то, что она загружает всю цепочку блоков, но не выполняет транзакции, генерирующие мировоззрение по одному блоку за раз. Вместо этого он только проверяет доказательство работы, и когда вся цепочка загружается, он просматривает корень состояния (хэш, определяющий текущее мировоззрение) и загружает базу данных состояния непосредственно из сети, реконструируя конечное состояние с самого начала. , без необходимости переходных состояний для этого. Это означает, что помимо загрузки блоков, ему необходимо загрузить дополнительныеdata, само состояние, поэтому он обменивает полосу пропускания на вычислительную мощность (т.е. я загружаю состояние, а не генерирую его). Конечным результатом быстрой синхронизации является очищенная база данных от всех намерений и целей, просто с помощью других средств. Текущий размер такой базы данных составляет 1,2-1,3 ГБ.

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

Я не могу комментировать, но теперь это предлагается в EIP-4444 .