Как платёж Suward доходит до финальности.
У каждого платежа свой адрес. Мы следим за ним блок за блоком, пока статус растёт Pending → Safe → Finalized. Товар вы отдаёте, лишь когда деньги стали реальными.
Пять шагов, один API.
- 01
Создайте платёж
Вызовите API с суммой, активом и сетью. Запрос идемпотентен. Повтор с тем же ключом вернёт существующий платёж, а не создаст дубликат. На один платёж — до 60 000.
- 02
Получите уникальный адрес
Suward выковывает свежий HD-адрес, привязанный к этому платежу. Адрес один на платёж. Переиспользования нет, поэтому два платежа невозможно спутать в один.
- 03
Клиент платит
Покажите hosted checkout с QR-кодом, адресом и обратным отсчётом или подключите свой UI к тому же платежу. Плательщик отправляет нужный актив в выбранной сети.
- 04
Suward следит за цепочкой
Он замечает входящий перевод и считает подтверждения по одному блоку, поднимая статус лишь по мере согласия сети.
- 05
Средства оседают в балансе
Статус растёт Pending → Safe → Finalized. На финальности деньги зачисляются в атомарный баланс, разделённый на safe и accepted. В минус не уходят никогда.
Pending, Safe, Finalized — что значит каждый.
Перевод виден, но подтверждения ещё набираются. Товар придержите.
Подтверждений достаточно для практической безопасности по порогу этой сети.
Подтверждения достигли заданного порога финальности сети. Можно исполнять заказ.
У каждой сети свой required_confirmations. Порог задаётся для каждой цепочки отдельно, а не один на всех. Причина простая: быстрый L2 и более медленная сеть набирают доверие по-разному.
Защита от reorg: мы не доверяем ранним блокам.
Блокчейн может ненадолго переписать свою недавнюю историю. Это reorg. Такая перезапись способна «отменить» перевод, который выглядел зачисленным. Поэтому по-настоящему завершённым Suward считает платёж только после того, как достигнут заданный порог финальности сети. До этого монитор сам пересматривает блоки вплоть до финальности. А оператор может перепроверить любой блок вручную через ReverifyBlock. Пропал подтверждённый перевод при reorg? Баланс пересчитывается от on-chain-реальности. Балансы safe и accepted меняются атомарно, поэтому в реестре не остаётся денег, которые цепочка забрала обратно.
Идемпотентность по умолчанию — повторы безопасны.
Сети рвутся. Запросы отваливаются по таймауту, и клиенты повторяют. Отправьте тот же create-запрос ещё раз с его ключом идемпотентности — и получите ровно тот же платёж, без списания и без дубликата. Так можно строить агрессивные ретраи и ни разу не задвоить платёж.
Балансы, которые не врут.
Каждое зачисление атомарно. Хранится как Decimal128, так что никакого дрейфа округления float, который потом пришлось бы вылавливать. Баланс делится на safe и accepted. В минус не уходит никогда. Когда цепочка сдвигается из-за reorg, Suward пересчитывает баланс от on-chain-реальности, удерживая ваш реестр и сеть в согласии.
Сегодня вывод проходит проверку оператором с приложенным расчётом комиссии. Авто-вывод on-chain — в roadmap. «instant payout» мы не обещаем, пока его нет.
Как оставаться в курсе платежа.
Сегодня вы запрашиваете статус платежа через API (poll) — источник истины в любой момент. Вебхуки (callbacks с HMAC-подписью) и live-события SSE пока в разработке. Их нет. Пока так, poll держит вас полностью в курсе того, где находится платёж.