Если вы когда-либо пробовали написать крипто-кошелёк, платёжный шлюз или просто “бэкенд, который умеет отправлять и принимать ETH”, то довольно быстро выясняется неприятная вещь: Ethereum-нода — это не ваш бэкенд
Это мощный кусок инфраструктуры, который говорит с вами языком протокола (JSON-RPC), и совершенно не обязан быть удобным для продуктовой разработки.
На бумаге всё выглядит тривиально: “подключились к geth, запросили баланс, отправили транзакцию, получили хеш”. А на практике вы внезапно начинаете писать то, что хотели бы не писать:
- где хранить ключи и как их выдавать адресами,
- как восстанавливать кошелёк по seed phrase,
- как отслеживать входящие/исходящие транзакции по большому пулу адресов,
- как сделать уведомления “в реальном времени”, а не бесконечный polling,
- как всё это переживает рестарт сервиса и не теряет состояние.
В этом месте и появляется EthBackNode — open-source сервис на Go, который играет роль “адаптера” между вашим приложением и Ethereum-нодой, и даёт чистый JSON-RPC 2.0 API под типовые бэкенд-задачи.
Почему напрямую с Ethereum JSON-RPC жить сложно (и иногда дорого)
Ethereum JSON-RPC — штука правильная, но низкоуровневая. Она показывает возможности ноды, а не отвечает на вопрос “как сделать продукт”. При интеграции вы быстро понимаете, что одна и та же задача распадается на десяток мелких задач, и половина из них вообще не про блокчейн.
Например, “принять оплату на адрес”:
- Нужно выдать клиенту адрес.
- Нужно убедиться, что адрес связан с конкретным заказом/счётом.
- Нужно мониторить сеть и понять, что транзакция действительно пришла.
- Нужно дождаться подтверждений (и помнить, что бывают реорги).
- Нужно отправить событие в ваш бэкенд: “оплата пришла, можно отгружать”.
- Нужно сохранить всё это состояние так, чтобы перезапуск сервиса не сделал вид, что “ничего не было”.
Если у вас один заказ в день — можно “на коленке”. Если у вас десятки/сотни адресов и это хоть сколько-то критично для бизнеса — начинается инженерия.
И тут важно заметить: средний разработчик backend-систем обычно хочет ровно одну вещь — предсказуемый API, понятные события и минимальную поверхность атаки. А не погружение в тонкости “как устроен узел”.
Что делает EthBackNode
EthBackNode — это “лёгкий” сервис, который вы ставите рядом с нодой (или подключаете к ней), а ваше приложение общается уже с ним. Снаружи он выглядит как один JSON-RPC 2.0 endpoint, внутри — набор модулей (менеджеров), отвечающих за адреса, подписки, транзакции и смарт-контракты.
Ключевые функции, которые он даёт через API:
1) Генерация и управление адресами
Сервис умеет создавать и вести адреса на стороне бэкенда. Важно не то, что “адрес можно сгенерировать” (можно и самим), а то, что появляется единое место, где адрес живёт как сущность: привязка к вашему userId / invoiceId, хранение, восстановление.
2) Восстановление кошельков по seed phrase (BIP-39/44)
Отдельная боль — импорт и восстановление кошельков. В EthBackNode предусмотрена работа с seed phrase (BIP-39) и деривацией (BIP-44), чтобы вы могли строить “нормальные” сценарии восстановления без собственного велосипеда.
3) Мониторинг входящих/исходящих транзакций
Самая практичная часть: наблюдение за адресами. Сервис берёт на себя задачу “следи за этими адресами и сообщай, когда что-то произошло”. То есть вы не превращаете своё приложение в блок-сканер, и не пишете логику подписок заново.
4) Переводы: ETH и ERC-20
EthBackNode позволяет выполнять переводы как нативного ETH, так и ERC-20 токенов. Для бэкенда это выглядит как одна операция “transfer”, а не как отдельный набор низкоуровневых вызовов и проверок. Плюс есть оценка комиссии (fee estimation) — без неё вы либо “гадаете”, либо делаете дополнительные запросы сами.
5) Callback-уведомления о событиях
Пожалуй, то, что действительно экономит нервы: уведомления по событиям. Вместо того чтобы каждые N секунд спрашивать “а пришло ли?”, вы можете настроить callback и получать событие “была транзакция / новый блок / подтверждение” в ваш бэкенд.
Архитектурные детали, которые выглядят скучно, но решают половину проблем
В подобных сервисах обычно важно не “много фич”, а то, как оно будет жить в эксплуатации.
Go + fasthttp
Производительность и простота деплоя. Один бинарник, быстрый старт, понятная нагрузка. В крипто-бэкендах это не абстрактная “оптимизация”, а банальная необходимость: много адресов, много событий, много запросов.
Подключение к ноде: HTTP-RPC и IPC
EthBackNode поддерживает работу с нодой как через HTTP-RPC, так и через IPC-сокет. IPC часто выбирают, когда сервис и geth живут на одной машине: меньше сетевой поверхности, меньше проблем с настройкой доступа, и зачастую просто надёжнее.
BadgerDB как встроенное хранилище
Ещё один прагматичный выбор: встроенная база, без обязательного внешнего Postgres/Redis на старте. Это сильно снижает порог: можно поднять сервис, дать ему каталог под данные, и он будет хранить своё состояние сам.
Конфигурация в HCL
HCL — человеческий формат из “хэшикорповского мира”. Он дружит с инфраструктурным подходом (Git, ревью, окружения), и при этом читается проще, чем JSON-конфиги на 200 строк.
Модульность: менеджеры адресов, подписок, транзакций, контрактов
Это важнее, чем кажется. Когда у вас всё “в одной куче”, каждое изменение становится рискованным. Когда есть явные границы — проще тестировать, проще расширять, проще понимать.
Где это реально полезно
EthBackNode не пытается быть “универсальным индексатором” или аналитической платформой. Его ниша — прикладной бэкенд для продуктов.
- Платёжные процессоры: выдача депозитных адресов, мониторинг оплат, уведомления, последующие выводы/свипы.
- Кастодиальные кошельки: пул адресов, вывод средств, отслеживание статусов.
- Сервисы уведомлений: один компонент следит за сетью, остальные получают события.
- Backend-for-frontend: мобильное/веб API не знает о блокчейне — знает только о бизнес-событиях.
- Биржи и сервисы с множеством адресов: массовое наблюдение за депозитами без самописного “сканера всего блокчейна”.
Небольшой пример: как бы это выглядело в интернет-магазине
Допустим, у вас небольшой e-commerce, и вы хотите принимать оплату в ETH и одном популярном ERC-20 стейблкоине.
Сценарий может быть таким:
- Пользователь оформляет заказ → ваш бэкенд создаёт
orderId. - Бэкенд просит у EthBackNode новый адрес для этого заказа.
- Бэкенд регистрирует callback-URL: “если что-то пришло на этот адрес — сообщи мне”.
- Пользователь платит.
- EthBackNode видит транзакцию и отправляет в ваш callback событие: сумма, токен, хеш, статус.
- Вы ждёте нужное число подтверждений и переводите заказ в состояние “оплачен”.
- По расписанию (или сразу) вы выводите средства на основной адрес хранения.
В результате “крипто часть” перестаёт расползаться по коду вашего магазина. Она живёт в одном сервисе, где её логично обслуживать и тестировать.
Почему это важно (без лозунгов)
В Web3 много сложностей, которые не являются “магией блокчейна”. Это просто инженерная рутина: адреса, ключи, подписки, статус транзакций, подтверждения, уведомления, хранение состояния.
EthBackNode снижает порог входа для обычных backend-команд: вместо того чтобы разговаривать с нодой на её языке, вы разговариваете с сервисом на языке задач. И это, пожалуй, самая полезная форма “абстракции” в прикладной крипто-разработке: не скрыть блокчейн, а сделать его эксплуатацию предсказуемой.
Если у вас продукт, который должен надёжно принимать и отправлять ETH/ERC-20, и вы не хотите превращать основной код в набор костылей вокруг JSON-RPC — такой адаптерный слой выглядит не роскошью, а здравым смыслом.
По материалам itprolab.dev
Читайте также
Принимаем оплату в bitcoin: Часть Третья, свой testnet. С блэкджеком
В прошлой статье я рассказал как установить bitcoind ( ну как минимум на Ubuntu Linux) и как подключится к testnet. Но testnet - хорошее решение, когда вы проводите тесты готового сайта, уже развернутого на сервере в интернете. А вот для локальной разработки это далеко не самое удобное решение.
Apple опубликовали новые правила о криптовалютных приложениях
Согласно информации TechCrunch, ряд разработчиков Apple не так давно объединили усилия для создания “Союза разработчиков”. Союз обратился к Apple с просьбой предоставить пользователям Apple Store возможность скачивать бесплатные пробные версии их приложений. Это один из первых случаев, когда независимые iOS разработчики пытаются дать отпор политике Apple Store.
