PolymarketClickHouse Workshops

01 Découvrir les marchés

Examinez les marchés publics actifs, leurs résultats, identifiants de conditions et identifiants de tokens CLOB.

Votre ordinateur
Terminal macOS : Exécutez les commandes de l’atelier dans le Terminal avec zsh ou bash.

Point de départ

Vous êtes dans workshop_public/polymarket, .env.polymarket est chargé et le preflight est prêt.

Pourquoi

Polymarket utilise un identifiant de condition pour un marché et un identifiant de token distinct pour chaque résultat. Le WebSocket s'abonne par token ; l'API publique des transactions filtre par condition.

Étape 1 — Demander à Gamma les cinq marchés actifs les plus dynamiques

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
'

Résultat attendu : cinq questions. Chacune affiche un hash de condition de 66 caractères et un identifiant de token par résultat. Les questions exactes évoluent avec le marché en direct.

Étape 2 — Confirmer les transactions publiques d'une condition

Copiez un identifiant de condition de la sortie :

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

Une réponse vide est valide pour un marché calme. Choisissez une autre condition pour voir des transactions immédiatement. Aucune authentification n'est utilisée.

Étape 3 — Comprendre la sélection du collecteur

Au démarrage, le collecteur répète l'Étape 1, sélectionne cinq marchés, analyse les tableaux JSON de résultats/tokens et stocke les deux résultats dans polymarket.markets. Ne codez pas en dur les identifiants actuels dans .env.polymarket.

Terminé lorsque

  • vous savez identifier la condition et les deux tokens de résultat d'un marché ; et
  • la commande de transactions publiques renvoie du JSON, même si le tableau est vide.

Suite : créer le modèle de données ClickHouse.

Sur cette page

Suivre votre progression ?

Facultatif. Nous envoyons un lien par e-mail pour confirmer votre adresse ; la progression est enregistrée après son ouverture.

Utilisez votre adresse e-mail professionnelle, et non une adresse personnelle.

Le suivi de la progression exige aussi d’accepter les Conditions d’utilisation actuelles dans les Paramètres de confidentialité.

FR