К содержанию
Работа

PayRue — мультиплатформенный криптокошелёк, обмен и фиатная инфраструктура

PayRue — криптокошелёк, обменник и фиатная инфраструктура в одном аккаунте: веб, iOS и Android на общем бэкенде. Пользователь хранит BTC, ETH, XLM, USDC и собственный токен PROPEL, отправляет и принимает средства по QR, меняет активы между собой и покупает их за фиат с карты или банковского счёта. Мы делали продукт целиком — от блокчейн-адаптеров и работы с ключами до KYC/AML, казначейства и операционной панели.

Главный экран проекта Нажмите, чтобы рассмотреть
PayRue — мультиплатформенный криптокошелёк, обмен и фиатная инфраструктура 01 / 05
PayRue — мультиплатформенный криптокошелёк, обмен и фиатная инфраструктура — Главный экран проекта
Клиент
PayRue Ltd.
Индустрия
Финтех, Блокчейн
Срок
15 месяцев
Команда
12 человек

Задача

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

PayRue сводил это в один продукт с единым аккаунтом, портфелем и историей операций. Сложность в том, что за экранами стоит регулируемая финансовая система. Баланс не может быть «примерно верным». Депозит, замеченный индексатором дважды, реорганизация блокчейна, задержавшийся webhook провайдера и повторный callback банка не имеют права изменить остаток второй раз. Вывод должен пройти проверку санкционных списков раньше, чем транзакция уйдёт в сеть. И всё это — на трёх клиентских приложениях, которые обязаны показывать одно и то же состояние.

Решение

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

Блокчейн-адаптеры. Каждая сеть подключена собственным адаптером, скрывающим различия Bitcoin, Ethereum, Stellar и токен-протоколов от остальных сервисов. Адаптер выдаёт адреса, синхронизирует блоки, находит входящие транзакции и считает подтверждения. Он же готовит и отправляет в сеть исходящие, оценивает сетевую комиссию, обрабатывает реорганизации и повторные попытки, ведёт сверку и поддерживает memo и tag. Подключение новой сети не трогает KYC, портфель, уведомления и поддержку.

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

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

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

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

Фиат в обе стороны. On-ramp связывает банковский или карточный платёж с покупкой актива: проверка юрисдикции и лимитов, крипто-котировка, создание платежа, 3DS или банковская авторизация, подтверждение поступления денег и только затем зачисление. Отклонённые, ожидающие, просроченные и отменённые платежи, а также чарджбэки обрабатываются явно, чтобы необеспеченный актив не попал на баланс. Off-ramp фиксирует котировку, резервирует актив, выполняет обмен и создаёт выплату после проверки комплаенса. Подсистема расчётов сверяет блокчейн, реестр, исполнение на бирже, банковскую выплату, комиссии и возвраты.

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

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

Результат

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

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

Публичные материалы кампании 2019 года сообщали о более чем 22 000 зарегистрированных пользователях и более чем 4 500 аккаунтах, прошедших KYC, при работающих приложениях Web, iOS и Android.

5 поддерживаемых активов: BTC, ETH, XLM, USDC и PROPEL
12 связанных подсистем: от кошельков и обмена до комплаенса и казначейства
3 клиентских приложения на едином бэкенде: веб, iOS и Android
15 месяцев срок работы команды из 12 человек
Ещё

Похожие проекты

Всё портфолио
ИИ-коллектор — голосовой агент для работы с задолженностью
Работа Финтех-компания

ИИ-коллектор — голосовой агент для работы с задолженностью

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

ИИ-сотрудники
RAGNLP
Betald — площадка факторинга с обратным аукционом инвесторов и интеграциями с бухгалтерскими системами
Работа Frenns

Betald — площадка факторинга с обратным аукционом инвесторов и интеграциями с бухгалтерскими системами

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

Кастомная система
MagentoLaravelPHPPython
Green Dot DAMS — внутренняя система управления маркетинговыми материалами
Работа Green Dot

Green Dot DAMS — внутренняя система управления маркетинговыми материалами

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

DAMS — управление цифровыми активами
SymfonyPHP
Первый разговор — бесплатно

Расскажите, что хотите изменить

За одну встречу уточним задачу и предложим следующий шаг.

Что будет на встрече
  1. 01 Опишите задачу своими словами
  2. 02 Уточним цель и ограничения
  3. 03 Предложим решение и следующий шаг
длительность 45–60 мин