Написать в Telegram@Odilient

ВЕБ-ПЛАТФОРМА

Криптобиржа с кастодиальным хранением

Криптобиржа с кастодиальным хранением для клиента под NDA, реализованная в виде двух сервисов: публичной биржи и изолированного сервиса кошельков и нод с контролем релизов через CI.

NDA
Клиент
Финтех и криптовалюты
Отрасль
7 месяцев
Срок
2022
Год
С чего всё началось

Задача

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

Что мы сделали

Решение

Мы руководили full-stack-командой из трёх разработчиков, которая разделила систему на две части: публичный сервис биржи для аккаунтов, ордеров и интерфейса на React и отдельный контейнеризированный сервис оркестрации кошельков и нод, изолированный от внешнего трафика. Каждый релиз проходит проверки в CI с наборами тестов PHPUnit и статическим анализом. Эфемерные ключи, идемпотентные операции с кошельками и инструменты проверки выводов в бэк-офисе защищают повседневную работу.

Технологии
SymfonyReact.jsRedux ToolkitMariaDBDockerPHPUnitCI/CD
За кулисами

Как всё создавалось

Криптобиржа с хранением средств, построенная вокруг изоляции

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

Мы вели проект в роли тимлида full-stack-команды из трёх человек в течение семи месяцев и сдали MVP с кастодиальными сценариями.

Ключевые возможности

  • Публичный сервис биржи: аккаунты пользователей, ордера и торговый интерфейс.
  • Изолированный сервис кошельков и нод: операции с кошельками и оркестрация блокчейн-нод работают в отдельном контейнеризированном сервисе, изолированном от внешнего трафика.
  • Идемпотентные операции с кошельками: повторный запрос не выполняется второй раз, поэтому тайм-ауты и повторы не дублируют операцию.
  • Эфемерные ключи: короткоживущие ключи для чувствительных операций ограничивают время, в течение которого утёкшие учётные данные остаются опасными.
  • Инструменты проверки выводов: сотрудники бэк-офиса проверяют выводы средств, и в рискованных сценариях последнее слово остаётся за людьми.
  • Релизы через контроль в CI: тесты PHPUnit и статический анализ должны пройти до слияния кода.

Архитектура и технологический стек

Два сервиса вместо одного

Бэкенд построен на Symfony с MariaDB и разделён на два сервиса. Публичный сервис биржи отвечает за аккаунты, ордера и всё, с чем взаимодействуют пользователи. Сервис оркестрации кошельков и нод работает отдельно в Docker-контейнерах, изолированно от внешнего трафика.

Разделение ограничивает, насколько далеко может распространиться инцидент. Проблему в публичном сервисе можно расследовать и исправить, не открывая доступ к инфраструктуре кошельков. А сервис кошельков можно закрыть гораздо строже, чем публичное веб-приложение.

Фронтенд на React и Redux Toolkit

Интерфейс биржи построен на React.js и Redux Toolkit, благодаря чему состояние аккаунтов, балансов и ордеров остаётся предсказуемым в насыщенном данными торговом интерфейсе.

Операции с кошельками, которые безопасно повторять

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

Инженерная дисциплина и безопасные релизы

Каждое изменение проходило CI, прежде чем его можно было слить. Наборы тестов PHPUnit и статический анализ были обязательным условием слияния, а инструменты контроля качества кода применялись во всей команде. Для продукта, который хранит средства пользователей, упавший пайплайн обходится гораздо дешевле, чем неудачный релиз.

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

Наша роль

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

Смежные работы

Фронтенд криптотрейдинга представлен в кейсах «Фронтенд криптобиржи с WalletConnect» и «Фронтенд DAO для торговли ресурсами». Наш «Агрегатор криптовалютного рынка в реальном времени» отвечает за рыночные данные. Подобные проекты входят в нашу услугу по разработке веб-приложений.

Создадим вместе

Хотите что-то вроде Криптобиржа с кастодиальным хранением?

Расскажите, что должен делать ваш продукт. Мы определим объём работ, распишем сроки и пришлём фиксированную цену — бесплатно и без обязательств продолжать.

Бесплатная консультация Без обязательств Быстрый ответ