Как стать автором
Обновить

Комментарии 16

Какая строка запроса получает json с текущим состоянием? К примеру, какая строка запроса для получения json с процентами за Трампа и Харрис, то что отображается на странице https://polymarket.com/elections

То, что касается данных по голосованию (Трамп и Харрис). Исходы можно получить из информации о маркете. Посмотрите апишку. Нужно проверять, все ли там есть по данным, что вам нужно.

А вот что касается интерактивной карты, в апишке я не встречал, это скорее всего какая-то уникальная история только для выборов. Единственное, что здесь можно посоветовать - это обратиться в дискорд Polymarket к разработчикам.

API, конечно, смотрел. Как получить json не понял.

Вот это маркет на Трампа.
Вот это маркет на Харрис.

Это простые GET запросы. По типу {clob-endpoint}/markets/{condition_id}. ConditionId я взял прямо из запросов, которые делает страничка Polymarket.

Нет, просто поковырялся в консоли разработчика, во вкладке Network. Там запрос приходит "https://polymarket.com/_next/data/l7XOx0e7h87Mr5hivQWHi/en/markets.json". И в response этого запроса можно поиском найти по полю "conditionId".

Просмотрел весь Network сайта https://polymarket.com/event/presidential-election-winner-2024?tid=1730210729226 нашел там только https://clob.polymarket.com/rewards/markets/0xdd22472e552920b8438158ea7238bfadfa4f736aa4cee91a6b86c39ead110917 (почему-то аналогичный запрос для Харрис отсутствует), но запроса https://polymarket.com/_next/data/l7XOx0e7h87Mr5hivQWHi/en/markets.json не увидел. Т.е. я просто открываю сайт, жму F12, выбираю Network, жму перезагрузку. Что-то не так делаю? Сделал скрин, но ту нет опции его разместить. A.Pletnev56@yandex.ru

Да нет, все правильно делаете. Отправил вам скриншоты на почту.

В любом случае в API есть endpoint, который позволяет выгрузить все маркеты и найти нужные вам. Это чтобы не пришлось парсить страничку полимаркета каким-то образом.

(почему-то аналогичный запрос для Харрис отсутствует),

Его нет потому что нужно переключиться на рынок Харрис скорее всего (Это предположение, я не проверял). Чтобы Харис была в правом окошке, где можно сделать ставку за нее.

Спасибо. В API endpoint GET {clob-endpoint}/markets?next_cursor={next_cursor} непонятно, что такое next_cursor, как определять этот параметр.

Вы какую страницу загружали в консоль разработчика и в каком браузере?

next_cursor - это для пагинации маркетов. Там за раз можно выгрузить не все количество маркетов. В ответе на запрос придет информация о следующем next_cursor (конец пагинации или есть что еще выгружать).

Страницу загружал туже самую, что и вы https://polymarket.com/event/presidential-election-winner-2024?tid=1730210729226. Смотрел в chrome на винде. Сейчас проверил в chrome, но на mac. И запрос такой не вижу, но зато есть подключение по websocket wss://ws-subscriptions-clob.polymarket.com/ws/market. Там тоже можно выдернуть condition_id, только он market называется.

Все равно непонятно, как по API вычислять GET запрос.

Как определяется condition_id , к примеру, 0xdd22472e552920b8438158ea7238bfadfa4f736aa4cee91a6b86c39ead110917 В API про condition_id только "id of market which is also the CTF condition ID" .

В API про condition_id только "id of market which is also the CTF condition ID"

Все верно, CTF (gnosis conditional token framework) отвечает за токенизацию исходов. Если просто, то под каждый исход создается некоторое количество ERC-1155 токена. Поэтому condition ID создается в недрах смарт-контрактов CTF. А потом уже он используется полимаркетом в апишке, в своем CLOB, может быть где-то еще.

Если начать ковыряться, как conditionID генерируется, то в смартах CTF можно найти вот эту функцию. По ней видно, что conditionId - это хеш от трех переменных:
- адреса оракула, который рассчитает результат события
- questionId, набор байт, которые представляют сам вопрос, прогноз, как угодно его можно назвать.
- outcomeSlotCount, количество исходов для questionId. В polymarket это бинарная история - исходы в основном "да" или "нет".

Сам процесс создания нового голосования (conditionId) - это история ручная, в дискорде где-то есть обсуждение и после обсуждения, протокол сам создает событие (прогноз предсказание), то есть сам посылает транзакцию на смарт-контракты. В интерфейсе у них нет возможности добавить любое событие.

Как по API определить конкретные параметры запроса GET? Первое, второе, третье действие?

Согласно документации. В запросе `GET {clob-endpoint}/markets?next_cursor={next_cursor}`

Первый запрос, вы next_cursor не знаете. Но он придет вам в ответе на запрос без параметра `GET {clob-endpoint}/markets`. Вот в таком виде `"next_cursor": "NjAw"`. Это взято из json ответа. Располагается это поле в конце. Все согласно документации.

Для второго запроса нужно взять полученный next_cursor и подставить в запрос. Вот таким образом `https://clob.polymarket.com/markets?next_cursor=MzAw`. В ответе придет следующий next_cursor и так далее. Пока next_cursor не будет равен видимо значению "LTE". Это я не проверял, до конца все события не выгружал.

Здесь не подскажу, надо ковырять страницу полимаркета дальше, что они там делают, чтобы выгрузить и показать все, что касается конкретного голосования. Нужно понимать ,что CLOB - это апишка по работе с ордербуком. А то, как полимаркет работает со своей страницей может отличаться.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий