מדריך Polymarket Bot · פרק 6 מתוך 32
אימות בוט של Polymarket והגדרת wallet: proxy wallets מול EOA, יצירת API key באמצעות SDK, sigType 2 עבור Gnosis Safe, שיטות מומלצות לאחסון מפתחות, והמעבר מ-Magic ל-Privy.
מה הפרק הזה מכסה
מודל ה-wallet של Polymarket כולל שלושה חלקים נעים: חשבון בבעלות חיצונית (EOA) שחותם על orders, proxy של חוזה חכם שמחזיק את הכספים, ו-Polymarket CLOB API key שמבצע אימות לבקשות HTTP. חיבור נכון של כל השלושה הוא הכשל הנפוץ ביותר ביום הראשון אצל בונים חדשים, וזה נעשה מבלבל עוד יותר אחרי המיגרציה מ-Magic Labs ל-Privy באוגוסט 2025. הפרק הזה עובר על כל רכיב לפי סדר ההגדרה, כולל משתני הסביבה הספציפיים ו-flag סוג החתימה שנדרשים בקוד ייצור.
- Proxy wallet מול EOA: עם מה כדאי לבוט
- יצירת API key (שלבי SDK)
- sigType 2 ו-POLY_FUNDER_ADDRESS (Gnosis Safe)
- אחסון מפתחות: .env, vault, KMS
- המיגרציה מ-Magic Labs ל-Privy
- אישור הוצאת USDC/pUSD
- שחזור wallet וגיבוי
Proxy wallet מול EOA: עם מה כדאי לבוט
Polymarket משתמשת בתבנית של smart-contract proxy wallet. ה-EOA שלכם - הכתובת שמקושרת למפתח הפרטי - חותמת על טרנזקציות ו-orders. Gnosis Safe שנפרס בכתובת דטרמיניסטית מחזיק את ה-pUSD ואת ה-outcome shares בפועל. כתובת ה-proxy היא מה שמופיע בלשונית "wallet" בממשק של Polymarket; ה-EOA היא מה שחותם.
עבור בוטים, תמיד חותמים עם ה-EOA (PRIVATE_KEY ב-env) ומפנים לכתובת ה-proxy כ-POLY_FUNDER_ADDRESS בהגדרת ה-CLOB client. שליחת orders עם ה-EOA כ-funder תייצר שגיאות "insufficient balance" גם כשה-proxy ממומן.
לא ניתן לבטח רק עם ה-EOA - זרימת ה-web של Polymarket תמיד יוצרת proxy בעת ההרשמה. אפשר לאמת את שתי הכתובות עם polymarket wallet show מה-CLI, או לקרוא את כתובת ה-proxy מתוך ההגדרות בממשק של Polymarket.
יצירת API key (שלבי SDK)
ה-CLOB API דורש שלושה פרטי גישה: key, secret, passphrase. אלה אינם המפתח הפרטי של ה-wallet שלכם - אלא סט credentials מסוג HMAC שמקושר ל-wallet, ומשמש רק לאימות בקשות HTTP.
יוצרים אותם פעם אחת באמצעות ה-SDK:
# Python
from py_clob_client.client import ClobClient
c = ClobClient(host="https://clob.polymarket.com", chain_id=137,
key="<PRIVATE_KEY>", signature_type=2,
funder="<PROXY_ADDRESS>")
creds = c.create_or_derive_api_creds()
print(creds.api_key, creds.api_secret, creds.api_passphrase)
שמרו את הפלט בקובץ JSON וטעינו אותו בכל הפעלה של הבוט; אל תיצרו מחדש בכל session - שרת ה-API שומר cache לסט ה-credentials, והחלפה תכופה יכולה להפעיל לוגיקת rate-limit. ה-credentials לא פגים אוטומטית. החליפו אותם רק אם יש חשד לדליפה.
sigType 2 ו-POLY_FUNDER_ADDRESS (Gnosis Safe)
הארגומנט signature_type קובע כיצד ה-CLOB מאמת את חתימות ה-order שלכם. קיימים שלושה ערכים; שניים מהם אמיתיים:
- 0 / EOA: ה-EOA הוא גם החותם וגם המממן. משמש להגדרות חריגות שבהן משתמשים ייבאו מפתח פרטי ישירות.
- 1 / POLY_PROXY: חוזה proxy ישן של Magic Labs. רוב החשבונות שנפתחו לפני 2025.
- 2 / POLY_GNOSIS_SAFE: הסטנדרט הנוכחי. הכספים ב-Gnosis Safe, וה-EOA חותם.
יש להשתמש ב-signature_type=2 עבור כל חשבון שנוצר אחרי אוגוסט 2025 (מיגרציית Privy) או כל חשבון שבו רואים כתובת Gnosis Safe בממשק של Polymarket. משתנה ה-env POLY_FUNDER_ADDRESS חייב להיות כתובת ה-Safe, לא ה-EOA. חוסר התאמה בין signature_type לסוג ה-funder יוצר בשקט דחיות של orders שנראות כמו "insufficient allowance" או "balance: 0" - הודעת השגיאה מטעה.
אחסון מפתחות: .env, vault, KMS
שלוש רמות אחסון סבירות למפתח הפרטי של ה-EOA.
- קובץ .env (פיתוח על מכונה אחת). הקובץ נמצא על ה-VPS, הבוט קורא אותו בעת ההפעלה, והמפתח לא יוצא מה-host. מתאים מספיק ל-wallets של פחות מ-< $1k. ודאו עם
chmod 600 .envש-.gitignoreשל הריפו שלכם לא כולל אותו. - vault מתארח-עצמית (HashiCorp Vault, קובץ מוצפן ב-age, או systemd-creds). מוסיף שלב פתיחה בעת הפעלת הבוט. שווה את זה עבור wallets בטווח של $1k-$10k.
- Cloud KMS (AWS KMS, GCP KMS). הבוט פונה ל-KMS כדי לפענח את המפתח בזיכרון; המפתח לעולם לא נוגע בדיסק. שווה את המורכבות התפעולית רק מעל $10k או עבור fleets של כמה בוטים.
מה אסור לעשות: לבצע commit למפתח פרטי ל-git, להדביק אותו בצ'אט, לאחסן אותו ב-password manager שמסנכרן ל-cloud services בלי מצב local-only. רדיוס הפיצוץ on-chain של דליפת EOA ב-Polymarket הוא כל יתרת ה-pUSD שלכם וכל מלאי ה-outcome shares.
המיגרציה מ-Magic Labs ל-Privy
באוגוסט 2025 Polymarket עברה מספק ה-embedded wallet הראשי שלה מ-Magic Labs ל-Privy. ההשפעה על הבוט קטנה אבל ספציפית.
חשבונות שלפני המיגרציה (שנוצרו דרך Magic) משתמשים בדרך כלל ב-signature_type=1 (POLY_PROXY). חשבונות שאחרי המיגרציה משתמשים ב-signature_type=2 (POLY_GNOSIS_SAFE). חלק מהמשתמשים העבירו את החשבון הישן שלהם; אחרים שמרו על המקורי. אין דרך לדעת דרך ה-API הציבורי איזה סוג החשבון שלכם משתמש - בודקים זאת על ידי ניסיון לחתום על order ולצפות בדחייה.
המיגרציה גם שינתה את הדרך שבה ה-UI מציג את כתובת ה-funder. בזרימות ישנות של Polymarket הוצגה כתובת ה-proxy בדשבורד; בזרימה הנוכחית היא מוסתרת בהגדרות החשבון. פקודת ה-CLI polymarket wallet show היא הדרך הנקייה ביותר לאמת את שני הערכים, בלי קשר למועד יצירת החשבון.
אישור הוצאת USDC/pUSD
כדי שה-CLOB יעביר את ה-pUSD שלכם בעת התאמת order, ה-proxy חייב לאשר לחוזי ה-exchange של Polymarket לפעול כ-spenders. ה-UI של Polymarket מגדיר את האישורים האלה במהלך ההפקדה הראשונה. עבור בוטים שמממנים את ה-proxy ישירות, צריך להגדיר אותם ידנית.
שלושה אישורים להגדרה, פעם אחת לכל wallet:
- pUSD (ERC-20) → חוזה exchange
- Conditional Tokens (ERC-1155) → חוזה exchange (למכירת shares)
- Conditional Tokens (ERC-1155) → חוזה NegRisk exchange (למכירת shares של NegRisk)
הריצו polymarket approve מה-CLI בהגדרה הראשונה. הטרנזקציה עולה כמה סנטים ב-gas של MATIC. אימות עושים עם polymarket approve check - שלושתן צריכות להחזיר "approved." הבאג השקט הנפוץ ביותר אצל בונים חדשים הוא היעדר אישור ל-NegRisk, שנכשל רק בעת מכירת shares ב-markets מרובי תוצאות ונראה כמו שגיאת יתרה.
שחזור wallet וגיבוי
ל-wallet של הבוט יש שני רכיבים שניתן לשחזר: המפתח הפרטי של ה-EOA, וסיסמת חשבון Polymarket (ששולטת בגישה דרך ה-web UI אבל לא דרך ה-SDK).
המפתח הפרטי של ה-EOA הוא הדבר היחיד שבאמת חשוב לבוט. אובדן = אובדן של כל מה שב-proxy. גיבוי קר: כתבו אותו על נייר, סגרו במעטפה, ואחסנו מחוץ לאתר. גיבוי חם: כונן USB מוצפן. לעולם אל תשלחו אותו לעצמכם במייל; לעולם אל תאחסנו לא מוצפן באחסון ענן.
סיסמת חשבון Polymarket ניתנת לשחזור דרך Magic Labs / Privy email recovery כל עוד יש לכם שליטה על כתובת האימייל המקורית ששימשה בהרשמה. היא לא חוסמת גישה לבוט - הבוט משתמש ישירות במפתח הפרטי של ה-EOA.
אם יש חשד לדליפת מפתח: מיד משכו את ה-pUSD ואת ה-outcome tokens ל-wallet חדש, צרו EOA חדש, ופרסו מחדש את הבוט עם המפתח החדש. אי אפשר לבטל מפתח שדלף; אפשר רק לרוקן אותו.












