Как стать автором
Обновить
54.74

Интеграция JavaScript в нативные мобильные приложения для криптотрейдинга: нестандартный опыт и технические решения

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров423

23–24 апреля в Москве проходит Blockchain Forum — одно из ключевых событий в мире блокчейна и криптотехнологий. На форуме изучаем тренды, делимся опытом и слушаем коллег, набираемся насмотренности.

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


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

Создание мобильного криптотрейдинга — это не перенос веб‑интерфейса в приложение. Это отдельная инженерная задача со множеством нюансов. Пользователь ожидает, что сможет торговать быстро, удобно и безопасно, не вникая в технические детали.

Среди трендов, которые формируют рынок мобильного криптотрейдинга:

  • Активный переход пользователей с веба в мобайл — интерфейсы становятся более приспособленными к экрану телефона, а требования к производительности выше.

  • Запрос на нативность — приложения должны быть быстрыми, безопасными и «родными» для операционной системы.

В этой статье мы делимся совместным опытом с командой EVEDEX, где мы интегрировали SDK на TypeScript (изначально предназначенный для веба) в нативные приложения, чтобы сохранить единую бизнес‑логику между платформами. Это решение дало массу преимуществ — но и принесло немало сложностей.

Почему мы выбрали SDK и с какими вызовами столкнулись

На веб‑версии EVEDEX уже использовался собственный Exchange SDK — библиотека на TypeScript, которая соединяет API биржи с клиентской частью. Постепенно в ней появилась полноценная бизнес‑логика: от агрегации рыночных данных до подписания ордеров и отправки их на валидацию.

Ключевая задача — обеспечить идентичное поведение на всех платформах. Мы хотели избежать дублирования логики, сократить количество ошибок и ускорить разработку. Это означало: интеграция существующего веб‑SDK в нативные приложения.

Однако SDK был написан на TypeScript и не предусматривал использование за пределами браузера. Это стало главным техническим вызовом.

Мы вместе подробно обсудили возможные варианты реализации. С учётом всего контекста решили попробовать внедрить полноценный SDK на TypeScript в нативное приложение. Для нас это было в новинку — но мы были готовы решить эту нестандартную задачу.

Александр Кияйкин, CTO CleverPumpkin

Первым шагом стало подключение полноценного JavaScript-движка внутрь приложения. На iOS был доступен встроенный JavaScriptCore, но для Android пришлось искать альтернативу. Мы остановились на LiquidCore — независимом JS-движке с открытым исходным кодом.

Чтобы обеспечить удобную работу с SDK из нативного кода, была написана кроссплатформенная обёртка, которая реализовывала взаимодействие между SDK и бизнес-логикой приложения.

Проблемы, с которыми мы столкнулись:

  • Не все JS-движки поддерживают последний синтаксис ECMAScript — нам пришлось понизить уровень трансляции TypeScript в поддерживаемую версию JS.

  • JS-движки не имеют прямого доступа к системным возможностям: HTTP-запросы, WebSocket, работа с сетью — всё это требует реализации в нативном коде.

В результате SDK был модифицирован. Теперь он использует внешние интерфейсы для сетевой логики — HTTP и WebSocket-взаимодействие реализуется на стороне Swift/Kotlin, а логика обработки остаётся в JS. Как итог, бизнес-логика осталась в SDK, а низкоуровневая работа с сетью — за нативным кодом. Это позволило сохранить целостность архитектуры и ускорить разработку без ущерба для производительности.

Работа с кошельками. Реализация депозита и вывода средств

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

  • Переводить активы из одной сети в другую.

  • Делать это в несколько кликов, без необходимости вручную искать бриджи или понимать внутреннюю логику взаимодействия между сетями.

  • Гибко подбирать подходящий вариант по цене/скорости.

Мы сознательно остановили свой выбор на использовании WebView. Несмотря на то, что приложение написано на нативных технологиях, а для работы с JS мы используем отдельный движок, WebView помогло быстро интегрировать интерфейс LI.FI без необходимости повторной реализации его UI в нативе. Это дало возможность сохранить единый пользовательский опыт на вебе и в мобильном приложении, а также упростить обновление функциональности депозитов.

При этом нужно было учесть особенности взаимодействия с криптокошельками в мобильной среде. Для подключения и взаимодействия с ними мы использовали EIP-1193 (Ethereum Provider JavaScript API) — стандарт, определяющий, как приложения могут интегрироваться с Ethereum-кошельками. Мобильное приложение поддерживает разные варианты подключения:

  • С помощью MetaMask.

  • Импорт внешнего кошелька по сид-фразе или приватному ключу.

  • Создание нового кошелька прямо внутри приложения.

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

NB: на текущем этапе EVEDEX работает с Ethereum‑совместимыми сетями, поэтому альтернативные стандарты не рассматривались.

Интеграция TypeScript SDK в нативное мобильное приложение оказалась задачей нестандартной и местами сложной,  но она позволила нам обеспечить идентичное поведение на всех платформах, исключить дублирование логики, сократить количество ошибок и значительно ускорить процесс разработки:

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

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

  • Использование стандартов, таких как EIP-1193, позволило сохранить совместимость с кошельками и упростить реализацию.

  • Комбинация нативного кода, JS-движка и WebView дала нужный баланс между скоростью разработки, гибкостью и UX.

Было непросто, но теперь мы точно знаем, как встроить TypeScript SDK в нативное криптоприложение. Это не только ускорило работу, но и дало нам архитектурную основу на будущее.

Влад Комиссаров, CTO EVEDEX

Создание мобильного приложения EVEDEX стало не просто реализацией очередного продукта, а реальным технологическим экспериментом, который теперь может стать отправной точкой для других команд, ищущих нестандартные решения в мире крипты.


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

Если у вас есть идея или вопросы к нам — напишите в телеграм

Теги:
Хабы:
+3
Комментарии0

Публикации

Информация

Сайт
cleverpumpkin.ru
Дата регистрации
Дата основания
Численность
11–30 человек
Местоположение
Россия
Представитель
Денис Германенко