главная

Начало работы

Основные понятия

Как устроены рынки Seeryx: slug-и раундов и событий, длительности, состояния раундов, зеркальный стакан, цены, разделение, расчёт и выплаты.

Рынки и раунды

Криптовалютный рынок — это актив и длительность раунда: BTC 5m, ETH 1h, BNB 1d. Он идёт цепочкой раундов, каждый из которых — отдельный вопрос со своим стаканом, своими долями и своим исходом. GET /api/markets возвращает список рынков.

tfДлительностьНачалоТоргуются заранее
5m5 минутКаждый момент, кратный 300 с (UTC)Текущий раунд и следующие 10
15m15 минутКаждый момент, кратный 900 сТекущий раунд и следующие 10
1h1 часКаждый полный часТекущий раунд и следующий
1d24 часа12:00 по нью-йоркскому времениТекущий раунд и следующий

Раунды, которые ещё не начались, тоже торгуются: их цена открытия всё равно будет ценой на границе раунда, так что ордер, размещённый заранее, — это позиция на более поздний интервал.

Slug раундов

Раунд называется {asset}-updown-{tf}-{start}: актив в нижнем регистре, длительность и начало в секундах Unix. Раунд заканчивается в start + length.

const LENGTH = { '5m': 300, '15m': 900, '1h': 3600, '1d': 86_400 } as const;

// the live round's slug comes from GET /api/markets/{asset}/{tf}/current; the ones after it follow on
const live = await api<{ slug: string; end: number }>('/markets/BTC/15m/current');
const next = (k: number) => `btc-updown-15m-${live.end + (k - 1) * LENGTH['15m']}`; // k = 1..10

Суточный раунд начинается в 12:00 по нью-йоркскому времени (16:00 UTC летом, 17:00 зимой) и всегда длится 24 часа, поэтому в те два дня, когда Нью-Йорк переводит часы, раунды перекрываются или между ними остаётся промежуток в час: берите начало раунда следующего дня из GET /api/rounds/:slug или из текущего раунда, когда он появится в списке, а не прибавляйте 86 400.

Событийные рынки

Событийный рынок — это один исход вопроса («Снизит ли ФРС ставку в декабре?»). Его slug начинается с ev-. Он торгуется как один длинный раунд: тот же стакан, ордера, WebSocket и комиссии, где up означает «Да», а down — «Нет». Торги останавливаются в closesAt, после чего рынок разрешает Optimistic Oracle от UMA. GET /api/events возвращает их список, GET /api/event-groups группирует их в вопросы.

Состояния раунда

statusЧто означаетТоргуется
upcomingДо началаДа, если он входит в число раундов, торгующихся заранее
liveМежду началом и концомДа, пока до конца больше 5 секунд (затем «Round is closing»)
liveПосле конца, outcome ещё null: сохраняется цена закрытияНет
settledoutcome равен up или downНет; выигрышные доли выплачиваются

У событийных рынков есть состояния open, closed (торги завершены, ожидается ответ UMA) и resolved с outcome yes или no.

Один стакан, две стороны

«Вверх» и «Вниз» — это один стакан. Бид на «Вверх» по цене p — это аск на «Вниз» по цене 100 − p, поэтому ?side=up и ?side=down показывают одни и те же ордера с разных сторон. Два покупателя могут торговать друг с другом: покупатель «Вверх» по 60¢ и покупатель «Вниз» по 40¢ вместе платят 1,00 $, и выпускается одна доля «Вверх» и одна доля «Вниз». Точно так же продавец «Вверх» и продавец «Вниз» объединяют свои доли обратно в доллары.

Цены и размеры

ПравилоЗначение
ЦеныЦелые центы от 1 до 99; с шагом 0,1¢ от 0,1 до 0,9 и от 99,1 до 99,9, если включён finePrices в GET /api/funds (на seeryx.com включён). Любая другая цена: 400 «Invalid limit»
ДолиДо 4 знаков после запятой; при цене между целыми центами — с шагом 0,001
Минимальный ордер5 долей (minOrderShares из GET /api/fees): для лимитного ордера — столько долей, для рыночной покупки — сумма, на которую их можно купить по лучшей цене продажи, для продажи — столько долей или все ваши свободные доли. Меньше: 400 below_minimum
Сведение ордеровСначала лучшая цена, затем самый ранний ордер; исполнение проходит по цене ордера, стоящего в стакане

Разделение и объединение

POST /api/split превращает USDC в одинаковое число долей «Вверх» и «Вниз», 1,00 $ за пару; POST /api/merge превращает пары обратно в 1,00 $ за каждую. Обе операции бесплатны, минимум — 5 пар. В конце пара всегда приносит ровно 1,00 $, поэтому маркет-мейкер, держащий обе стороны, может объединить их и сразу освободить средства.

Расчёт в Solana

Ордер сопоставляется сразу, и ваши средства и позиции меняются в тот же момент. Затем каждое исполнение проходит расчёт в программе Seeryx отдельной транзакцией Solana, обычно за несколько секунд. Эта транзакция видна в вашей активности:

txStatusЧто означает
pendingОтправлена в Solana, ещё не подтверждена
confirmedРасчёт проведён в блокчейне
failedПрограмма её отклонила: сделка отменена на вашем счёте

Транзакция, которая не попала в блокчейн вовремя, отправляется повторно. Если программа отклоняет расчёт (истёк срок подписи, сессия превысила лимит), сделка отменяется на вашем счёте и отображается с типом revert. Новые ордера не принимаются за 5 секунд до закрытия раунда, чтобы каждое исполнение успело пройти расчёт до него.

Выплаты и аннулирование

  • Выплаты автоматические. Когда раунд или событие разрешается, каждая выигрышная доля приносит 1,00 $ на ваши средства (тип активности settle). Ничего запрашивать не нужно.
  • Криптораунды разрешаются по цене Binance в секунду границы раунда. Если результат не поступил в Solana в течение 15 минут после закрытия, раунд аннулируется, и каждая доля приносит 50¢.
  • Событийные рынки разрешаются через UMA после закрытия торгов. Рынок, по которому UMA не утвердил ответ через 30 дней после закрытия, аннулируется, и каждая доля приносит 50¢.