Batch API с idempotency
Отправляешь сотни выплат за один вызов. Повтор ровно того же вызова — no-op, никто не получит дважды.
Для DAO и treasury
SwapZilla — non-custodial payout-инфраструктура для DAO и treasury. Отправляй гранты, реварды и airdrop на сотни кошельков в одной операции — с idempotency-safe API-гарантиями и any-to-any routing, чтобы контрибьюторы получали именно тот актив, который они попросили.
Treasury держит один-два reserve-актива, а контрибьюторы хотят получать разные монеты. Ручная конвертация — full-time работа.
Отправить на 500 адресов по-одному — это частичные failures, пропущенные ретраи, double-sends и много Etherscan-refresh чтобы всё свести.
Использовать custodial-процессор для дистрибуции гранта = доверять им treasury-фонды. Для DAO с обещаниями non-custodial это не ок.
Ты отправляешь batch-выплату — JSON-массив получателей с их активом, сетью и суммой. SwapZilla роутит каждый свап из treasury-актива в актив получателя и исполняет все выплаты под одним idempotency-ключом. Если вызов повторили — ни один адрес не получит дважды. Всё on-chain, verifiable и non-custodial.
Отправляешь сотни выплат за один вызов. Повтор ровно того же вызова — no-op, никто не получит дважды.
Treasury держит USDT; A хочет BTC, B — XMR, C — ETH. Каждый leg роутится индивидуально по лучшему курсу.
Каждая выплата — прямой wallet-to-wallet transfer через exchange-провайдера. Treasury-средства не заходят в SwapZilla.
У каждой выплаты — on-chain транзакция, твой client_order_id и статус, который можно запросить в любой момент.
JSON-массив: address, asset, network, amount, client_order_id на каждого получателя.
POST batch с одним Idempotency-Key header. Retry безопасен.
Актив каждого получателя котируется у всех провайдеров; лучший маршрут выбирается автоматически.
Каждая выплата исполняется как отдельный свап из treasury-актива с отправкой на кошелёк получателя.
Поллишь batch-endpoint и смотришь per-recipient статус — completed, pending, failed с причиной.
До нескольких сотен получателей на один вызов. Если нужно больше — дели на несколько batch'ей под разными idempotency-ключами.
Ты передаёшь Idempotency-Key header. Если повторить тот же вызов — SwapZilla возвращает исходный результат без второго исполнения выплат. Защищает от дубликатов при сетевых сбоях и ретраях.
Да. Каждый получатель указывает свой target-актив и сеть. SwapZilla роутит каждого независимо.
Остальной batch продолжается. Упавшие возвращаются с причиной (невалидный адрес, provider недоступен и т.д.) — можно ретраить только их, не трогая успешные.
Нет. Каждая выплата — прямой свап через provider'а; treasury-средства уходят из source-кошелька только когда конкретная выплата исполняется. Никакого промежуточного SwapZilla-баланса.
Поможем оскопить интеграцию и пройдёмся по batch API. Большинство treasury-команд выходят на первую боевую выплату за неделю.