Skip to main content

RPC چیست

توجه: این سند ترجمه خودکار نسخه اصلی انگلیسی است.

RPC چیست

RPC (فراخوانی رویهٔ راه دور) یک پروتکل ارتباطی است که به یک برنامه اجازه می‌دهد سرویسی را از برنامه‌ای که روی رایانهٔ دیگری اجرا می‌شود درخواست کند، بدون آنکه نیاز باشد جزئیات شبکهٔ آن رایانه را بداند. در زمینهٔ بلاکچین، RPC روشی است که کیف پول‌ها، برنامه‌های غیرمتمرکز، مرورگرهای بلوک و سایر نرم‌افزارها با گره‌های بلاکچین ارتباط برقرار می‌کنند — ارسال تراکنش، پرس‌وجوی موجودی، خواندن وضعیت قرارداد هوشمند و بازیابی داده‌های بلوک.

خلاصه: RPC رابط استانداردی است که برنامه‌ها از طریق آن با گره‌های بلاکچین صحبت می‌کنند — این همان لایهٔ ارتباطی است که dAppها، کیف پول‌ها و ابزارها را به خود شبکهٔ بلاکچین متصل می‌کند.

RPC در بلاکچین چگونه کار می‌کند

هر گرهٔ بلاکچین یک نقطهٔ پایانی RPC عرضه می‌کند — یک URL که درخواست‌های ساختاریافته را می‌پذیرد و پاسخ‌های ساختاریافته بازمی‌گرداند. وقتی یک برنامه نیاز به تعامل با بلاکچین دارد، درخواست RPC را به این نقطهٔ پایانی ارسال می‌کند.

الگوی درخواست-پاسخ

تعامل از الگوی استاندارد کلاینت-سرور پیروی می‌کند:

  1. درخواست. برنامه (کلاینت) درخواستی به نقطهٔ پایانی RPC گره ارسال می‌کند. درخواست مشخص می‌کند کدام متد فراخوانی شود و پارامترهای لازم را فراهم می‌کند. برای مثال: «موجودی آدرس 0x742d...bD38 را بگیر» یا «این تراکنش امضاشده را به شبکه ارسال کن».
  2. پردازش. گره درخواست را دریافت می‌کند، عملیات درخواستی را انجام می‌دهد — خواندن از نسخهٔ محلی خود از بلاکچین یا پخش یک تراکنش در شبکه — و پاسخی آماده می‌کند.
  3. پاسخ. گره نتیجه را در قالبی ساختاریافته (معمولاً JSON) به برنامه بازمی‌گرداند.

JSON-RPC

بیشتر شبکه‌های بلاکچین از JSON-RPC استفاده می‌کنند — پروتکلی سبک که در آن درخواست‌ها و پاسخ‌ها به‌صورت اشیای JSON قالب‌بندی می‌شوند. یک درخواست معمول JSON-RPC شامل نام متد (مانند eth_getBalance، eth_sendRawTransaction یا eth_call) و آرایه‌ای از پارامترهاست. پاسخ حاوی نتیجه یا یک پیام خطاست.

این قالب استانداردشده به این معناست که هر برنامه‌ای که JSON-RPC را بفهمد می‌تواند با هر گره‌ای که همان متدها را پیاده‌سازی کرده تعامل کند، صرف‌نظر از زبان برنامه‌نویسی یا فریمورک استفاده‌شده در هر یک از دو سمت.

عملیات رایج RPC

نقاط پایانی RPC بلاکچین معمولاً از عملیاتی مانند این‌ها پشتیبانی می‌کنند:

  • خواندن وضعیت — پرس‌وجوی موجودی حساب‌ها، دارایی‌های توکنی، حافظهٔ قراردادهای هوشمند و شمارهٔ بلوک فعلی.
  • ارسال تراکنش — پخش تراکنش‌های امضاشده در شبکه برای درج در یک بلوک.
  • فراخوانی قراردادهای هوشمند — اجرای توابع فقط‌خواندنی قرارداد هوشمند بدون ایجاد تراکنش (بدون هزینهٔ گس).
  • اشتراک در رویدادها — گوش دادن به رویدادهای on-chain مشخص مانند انتقال توکن، استقرار قرارداد یا بلوک‌های جدید.
  • بازیابی تاریخچه — واکشی تراکنش‌های گذشته، لاگ‌ها و داده‌های بلوک.

ارائه‌دهندگان RPC

اجرای یک گرهٔ کامل بلاکچین به فضای ذخیره‌سازی، پهنای باند و نگهداری قابل توجهی نیاز دارد. بسیاری از توسعه‌دهندگان و برنامه‌ها از ارائه‌دهندگان RPC استفاده می‌کنند — سرویس‌های شخص ثالثی که زیرساخت گره را اداره و نقاط پایانی RPC را برای استفادهٔ عمومی یا پولی عرضه می‌کنند. این ارائه‌دهندگان دسترسی قابل اتکا و با دسترس‌پذیری بالا به داده‌های بلاکچین را فراهم می‌کنند، بدون آنکه هر برنامه مجبور باشد گرهٔ خودش را اجرا کند.

ارائه‌دهندگان محبوب RPC روزانه میلیاردها درخواست را در چندین شبکهٔ بلاکچین سرویس می‌دهند و به‌عنوان ستون فقرات اکوسیستم dApp عمل می‌کنند.

چرا برای پروژه‌های کریپتو AI اهمیت دارد

RPC لایهٔ ارتباطی‌ای است که هر پروژهٔ AI مبتنی بر بلاکچین به آن وابسته است، حتی اگر همیشه برای کاربران نهایی قابل مشاهده نباشد.

تعامل با قراردادهای هوشمند. پروژه‌های AI که قراردادهای هوشمند مستقر می‌کنند، برای خواندن وضعیت قرارداد، فعال کردن توابع و ارسال تراکنش‌ها به RPC نیاز دارند. چه پروژه در حال توزیع وظایف محاسباتی باشد، چه ثبت نتایج استنتاج یا مدیریت استیکینگ، هر تعامل on-chain از یک نقطهٔ پایانی RPC عبور می‌کند.

دریافت داده. سیستم‌های AI که فعالیت on-chain را تحلیل می‌کنند — الگوهای معاملاتی، رفتار کیف پول‌ها، متریک‌های پروتکل — برای دریافت داده‌های بلاکچین به فراخوانی‌های RPC متکی‌اند. سرعت و اتکاپذیری دسترسی RPC مستقیماً بر کیفیت و به‌موقع بودن تحلیل‌های AI اثر می‌گذارد.

وابستگی زیرساختی. برای پروژه‌های AI که شبکه‌های گرهٔ غیرمتمرکز اداره می‌کنند، لایهٔ RPC همان راهی است که کاربران خارجی به سرویس دسترسی پیدا می‌کنند. یک بازار محاسبات غیرمتمرکز، نقاط پایانی RPC برای ارسال وظایف عرضه می‌کند؛ یک شبکهٔ استنتاج AI از RPC برای تحویل نتایج استفاده می‌کند. اتکاپذیری این نقاط پایانی تجربهٔ کاربر را تعیین می‌کند.

در کارت‌های پروژهٔ DecAIHub کجا ظاهر می‌شود

RPC به‌عنوان یک فیلد مستقل در کارت‌های پروژه فهرست نمی‌شود، اما زیربنای چند جنبه از معماری پروژه است:

  • Main chain — هر زنجیرهٔ اصلی مشخصات RPC خودش را دارد. انتخاب زنجیره تعیین می‌کند کدام متدهای RPC در دسترس‌اند و برنامه‌ها چگونه با شبکه تعامل می‌کنند.
  • Type — پروژه‌هایی که زیرساخت RPC را به‌عنوان سرویس ارائه می‌دهند (ارائه‌دهندگان گره، درگاه‌های API) ممکن است بر اساس نقش زیرساختی‌شان طبقه‌بندی شوند.
  • تعامل dApp و قرارداد هوشمند — هر پروژه‌ای با قراردادهای هوشمند on-chain، برای همهٔ تعاملات خارجی با آن قراردادها به RPC متکی است.

RPC به‌تنهایی چه چیزی را اثبات نمی‌کند

  • تمرکززدایی — استفاده از یک ارائه‌دهندهٔ RPC متمرکز یعنی برنامه به یک نقطهٔ شکست واحد وابسته است. اگر ارائه‌دهنده از کار بیفتد یا درخواست‌ها را سانسور کند، برنامه دسترسی به بلاکچین را از دست می‌دهد. عبور از یک درگاه RPC متمرکز، برنامه را غیرمتمرکز نمی‌کند.
  • امنیت — نقاط پایانی RPC می‌توانند عمومی یا خصوصی، دارای محدودیت نرخ یا باز باشند. یک نقطهٔ پایانی عمومی RPC ذاتاً تضمین‌های امنیتی ارائه نمی‌دهد. برنامه‌هایی که تراکنش‌های حساس ارسال می‌کنند باید اطمینان یابند از نقاط پایانی مورد اعتماد و احرازشده استفاده می‌کنند.
  • اجرای on-chain — ارسال یک درخواست RPC به این معنا نیست که عملیات به‌صورت on-chain رخ می‌دهد. فراخوانی‌های فقط‌خواندنی (eth_call) بدون ایجاد تراکنش، به‌صورت محلی روی گره اجرا می‌شوند. فقط تراکنش‌های امضاشده‌ای که از طریق RPC ارسال می‌شوند واقعاً وضعیت بلاکچین را تغییر می‌دهند.
  • عملکرد — زمان پاسخ RPC به سخت‌افزار گره، شرایط شبکه و زیرساخت ارائه‌دهنده بستگی دارد. اتصال RPC کند نشان‌دهندهٔ بلاکچین کند نیست؛ ممکن است نشان‌دهندهٔ گره‌ای بیش از حد بارگذاری‌شده یا از نظر جغرافیایی دور باشد.

اشتباه نگیرید با

  • API — RPC نوعی API است، اما همهٔ API‌ها RPC نیستند. API‌های REST، نقاط پایانی GraphQL و رابط‌های WebSocket الگوهای ارتباطی جایگزین‌اند. در بلاکچین، «RPC» به‌طور مشخص به رابط JSON-RPC عرضه‌شده توسط گره‌ها اشاره دارد.
  • گره (Node) — گره همان رایانهٔ واقعی است که نرم‌افزار بلاکچین را اجرا می‌کند. RPC رابطی است که برنامه‌های خارجی از طریق آن با آن گره ارتباط برقرار می‌کنند. گره کار را انجام می‌دهد؛ RPC در است.
  • SDK / کتابخانه — کتابخانه‌هایی مانند Web3.js، Ethers.js یا Web3.py با پیچیدن فراخوانی‌های خام JSON-RPC در توابعی مناسب توسعه‌دهنده، تعاملات RPC را ساده می‌کنند. کتابخانه یک لایهٔ رفاهی است؛ RPC پروتکل زیرین است.
  • اوراکل — یک اوراکل داده‌های off-chain را به بلاکچین می‌آورد. RPC روشی است که برنامه‌ها داده‌های on-chain را می‌خوانند و می‌نویسند. نقش‌های متفاوتی دارند: اوراکل‌ها داده‌های بیرونی را به داخل پل می‌زنند، در حالی که RPC دسترسی به داده‌هایی را فراهم می‌کند که همین حالا on-chain هستند.

پرسش‌های متداول

آیا برای استفاده از RPC باید گرهٔ خودم را اجرا کنم؟

خیر. بیشتر توسعه‌دهندگان و برنامه‌ها از ارائه‌دهندگان شخص ثالث RPC استفاده می‌کنند که زیرساخت گره را به‌عنوان سرویس اداره می‌کنند. این ارائه‌دهندگان نقاط پایانی RPC را از طریق اتصالات استاندارد HTTP یا WebSocket در دسترس قرار می‌دهند. اجرای گرهٔ خودتان کنترل کامل می‌دهد و وابستگی به شخص ثالث را حذف می‌کند، اما به منابع قابل توجهی نیاز دارد. برای بیشتر کاربردها، یک ارائه‌دهندهٔ معتبر RPC کافی است.

اگر یک ارائه‌دهندهٔ RPC از کار بیفتد چه می‌شود؟

اگر ارائه‌دهندهٔ RPC مورد استفادهٔ برنامهٔ شما از کار بیفتد، برنامه اتصال خود به بلاکچین را از دست می‌دهد. تا زمانی که اتصال بازیابی شود یا برنامه به یک نقطهٔ پایانی جایگزین سوئیچ کند، نمی‌تواند وضعیت را بخواند، تراکنش ارسال کند یا اعلان رویدادها را دریافت کند. به همین دلیل، برنامه‌های تولیدی اغلب چندین نقطهٔ پایانی RPC پشتیبان از ارائه‌دهندگان مختلف پیکربندی می‌کنند.

آیا RPC همان دسترسی به بلاکچین است؟

RPC رایج‌ترین روش دسترسی به بلاکچین است، اما تنها روش نیست. برخی برنامه‌ها از پروتکل‌های جایگزین مانند ایندکسرهای مبتنی بر GraphQL یا اتصالات مستقیم همتابه‌همتا استفاده می‌کنند. با این حال، JSON-RPC همچنان رابط استاندارد برای تعامل عمومی با بلاکچین است و عملاً هر کیف پول، dApp و ابزار بلاکچینی در پشت صحنه از آن استفاده می‌کند.

منابع خارجی

همچنین ببینید