Kapitel 36 von 36

Die Kurzfassung

Am 28. April 2026 migrierte Polymarket seine Abwicklungssicherheit auf Polygon von USDC.e (dem gebridgten USDC-Token, Contract 0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174) zu pUSD, einem von Polymarket ausgegebenen Stablecoin, der 1:1 in natives USDC einlösbar ist. Web-App-Trader taten nichts - Guthaben und Positionen wurden am Snapshot-Block automatisch umgewandelt. API- und Bot-Betreiber müssen aktualisieren: Die Adresse des Sicherheiten-Assets in jeder CLOB-Order-Signatur hat sich geändert, alte gegen USDC.e signierte Orders wurden storniert, und py-clob-client 0.40 oder neuer ist erforderlich. Dieser Leitfaden geht die genauen Code-, Contract- und Genehmigungsänderungen durch, die nötig sind, um einen Bot durch den Umstieg und danach am Laufen zu halten.

Was du lernst: warum Polymarket von USDC.e weggegangen ist, was sich auf Contract-Ebene geändert hat, der genaue py-clob-client-Upgrade-Pfad, wie man Allowances für die neue Sicherheit neu genehmigt, wie man sein Guthaben nach dem Tausch verifiziert und wie man den Legacy-USDC.e-Staub handhabt, den die meisten Konten jetzt halten.
Voraussetzungen: Du solltest bereits ein funktionierendes Polymarket-Konto haben, grundlegende Vertrautheit mit Polygon-Contracts und einen bestehenden Bot oder manuellen API-Ablauf, der vor dem 28. April 2026 entstand. Wenn du heute frisch anfängst, installiere einfach das neueste SDK und spring zu Kapitel Vier - du wirst USDC.e nie anfassen müssen.
01
Kapitel Eins

Teil 1: Drei Stablecoins, ein Polygon

Vor der Migration existierten drei USD-Stablecoins in Polymarkets Umlaufbahn auf Polygon. Den Unterschied zu kennen ist der erste Schritt, um zu verstehen, warum Polymarket den Schauplatz wechselte.

TokenHerausgeberContract auf PolygonReserve-Typ
USDC.ePolygon-PoS-Bridge0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174Gebridgt vom Ethereum-Mainnet
USDC (nativ)Circle0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359Nativ, direkt auf Polygon ausgegeben
pUSDPolymarket TreasurySiehe docs.polymarket.com/pusd1:1 durch natives USDC gedeckt, monatliche Attestierung

Polymarket wählte ursprünglich USDC.e, weil es bei Start 2020 die dominierende USDC-Variante auf Polygon war. Circle gab später natives USDC direkt auf Polygon heraus und signalisierte die letztliche Abschaffung der gebridgten Variante. Jeden Markt weiterhin in USDC.e abzuwickeln setzte Polymarket dem Long-Tail-Risiko einer plötzlichen Bridge-Abwicklung aus. Die Migration zu einem Polymarket-kontrollierten Stablecoin löst das und schaltet künftige Produktfunktionen frei (z. B. Perps-Margin, Vault-Einzahlungen, Cross-Chain-Quittungen), die dieselbe Recheneinheit teilen.

02
Kapitel Zwei

Teil 2: Was pUSD ist (und was nicht)

pUSD ist ein standardmäßiger ERC-20-Token auf Polygon (Chain-ID 137) mit 6 Dezimalstellen, dieselbe Präzision wie USDC. Er ist nur durch den Polymarket-Treasury-Contract mintbar und jederzeit 1:1 in natives USDC einlösbar, ohne Gebühr auf die Umwandlung (Netzwerk-Gas fällt weiterhin an). Die pUSD deckende Reserve wird in getrennten Konten gehalten und monatlich mit einer Drittpartei-Attestierung gemeldet.

pUSD ist kein algorithmischer Stablecoin, ist nicht mit Krypto überbesichert und ist nicht renditetragend. Wenn du pUSD außerhalb von Polymarket hältst, solltest du ihn als von Polymarket ausgegebenen Schuldschein für natives USDC betrachten - nützlich innerhalb der Plattform, auf Abruf einlösbar, aber ohne Vorteil, ihn langfristig in einer externen Wallet zu halten.

Audit und Reserven: Der pUSD-Smart-Contract wurde von Polymarkets ständigen Auditoren geprüft. Reserve-Attestierungsberichte werden monatlich unter docs.polymarket.com/pusd-audit veröffentlicht. Verifiziere beide, bevor du langfristig große Guthaben hältst.
03
Kapitel Drei

Teil 3: Was Web-App-Trader sahen

Wenn du nur über polymarket.com handelst, war die Migration unsichtbar. Am Snapshot-Block am 28. April 2026:

  • Jedes USDC.e-Guthaben in einer Polymarket-Proxy-Wallet wurde atomar 1:1 in pUSD umgewandelt.
  • Offene Positionen behielten denselben Dollarwert, dieselben Ausgangsquoten und denselben Ablauf. Conditional-Token-IDs änderten sich nicht.
  • In USDC.e denominierte liegende Orders wurden am Snapshot storniert. Neue Orders nach der Migration signieren automatisch gegen pUSD.
  • Auszahlungen an externe Wallets wechselten vom Senden von USDC.e zum Senden von nativem USDC (oder auf Anfrage rohem pUSD - die meisten Nutzer brauchen das nie).

Keine Signaturen, Transaktionen oder Einstellungsänderungen waren nötig. Liegende Limit-Orders, die dir wichtig waren, solltest du nach der Migration manuell neu platzieren; die Stornierung war ein einmaliges Ereignis.

04
Kapitel Vier

Teil 4: API- und Bot-Betreiber - kritische Änderungen

Das ist der Teil, der einen Bot kaputtmacht, wenn du nicht handelst.

Was sich in der Order-Signatur änderte: CLOB-Orders werden per EIP-712 signiert und referenzieren die Sicherheiten-Asset-Adresse als Teil der typisierten Daten. Vor der Migration war diese Adresse USDC.e (0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174). Nach der Migration ist es pUSD. Eine gegen die alte Adresse signierte Order schlägt bei der Signaturprüfung im CLOB fehl und gibt einen „invalid maker asset“- oder „signature mismatch“-Fehler zurück.

py-clob-client aktualisieren

Polymarket veröffentlichte py-clob-client 0.40.0 zwei Wochen vor dem Umstieg mit voller pUSD-Unterstützung. Die 0.34.x-Linie wurde am Tag nach der Migration eingestellt.

# Bump to a pUSD-aware release
pip install --upgrade "py-clob-client>=0.40.0"

# Verify the wired collateral asset
python -c "from py_clob_client.constants import POLYGON; \
print('pUSD address:', POLYGON.get('collateral'))"

Das neue SDK zieht die Sicherheiten-Adresse beim Start aus der Chain-Konfiguration, du musst also nichts hartcodieren. Wenn du eine ältere Version geforkt oder gepinnt hast, ist der sicherste Zug, die Lockfile zu löschen, mit dem neuesten Constants-Modul neu zu installieren und deine Test-Suite erneut auszuführen.

Allowances neu genehmigen

Deine Polymarket-Proxy-Wallet braucht eine ERC-20-Allowance von deinem Handelskonto → CTF-Exchange-Contract für den pUSD-Token. Die alte Allowance für USDC.e ist noch on-chain, aber komplett nutzlos: CLOB wird sie nicht verbrauchen. Ohne eine frische pUSD-Allowance gibt jede Order "INSUFFICIENT_ALLOWANCE" zurück.

from py_clob_client.client import ClobClient

client = ClobClient(
    host="https://clob.polymarket.com",
    chain_id=137,
    key=os.environ["POLY_PRIVATE_KEY"],
    funder=os.environ["POLY_FUNDER"],
    signature_type=1,  # POLY_PROXY for Magic-link accounts
)
client.set_api_creds(client.create_or_derive_api_creds())

# One-time: approve pUSD for the CTF Exchange contract
# (Helper added in py-clob-client 0.40)
client.update_balance_allowance(asset_type="COLLATERAL")

API-Anmeldedaten erneuern

Bestehende API-Keys funktionieren weiter, aber wenn du Anmeldedaten vor dem 1. April abgeleitet hast, solltest du sie vorsichtshalber rotieren: Die L1-ECDSA-Signatur bindet nun an eine Domain, die die neue Sicherheiten-Adresse einschließt. Der einfachste Weg:

creds = client.create_or_derive_api_creds()  # idempotent re-derive
client.set_api_creds(creds)

# Persist to your .env
print(creds.api_key, creds.api_secret, creds.api_passphrase)
05
Kapitel Fünf

Teil 5: Deinen Bot nach der Migration verifizieren

Führe diesen minimalen Smoke-Test aus, bevor du irgendeine Sizing-Logik auf echtes Geld loslässt:

# 1. Confirm pUSD balance on the proxy wallet
from py_clob_client.client import ClobClient
client = ClobClient(...)  # as above
balance = client.get_balance_allowance(params={"asset_type": "COLLATERAL"})
print("pUSD balance (raw):", balance["balance"])
print("Allowance to exchange:", balance["allowance"])

# 2. Place a $1 limit order well off the touch
from py_clob_client.clob_types import OrderArgs
order = client.create_order(OrderArgs(
    token_id=test_token_id,
    price=0.05,        # nowhere near the market
    size=20,           # $1 notional at $0.05
    side="BUY",
))
resp = client.post_order(order)
print(resp)

# 3. Cancel and confirm
client.cancel(order_id=resp["orderID"])

Wenn alle drei Aufrufe erfolgreich sind, ist deine Verdrahtung gut: Das SDK signierte gegen pUSD, die Allowance wird erkannt, und das Order-Ledger ist konsistent. Skaliere allmählich wieder hoch.

Timing des Upgrades sorgfältig wählen: Wenn du den Bot durchgehend über den Snapshot-Block laufen ließest, ist dein lokaler Orderbuch-Zustand wahrscheinlich abgewichen. Gleiche nach einer großen Schauplatzänderung immer gegen REST-Snapshots ab, bevor du Größe quotest.
06
Kapitel Sechs

Teil 6: Häufige Fehler und Lösungen

Fehler oder SymptomUrsacheLösung
signature verification failedOrder gegen USDC.e-EIP-712-Domain signiertpy-clob-client auf 0.40+ aktualisieren; Constants-Modul neu laden
INSUFFICIENT_ALLOWANCE bei jeder OrderKeine pUSD-Allowance von deinem Proxy zum CTF-Exchangeupdate_balance_allowance(asset_type="COLLATERAL") einmal ausführen
invalid maker assetHartcodierte USDC.e-Adresse noch in deiner KonfigurationJede hartcodierte Sicherheiten-Adresse durch die SDK-Konstante ersetzen
Wallet zeigt USDC.e-Guthaben > 0 nach der Migration„Staub“-Token von einer Drittpartei-Übertragung übrigUSDC.e zurück in natives USDC über Circles CCTP bridgen, oder liegen lassen
WebSocket-Reconnect erzeugt leeres BuchAlte Subscription nutzte einen veralteten Marktzustand von vor dem SnapshotLokalen Cache verwerfen, REST-Buch neu abrufen, dann neu subscriben
Auszahlung an externe Wallet zeigt pUSD statt USDCDu hast im Auszahlungsdialog „pUSD“ statt „USDC“ gewählt„USDC“ wählen - die Bridge wandelt pUSD → natives USDC 1:1 um
07
Kapitel Sieben

Teil 7: Conditional Tokens, Order-IDs und andere Dinge, die sich nicht änderten

Um den Refactor-Umfang ehrlich zu halten, hier die Liste der Identifikatoren, die über die Migration hinweg stabil sind:

  • Conditional-Token-Contract (CTF): identische Adresse. Deine YES-/NO-ERC-1155-Positionen sind unberührt.
  • condition_id und question_id: deterministisch aus Marktparametern; nicht vom Sicherheiten-Tausch betroffen.
  • token_id (Outcome): abgeleitet aus condition_id + Outcome-Index; unverändert.
  • Polymarket-Proxy-Wallet-Adresse: dieselbe Adresse; derselbe Gnosis-Safe-artige Code.
  • API-Key, API-Secret, API-Passphrase: weiterhin gültig (Rotation empfohlen; nicht erforderlich).
  • WebSocket-Schemas: identisch; das neue asset-Feld liest „pUSD“ statt „USDC.e“ in Fill-Events.
  • Gamma- und Data-APIs: unauthentifiziert, unverändert. Sie referenzierten den Sicherheiten-Token nie direkt.
Eine kleine UI-Änderung: Die Polymarket-Proxy-Wallet-Ansicht zeigt Guthaben nun in pUSD, mit einem 1:1-USD-Label. Block-Explorer (PolygonScan, Polygonscan-API) zeigen pUSD-ERC-20-Transfers in der Transaktionshistorie der Proxy-Wallet. Alte USDC.e-Transfers bleiben in der Historie sichtbar; deine Adresse wird einfach eine Zeitlang zwei ERC-20-Token-Zeilen haben.
08
Kapitel Acht

Teil 8: Steuer- und Buchhaltungs-Auswirkungen

Für die meisten Rechtsordnungen ist die Auto-Umwandlung von USDC.e zu pUSD ein gleichartiger Tausch von USD-gekoppelten Stablecoins zu 1:1 und erzeugt kein steuerpflichtiges Ereignis. Deine Kostenbasis und Haltedauer werden übertragen.

Dennoch verdienen zwei Buchhaltungspunkte Aufmerksamkeit:

  1. Aktualisiere dein Ledger-Schema. Jedes Steuer-Tool, jedes SQLite-Ledger oder jeder Buchhalter-Export, der Polygon-Transaktionen nach dem USDC.e-Contract filtert, wird jede Transaktion nach der Migration stillschweigend verpassen. Füge die pUSD-Contract-Adresse als Alias hinzu.
  2. Annotiere die Snapshot-Umwandlung. Auch wenn sie in den meisten Regimen nicht steuerpflichtig ist, protokolliere die Umwandlung explizit in deinen Aufzeichnungen: Betrag, Block, Zeitstempel und ein Vermerk, dass es eine 1:1-Stablecoin-Migration ist. Falls deine Rechtsordnung es später abfragt, willst du einen sauberen Prüfpfad.

Israelische Trader sollten den Steuer-Leitfaden für ITA-spezifische Meldung konsultieren; die Migration selbst ändert die Standardbehandlung nicht, aber die Contract-Adressänderung ist für automatisierte Meldetools relevant.

09
Kapitel Neun

Teil 9: Profi-Tipps von Betreibern, die den Umstieg miterlebten

  1. Pinne py-clob-client auf >=0.40,<0.50 in requirements.txt. Die 0.40-Linie ist das Minimum, das pUSD-Orders korrekt signiert; eine obere Grenze zu pinnen schützt vor einer künftigen Breaking Change.
  2. Genehmige Allowances während eines Fensters mit niedrigem Volumen neu. Der update_balance_allowance-Aufruf ist eine Polygon-Transaktion; ihn während einer schnellen Marktbewegung zu machen, ruft den Gas-Spike geradezu herbei.
  3. Snapshotte dein USDC.e-Guthaben vor dem 28. April. Auch wenn die Umwandlung automatisch ist, ist ein verifizierbares Vor-Snapshot-Guthaben der sauberste Weg, ein Abgleichsproblem zu bestreiten.
  4. Storniere liegende Orders manuell vor dem Snapshot. Sie wurden vom Schauplatz ohnehin storniert; es selbst zu tun gibt dir einen sauberen Ledger-Eintrag statt einer „System-Cancel“-Zeile.
  5. Achte auf veraltete Dashboards. Drittpartei-Polymarket-Dashboards (PolymarketAnalytics, Polynance usw.) brauchten zwei bis drei Tage, um pUSD-Events neu zu parsen. Die lokale DB deines Bots könnte öffentlichen Dashboards für ein paar Tage voraus sein.
  6. Bridge USDC.e-Staub nach deinem eigenen Zeitplan. Die meisten Konten haben ein paar Cent übrig gebliebenes USDC.e von alten Gebühren-Rebates oder Peer-Transfers. Nutze Circles CCTP oder die Standard-Polygon-Portal-Bridge - keine Eile.
  7. Behalte die alte USDC.e-Adresse in deinen Block-Explorer-Alarmen. Falls je etwas aus deinem Proxy in USDC.e nach der Migration abfließt, ist das ein Warnsignal, das sofortige Untersuchung wert ist.

Was kommt als Nächstes?

Wichtigste Erkenntnis

Die Polymarket-pUSD-Migration ist ein risikoarmer einmaliger Refactor für jeden Betreiber, der bereits einen Polymarket-Bot betreibt. Bring py-clob-client auf 0.40+, genehmige pUSD-Allowances neu, führe einen 1-$-Smoke-Test aus und mach weiter. Die Infrastruktur darunter (CTF, Condition-IDs, Token-IDs, API-Keys) änderte sich nicht, also ist die Angriffsfläche klein und die Rollback-Geschichte sauber.