Мультичейн-кошелёк (Ethereum, BSC, Polygon, Solana, TON)

Когда приложение работает с несколькими сетями, транзакции зависают, а ключи хранятся в разных местах — теряются деньги и время. Мы разрабатываем мультичейн-кошелёк под ключ: единая логика для Ethereum, BSC, Polygon, Solana и TON, прозрачные политики доступа и управление ключами. Сокращаем долю зависших транзакций и время на поддержку.

Разработка и поддержка любых видов мобильных приложений:

Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

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

Услуги, которые мы предлагаем
Показано 1 из 1Все 1734 услуг
Мультичейн-кошелёк (Ethereum, BSC, Polygon, Solana, TON)
Сложный
от 2 недель до 3 месяцев
Часто задаваемые вопросы

Мультичейн кошелёк: где ломается логика при росте сетей

Мультичейн кошелёк ломается не на первой сети, а на третьей-четвёртой. Пока поддерживается одна цепочка, логика подписи, учёта балансов и отслеживания транзакций живёт в одном месте и работает предсказуемо. Как только добавляются Ethereum, BSC, Polygon, Solana и TON, каждая сеть приносит свои правила: разный формат адресов, свою модель комиссий, свой момент финальности транзакции. И тогда начинают всплывать сбои, которые на тестах в одной сети просто не воспроизводятся.

Первый и самый заметный — рассинхрон балансов. Кошелёк показывает остаток по одной сети, а списание проходит по другой; после отправки токенов интерфейс ещё какое-то время держит старую сумму, потому что обновление по сетям приходит с разной задержкой. Пользователь видит «неправильный» баланс и либо повторяет операцию, либо теряет доверие к приложению. Причина — не одна общая шина данных, а разрозненные запросы к каждой сети без единой точки согласования состояния.

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

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

Что даёт единая архитектура мультичейн кошелька

Единая архитектура кошелька строится вокруг одного слоя подписи и одного слоя учёта состояния, а различия сетей выносятся в адаптеры. Ethereum, BSC, Polygon, Solana и TON работают через разные модели аккаунтов и форматы подписи, но клиент видит один баланс, одну историю и один сценарий отправки. Это и есть главный измеримый эффект: новая сеть подключается адаптером, а не переписыванием ядра — срок добавления сокращается с недель до дней, а логика подтверждений, повторных попыток и отображения комиссий остаётся общей.

Второй эффект — доля успешных транзакций. Когда неверный nonce, устаревшая цена газа или отклонённый узел обрабатываются в одном месте, а не в каждом экране по-своему, пользователь получает понятную причину отказа и корректный повтор вместо «транзакция не прошла». На практике это поднимает долю доведённых до подтверждения операций и снижает поток обращений в поддержку по типовым сбоям.

Третий — время восстановления после сбоя узла или провайдера. Адаптеры изолированы, поэтому отказ одного поставщика данных не роняет остальные сети: трафик переключается на резервный источник, состояние подтягивается из локального кэша, а очередь неподтверждённых операций доигрывается после возврата связи. Класс отказов сужается с «кошелёк не работает» до «одна сеть временно недоступна».

Такая архитектура окупается не сама по себе, а на горизонте: каждая следующая сеть и каждая новая функция ложатся в готовые слои, а не тянут за собой пересборку продукта.

Подходы к реализации: встроенные модули, внешние сервисы, гибрид

Когда приложение поддерживает Ethereum, BSC, Polygon, Solana и TON одновременно, ключевой выбор — где живёт логика подписи транзакций и работа с сетями. От этого зависят сроки запуска, контроль над ключами и то, как поведёт себя кошелёк при добавлении шестой-седьмой сети. Разберём три схемы, между которыми реально выбирают на старте.

Вариант Когда подходит Ограничения
Встроенные модули Нужен полный контроль ключей и предсказуемая работа офлайн Каждая новая сеть — отдельная работа по интеграции, рост числа сетей замедляет релизы
Внешние сервисы Быстрый запуск, поддержка многих сетей «из коробки» Ключи и подпись проходят через чужую инфраструктуру, зависимость от чужого аптайма
Гибридная схема Свой контур для ключей + внешние узлы для чтения сети Сложнее архитектура, нужна аккуратная синхронизация состояния

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

Внешние сервисы снимают эту нагрузку: подключение новой сети часто сводится к настройке, а не к разработке. Но контроль ключей размывается — часть операций идёт через чужой контур, и любой сбой на стороне сервиса становится сбоем кошелька.

Гибрид — компромисс, который чаще всего и выбирают: ключи и подпись остаются в защищённом контуре приложения, а чтение балансов и отправка транзакций идут через внешние узлы. Так сохраняется контроль над ключами, а добавление сети не превращается в отдельный проект.

Этапы внедрения: от аудита текущей схемы до передачи регламентов

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

  1. Аудит схемы и инвентаризация активов. Сводим список сетей (Ethereum, BSC, Polygon, Solana, TON), типов адресов и текущих хранилищ ключей. На выходе — карта: где активы, кто имеет доступ, какие операции идут мимо кошелька.
  2. Проектирование модели ключей и доступов. Определяем, какие сети работают на общей seed-фразе, какие требуют отдельной, как разделяются роли оператора и администратора. Раскладываем, что уходит в защищённое хранилище, а что остаётся в горячем контуре.
  3. Настройка подписи транзакций. Собираем подпись под каждую сеть с учётом её формата: разные схемы адресации, разные поля комиссии, разные требования к nonce. Проверяем, что подпись формируется локально и приватный ключ не покидает защищённый контур.
  4. Проверка транзакций на тестовых сетях. Прогоняем полный цикл — сборка, подпись, отправка, подтверждение — на каждом блокчейне отдельно. Отдельно проверяем сценарии сбоя: отклонённая транзакция, зависшая в мемпуле, нехватка средств на комиссию.
  5. Регламенты эксплуатации. Описываем порядок добавления новой сети, ротации ключей, восстановления доступа и реакции на инцидент. Регламент должен читаться дежурным инженером без дополнительных пояснений.
  6. Передача документации и обучение команды. Отдаём схемы архитектуры, инструкции по операциям, чек-листы проверок. Проводим разбор на живых сценариях, чтобы команда заказчика могла сопровождать кошелёк самостоятельно.

Каждый этап закрывается проверкой — без неё не переходим к следующему. Так на выходе получается не набор скриптов, а работающая система с понятными точками контроля и предсказуемым поведением при сбое.

Политики доступа и управление ключами в мультичейн кошельке

Управление ключами — та часть кошелька, где ошибка в конфигурации стоит дороже всего: утечка одного seed-файла обнуляет весь баланс по всем сетям сразу. Поэтому мы отдаём заказчику не «работающее приложение», а комплект артефактов, по которым команда может безопасно эксплуатировать и развивать продукт без нас.

  • Схема хранения ключей — где живёт приватный ключ (защищённое хранилище устройства, аппаратный модуль, серверное хранилище с шифрованием), как разделены горячий и холодный контуры, что происходит при компрометации устройства.
  • Политики доступа — матрица ролей: кто подписывает транзакции, кто меняет лимиты, кто только смотрит баланс; правила подтверждения крупных операций и разделение обязанностей между администраторами.
  • Конфигурации сетей — файлы с параметрами подключения к Ethereum, BSC, Polygon, Solana и TON: адреса узлов, резервные провайдеры, комиссии, таймауты, правила переключения при недоступности основного канала.
  • Регламент резервного копирования и восстановления — как и с какой периодичностью сохраняются зашифрованные копии, где они лежат, как проверяется восстановление доступа на тестовом контуре.
  • Схема потоков подписи — диаграмма, показывающая путь транзакции от интерфейса до отправки в сеть: где проверяются лимиты, где срабатывает подтверждение, где логируется событие.
  • Документация по ротации ключей — пошаговый порядок плановой замены ключей и отзыва скомпрометированных без остановки сервиса.
  • Журнал аудита операций — какие события пишутся, в каком формате, сколько хранятся и как выгружаются для разбора инцидентов.

Каждый артефакт согласован с вашей службой безопасности и передаётся в рабочем виде — не как черновик, а как документ, по которому новый инженер вводится в проект за считанные дни.

Кейс: как сократили долю зависших транзакций втрое

Задача пришла от команды, которая вела мультичейн-кошелёк с поддержкой Ethereum, BSC, Polygon, Solana и TON. Пользователи жаловались на «зависшие» транзакции: списание со счёта проходило, а подтверждение в сети не приходило. Доля успешных транзакций держалась на уровне 82%, а поддержка тонула в однотипных обращениях — каждая вторая заявка была про «деньги ушли, но не дошли».

Что было до

Разбор показал три причины. Первая — единый таймаут подтверждения для всех сетей: там, где блок выходит быстро, транзакция уже была в блоке, а кошелёк всё ещё ждал и показывал статус «в обработке». Вторая — неверный расчёт комиссии при пиковой загрузке: транзакция уходила с заниженной ставкой и висела в мемпуле часами. Третья — ручное восстановление: инженер поднимал историю по логам, это занимало до 40 минут на обращение.

Что изменили

Настроили отдельную политику подтверждения под каждую сеть и добавили автоматический пересчёт комиссии по текущей загрузке перед отправкой. Ввели фоновый мониторинг статуса: если транзакция не подтвердилась за расчётное окно, система сама переотправляет её с корректной ставкой, а пользователь видит понятный статус вместо бесконечного ожидания.

Что стало

Доля успешных транзакций выросла с 82% до 96%. Время добавления новой сети сократилось с двух недель до трёх дней — конфигурация сети описывается декларативно, без правок в ядре. Время восстановления зависшей операции упало с 40 минут до 5: сценарий отрабатывает автоматика, инженер подключается только к нестандартным случаям. Поток обращений в поддержку по этой теме сократился примерно втрое.

Проект вёл Trust Wallet-класса сценарий мультичейн-подписей — мы перенесли логику на свою архитектуру и закрыли класс зависших транзакций на уровне отправки, а не разбора последствий.

Чем отличается мультичейн кошелёк от набора отдельных кошельков?

Отдельные кошельки — это несколько независимых хранилищ ключей, каждое со своим форматом, своей seed-фразой и своим способом подписи. Пользователь держит N приложений или N профилей, между которыми нет общего состояния: балансы не сводятся, история не собирается, а перевод между сетями требует ручного переноса адреса из одного окна в другое. Ошибка на этом стыке — не редкость, потому что адресные форматы у сетей разные и человеческий глаз их не различает.

Мультичейн-кошелёк строится вокруг единого интерфейса и общего реестра. Ключевой материал выводится один раз из одной seed-фразы по разным путям, и для каждой сети получается свой корректный адрес — при этом пользователь видит один список активов и одну историю операций. Реестр хранит состояние по всем сетям в единой модели, поэтому баланс, комиссия и статус транзакции читаются одинаково, независимо от того, какая сеть под капотом.

Сквозная подпись — главное техническое различие. Транзакция собирается в общем слое, подписывается один раз и уходит в нужную сеть в её собственном формате: где-то это account-модель с nonce, где-то UTXO-подобная логика или иная схема подтверждений. Пользователь подтверждает действие один раз, а кошелёк сам приводит подпись к требованиям сети — без переключения приложений и повторного ввода пароля.

Отсюда и разница в эксплуатации. Набор отдельных кошельков даёт N точек отказа, N обновлений и N мест, где может утечь ключ. Единый кошелёк сводит это к одному контуру: одна политика доступа, один аудит, один сценарий восстановления. Добавление новой сети — это расширение реестра и адаптера подписи, а не новое приложение, которое пользователю придётся осваивать с нуля.

Что делать, если уже развёрнут один кошелёк и нужно добавить сети

Расширение мультичейн кошелька почти никогда не требует переписывания с нуля — если архитектура с самого начала разделяла ядро и сетевые адаптеры. Ключи, подпись транзакций, работа с seed-фразой и локальным хранилищем остаются общими: они не зависят от того, в какой сети вы подписываете. Меняется только слой интеграции — клиент ноды, формат адресов, правила комиссий и модель подтверждений. Если этот слой вынесен в отдельный модуль с единым интерфейсом, добавление сети превращается в подключение нового адаптера, а не в ревизию всего приложения.

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

Миграция здесь — не перенос данных, а расширение модели. Существующие кошельки продолжают работать в прежней сети, новая добавляется рядом: тот же seed, отдельная ветка деривации адресов, свой список токенов и своя история операций. Пользователь не теряет доступ и не пересоздаёт кошелёк. Мы отдельно проверяем, что деривация адресов для новой сети даёт корректные значения и что восстановление из seed-фразы возвращает все сети сразу.

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

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

Обсудим задачу: вернёмся с оценкой и планом

Чтобы оценка была реалистичной, а не «средней по рынку», нам нужно понять границы задачи: какие сети в первой версии, откуда берутся ключи, кто отвечает за инфраструктуру узлов. Ниже — вопросы, которые мы задаём на старте. Ответы на них превращаются в план работ с этапами, сроками и зонами ответственности.

  • Какие сети обязательны в первой версии, а какие можно добавить позже без переделки архитектуры?
  • Как хранятся ключи: только на устройстве пользователя или предполагается восстановление через резервную фразу и облако?
  • Нужны ли аппаратные кошельки и подключение внешних подписантов?
  • Кто предоставляет доступ к узлам сетей: своя инфраструктура или сторонние провайдеры, и есть ли требования по отказоустойчивости?
  • Какие операции критичны: переводы, обмен внутри приложения, стейкинг, работа с токенами стандартов разных сетей?
  • Требуется ли поддержка нескольких аккаунтов, мультиподпись или роли для командного доступа?
  • Какие проверки безопасности обязательны: аудит кода, тестирование на проникновение, программа поиска уязвимостей?
  • Есть ли требования регуляторов и правила хранения данных пользователей в конкретных юрисдикциях?

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

Подход Когда выбирать Что получает клиент Ограничения
Встроенные модули Одна-две сети, простые сценарии, жёсткие требования к скорости отклика Полный контроль над логикой подписи, нет зависимости от чужих сервисов, предсказуемое поведение при пиковых нагрузках Каждую новую сеть добавляем вручную — срок выхода на рынок растёт линейно
Внешние сервисы Быстрый запуск, много сетей сразу, небольшая команда Сети подключаются без переписывания ядра, поддержка новых блокчейнов приходит от поставщика Зависимость от чужого темпа обновлений, часть данных уходит наружу, сложнее объяснить аудит
Гибрид Продукт растёт, сети добавляются постоянно, важны и скорость, и контроль Критичные операции — на своей стороне, редкие сети — через внешний слой; расходы на поддержку не растут вместе с числом сетей Требует чёткой границы ответственности и регламентов, иначе логика расползается
Этап Что делаем Результат для клиента
Аудит текущей схемы Разбираем, как сейчас хранятся ключи, как подписываются операции, где теряются транзакции Видно, какие сети можно добавить без перестройки, а какие потребуют переработки ядра
Проектирование единого ядра Выносим общую логику подписи, учёта балансов и истории в один слой Новая сеть подключается как модуль, а не как отдельное приложение
Подключение сетей Настраиваем работу с Ethereum, BSC, Polygon, Solana, TON по единым правилам Пользователь видит один кошелёк и один баланс, а не пять разных экранов
Политики доступа и ключи Определяем, кто и как распоряжается ключами, как восстанавливается доступ Понятная зона ответственности, меньше риска потерять средства из-за человеческого фактора
Передача регламентов Отдаём документацию и инструкции команде заказчика Дальнейшие доработки идут без нас, поддержка не превращается в зависимость
Стек / слой Зачем нужен На что влияет
Ядро подписи и учёта Единая логика для всех сетей Скорость подключения новой сети и число ошибок при подписи
Слой работы с сетями Изоляция особенностей каждого блокчейна Стабильность при росте нагрузки и при обновлениях на стороне сетей
Хранилище ключей Безопасное хранение и восстановление доступа Класс отказов: потеря доступа, утечка, зависшие операции
Интерфейс пользователя Один экран для всех сетей Понятность продукта и доля обращений в поддержку
Мониторинг операций Видно, где транзакция застряла и почему Доля зависших транзакций и скорость их разбора
Можно ли добавить новую сеть, не переписывая кошелёк заново?

Да, если архитектура изначально разделяет логику сети и общее ядро. Новая сеть подключается как отдельный модуль: настройки соединения, правила подписи, отображение балансов и истории. Ядро, интерфейс и хранилище ключей остаются прежними. Поэтому добавление сети занимает дни, а не месяцы, и не ломает уже работающие сети. Исключение — если кошелёк собран как монолит под одну сеть: тогда сначала выделяют ядро, и только потом подключают новые сети.

Наши компетенции:

Последние работы

  • Разработка мобильного приложения для компании FEEDME
    Разработка мобильного приложения для компании FEEDME
    1010
  • Разработка мобильного приложения для компании XOOMER
    Разработка мобильного приложения для компании XOOMER
    903
  • Разработка мобильного приложения для компании RHL
    Разработка мобильного приложения для компании RHL
    1332
  • Разработка мобильного приложения для компании ZIPPY
    Разработка мобильного приложения для компании ZIPPY
    1180
  • Разработка мобильного приложения для компании Affhome
    Разработка мобильного приложения для компании Affhome
    1107
  • Разработка мобильного приложения для компании FLAVORS
    Разработка мобильного приложения для компании FLAVORS
    714