API · עיון
קריאת נתוני שוק בפולימרקט אינה צריכה מפתח. ביצוע או ביטול פקודות צריך שתי שכבות אימות: חתימת ארנק L1 (EIP-712) כדי ליצור את פרטי ההזדהות של ה-API, וחתימת L2 מסוג HMAC בכל בקשה מאומתת. העמוד הזה מכסה את שתיהן, בתוספת ארבעת סוגי החתימה וכתובת ה-funder - שני הדברים שגורמים לרוב שגיאות האימות.
- קריאה (Gamma, Data, CLOB ציבורי) - ללא אימות.
- L1 - הארנק שלכם חותם על הודעת EIP-712 (דומיין ClobAuth גרסה
"1") כדי ליצור או לגזור פרטי הזדהות של API. - L2 - כל בקשת פקודה נחתמת ב-HMAC של
api_key/api_secret/api_passphrase.
צרו או גזרו את פרטי ההזדהות של ה-API (L1)
הארנק שלכם חותם פעם אחת כדי לטבוע (או לגזור מחדש) קבוצה דטרמיניסטית של פרטי הזדהות ל-API. השתמשו ב-SDK
של V2 - ה-py-clob-client של V1 (0.34.x) מאורכב ובלתי-פעיל.
from py_clob_client_v2 import ClobClient # pip install py-clob-client-v2
# L1: your wallet signs to derive API credentials
client = ClobClient(host="https://clob.polymarket.com", chain_id=137, key=PRIVATE_KEY)
creds = client.create_or_derive_api_key() # api_key, api_secret, api_passphrase
# L1 + L2: rebuild the client WITH creds for authenticated calls (no set_api_creds in v2)
client = ClobClient(host="https://clob.polymarket.com", chain_id=137, key=PRIVATE_KEY, creds=creds)
// polymarket_client_sdk_v2 - official Rust client (repo rs-clob-client-v2)
use polymarket_client_sdk_v2::clob::{Client, Config};
use polymarket_client_sdk_v2::clob::types::SignatureType;
let client = Client::new("https://clob.polymarket.com", Config::default())?
.authentication_builder(&signer)
.funder(deposit_wallet) // deposit wallets work in Rust today
.signature_type(SignatureType::Poly1271)
.authenticate().await?;
שמרו את שלושת הערכים כסודות (משתני סביבה). קריאת נתוני שוק לעולם אינה צריכה אותם.
סוגי חתימה (0-3)
סוג החתימה אומר לבורסה איך חתימת הפקודה שלכם ממופה לארנק שמחזיק את הכספים (ה-funder). בחרו את זה שתואם לאופן שבו נוצר החשבון שלכם.
| סוג | שם | מתי |
|---|---|---|
| 0 | EOA | ארנק רגיל (למשל MetaMask) שגם חותם וגם מחזיק כספים. |
| 1 | POLY_PROXY | הרשמה באימייל / Magic.link - ארנק פרוקסי מחזיק כספים; המפתח שלכם חותם בשמו. |
| 2 | POLY_GNOSIS_SAFE | Gnosis Safe מחזיק כספים; מפתח חותם חותם עבורו. |
| 3 | POLY_1271 | ארנק הפקדה (חתימת חוזה-חכם EIP-1271). |
כאשר המפתח החותם שונה מהכתובת שמחזיקה את הכספים (סוגים 1-3), עליכם להעביר גם
את המפתח הפרטי וגם את כתובת ה-funder.
py-clob-client-v2) וה-TypeScript (@polymarket/clob-client-v2) יש
באג פתוח: אימות ה-L1 כובל את מפתח ה-API ל-EOA שלכם במקום לארנק ההפקדה, ולכן פקודות
נדחות ("maker address not allowed, please use the deposit wallet flow"). לקוח ה-Rust
הרשמי מטפל נכון בחתימת ארנק הפקדה מסוג EIP-1271. פתרון עוקף שאינו Rust: השתמשו בחשבון אימייל/Magic
וחתמו עם signature_type = POLY_PROXY (סוג 1). בדקו מחדש את issues #70 (Python) / #65 (TS)
של פולימרקט לתיקון.חתימת בקשות (L2)
כל בקשה מאומתת נושאת חתימת HMAC הבנויה מסוד ה-API שלכם בתוספת שיטת הבקשה, הנתיב, הגוף וחותמת זמן. ה-SDK של V2 בונה עבורכם את הכותרות האלה. שני דברים שיש לשמור נכונים:
- שעון - סטייה של יותר מ-60 שניות בערך גורמת לדחיית החתימה. סנכרנו דרך NTP.
- דומיינים - דומיין ה-EIP-712 של L2/ClobAuth נשאר גרסה
"1"; רק דומיין ה-Exchange (הפקודה) של V2 עבר ל-"2". לקוח V1 חותם על דומיין הפקודה השגוי ונכשל - ראו order_version_mismatch.
בטיחות מפתחות
- לעולם אל תטמיעו בקוד מפתחות פרטיים או סודות API - השתמשו במשתני סביבה; לעולם אל תבצעו להם commit.
- שמרו את המפתח החותם וכתובת ה-funder נפרדים מהארנק היומיומי שלכם היכן שאפשר.
- בוטים לקריאה-בלבד אינם צריכים פרטי הזדהות כלל - התחילו שם.
הבא: CLOB API: ביצוע פקודה · תיקון שגיאת אימות · מעבר v1 ← v2.



