الانتقال إلى المحتوى الرئيسي
POST
/
crypto
/
rpc
/
{network}
curl --request POST \
  --url https://api.venice.ai/api/v1/crypto/rpc/{network} \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "jsonrpc": "2.0",
  "method": "eth_chainId",
  "params": [],
  "id": 1
}
'
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": "0x1"
}
أعِد توجيه طلب JSON-RPC 2.0 (مفرد أو دفعة) إلى عقدة بلوكشين مدعومة. يدعم كلًا من مصادقة مفتاح API ومحفظة x402. تتم الفوترة لكل credit وتُحتسب من رصيدك في Venice — بيانات اعتماد واحدة وفاتورة واحدة لجميع السلاسل أدناه.

المصادقة

تدعم هذه الـ endpoint طريقتين للمصادقة:
  • مفتاح API: مصادقة Bearer token القياسية عبر header Authorization: Bearer <key>.
  • محفظة x402: ادفع حسب الاستخدام بـ USDC من محفظة على Base أو Solana. لا يلزم حساب Venice. راجع دليل x402 للإعداد.
تتشارك الطريقتان في حدود المعدل نفسها والفوترة (اعتمادات Venice).

الشبكات المدعومة

راجع GET /crypto/rpc/networks للحصول على القائمة الحية الموثوقة. التغطية الحالية:
العائلةMainnetTestnets
Ethereumethereum-mainnetethereum-sepolia, ethereum-holesky
Polygonpolygon-mainnetpolygon-amoy
Arbitrumarbitrum-mainnetarbitrum-sepolia
Optimismoptimism-mainnetoptimism-sepolia
Basebase-mainnetbase-sepolia
Linealinea-mainnetlinea-sepolia
Avalanche C-Chainavalanche-mainnetavalanche-fuji
BNB Smart Chainbsc-mainnetbsc-testnet
Blastblast-mainnetblast-sepolia
zkSync Erazksync-mainnetzksync-sepolia
Starknetstarknet-mainnetstarknet-sepolia

أشكال الطلبات

طلب مفرد

{
  "jsonrpc": "2.0",
  "method": "eth_chainId",
  "params": [],
  "id": 1
}

طلب دفعة

مصفوفة من ما يصل إلى 100 كائن JSON-RPC 2.0. يتم التحقق من كل عنصر بشكل مستقل؛ إذا كانت أي طريقة غير مدعومة، يتم رفض الدفعة بأكملها مع 400 وتُدرَج كل أسماء الطرق المخالفة في رسالة الخطأ.
[
  { "jsonrpc": "2.0", "method": "eth_chainId", "params": [], "id": 1 },
  { "jsonrpc": "2.0", "method": "eth_blockNumber", "params": [], "id": 2 }
]

الطرق المدعومة ومستويات التسعير

تُصنَّف الطرق إلى ثلاثة مستويات اعتمادات. الاعتمادات المُستهلَكة لكل استدعاء = baseCredits[chain] × methodTier.
المستوىالمُضاعِفأمثلة على الطرق
Standardeth_call, eth_getBalance, eth_blockNumber, eth_sendRawTransaction, eth_getLogs, eth_getTransactionReceipt, eth_estimateGas, net_version, web3_clientVersion, طرق ERC-4337 bundler (eth_sendUserOperation, eth_estimateUserOperationGas, إلخ)، امتدادات عائلة السلسلة (zks_*, linea_*, bor_*, starknet_*)
Advancedtrace_block, trace_call, trace_transaction, debug_traceCall, debug_traceTransaction, debug_traceBlockByHash, txpool_inspect, txpool_status, arbtrace_*
Largetrace_replayBlockTransactions, trace_replayTransaction, txpool_content, arbtrace_replayTransaction, arbtrace_replayBlockTransactions

الاعتمادات الأساسية لكل سلسلة

baseCreditsالسلاسل
20Ethereum + جميع EVM L2s أعلاه (Base، Optimism، Arbitrum، Polygon، Linea، Avalanche، BSC، Blast) و Starknet
30zkSync Era

أمثلة على التكلفة

بسعر Venice ~$6.25 × 10⁻⁷ لكل credit:
الاستدعاءالاعتماداتالتكلفة بالدولار
eth_call على Ethereum (20 × 1×)20$0.0000125
trace_transaction على Ethereum (20 × 2×)40$0.0000250
trace_replayTransaction على Ethereum (20 × 4×)80$0.0000500
eth_call على zkSync (30 × 1×)30$0.0000188

غير مدعوم

  • الطرق التي تعمل فقط عبر WebSocket (eth_subscribe, eth_unsubscribe) — هذا الوكيل يعمل عبر HTTP فقط. قم بالاستعلام بدلًا من ذلك، أو ارتقِ إلى موفّر WebSocket مباشر.
  • طرق المرشحات ذات الحالة (eth_newFilter, eth_getFilterChanges, eth_getFilterLogs, eth_uninstallFilter, eth_newBlockFilter, eth_newPendingTransactionFilter) — حالة المرشح مثبّتة على backend واحد upstream وتتعطل بصمت على وكيل HTTP موزّع الحمل. استخدم eth_getLogs (بدون حالة) بدلًا من ذلك.
  • طرق التعدين / حمل المفاتيح (eth_sign, eth_accounts, eth_mining, eth_hashrate, eth_getWork, eth_submitWork) — لا تحتفظ endpoints الموفّر المُستضاف بمفاتيح المستخدم الخاصة، لذا فهي دائمًا ترجع خطأ. وقّع المعاملات من جانب العميل وأرسلها عبر eth_sendRawTransaction.
  • الطرق غير المُعيَّنة — أي شيء غير مُدرَج صراحة في القائمة المسموحة يُرجع 400. تواصل مع الدعم لطلب إضافات.

فوترة الدفعات لكل عنصر

حتى عندما تكون استجابة HTTP هي 200، يمكن أن تُعيد عناصر الدفعة الفردية حقل error بصيغة JSON-RPC (على سبيل المثال، خطأ في المعاملات السيئة أو طريقة غير مدعومة على السلسلة المستهدفة). تُفوتر Venice هذه العناصر بمقدار 5 اعتمادات لكل عنصر بدلًا من المستوى الكامل للطريقة — تنازل صغير لأخطاء “استكشاف الـ API” العادية.
// طلب الدفعة:
[
  { "jsonrpc": "2.0", "method": "eth_chainId",   "params": [],         "id": 1 },
  { "jsonrpc": "2.0", "method": "eth_getBalance","params": ["bad"],    "id": 2 }
]

// الاستجابة (HTTP 200, X-Venice-RPC-Credits: 25):
[
  { "jsonrpc": "2.0", "id": 1, "result": "0x1" },
  { "jsonrpc": "2.0", "id": 2, "error": { "code": -32602, "message": "invalid params" } }
]
يُفوتَر العنصر الأول (نجاح) بـ 20 اعتمادًا، والثاني (خطأ على مستوى RPC) بـ 5، المجموع = 25.

حدود المعدل

سقف الطلبات في الدقيقة لكل مستدعي مُصادَق عليه:
المستوىالطلبات/الدقيقة
Standard100
Staff1,000
عند تجاوز السقف، تُعيد الـ endpoint 429 مع customMessage ورؤوس استجابة X-RateLimit-* القياسية.

Idempotency

عيّن header الطلب Idempotency-Key إلى أي سلسلة تطابق [A-Za-z0-9_-]{1,255} لتفعيل إعادة المحاولة الآمنة. يتم تخزين الاستجابة مؤقتًا لمدة 24 ساعة بمفتاح (user, idempotency-key):
  • إعادة تشغيل المفتاح نفسه بالجسم نفسه تُعيد الاستجابة المخزّنة مؤقتًا و header استجابة Idempotent-Replayed: true. لا يتم لمس upstream ولا يتم احتساب اعتمادات جديدة.
  • إعادة تشغيل المفتاح نفسه بجسم مختلف تُعيد 400 لمنع تلف الحالة الصامت. اختر مفتاحًا جديدًا للطلبات المميزة.

رؤوس الاستجابة

Headerالوصف
X-Venice-RPC-Creditsالاعتمادات المُحتسَبة لهذا الطلب. في طلبات الدفعة، هذا هو المجموع عبر العناصر.
X-Venice-RPC-Cost-USDالتكلفة بالدولار حتى 8 منازل عشرية. تساوي X-Venice-RPC-Credits × السعر لكل credit.
X-Request-IDمعرّف ترابط من 32 حرفًا. أدرجه في أي مراسلات دعم.
Idempotent-Replayedموجود بقيمة "true" عندما تأتي الاستجابة من ذاكرة التخزين المؤقت لـ idempotency.
X-RateLimit-Limit / X-RateLimit-Remaining / X-RateLimit-Resetيتم تعيينها فقط في استجابات 429.

التسجيل الجنائي لمرحّلات المعاملات

كل استدعاء لـ eth_sendRawTransaction يُسجَّل على جانب الخادم مع hash المعاملة (keccak256 للبايتات الخام)، ومعرّف الشبكة، ومعرّف الطلب، ومعرّف المستخدم المُستدعي. لا نحتفظ بالحمولة الموقّعة نفسها — يمكن استرداد الـ hash من إيصال السلسلة. يوجد سجل المراجعة هذا حتى إذا تم اختراق مفتاح API لعميل واستُخدم لتمرير معاملات غير مشروعة عبر بنيتنا التحتية، يمكننا ربط النشاط على السلسلة بالحساب المسؤول.

مثال

curl https://api.venice.ai/api/v1/crypto/rpc/ethereum-mainnet \
  -H "Authorization: Bearer $VENICE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "method": "eth_chainId",
    "params": [],
    "id": 1
  }'
{ "jsonrpc": "2.0", "id": 1, "result": "0x1" }
رؤوس الاستجابة: X-Venice-RPC-Credits: 20, X-Venice-RPC-Cost-USD: 0.00001250, X-Request-ID: <nanoid>.

مجموعة Postman

تتوفر مجموعة Postman جاهزة للاستيراد مع 27 طلب مثال (الاكتشاف، الاستدعاءات Standard/Advanced/Large، متعددة السلاسل، التجميع، Idempotency، حالات الأخطاء) في مساحة عملنا العامة: Venice Crypto RPC — Postman Collection عيّن متغير المجموعة apiKey إلى مفتاح Venice API الخاص بك وابدأ في إرسال الطلبات فورًا.

التفويضات

Authorization
string
header
مطلوب

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

الترويسات

Idempotency-Key
string

Optional idempotency key for safe retries. Pattern: [A-Za-z0-9_-]{1,255}. Retrying within 24 hours with the same key + same body replays the cached response with Idempotent-Replayed: true. Same key + different body returns 400.

Pattern: ^[A-Za-z0-9_-]{1,255}$
مثال:

"a1b2c3d4-e5f6-7890-abcd-ef1234567890"

معلمات المسار

network
string
مطلوب

Venice-side network slug. Call GET /api/v1/crypto/rpc/networks for the current list.

مثال:

"ethereum-mainnet"

الجسم

application/json
method
string
مطلوب

JSON-RPC method name. See the "Supported methods" section of the endpoint description for the classification into 1×/2×/4× pricing tiers.

مثال:

"eth_chainId"

jsonrpc
enum<string>
الخيارات المتاحة:
2.0
مثال:

"2.0"

params
any[]

Method parameters. Shape depends on the method; see the upstream chain documentation.

مثال:
[]
id

Caller-supplied request ID echoed back in the response. Required for batch request correlation.

مثال:

1

الاستجابة

JSON-RPC response forwarded from the upstream node. Content-Type is forced to application/json regardless of upstream headers.

jsonrpc
string
مثال:

"2.0"

id
result
any

Method-dependent result. Present on success.

error
object

JSON-RPC error object. Present on per-request failure (HTTP status is still 200 in that case).