Suward
Как это работает

Как платёж Suward доходит до финальности.

У каждого платежа свой адрес. Мы следим за ним блок за блоком, пока статус растёт Pending → Safe → Finalized. Товар вы отдаёте, лишь когда деньги стали реальными.

PendingSafeFinalized
Payment · USDC · Arbitrum
25.00 USDC
PendingSafeFinalized
12 / 12 confirmationsFinalized
0x1f3a…9c2e
Lifecycle

Пять шагов, один API.

Попробовать в песочнице
  1. 01

    Создайте платёж

    Вызовите API с суммой, активом и сетью. Запрос идемпотентен. Повтор с тем же ключом вернёт существующий платёж, а не создаст дубликат. На один платёж — до 60 000.

  2. 02

    Получите уникальный адрес

    Suward выковывает свежий HD-адрес, привязанный к этому платежу. Адрес один на платёж. Переиспользования нет, поэтому два платежа невозможно спутать в один.

  3. 03

    Клиент платит

    Покажите hosted checkout с QR-кодом, адресом и обратным отсчётом или подключите свой UI к тому же платежу. Плательщик отправляет нужный актив в выбранной сети.

  4. 04

    Suward следит за цепочкой

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

  5. 05

    Средства оседают в балансе

    Статус растёт Pending → Safe → Finalized. На финальности деньги зачисляются в атомарный баланс, разделённый на safe и accepted. В минус не уходят никогда.

Confirmation progress
Pending3 / 12
Safe7 / 12
Finalized12 / 12
Finalized · 12 / 12 · ship the order
Confirmations

Pending, Safe, Finalized — что значит каждый.

Pending

Перевод виден, но подтверждения ещё набираются. Товар придержите.

Safe

Подтверждений достаточно для практической безопасности по порогу этой сети.

Finalized

Подтверждения достигли заданного порога финальности сети. Можно исполнять заказ.

У каждой сети свой required_confirmations. Порог задаётся для каждой цепочки отдельно, а не один на всех. Причина простая: быстрый L2 и более медленная сеть набирают доверие по-разному.

Reorg protection

Защита от reorg: мы не доверяем ранним блокам.

Блокчейн может ненадолго переписать свою недавнюю историю. Это reorg. Такая перезапись способна «отменить» перевод, который выглядел зачисленным. Поэтому по-настоящему завершённым Suward считает платёж только после того, как достигнут заданный порог финальности сети. До этого монитор сам пересматривает блоки вплоть до финальности. А оператор может перепроверить любой блок вручную через ReverifyBlock. Пропал подтверждённый перевод при reorg? Баланс пересчитывается от on-chain-реальности. Балансы safe и accepted меняются атомарно, поэтому в реестре не остаётся денег, которые цепочка забрала обратно.

Reorg scenario
Block 19,812,440
Block 19,812,441
Block 19,812,442reorged
Block 19,812,443reorged
Block 19,812,442'ReverifyBlock
Block 19,812,443'ReverifyBlock
Balance recomputed from on-chain reality. Atomic. Never negative.
Idempotency

Идемпотентность по умолчанию — повторы безопасны.

Сети рвутся. Запросы отваливаются по таймауту, и клиенты повторяют. Отправьте тот же create-запрос ещё раз с его ключом идемпотентности — и получите ровно тот же платёж, без списания и без дубликата. Так можно строить агрессивные ретраи и ни разу не задвоить платёж.

POST /v1/payments (×2)
# First attempt
POST /v1/payments
Idempotency-Key: pay_7f3a9c
200 id: "pay_7f3a9c", status: "pending"
# Retry (same key)
POST /v1/payments
Idempotency-Key: pay_7f3a9c
200 id: "pay_7f3a9c", status: "pending"
Same payment. No duplicate.
Balance ledger
500.00USDC
Arbitrum·0x1f3a…9c2e
safe
1,250.00USDT
Ethereum·0x4b8c…f01d
finalized
75.00USDC
Base·0x9e2d…3a5f
finalized
Total accepted$1,825.00
Decimal128 · never negative
Balances

Балансы, которые не врут.

Каждое зачисление атомарно. Хранится как Decimal128, так что никакого дрейфа округления float, который потом пришлось бы вылавливать. Баланс делится на safe и accepted. В минус не уходит никогда. Когда цепочка сдвигается из-за reorg, Suward пересчитывает баланс от on-chain-реальности, удерживая ваш реестр и сеть в согласии.

Сегодня вывод проходит проверку оператором с приложенным расчётом комиссии. Авто-вывод on-chain — в roadmap. «instant payout» мы не обещаем, пока его нет.

API status

Как оставаться в курсе платежа.

Сегодня вы запрашиваете статус платежа через API (poll) — источник истины в любой момент. Вебхуки (callbacks с HMAC-подписью) и live-события SSE пока в разработке. Их нет. Пока так, poll держит вас полностью в курсе того, где находится платёж.

Вебхуки · SSE live-событияSoon

Проследите платёж от pending до finalized.