Quick Take

  • Чтобы быть активным участником, проверяющим блокировку и транзакцию, в сети Ethereum (большинство dapps, майнеров, Infura и т. Д.), Размер диска, необходимый для работы полного узла, в настоящее время составляет ~ 130-150 ГБ.
  • Увеличение размера цепочки Ethereum хорошо известно (+ 200% г / г), однако сам размер — не единственное трение, поскольку для полностью синхронизированных узлов требуется постоянная криптографическая проверка для подтверждения транзакций.
  • Стоимость запуска полного узла значительно варьируется в зависимости от конечного пользователя. Для многих пользователи могут использовать полный узел в AWS по цене от 50 до 100 долларов в месяц или даже локальный экземпляр (~ 300 ГБ SSD) всего за 30 долларов в месяц.
  • Учитывая быстрое снижение числа активных узлов Ethereum (с начала 2018 года ~ 66%), затраты на минимизацию доверия могут быть слишком высокими для среднего активного участника сети.

Этот отчет, с помощью команды TokenAnalyst, является косвенным продолжением нашей недавней части Infura, в которой рассматриваются затраты на эксплуатацию узлов для различных пользователей в экосистеме Ethereum и влияние компромиссов между затратами на доверие.

Что такое полный узел Ethereum и какие пользователи его запускают?
Одной из самых больших проблем, связанных с Ethereum, является различие между «полными узлами» и «архивными узлами». Полный узел — это любой компьютер или сервер, который подключен к сети Ethereum, загружает всю цепочку блоков, проверяет состояние на соответствие согласованным механизмам протокола и может обслуживать сеть с запросами данных и проверкой блоков. Архивный узел — это полный узел, который также включает в себя архив данных снимков для каждого исторического состояния в любом конкретном блоке, обычно используемый исследователями блоков и глубокой аналитикой в ​​сети Ethereum.

Клиентами основного узла являются Geth и Parity, которые предлагают полную реализацию узла:

  • гет: Настройка по умолчанию для Geth-синхронизации, которая обеспечивает более быструю синхронизацию, изменяя порядок загрузки базы данных состояний перед заполнением блоков и квитанций.
  • geth – syncmode full: Более медленный режим синхронизации geth, который проверяет все блоки и транзакции, начиная с генеза.
  • соотношение: Режим синхронизации Parity по умолчанию, который загружает снимок последних 30 000 «лучших блоков» (цепочка последних действительных блоков с наибольшим количеством накопленной работы за ним) и базу данных текущего состояния. Как только этот моментальный снимок синхронизируется, клиент контроля четности переходит к полной синхронизации предыдущей истории — как только эта синхронизация происходит, узел по умолчанию четности становится полным узлом.
  • не четность не-перекос: Более медленный режим синхронизации по четности, который проверяет все блоки и транзакции, начиная с генезиса.

Источник: EthHub

Теоретически, кто-нибудь может запустить на своем компьютере полный узел Ethereum, что влечет за собой проверку транзакций и блоков в блокчейне Ethereum при условии соблюдения требований к оборудованию для входа и пропускной способности. Путаница с этими требованиями в первую очередь возникает из-за различий в восприятии общего размера загружаемых данных (при рассмотрении того, что такое «весь» блокчейн) и требований к аппаратному обеспечению и пропускной способности, необходимых для поддержания синхронизации узла. Тот факт, что существует множество различных клиентских реализаций узлов, каждая из которых имеет свои собственные параметры и конфигурации для настройки, является еще одной причиной путаницы.

Три типа узлов Ethereum с типичными требованиями конечного пользователя и размера диска


Источники: EthHub, TokenAnalyst, Блок
Примечание. Легкие клиенты хранят только цепочку заголовков и запрашивают все остальное по требованию. Используется для устройств малой емкости, таких как мобильные.

Короче говоря, чтобы быть активным участником проверки блоков и сети в сети Ethereum (большинство dapps, майнеры, Infura и т. Д.), Размер диска, необходимый для работы полного узла, в настоящее время составляет ~ 130-150 ГБ.

Что включает в себя историческая «государственная» информация?
Увеличение размера цепочки Ethereum хорошо известно (+ 200% г / г), однако сам размер — не единственное трение, поскольку для полностью синхронизированных узлов требуется постоянная криптографическая проверка для подтверждения транзакций. Эти доказательства в сочетании с более чем 50 миллионами учетных записей уникальных адресов (со своим соответствующим списком связанных данных) образуют сложную структуру данных, известную как State Trie, В то время как некоторые могут считать ~ 130 ГБ памяти относительно не интенсивной (потребительские ноутбуки высокого класса обычно имеют от 500 ГБ до 1 ТБ дискового диска), необходимость в полностью синхронизируемом узле для постоянной проверки постоянных изменений в состоянии увеличивает нагрузку на оператор узла для поддержания синхронизации.


Источники: Etherscan.io, Блокчейн, Блок

По этой причине рост размера цепочки и состояния является двумя отдельными соображениями, которые следует учитывать при поиске поддержки полностью синхронизированного узла. Требования современного состояния требуют использования SSD-дисков вместо магнитных, а темпы роста как цепочки, так и состояния могут привести к новым требованиям к оборудованию в ближайшие годы, однако эти проблемы могут быть в некоторой степени исправлены запланированным ETH 1. x масштабирование обновлений (улучшенное кэширование, структуры данных и т. д.).

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

  • Трассировки транзакций (используются для просмотра вызовов функций между смарт-контрактами и событиями, которые распространяются в результате вычислений по контракту)
  • Исторические адресные балансы
  • Создание смарт-контракта, код и исторические изменения в коде
  • Хранение Smart Contract на протяжении всей истории

В то время как только нескольким конечным пользователям потребуется узел архива (аналитика цепочек, аудиторы, исследователи блоков и т. Д.), Эти пользователи увидят дополнительные требования к размеру данных для хранения информации, связанной с состоянием, помимо типичного размера цепочки. Согласно TokenAnalyst, поставщику инфраструктуры и данных в сети, общее дополнительное «состояние», относящееся к информации в базе данных TokenAnalyst, составляет ок. ~ 640GB.

Сколько стоит запускать полные узлы для разных пользователей?
Стоимость запуска полного узла значительно варьируется в зависимости от конечного пользователя. Для многих пользователи могут использовать полный узел в AWS по цене от 50 до 100 долларов в месяц или даже локальный экземпляр (~ 300 ГБ SSD) всего за 30 долларов в месяц. Между тем, для немногих избранных пользователей, которым требуется запустить узел архива, стандартный архив объемом 2-3 ТБ может стоить ~ 270-370 долларов в месяц.

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

Источник: TokenAnalyst

Предостережение заключается в том, что указанные выше затраты отражают не только узлы, но и несколько третичных машин, которые помогли упростить конвейер данных и ускорить процесс необработанных данных цепочки. Кроме того, эта интенсивная установка представляет собой исследование наивысших возможных требований к извлечению данных — получение каждой возможной детализованной точки данных из всей цепочки блоков — включая состояние в каждом историческом блоке / моменте времени в течение двух недель. Кроме того, значительная часть этих ресурсов была потрачена на извлечение информации из блоков 2.3M — 2.8M, где Ethereum испытал DDOS-атаку, которая существенно раздула блокчейн и заполненные транзакции за этот промежуток времени с тысячами трассировок.

Стоимость доверия
Хотя запуск полного узла позволяет пользователю независимо проверять действительность сети, он все же требует от вас доверия к реализации клиента (в большинстве случаев, Geth или Parity). Что на самом деле означает доверие? Доверие работе независимого набора разработчиков, активно работающих над этими клиентами, чей код не является непогрешимым, как это иногда демонстрировалось в предыдущих ошибках клиента.

Можно привести один аргумент, что истинная надежность и ответственность требуют необходимости экспортировать полные данные в дешифруемом формате без хеширования и убедиться в том, что «цифры складываются» — особенно после повторной организации цепи, разветвлений и обновлений сети. — и не оставлять основную часть проверки на клиенте соответствующего узла, Infura или Etherscan. Это, однако, требует значительных вычислительных и аппаратных ресурсов и становится все более сложным для обычного пользователя с потребительским ноутбуком. Учитывая быстрое снижение числа активных узлов Ethereum (с начала 2018 года ~ 66%), затраты на минимизацию доверия могут быть слишком высокими для среднего активного участника сети.


Источники: Ethernodes.org, Coin.dance, веб-архив, The Block

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

Для многих dapps, майнеров и провайдеров инфраструктуры на данный момент достаточно одного полного узла на ~ 130 ГБ.