Своя нода Ethereum: зачем нужна и как запустить
Своя нода Ethereum: зачем она нужна, сколько требует диска и денег, как запустить клиенты и на чём чаще всего спотыкаются.
Своя нода Ethereum: зачем она нужна, сколько требует диска и денег, как запустить клиенты и на чём чаще всего спотыкаются.
В феврале я разбирала перевод на 40 000 USDT и в самый нужный момент публичный RPC ответил «429 Too Many Requests». Я подождала двадцать минут, потом ещё двадцать — и в тот вечер решила, что больше не хочу зависеть от чужого сервера. Через неделю на столе стоял мини-ПК с двумя терабайтами NVMe, а в терминале — два клиента, которые держат копию Ethereum. Разбираю по шагам, что именно я поставила, сколько это стоило и где я почти сломала всё своими руками.
Сразу главное: нода — это не способ заработать. Это способ перестать спрашивать разрешения у чужого сервера, когда смотришь на свой баланс или отправляешь транзакцию.
Нода хранит полную копию блокчейна, отвечает на запросы по RPC, принимает и раздаёт транзакции. Валидатор — это отдельная история: 32 ETH, подпись блоков, риск слэшинга. Нода без валидатора не приносит ни рубля, а валидатор без ноды просто не работает.
Я ставила именно ноду, без 32 ETH, и вот зачем: свои запросы, свой лимит, своя копия истории. Если сервер провайдера лёг — моя нода об этом даже не узнала.
Мой список требований выглядел так: 4 ядра процессора, 16 ГБ оперативной памяти, 2 ТБ именно NVMe, интернет от 25 Мбит/с без лимита трафика. Плюс запас по памяти, если позже добавлять валидатора.
Диск — самое узкое место. Execution-клиент постоянно читает и пишет базу, и на обычном SATA SSD синхронизация растягивается в два-три раза, а на жёстком диске не заканчивается никогда. Сейчас полная нода Ethereum занимает около 1,3 ТБ, прирост — 40–60 ГБ в месяц. Значит двух терабайт хватит примерно на год, дальше либо диск на 4 ТБ, либо переезд.
Деньги я считала в двух вариантах. Аренда VPS с такими параметрами — 60–120 $ в месяц, то есть от 720 до 1 440 $ в год. Мини-ПК б/у обошёлся мне в 780 $ разово. Электричество: 15 Вт в час — это 10,8 кВт·ч в месяц, по 6 ₽ за киловатт выходит 64,8 ₽, за год около 780 ₽. Домашний вариант дешевле уже на втором году, но требует, чтобы свет и интернет не пропадали.
С 2022 года нода Ethereum — это два клиента. Execution-клиент (Geth, Nethermind, Reth, Erigon) исполняет транзакции и держит состояние. Consensus-клиент (Lighthouse, Prysm, Teku, Nimbus) отвечает за консенсус и следит за цепочкой.
Правило, которое я приняла без споров: один клиент не должен занимать больше трети сети. Если у большинства стоит Geth, а в нём найдут баг, встанет весь Ethereum. Я взяла Nethermind и Lighthouse — оба стабильные, оба хорошо документированы.
Синхронизация с нуля — это недели. Поэтому оба клиента я поднимала через чекпоинт: consensus-клиент скачивает недавнюю контрольную точку и догоняет сеть за 10–20 минут, execution-клиент после этого проходит snap sync за 8–30 часов на быстром NVMe. У меня вышло 19 часов.
Связка между клиентами идёт через engine API на порту 8551, а пароль к нему — общий файл на 32 байта: openssl rand -hex 32 > jwt.hex. Оба клиента читают один и тот же файл, порт слушает только localhost. Если этот порт открыт в интернет, ноду взломают быстрее, чем она догонит сеть.
Открытыми остаются только p2p-порты 30303 tcp и udp — через них нода общается с сетью. RPC на 8545 закрыт файрволом для всех, кроме localhost. Дальше я сделала исключение только для WireGuard, чтобы видеть свой RPC с ноутбука.
Открытый RPC — это не мелочь. Через него чужие люди отправляют транзакции, читают ваши адреса и забивают очередь nonce так, что ваша собственная транзакция висит сутками.
В MetaMask добавляется сеть с RPC http://127.0.0.1:8545 и chain id 1 — и дальше кошелёк работает без единого запроса наружу. Проверок у меня было три: номер блока растёт, eth_syncing возвращает false, баланс совпадает с тем, что показывает эксплорер на том же блоке. Отставание в один-два блока — норма, это скорость распространения, а не поломка.
Нода — это сервис, а не артефакт. Раз в неделю я смотрю свободное место и загрузку памяти, обновления клиентов ставлю в течение двух-трёх дней после выхода. Перед хардфорком обновление обязательно: клиент старой версии просто остановится на границе и нода замолчит.
Бэкапить 1,3 ТБ базы бессмысленно. Бэкапятся ключи — кошелёк, а если есть валидатор, то и его данные. Базу быстрее собрать заново чекпоинтом, чем восстанавливать из архива.
Даёт: приватность запросов, свои лимиты, независимость от падения провайдера, работающий RPC для бота или скрипта. Не даёт: дохода, скорости выше биржевой и защиты от собственных ошибок.
Платный RPC у нормального провайдера стоит 10–50 $ в месяц — это дешевле VPS, и для большинства задач хватает его. Своя нода оправдана, если вы работаете с on-chain данными каждый день, пишете бота или просто не хотите, чтобы кто-то видел список ваших адресов. Для стейкинга через биржу нода не нужна вовсе.