01
Что это
Криптопроцессинг — это не «принять платёж». Это учёт. Каждая зашедшая монета должна быть одновременно записана как актив на нашем адресе и как обязательство перед мерчантом; каждая комиссия — признана в правильный момент; каждая выплата — зарезервирована так, чтобы параллельный запрос не потратил те же деньги дважды. Ошибка в одном символе формулы проводки стоит реальных денег.
Поэтому перед первой строкой кода спецификация прошла холодный мультиагентный аудит: пять версий документа, найденные дефекты в канонической разводке, исправленный двойной дебет, разделённые классы счетов. Комиссия платформы признаётся в момент свипа — когда средства финальны, — а не при статусе «оплачено» на обратимых в reorg средствах.
02
возможности
Что оно умеет
01
Уникальный адрес на инвойс
Каждый платёж получает собственный депозитный адрес; статусы адреса терминальны, повторное использование запрещено.
02
Мультичейн
USDT на TRON, TON и Ethereum, а также нативные BTC, ETH, BSC, Polygon, Solana, TRX, XRP. Приоритет — USDT.
03
Двойная запись по-настоящему
План счетов с классами активов и обязательств, каноническая разводка каждого события, материализованные балансы в той же транзакции, что и проводка.
04
Атомарный резерв под выплату
Модель баланса available / pending / locked с блокировкой строки. Две параллельные выплаты не могут потратить один и тот же остаток.
05
Изолированный подписант
Ключи живут в отдельном сервисе с политикой подписи и идемпотентностью. Доказательство изоляции ключей — отдельный тест в наборе.
06
SaaS-слой для мерчантов
Регистрация, организации и роли, KYC/KYB, режимы test и live в каждой денежной таблице, whitelist адресов вывода, подписанные вебхуки с защитой от SSRF.
03
архитектура
Как устроено
01
Инвойс и депозитный адрес
02
Детект платежа в сети
03
Свип на материнский кошелёк
04
Проводки и признание комиссии
05
Выплата мерчанту
Под капотом
- Монорепо на npm workspaces: ledger, assets, apiauth, chain-adapters, secrets, db, obs — каждый пакет со своими тестами.
- Инварианты классифицированы по тяжести: P0 — потеря средств или кража ключей, блокирует релиз; любое сомнение = стоп.
- Реестр активов с проверкой decimals прямо в сети — не доверяем конфигу.
- Реверсивное хранилище секретов в KMS-конверте вместо хешей.
- Интерфейс адаптера сети заморожен — новая сеть не меняет ядро.
- Тесты на vitest против живого PostgreSQL; типизация насквозь, без any в денежных путях.
04
масштаб
Цифры
9
сетей в модели
5
версий спецификации до кода
P0
класс инвариантов, блокирующий релиз
2
режима: test и live