EthBackNode: зачем вашему приложению “прокладка” между ним и Ethereum-нодой

EthBackNode: зачем вашему приложению “прокладка” между ним и Ethereum-нодой

Если вы когда-либо пробовали написать крипто-кошелёк, платёжный шлюз или просто “бэкенд, который умеет отправлять и принимать ETH”, то довольно быстро выясняется неприятная вещь: Ethereum-нода — это не ваш бэкенд

Это мощный кусок инфраструктуры, который говорит с вами языком протокола (JSON-RPC), и совершенно не обязан быть удобным для продуктовой разработки.

На бумаге всё выглядит тривиально: “подключились к geth, запросили баланс, отправили транзакцию, получили хеш”. А на практике вы внезапно начинаете писать то, что хотели бы не писать:

  • где хранить ключи и как их выдавать адресами,
  • как восстанавливать кошелёк по seed phrase,
  • как отслеживать входящие/исходящие транзакции по большому пулу адресов,
  • как сделать уведомления “в реальном времени”, а не бесконечный polling,
  • как всё это переживает рестарт сервиса и не теряет состояние.

В этом месте и появляется EthBackNode — open-source сервис на Go, который играет роль “адаптера” между вашим приложением и Ethereum-нодой, и даёт чистый JSON-RPC 2.0 API под типовые бэкенд-задачи.

Почему напрямую с Ethereum JSON-RPC жить сложно (и иногда дорого)

Ethereum JSON-RPC — штука правильная, но низкоуровневая. Она показывает возможности ноды, а не отвечает на вопрос “как сделать продукт”. При интеграции вы быстро понимаете, что одна и та же задача распадается на десяток мелких задач, и половина из них вообще не про блокчейн.

Например, “принять оплату на адрес”:

  1. Нужно выдать клиенту адрес.
  2. Нужно убедиться, что адрес связан с конкретным заказом/счётом.
  3. Нужно мониторить сеть и понять, что транзакция действительно пришла.
  4. Нужно дождаться подтверждений (и помнить, что бывают реорги).
  5. Нужно отправить событие в ваш бэкенд: “оплата пришла, можно отгружать”.
  6. Нужно сохранить всё это состояние так, чтобы перезапуск сервиса не сделал вид, что “ничего не было”.

Если у вас один заказ в день — можно “на коленке”. Если у вас десятки/сотни адресов и это хоть сколько-то критично для бизнеса — начинается инженерия.

И тут важно заметить: средний разработчик 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 стейблкоине.

Сценарий может быть таким:

  1. Пользователь оформляет заказ → ваш бэкенд создаёт orderId.
  2. Бэкенд просит у EthBackNode новый адрес для этого заказа.
  3. Бэкенд регистрирует callback-URL: “если что-то пришло на этот адрес — сообщи мне”.
  4. Пользователь платит.
  5. EthBackNode видит транзакцию и отправляет в ваш callback событие: сумма, токен, хеш, статус.
  6. Вы ждёте нужное число подтверждений и переводите заказ в состояние “оплачен”.
  7. По расписанию (или сразу) вы выводите средства на основной адрес хранения.

В результате “крипто часть” перестаёт расползаться по коду вашего магазина. Она живёт в одном сервисе, где её логично обслуживать и тестировать.

Почему это важно (без лозунгов)

В Web3 много сложностей, которые не являются “магией блокчейна”. Это просто инженерная рутина: адреса, ключи, подписки, статус транзакций, подтверждения, уведомления, хранение состояния.

EthBackNode снижает порог входа для обычных backend-команд: вместо того чтобы разговаривать с нодой на её языке, вы разговариваете с сервисом на языке задач. И это, пожалуй, самая полезная форма “абстракции” в прикладной крипто-разработке: не скрыть блокчейн, а сделать его эксплуатацию предсказуемой.

Если у вас продукт, который должен надёжно принимать и отправлять ETH/ERC-20, и вы не хотите превращать основной код в набор костылей вокруг JSON-RPC — такой адаптерный слой выглядит не роскошью, а здравым смыслом.

По материалам itprolab.dev

Читайте также

75462018-06-16

Принимаем оплату в bitcoin: Часть четвертая, ближе к делу!

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

Разработчику
71792018-06-29

Принимаем оплату в bitcoin: Часть шестая. Нюансы, опять нюансы

В прошлой части мы остановились на том, что не плохо было бы узнать о факте платежа от bitcoind, вместо того, чтобы перебирать все выданные адреса.

Разработчику

Последние статьи из раздела Разработчику

Свежее видео на канале

Выбор редакции

742752024-07-25

LendPal.io объявляет о начале бета-тестирования

LendPal.io с объявляет о начале бета-тестирования своей инновационной платформы для криптовалютного P2P-кредитования.

Новости, Стабильные коины, Трейдинг, Инвестиции, Это интересно
749162020-10-30

Топ 10 крипто кошельков в 2020 году

По мере роста популярности криптовалют растет и спрос на качественные и безопасные криптовалютные кошельки.

Кошельки
660972017-12-10

Bitcoin: пирамида или нет?

С января 2009 года, когда был сгенерирован первый генезиз-блок bitcoin-сети, прошло уже девять лет, но до сих пор всякого рода "эксперты" ломают копья в спорах: являются ли криптовалюты финансовой пирамидой или нет. Быстрый рост доходности bitcoin и прибыли тех, кто раньше стал участником этой системы, пугает схожестью с пирамидами 90-х.

Bitcoin
657892018-04-28

on-chain и off-chain управление: за и против

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

Blockchain
511112021-05-08

Какие альткоины принесут своим держателям доход в 2021 году?

Мы решили помочь тем, кто хочет заработать на криптовалютах, но не располагает большими средствами, чтобы покупать монеты из первой пятерки рейтинга.

Альткоины
477232018-05-12

Эволюция человека и денег

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

Это интересно