Ghid Venice Crypto RPC
Ce face
venice-crypto-rpc folosește Venice ca proxy JSON-RPC multi-chain, plătit per apel, pentru rețele EVM și Starknet. În loc să configurezi câte un endpoint separat pentru fiecare provider sau chain, trimiți requesturi JSON-RPC 2.0 către Venice și schimbi slug-ul rețelei în URL.
Endpoint-urile relevante sunt:
GET /crypto/rpc/networks — întoarce catalogul curent de rețele suportate.
POST /crypto/rpc/{network} — trimite un request JSON-RPC single sau batch către rețeaua aleasă.
Catalogul trebuie verificat prin /networks; nu presupune că un chain există doar pentru că numele pare plauzibil. Așa apar buguri scumpe, în liniște.
Vezi și All guides pentru restul ghidurilor.
Când îmi folosește
Îți folosește pentru dashboard-uri multi-chain, verificări rapide de solduri, citire de block number, eth_call, eth_getLogs, indexare, trimitere de tranzacții brute semnate sau operațiuni ERC-4337.
E util când vrei o singură interfață RPC și cost tracking pe apel. Răspunsurile de succes pot include headere precum X-Venice-RPC-Credits, X-Venice-RPC-Cost-USD și X-Request-ID, pe care le poți loga pentru audit și suport.
Pentru metode state-mutating, cum sunt eth_sendRawTransaction sau eth_sendUserOperation, folosește Idempotency-Key. Asta permite retry fără dublă taxare sau comportament ambiguu în fereastra de cache, dacă body-ul rămâne identic.
Nu folosi acest capability ca semnatar de tranzacții. Venice primește payload JSON-RPC; cheile private, seed phrase-urile și semnarea trebuie să rămână în wallet-ul sau serviciul tău local. Nu pune chei în ghiduri, commituri, prompturi, loguri sau URL-uri.
Cum îl invoc / declanșez
Nu există o comandă universală de chat pentru toate runtime-urile. Capabilitatea descrie API-ul Venice; modul exact de invocare depinde de integrarea instalată.
La nivel HTTP:
GET https://api.venice.ai/api/v1/crypto/rpc/networks
POST https://api.venice.ai/api/v1/crypto/rpc/{network}
Proxy-ul POST cere autentificare Bearer sau SIWE/x402, în funcție de setup. Listing-ul de rețele poate fi consultat pentru descoperire, dar nu îl trata ca dovadă că ai credit, permisiuni sau suport complet pentru metoda ta.
Exemplu practic
Request single către Ethereum mainnet:
curl -X POST 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}'Răspuns tipic:
{ "jsonrpc": "2.0", "id": 1, "result": "0x1" }Batch request, până la 100 de apeluri:
curl -X POST https://api.venice.ai/api/v1/crypto/rpc/base-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","method":"eth_blockNumber","params":[],"id":2}
]'Pentru tranzacții sau user operations, adaugă o cheie idempotentă stabilă pentru același body:
curl -X POST https://api.venice.ai/api/v1/crypto/rpc/ethereum-mainnet \
-H "Authorization: Bearer $VENICE_API_KEY" \
-H "Idempotency-Key: send-tx-example-nonce-42" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"eth_sendRawTransaction","params":["0x..."],"id":1}'Idempotency-Key acceptă litere, cifre, _ și -. Refolosirea aceleiași chei cu body diferit întoarce 400.
Output / unde aterizează
Output-ul este JSON-RPC standard: result sau error. Atenție: o eroare RPC poate veni cu HTTP 200 și obiect error în body. Un 200 nu înseamnă automat succes logic.
Pe succes, loghează X-Venice-RPC-Credits, X-Venice-RPC-Cost-USD și X-Request-ID. Pentru replay idempotent, poate apărea Idempotent-Replayed: true; acel replay vine din cache și nu este taxat din nou. Balance headers pot lipsi pe RPC; pentru balanță autoritativă folosește endpoint-ul dedicat x402, dacă acel mod este configurat.
Limite / gotchas
Batch-ul are limită de 100 apeluri. Dacă un singur method din batch este unsupported, întregul batch e respins cu 400.
Metodele stateful și WebSocket nu sunt suportate: eth_newFilter, eth_newBlockFilter, eth_getFilterChanges, eth_getFilterLogs, eth_uninstallFilter, eth_subscribe, eth_unsubscribe. Pentru filtre folosește eth_getLogs; pentru subscriptions ai nevoie de WebSocket separat.
Metodele cross-family eșuează: nu chema starknet_* pe chain EVM și nu invers. Metodele nemapate în tier-urile Venice sunt respinse.
Costul este pe credite: bază per chain înmulțită cu tier-ul metodei — Standard 1×, Advanced 2×, Large 4×. Erorile RPC-level sunt taxate flat. Există limite independente pe minut și pe 24h; 429 indică plafon, credit limit sau coliziune concurentă. Retry cu jitter. 402 înseamnă credit insuficient pentru x402. 500 sau timeout upstream poate fi retried; pentru operațiuni state-mutating, retrimite doar cu același Idempotency-Key.