TODO Клиенты Etherium сети
Узлы и клиенты¶
Обзор узлов Ethereum и клиентского программного обеспечения, а также то, как настроить узел и почему вам следует это сделать.
Для децентрализованной работы Ethereum необходима распределенная сеть узлов, которые могут проверять блоки и данные транзакций. Вам необходимо приложение, известное как клиент, на вашем устройстве для «запуска» узла.
Предварительные требования¶
Вы должны понять концепцию децентрализованной сети, прежде чем углубляться в нее и запускать собственный экземпляр клиента Ethereum. Взгляните на наше Введение в Ethereum.
Что такое узлы и клиенты?¶
«Узел» относится к программному обеспечению, известному как клиент. Клиент - это реализация Ethereum, которая проверяет все транзакции в каждом блоке, обеспечивая безопасность сети и точность данных.
Вы можете увидеть сеть Ethereum в реальном времени, посмотрев на эту Карту узлов.
Многие Реализации клиентов Ethereum существуют на разных языках. Общим для этих клиентских реализаций является то, что все они следуют формальной спецификации. Эта спецификация определяет, как функционирует сеть Ethereum и блокчейн.
Упрощенная диаграмма возможностей клиента Ethereum.
Типы узлов¶
Если вы хотите запустить свой собственный узел, вы должны понимать, что существуют разные типы узлов, которые по-разному потребляют данные. Фактически, клиенты могут запускать 3 разных типа узлов - легкий, полный и архивный.
Full node
- Хранит полные данные блокчейна.
- Участвует в проверке блоков, проверяет все блоки и состояния.
- Все состояния могут быть получены из полного узла.
- Обслуживает сеть и предоставляет данные по запросу.
Light node
- Сохраняет цепочку заголовков и запрашивает все остальное.
- Может проверять достоверность данных относительно корней состояния в заголовках блоков.
- Полезно для устройств с малой емкостью, таких как встроенные устройства или мобильные телефоны, которые не могут позволить себе хранить гигабайты данных блокчейна.
Archive node
- Хранит все, что хранится в полном узле, и создает архив исторических состояний. Требуется, если вы хотите запросить что-то вроде баланса счета в блоке # 4,000,000.
- Эти данные представляют собой единицы терабайт, что делает узлы архива менее привлекательными для обычных пользователей, но может быть полезно для таких сервисов, как исследователи блоков, поставщики кошельков и аналитика цепочек.
Синхронизация клиентов в любом режиме, кроме архива, приведет к удалению данных блокчейна. Это означает, что нет архива всего исторического состояния, но полный узел может создавать их по запросу.
Зачем мне запускать узел Ethereum?¶
Запуск узла позволяет вам конфиденциально и конфиденциально использовать Ethereum, поддерживая экосистему.
Польза для вас
Запуск собственного узла позволяет вам использовать Ethereum по-настоящему конфиденциально, самодостаточно и без доверия. Вам не нужно доверять сети, потому что вы можете сами проверить данные со своим клиентом. «Не доверяйте, проверяйте» - популярная мантра блокчейна.
- Ваш узел самостоятельно проверяет все транзакции и блокирует их на соответствие правилам консенсуса. Это означает, что вам не нужно полагаться на какие-либо другие узлы в сети или полностью им доверять.
- Вам не придется сливать адреса и балансы на случайные узлы. Все можно проверить у собственного клиента.
- Ваше децентрализованное приложение может быть более безопасным и конфиденциальным, если вы используете свой собственный узел. Metamask, MyEtherWallet а некоторые другие кошельки можно легко указать на ваш собственный локальный узел.
Сетевые преимущества
Разнообразный набор узлов важен для работоспособности, безопасности и отказоустойчивости Ethereum.
- Они предоставляют доступ к данным блокчейна для легковесных клиентов, которые от него зависят. При высоких пиках использования должно быть достаточно полных узлов, чтобы облегчить синхронизацию узлов. Легкие узлы не хранят всю цепочку блоков, вместо этого они проверяют данные через Корни состояний в заголовках блоков. Они могут запросить дополнительную информацию у блоков, если им это нужно.
- Полные узлы обеспечивают соблюдение правил консенсуса доказательства выполнения работы, поэтому их нельзя обманом заставить принимать блоки, которые им не соответствуют. Это обеспечивает дополнительную безопасность в сети, потому что, если бы все узлы были легкими узлами, не выполняющими полную проверку, майнеры могли бы атаковать сеть и, например, создавать блоки с более высоким вознаграждением.
Если вы запустите полный узел, от этого выиграет вся сеть Ethereum.
Запуск собственного узла¶
Проекты¶
Выберите клиента и следуйте его инструкциям
ethnode - _ Запуск узла Ethereum (Geth или Parity) для локальной разработки._
DAppNode - _ Операционная система для запуска узлов Web3, включая Ethereum, на выделенной машине._
Ресурсы¶
- Запуск полных узлов Ethereum: полное руководство Ноя 7, 2019 - Джастин Леру
- Памятка по настройке узла Янв 5, 2019 - Афри Шоден
- Как установить и запустить узел Geth Окт 4, 2020 - Сахил Сен
- Как установить и запустить узел OpenEthereum (fka. Parity) Сент 22, 2020 - Сахил Сен
Альтернативы¶
Запуск собственного узла может быть трудным, и вам не всегда нужно запускать собственный экземпляр. В этом случае вы можете использовать стороннего поставщика API, например Infura, Alchemy, или QuikNode. Альтернативно ArchiveNode - это финансируемый сообществом узел Archive, который надеется предоставить архивные данные о блокчейне Ethereum независимым разработчикам, которые иначе не могли себе этого позволить.
Если кто-то запускает узел Ethereum с общедоступным API в вашем сообществе, вы можете указать свои легкие кошельки (например, MetaMask) на узел сообщества через Custom RPC и получить больше конфиденциальности, чем с какой-либо случайной доверенной третьей стороной.
С другой стороны, если вы запустите клиент, вы можете поделиться им с друзьями, которым он может понадобиться.
Клиенты¶
Ethereum разработан, чтобы предлагать разных клиентов, разработанных разными командами с использованием разных языков программирования. Это делает сеть более сильной и разнообразной. Идеальная цель - добиться разнообразия без доминирования клиентов, чтобы уменьшить количество точек отказа.
В этой таблице представлены различные клиенты. Все они активно работают, обслуживаются и проходят Тесты клиентов.
Клиент | Язык | Операционная система | Сети | Стратегии синхронизации | State pruning |
---|---|---|---|---|---|
Geth | Go | Linux, Windows, macOS | Mainnet, Görli, Rinkeby, Ropsten | Fast, Full | Archive, Pruned |
OpenEthereum | Rust | Linux, Windows, macOS | Mainnet, Kovan, Ropsten, and more | Warp, Full | Archive, Pruned |
Nethermind | C#, .NET | Linux, Windows, macOS | Mainnet, Görli, Ropsten, Rinkeby, and more | Fast, Full | Archive, Pruned |
Besu | Java | Linux, Windows, macOS | Mainnet, Rinkeby, Ropsten, and Görli | Fast, Full | Archive, Pruned |
Trinity | Python | Linux, macOS | Mainnet, Görli, Ropsten, and more | Full, Beam, Fast/Header | Archive |
Подробнее о поддерживаемых сетях читайте в Сети Ethereum.
Преимущества разных реализаций¶
У каждого клиента есть уникальные варианты использования и преимущества, поэтому вам следует выбирать один исходя из своих предпочтений. Разнообразие позволяет сфокусировать реализации на различных функциях и аудиториях пользователей. Вы можете выбрать клиента на основе функций, поддержки, языка программирования или лицензий.
Перейти к Ethereum¶
Go Ethereum (сокращенно Geth) - одна из оригинальных реализаций протокола Ethereum. В настоящее время это самый распространенный клиент с самой большой пользовательской базой и множеством инструментов для пользователей и разработчиков. Он написан на Go, с полностью открытым исходным кодом и под лицензией GNU LGPL v3.
OpenEthereum¶
OpenEthereum - это быстрый, многофункциональный и продвинутый клиент Ethereum на основе интерфейса командной строки. Он создан для обеспечения необходимой инфраструктуры для быстрых и надежных услуг, требующих быстрой синхронизации и максимального времени безотказной работы. Цель OpenEthereum - стать самым быстрым, легким и безопасным клиентом Ethereum. Он предоставляет чистую модульную кодовую базу для:
- легкая настройка.
- легкая интеграция в услуги или продукты.
- минимальный объем памяти и хранилища.
OpenEthereum разработан с использованием передового языка программирования Rust и распространяется под лицензией GPLv3.
Nethermind¶
Nethermind - это реализация Ethereum, созданная с помощью технического стека C # .NET, работающая на всех основных платформах, включая ARM. Он предлагает отличную производительность с:
- оптимизированная виртуальная машина
- государственный доступ
- сетевые функции и разнообразные функции, такие как панели управления Prometheus / Graphana, поддержка корпоративного журналирования seq, трассировка JSON RPC и плагины для аналитики.
В Nethermind также есть Подробная документация, сильная поддержка разработчиков, онлайн-сообщество и круглосуточная поддержка, доступная для премиум-пользователей.
Besu¶
Hyperledger Besu - это клиент Ethereum корпоративного уровня для общедоступных и разрешенных сетей. Он поддерживает все функции основной сети Ethereum, от трассировки до GraphQL, имеет обширный мониторинг и поддерживается ConsenSys как в открытых каналах сообщества, так и в рамках коммерческих соглашений об уровне обслуживания для предприятий. Он написан на Java и имеет лицензию Apache 2.0.
Режимы синхронизации¶
- Полный - загружает все блоки (включая заголовки, транзакции и квитанции) и генерирует состояние цепочки блоков постепенно, выполняя каждый блок.
- Быстро (по умолчанию) - загружает все блоки (включая заголовки, транзакции и квитанции), проверяет все заголовки, загружает состояние и сверяет его с заголовками.
- Light - загружает все заголовки блоков, данные блоков и проверяет некоторые случайным образом.
- Синхронизация деформации - каждые 5000 блоков узлы будут делать критически важный моментальный снимок состояния этого блока. Любой узел может получать эти снимки по сети, обеспечивая быструю синхронизацию. Подробнее
- Beam sync - режим синхронизации, позволяющий работать быстрее. Для синхронизации не требуется долгого ожидания, вместо этого он заполняет данные с течением времени. Подробнее о Beam
- Header sync – вы можете использовать надежную контрольную точку, чтобы начать синхронизацию с более свежего заголовка, а затем оставить это для фонового процесса, чтобы в конечном итоге заполнить пробелы
Вы определяете тип синхронизации при настройке, например:
Настройка light sync in GETH
geth --syncmode "light"
Настройка header sync in Trinity
trinity --sync-from-checkpoint eth://block/byhash/0xa65877df954e1ff2012473efee8287252eee956c0d395a5791f1103a950a1e21?score=15,835,269,727,022,672,760,774
Оборудование¶
Требования к оборудованию различаются в зависимости от клиента, но обычно не так высоки, так как узел просто должен оставаться синхронизированным. Не путайте это с майнингом, который требует гораздо большей вычислительной мощности. Однако время синхронизации и производительность улучшаются с более мощным оборудованием. В зависимости от ваших потребностей и желаний Ethereum можно запустить на вашем компьютере, домашнем сервере, одноплатных компьютерах или виртуальных частных серверах в облаке.
Самый простой способ запустить собственный узел - использовать блоки Plug and Play, такие как DAppNode. Он предоставляет оборудование для запуска клиентов и приложений, которые зависят от них, с простым пользовательским интерфейсом.
Требования¶
Перед установкой любого клиента убедитесь, что на вашем компьютере достаточно ресурсов для его запуска. Ниже приведены минимальные и рекомендуемые требования, однако ключевой частью является дисковое пространство. Синхронизация блокчейна Ethereum требует очень больших затрат на ввод / вывод. Лучше всего иметь твердотельный накопитель (SSD). Чтобы запустить клиент Ethereum на жестком диске, вам потребуется не менее 8 ГБ ОЗУ для использования в качестве кеша.
Минимальные требования¶
- ЦП с 2+ ядрами
- Минимум 4 ГБ ОЗУ с SSD, 8 ГБ +, если у вас жесткий диск
- пропускная способность 8 Мбит / с
Рекомендуемые характеристики¶
- Быстрый процессор с 4+ ядрами
- 16 ГБ + RAM
- Быстрый SSD с не менее 500 ГБ свободного места
- Пропускная способность 25+ Мбит / с
В зависимости от того, какое программное обеспечение и режим синхронизации вы собираетесь использовать, потребуются сотни ГБ дискового пространства. Приблизительные цифры и рост можно найти ниже.
Клиент | Размер диска (fast sync) | Размер диска (full archive) |
---|---|---|
Geth | 400GB+ | 4.7TB+ |
OpenEthereum | 280GB+ | 4.6TB+ |
Nethermind | 200GB+ | 3TB+ |
Besu | 750GB+ | 4TB+ |
Эти диаграммы показывают, как постоянно меняются требования к хранилищу. Самые свежие данные для Geth и Parity см. В Полная синхронизация данных и Архив данных синхронизации.
Ethereum на одноплатном компьютере¶
Самый удобный и дешевый способ запустить узел Ethereum - использовать одноплатный компьютер с архитектурой ARM, такой как Raspberry Pi. Ethereum на ARM предоставляет изображения клиентов Geth, Parity, Nethermind и Besu. Вот простое руководство по Как создать и настроить клиент ARM.
Такие небольшие, доступные и эффективные устройства идеально подходят для работы узла дома.
Клиенты Eth2¶
Появились новые клиенты для поддержки Обновлений Eth2. ни будут управлять Beacon Chain и поддерживать новый proof-of-stake механизм консенсуса.
Что еще почитать¶
В Интернете есть много инструкций и информации о клиентах Ethereum, вот некоторые из них, которые могут быть полезны.
- Ethereum 101 - Part 2 - Understanding Nodes – Wil Barnes, 13 February 2019
- Running Ethereum Full Nodes: A Guide for the Barely Motivated – Justin Leroux, 7 November 2019
- Running an Ethereum Node – ETHHub, updated often
- Analyzing the hardware requirements to be an Ethereum full validated node – Albert Palau, 24 September 2018
- Running a Hyperledger Besu Node on the Ethereum Mainnet: Benefits, Requirements, and Setup – Felipe Faraggi, 7 May 2020
Связанные руководства¶
- Запуск узла с помощью Geth – Как скачать, установить и запустить Geth. Охватывает режимы синхронизации, консоль Javascript и многое другое.
- Превратите свой Raspberry Pi 4 в узел Eth 1.0 или Eth 2.0, просто прошив карту MicroSD - Руководство по установке – Перепрограммируйте Raspberry Pi 4, подключите кабель Ethernet, подключите SSD-диск и включите устройство, чтобы превратить Raspberry Pi 4 в полноценный узел Ethereum 1.0 или узел Ethereum 2.0 (цепочка маяков / валидатор).