PolymarketClickHouse Workshops

01 Descobrir mercados

Examine mercados públicos ativos, resultados, IDs de condição e IDs de token CLOB.

Seu computador
Terminal do macOS: Execute os comandos do workshop no Terminal usando zsh ou bash.

Ponto de partida

Você está em workshop_public/polymarket, .env.polymarket foi carregado e o preflight está pronto.

Por quê

O Polymarket usa um ID de condição para o mercado e um ID de token diferente para cada resultado. O WebSocket assina por ID de token; a API pública de negociações filtra por ID de condição.

Etapa 1 — Pedir ao Gamma os cinco mercados ativos mais movimentados

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
'

Esperado: cinco perguntas. Cada uma mostra um hash de condição com 66 caracteres e um ID de token por resultado. As perguntas exatas mudam conforme o mercado ao vivo.

Etapa 2 — Confirmar negociações públicas de uma condição

Copie um ID de condição da saída:

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"])
'

Uma resposta vazia é válida para um mercado parado. Escolha outra condição se quiser ver linhas de negociação imediatamente. Nenhuma autenticação é usada.

Etapa 3 — Entender a seleção do coletor

Na inicialização, o coletor repete a Etapa 1, seleciona cinco mercados, interpreta os arrays JSON de resultados/tokens e armazena as duas linhas de resultado em polymarket.markets. Você não codifica os IDs de token de hoje em .env.polymarket.

Concluído quando

  • você conseguir identificar o ID da condição e os dois IDs de token de resultado de um mercado; e
  • o comando de negociações públicas retornar JSON, mesmo que o array esteja vazio.

Próximo: criar o modelo de dados no ClickHouse.

Nesta página

Acompanhar seu progresso?

Opcional. Enviaremos um link por e-mail para confirmar seu endereço; o progresso será registrado depois que você o abrir.

Use seu e-mail corporativo, não um endereço pessoal.

O acompanhamento do progresso também exige a aceitação dos Termos de Serviço atuais nas Configurações de privacidade.

PT