مصادقة المحفظة
صادِق باستخدام حمولة Sign-In-With-X موقّعة في ترويسة
X-Sign-In-With-X.ادفع بـ USDC
احتفظ برصيد قابل للإنفاق باستخدام USDC على Base أو Solana.
DIEM أولًا
إذا كانت المحفظة مرتبطة بحساب Venice يمتلك رصيد DIEM، فيُنفَق ذلك أولًا.
ما هو X402؟
X402 هو معيار دفع مفتوح يسمح للتطبيقات والوكلاء بالدفع مقابل الخدمات برمجيًا باستخدام العملة المشفّرة. تدعم Venice X402 بحيث يمكن للمحافظ المصادقة والدفع مقابل الاستدلال مباشرة بـ USDC على Base أو Solana.المتطلبات المسبقة
- محفظة على Base أو Solana
- عملة أصلية للغاز على السلسلة المختارة، مثل ETH على Base أو SOL على Solana
- USDC على السلسلة المختارة (أو رصيد مدعوم بـ DIEM قائم من حساب Venice مرتبط)
البدء السريع
يوفّر SDKvenice-x402-client أدوات مساعدة لمصادقة المحفظة وشحن الرصيد وتتبّع الرصيد.
X-Sign-In-With-X جديدة لكل طلب ويتتبّع الرصيد تلقائيًا من ترويسات الاستجابة X-Balance-Remaining.
مع الأدوات المتوافقة مع OpenAI
إذا كنت تستخدم أداة تقبلfetch مخصّصًا، استخدم createAuthFetch لإضافة مصادقة المحفظة إلى أي طلب:
الأدوات المساعدة المتاحة
يتضمّن الـ SDK أدوات مساعدة من الدرجة الأولى لأكثر مسارات Venice x402 شيوعًا. لما هو غير مغطّى، استخدمrequest() أو createAuthFetch() مباشرة.
| الفئة | الدوال |
|---|---|
| Chat | chat(), chatStream() |
| Responses | responses.create(), responses.stream() |
| Images | images.generate(), images.generations(), images.upscale(), images.edit(), images.multiEdit(), images.backgroundRemove() |
| Audio | audio.speech(), audio.transcribe(), audio.queue(), audio.retrieve(), audio.complete() |
| Video | video.queue(), video.retrieve(), video.generate(), video.complete(), video.transcribe() |
| Embeddings | embeddings() |
| Models | models() |
| Wallet | getBalance(), getTransactions(), topUp() |
التدفّق اليدوي
إذا كنت لا تستخدم الـ SDK أو تحتاج إلى فهم البروتوكول الأساسي، فإليك التدفّق خطوة بخطوة. لمحفظة جديدة، افترض أنك تحتاج إلى شحن الرصيد أولًا ما لم تكن تمتلك بالفعل رصيد DIEM قابلًا للإنفاق.الخطوة 1: إنشاء ترويسة X-Sign-In-With-X
تتوقّع Venice حمولة JSON مشفّرة بـ Base64 تحتوي على رسالة Sign-In-With-X موقّعة. توقّع محافظ EVM رسالة SIWE وفق EIP-4361 على Base. وتوقّع محافظ Solana رسالة SIWX الخاصة بـ Solana بـ Ed25519. أنشئ nonce وطابعًا زمنيًا جديدين لكل تدفّق طلب. بالنسبة لـ Solana، اضبطchainId على solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp، وضمّن type: "ed25519" في حمولة JSON المشفّرة، وقدّم توقيع Ed25519 كـ base58 أو base64. تبدأ الرسالة الموقّعة بـ <domain> wants you to sign in with your Solana account:، يتبعها عنوان المحفظة والحقول القياسية URI وVersion وChain ID وNonce وIssued At وExpiration Time الاختياري.
الخطوة 2: التحقق من الرصيد
قبل إجراء طلب مدفوع، تحقّق من أن المحفظة تمتلك رصيدًا قابلًا للإنفاق:canConsume: ما إذا كانت المحفظة قادرة على إجراء طلبات مدفوعةbalanceUsd: الرصيد القابل للإنفاق الحاليminimumTopUpUsdوsuggestedTopUpUsd: إرشادات لشحن الرصيدdiemBalanceUsd: الرصيد المدعوم بـ DIEM، إن وُجد
walletAddress إما عنوان EVM (0x...) أو عنوان Solana بصيغة base58.
الخطوة 3: شحن الرصيد
اشحن باستخدام USDC على Base أو Solana:402 Payment Required مع ترويسة PAYMENT-REQUIRED تحتوي على مصفوفة accepts. كل عنصر يصف خيار دفع مقبولًا واحدًا، بما في ذلك network وasset وpayTo وamount. اختر خيار Base أو Solana الذي تريد الدفع به، واستخدم تلك التفاصيل الدقيقة لبناء ترويسة X-402-Payment، ثم أعد إرسال نفس المسار.
بناء ترويسة X-402-Payment لـ Base
ينشئ السكربت التالي دفعة x402 موقّعة على Base ويرسل طلب الشحن. يتطلّب حزمتي npmx402 وviem.
استخدم أحدث استجابة
PAYMENT-REQUIRED / accepts كمصدر للحقيقة في الإنتاج بدلًا من تثبيت هذه القيم برمجيًا. لشحنات Solana، ابنِ الدفعة من عنصر Solana المُرجَع في accepts. تستخدم عناصر Solana network: "solana"، وعملة USDC mint كـ asset، وقد تتضمّن بيانات وصفية خاصة بالشبكة مثل extra.feePayer.الخطوة 4: إجراء طلب
بمجرد أن تمتلك المحفظة رصيدًا قابلًا للإنفاق، استدعِ أي نقطة نهاية مدعومة باستخدام ترويسةX-Sign-In-With-X:
X-Balance-Remaining.
الخطوة 5: فحص المعاملات (اختياري)
راجع سجلّ معاملات المحفظة:TOP_UP وCHARGE وREFUND.
يقبل معامل المسار walletAddress إما عنوان EVM (0x...) أو عنوان Solana بصيغة base58.
المسارات المدعومة
مسارات الاستدلال المدفوعة
تدعم مسارات Venice المدفوعة العامة التالية مصادقة محفظة x402 حاليًا.| الفئة | نقاط النهاية |
|---|---|
| Chat | POST /api/v1/chat/completions, POST /api/v1/responses |
| Image | POST /api/v1/image/generate, POST /api/v1/images/generations, POST /api/v1/image/upscale, POST /api/v1/image/edit, POST /api/v1/image/multi-edit, POST /api/v1/image/background-remove |
| Embeddings | POST /api/v1/embeddings |
| Audio | POST /api/v1/audio/speech, POST /api/v1/audio/transcriptions, POST /api/v1/audio/complete, POST /api/v1/audio/queue, POST /api/v1/audio/retrieve |
| Video | POST /api/v1/video/complete, POST /api/v1/video/queue, POST /api/v1/video/retrieve, POST /api/v1/video/transcriptions |
مسار شحن الرصيد
| نقطة النهاية | المصادقة | الغرض |
|---|---|---|
POST /api/v1/x402/top-up | الطلب الأولي: لا شيء. إعادة المحاولة: X-402-Payment | إضافة رصيد USDC إلى الرصيد القابل للإنفاق للمحفظة باستخدام خيار دفع مقبول على Base أو Solana |
مسارات المحفظة فقط
تستخدم هذه المساراتX-Sign-In-With-X للهوية لكنها لا تخصم من الرصيد.
| نقطة النهاية | الغرض |
|---|---|
GET /api/v1/x402/balance/{walletAddress} | التحقق من الرصيد القابل للإنفاق لعنوان محفظة EVM أو Solana |
GET /api/v1/x402/transactions/{walletAddress} | عرض سجلّ المعاملات لعنوان محفظة EVM أو Solana |
الأخطاء
| الحالة | السبب المحتمل | ما يجب فعله |
|---|---|---|
401 | حمولة Sign-In-With-X مشوّهة أو منتهية الصلاحية | أعد بناء X-Sign-In-With-X بـ nonce وطابع زمني جديدين |
402 على مسار مدفوع | الرصيد القابل للإنفاق غير كافٍ | اشحن وأعد المحاولة |
402 على /x402/top-up | متوقّع. هذا هو تدفّق بدء الدفع. | استخدم تفاصيل الدفع المُرجَعة لبناء X-402-Payment وأعد المحاولة |
403 على الرصيد أو المعاملات | عدم تطابق المحفظة | تأكّد من أن المحفظة المُصادق عليها تطابق معامل المسار walletAddress |
400 على شحن الرصيد | ترويسة دفع مشوّهة | أعد البناء من أحدث استجابة 402 |
للوكلاء
التدفّق هو نفسه. خزّن المفاتيح الخاصة في متغيرات البيئة أو في مدير أسرار، وتحقّق من الرصيد قبل الطلبات لتجنّب رحلات402 غير الضرورية.
مصادر ذات صلة
SDK عميل x402
عميل Venice x402 الرسمي لـ Node.js/TypeScript.
تسعير API
تحقّق من تسعير النماذج وكيفية احتساب Venice للاستخدام.
Chat Completions
مسار مدفوع شائع للوصول القائم على المحفظة.
مواصفات API
وثائق مرجعية ووصول إلى المواصفات الخام.