01 Descubrir mercados
Inspecciona mercados públicos activos, resultados, identificadores de condición e identificadores de token CLOB.
Punto de partida
Estás en workshop_public/polymarket, .env.polymarket está cargado y el preflight está listo.
Por qué
Polymarket utiliza un identificador de condición para el mercado y otro identificador de token para cada resultado. WebSocket se suscribe por token; la API pública de operaciones filtra por condición.
Paso 1 — Pedir a Gamma los cinco mercados activos con mayor actividad
curl --fail --silent --show-error --get \
'https://gamma-api.polymarket.com/markets' \
--data-urlencode 'active=true' \
--data-urlencode 'closed=false' \
--data-urlencode 'limit=20' \
--data-urlencode 'order=volume24hr' \
--data-urlencode 'ascending=false' \
| python3 -c '
import json, sys
selected = 0
for market in json.load(sys.stdin):
if not market.get("acceptingOrders"):
continue
outcomes = json.loads(market["outcomes"])
tokens = json.loads(market["clobTokenIds"])
print(market["question"])
print(" condition:", market["conditionId"])
for outcome, token in zip(outcomes, tokens):
print(f" {outcome}: {token}")
selected += 1
if selected == 5:
break
'Resultado esperado: cinco preguntas. Cada una muestra un hash de condición de 66 caracteres y un identificador de token por resultado. Las preguntas exactas cambian con el mercado en vivo.
Paso 2 — Confirmar operaciones públicas de una condición
Copia un identificador de condición de la salida:
export POLYMARKET_CONDITION_ID='0x...'
curl --fail --silent --show-error --get \
'https://data-api.polymarket.com/trades' \
--data-urlencode "market=$POLYMARKET_CONDITION_ID" \
--data-urlencode 'limit=3' \
| python3 -c '
import json, sys
for trade in json.load(sys.stdin):
print(trade["outcome"], trade["side"], trade["size"], "@", trade["price"])
'Una respuesta vacía es válida para un mercado tranquilo. Elige otra condición si quieres ver filas de operaciones de inmediato. No se utiliza autenticación.
Paso 3 — Entender la selección del colector
Al iniciarse, el colector repite el Paso 1, selecciona cinco mercados, interpreta los arrays JSON
de resultados/tokens y guarda ambas filas de resultado en polymarket.markets. No codifiques los
identificadores de token actuales en .env.polymarket.
Terminado cuando
- puedas identificar el identificador de condición y los dos identificadores de token de un mercado; y
- el comando de operaciones públicas devuelva JSON, aunque el array esté vacío.
Siguiente: crear el modelo de datos de ClickHouse.