Посібники
Поповнення й виведення
Переказуйте USDC у Solana на рахунок Seeryx і з нього за допомогою коду: поповнення, адреси для поповнення, миттєве й відкладене виведення та їхня вартість.
Огляд
Ваші кошти — це USDC у мережі Solana на вашому власному рахунку в програмі Seeryx. Поповнення й виведення — це транзакції вашого гаманця, які сервер готує із Seeryx як платником комісії: гаманець підписує, Seeryx додає свій підпис і надсилає транзакцію, тож гаманцю не потрібен SOL. Кожна операція складається з трьох викликів:
- Запитайте транзакцію:
POST /api/relayабоPOST /api/withdraw-nowвідповідає{ "transaction": "<base64>" }. - Підпишіть її гаманцем (лише підпишіть, не надсилайте) і передайте через
POST /api/relay/submit; у відповіді буде її підпис. - Дочекайтеся, поки Solana її підтвердить, а потім викличте
POST /api/funds/refresh: ваші кошти оновляться за лічені секунди.
sendPrepared у chain.ts (send_prepared у chain.py) виконує кроки 2 і 3.
Поповнення з гаманця
POST /api/relayз{ "action": "deposit", "amount": 10 }, потім підпишіть і передайте транзакцію.- Комісію за поповнення (1 USDC) сплачують у тій самій транзакції, а решту зараховують.
- Перше поповнення відкриває ваш рахунок: після комісії на ньому має залишитися щонайменше 1 USDC. До того торгова сесія відповідає 409 "Deposit first".
Адреса для поповнення
POST /api/deposit/address з { "network": "solana", "token": "USDC" } видає вам власну адресу. USDC, надіслані на неї з біржі або будь-якого гаманця, зараховуються на ваш баланс автоматично (auto: true) за вирахуванням комісії за поповнення. GET /api/deposit/options повертає список інших мереж і токенів (USDT і USDC в Ethereum, BNB Chain, Base, Polygon, Arbitrum тощо), кожен зі своїм мінімумом; вони надходять через міст. GET /api/funds/wallet показує, що перебуває в дорозі (incoming).
Миттєве виведення
POST /api/withdraw-nowз{ "amount": 25 }(іtoдля іншого гаманця Solana), потім підпишіть і передайте транзакцію.- Комісія за виведення (1 USDC,
accountFeeу відповіді) утримується із суми; вона також відкриває USDC-рахунок для отримувача, якщо його немає. - З
networkіtokenUSDC надходять далі через міст в іншу мережу;POST /api/withdraw/quoteзаздалегідь показує, скільки надійде. - 409, поки одна з ваших угод ще в розрахунку: спробуйте знову за кілька секунд.
Відкладене виведення
Безкоштовно й лише з підписом вашого гаманця: POST /api/relay з { "action": "request_withdraw", "amount": 25 }, зачекайте withdrawDelay секунд з GET /api/funds (60), потім execute_withdraw виплачує суму на ваш гаманець (або на to — гаманець, який уже має USDC-рахунок). cancel_withdraw скасовує запит.
Код
// funds.ts: deposit USDC from the wallet and withdraw it again; the exchange pays every fee. npx tsx funds.ts
import { api, loadWallet, signIn } from './seeryx';
import { sendPrepared, type Funds } from './chain';
import { logValue } from './api-url.mjs';
const wallet = await loadWallet();
await signIn(wallet);
const funds = await api<Funds>('/funds');
if (funds.mode !== 'chain') throw new Error('This server holds no USDC on Solana');
// USDC in the wallet, not deposited yet; `account` is null until the first deposit opens it
console.log({ wallet: await api('/funds/wallet') });
// deposit 10 USDC (the first deposit is at least 1): the server prepares the transaction, the wallet signs it
const deposit = await api<{ transaction: string }>('/relay', {
method: 'POST', body: { action: 'deposit', amount: 10 },
});
console.log('deposit', logValue(await sendPrepared(funds, wallet, deposit.transaction)));
await api('/funds/refresh', { method: 'POST' }); // read the program now; cash follows within seconds
await new Promise((r) => setTimeout(r, 5000));
console.log({ balance: await api('/balance') });
// withdraw 4 USDC at once to this wallet (or `to`: another Solana wallet), co-signed by the exchange
const withdrawal = await api<{ transaction: string; accountFee: number }>('/withdraw-now', {
method: 'POST', body: { amount: 4 },
});
const sent = await sendPrepared(funds, wallet, withdrawal.transaction);
console.log('withdrawal', logValue(sent), 'withdrawal fee', Number(withdrawal.accountFee));
await api('/funds/refresh', { method: 'POST' });Усі комісії в одному місці: «Комісії».
Ендпоінти коштів
Ваші USDC лежать на вашому власному рахунку в програмі Seeryx на Solana. Кожну вашу транзакцію готує сервер, а комісію мережі сплачує Seeryx: ваш гаманець лише підписує.
/api/fundsДані блокчейну, потрібні клієнту
curl "https://seeryx.com/api/funds"{
"mode": "chain", "cluster": "mainnet",
"programId": "2uUbvYHqBH1HDVzABGPcqrjHodoBVcNkq6Nrv6MABaiv", "mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"withdrawDelay": 60, "maxSessionTtl": 86400, "instantWithdraw": true, "withdrawFee": 1.0, "depositFee": 1.0,
"onChainTrading": true, "fees": { "rateBps": 700, "rebateBps": 2000 },
"relayed": true, "directDeposits": true, "finePrices": true, "budgetBuys": true, ...
}- programId: програма Seeryx (від неї похідні акаунти ринків); mint: USDC. onChainTrading: кожен ордер, розділення й об’єднання має бути підписаним. relayed: комісію мережі за ваші транзакції сплачує Seeryx.
- finePrices: лімітні ціни з кроком 0,1¢ нижче 1¢ і вище 99¢. budgetBuys: ринкові купівлі підписуються за бюджетом (PMO4). maxSessionTtl: найдовша торгова сесія, у секундах; withdrawDelay: очікування відкладеного виведення, у секундах. depositFee і withdrawFee — у USDC.
/api/funds/walletUSDC у вашому гаманці, ваші кошти в програмі й USDC у дорозі
| Поле | Тип | Опис |
|---|---|---|
fresh | 1 | Оминути 5-секундний кеш |
curl "https://seeryx.com/api/funds/wallet" \
-H "X-Auth-Token: $TOKEN"{ "wallet": 200, "account": null, "sol": 0, "incoming": 0 }- wallet: USDC у гаманці, ще не зараховані на рахунок. account: кошти в програмі, null, доки перше поповнення не відкриє рахунок. incoming: USDC, що надійшли на вашу адресу для поповнення й прямують на ваш баланс.
| Статус | Коли |
|---|---|
| 502 | Не вдалося прочитати дані Solana; нуль у такому разі не повертається |
/api/funds/refreshПісля поповнення чи виведення: негайно прочитати стан програми
curl -X POST "https://seeryx.com/api/funds/refresh" \
-H "X-Auth-Token: $TOKEN"{ "ok": true }/api/relayПідготувати вашу транзакцію для підпису гаманцем
| Поле | Тип | Опис |
|---|---|---|
action | string | deposit, session, close_session, request_withdraw, cancel_withdraw або execute_withdraw |
amount | number | deposit, request_withdraw: сума в USDC |
key | string | session: новий ключ сесії; close_session: ключ сесії, якщо підписує він, а не гаманець |
expiresAt | number | session: секунди Unix, щонайбільше через maxSessionTtl від цього моменту |
limit | number | session: скільки USDC вона може витратити загалом |
maxTrade | number | session: скільки USDC може витратити один ордер, не більше за limit |
to | string | execute_withdraw: інший гаманець Solana, що має USDC-рахунок |
curl -X POST "https://seeryx.com/api/relay" \
-H "X-Auth-Token: $TOKEN" \
-H "Content-Type: application/json" \
-d '{"action":"deposit","amount":10}'{ "transaction": "AQAB..." }- transaction — транзакція v0 у base64, у якій платником комісії є Seeryx, а всі слоти підписів порожні. Підпишіть її гаманцем (лише підпишіть, не надсилайте), потім надішліть POST-запитом на /api/relay/submit.
- Кожне поповнення сплачує комісію за поповнення (depositFee з GET /api/funds) у тій самій транзакції; решту зараховують. Після першого поповнення має залишитися щонайменше 1 USDC після комісії: воно відкриває ваш рахунок.
- close_session скасовує ваші ордери в книзі й одразу зупиняє ключ сесії (його ордери отримують trading_paused) — ще до того, як транзакцію надіслано.
| Статус | Коли |
|---|---|
| 400 | Відсутнє або неправильне поле, поповнення, що не перевищує комісію |
| 409 | "Deposit first" (рахунку ще немає), немає виведення в очікуванні або воно ще не готове, в отримувача немає USDC-рахунку |
/api/relay/submitНадіслати підготовлену транзакцію після підпису гаманцем
| Поле | Тип | Опис |
|---|---|---|
transaction | string | base64: транзакція з /relay або /withdraw-now із підписом вашого гаманця |
curl -X POST "https://seeryx.com/api/relay/submit" \
-H "X-Auth-Token: $TOKEN"{ "signature": "5VERv8NM..." }- Seeryx додає свій підпис, перевіряє всі підписи й надсилає транзакцію в мережу Solana; signature — її ідентифікатор. Чекайте підтвердження через будь-який RPC Solana (getSignatureStatuses).
| Статус | Коли |
|---|---|
| 400 | Це не транзакція, підготовлена для вашого акаунта за останні 5 хвилин, або її вже надіслано |
| 409 | Її blockhash застарів, перш ніж вона потрапила в Solana: підготуйте її знову |
/api/withdraw-nowМиттєве виведення для підпису гаманцем
| Поле | Тип | Опис |
|---|---|---|
amount | number | USDC, що списуються з вашого рахунку, разом із комісією за виведення |
to | string | Інший гаманець Solana або адреса в мережі network |
network | string | Разом із token: доставка в іншу мережу (мережа з /deposit/options з withdraw true) |
token | string | USDC або USDT |
cancelPending | boolean | Замінити відкладене виведення в очікуванні |
curl -X POST "https://seeryx.com/api/withdraw-now" \
-H "X-Auth-Token: $TOKEN" \
-H "Content-Type: application/json" \
-d '{"amount":25}'{ "transaction": "AQAB...", "accountFee": 1 }- Підпишіть транзакцію гаманцем і надішліть через /api/relay/submit. accountFee — комісія за виведення, що утримується із суми. З network і token відповідь також містить bridge { receive, fee, seconds }.
| Статус | Коли |
|---|---|
| 400 | Сума не перевищує комісію або більша за ваші вільні кошти |
| 409 | Одна з ваших угод ще в розрахунку: спробуйте знову за кілька секунд або скористайтеся відкладеним виведенням |
/api/withdraw/quoteСкільки надійде під час виведення в іншу мережу
| Поле | Тип | Опис |
|---|---|---|
amount | number | USDC, що списуються з вашого рахунку |
network | string | Мережа з /deposit/options |
token | string | USDC або USDT |
to | string | Необов’язкова адреса отримувача |
curl -X POST "https://seeryx.com/api/withdraw/quote" \
-H "X-Auth-Token: $TOKEN" \
-H "Content-Type: application/json" \
-d '{"amount":20,"network":"base","token":"USDC"}'{ "receive": 18.89, "fee": 0.11, "networkFee": 0.11, "bridgeFee": 1, "seconds": 1 }- bridgeFee — комісія за виведення; networkFee — орієнтовна вартість мосту іншої мережі.
/api/deposit/optionsМережі й токени, з яких можна поповнити рахунок
curl "https://seeryx.com/api/deposit/options"{ "routes": [{ "network": "solana", "token": "USDC", "min": 1, "available": true, "reason": null, "direct": true, "auto": true, "withdraw": true },
{ "network": "bsc", "token": "USDT", "min": 3, "available": true, "reason": null, "direct": false, "auto": true, "withdraw": true }, ...] }- direct: USDC у мережі Solana, без мосту. auto: те, що надходить на вашу адресу для поповнення, автоматично зараховується на ваш баланс. withdraw: туди можна вивести кошти.
/api/deposit/addressВаша власна адреса для поповнення токеном у певній мережі
| Поле | Тип | Опис |
|---|---|---|
network | string | Мережа з /deposit/options |
token | string | USDT або USDC |
curl -X POST "https://seeryx.com/api/deposit/address" \
-H "X-Auth-Token: $TOKEN" \
-H "Content-Type: application/json" \
-d '{"network":"solana","token":"USDC"}'{ "network": "solana", "token": "USDC", "address": "7xKXtg2C...", "min": 1, "direct": true, "auto": true }- Для вашого гаманця й маршруту щоразу та сама адреса. Надсилайте щонайменше min.
| Статус | Коли |
|---|---|
| 409 | Маршрут недоступний |
| 502 | Міст недоступний |
/api/deposit/recoverЗнайти поповнення, надіслане іншим токеном або в іншій мережі
curl -X POST "https://seeryx.com/api/deposit/recover" \
-H "X-Auth-Token: $TOKEN"{ "found": [{ "address": "0x09a3...", "network": "ethereum", "token": "USDC", "amount": "25000000" }] }- Для USDC, надісланих на адресу, показану для USDT, або на адресу в іншій мережі, ніж та, для якої її створено: міст шукає знову й пересилає те, що знайде. amount — у найменших одиницях токена.
| Статус | Коли |
|---|---|
| 429 | Понад 2 виклики на хвилину |