PolymarketClickHouse Workshops

01 Descubrir mercados

Inspecciona mercados públicos activos, resultados, identificadores de condición e identificadores de token CLOB.

Tu equipo
Terminal de macOS: Ejecuta los comandos del taller en Terminal con zsh o bash.

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.

En esta página

¿Quieres seguir tu progreso?

Opcional. Enviaremos un enlace por correo para confirmar tu dirección; el progreso se registrará cuando lo abras.

Usa tu correo de trabajo, no uno personal.

Para seguir el progreso también debes aceptar los Términos del servicio actuales en la Configuración de privacidad.

ES