ایران اکسچنج

DApp چیست؟ برنامه غیرمتمرکز چگونه کار می‌کند و چه تفاوتی با اپ معمولی دارد؟

DApp چیست؟ برنامه غیرمتمرکز چگونه کار می‌کند و چه تفاوتی با اپ معمولی دارد؟

فائزه سوری
زمان تقریبی مطالعه: 7 دقیقه
فهرست عناوین

DApp یا Decentralized Application برنامه‌ای است که بخشی از منطق اصلی آن روی یک شبکه غیرمتمرکز اجرا می‌شود. در شبکه‌های Smart Contract محور، این منطق معمولاً در قالب قرارداد هوشمند روی Blockchain قرار می‌گیرد و کاربر از طریق یک رابط وب یا موبایل و Wallet با آن تعامل می‌کند.

تفاوت اصلی DApp با اپلیکیشن سنتی این نیست که «هیچ Server یا شرکت توسعه‌دهنده‌ای وجود ندارد». یک DApp می‌تواند Frontend، RPC Provider، Indexer یا Storage خارج از زنجیره داشته باشد. موضوع اصلی این است که بخشی از State و Rules حیاتی برنامه توسط قراردادهای Onchain و قواعد شبکه اجرا و قابل Verify می‌شوند.

Ethereum.org نیز در تعریف فنی خود، DApp را ترکیبی از Smart Contract و Frontend User Interface می‌داند. تعریف فنی DApp در Ethereum.org

DApp چیست؟

یک DApp در ساده‌ترین شکل، رابطی برای تعامل کاربر با منطق برنامه‌ای است که روی یک شبکه عمومی یا غیرمتمرکز اجرا می‌شود. برای نمونه در Ethereum، Smart Contract می‌تواند Rules یک بازار، بازی، سیستم رأی‌گیری Onchain یا پروتکل مالی را اجرا کند و Frontend درخواست کاربر را به Transaction یا Contract Call تبدیل کند.

برای درک رابطه میان این دو بخش، مقاله قرارداد هوشمند چیست؟ را مطالعه کنید.

نکته مهم این است که «DApp بودن» یک طیف است. ممکن است Contract و Asset کاملاً Onchain باشند اما Frontend روی Server متمرکز میزبانی شود؛ یا Interface از Storage غیرمتمرکز استفاده کند ولی Oracle یا RPC Provider وابستگی متمرکز داشته باشد. بنابراین بهتر است درباره درجه تمرکززدایی هر جزء صحبت کنیم، نه اینکه هر DApp را کاملاً غیرمتمرکز فرض کنیم.

DApp چه ارتباطی با بلاکچین دارد؟

Blockchain زیرساختی برای ثبت State و اجرای قواعد قابل Verify فراهم می‌کند. در شبکه‌های عمومی، Nodeهای مختلف تراکنش‌ها را طبق Consensus Rules بررسی می‌کنند و نتیجه معتبر در State شبکه ثبت می‌شود.

همچنین همه اطلاعات یک DApp الزاماً عمومی نیست. داده‌ای که Onchain روی یک Blockchain عمومی ثبت شود معمولاً قابل مشاهده است، اما Frontend، Database مکمل، داده رمزنگاری‌شده یا سیستم‌های Offchain می‌توانند مدل دیگری داشته باشند.

ویژگی‌های اصلی یک DApp چیست؟

ویژگی‌های کاربردی‌تر برای ارزیابی یک DApp عبارت‌اند از:

  • منطق Onchain: بخشی از Rules حیاتی برنامه در Smart Contract یا Protocol غیرمتمرکز اجرا می‌شود.
  • قابلیت Verify: State Transition یا نتیجه تعاملات Onchain طبق Rules عمومی شبکه قابل بررسی است.
  • Wallet-based interaction: کاربر معمولاً با Signature خود Transaction یا Message را تأیید می‌کند.
  • Permissionless access در سطح Protocol: اگر شبکه و قرارداد محدودیت خاصی نگذاشته باشند، تعامل با Contract به مجوز یک Server مرکزی وابسته نیست.
  • Composability: بعضی Smart Contractها می‌توانند Contractهای دیگر را فراخوانی کنند و سرویس‌های جدید روی زیرساخت موجود ساخته شوند.

Ethereum.org Smart Contractها را در بسیاری از موارد شبیه Open APIهای قابل فراخوانی توصیف می‌کند و همین Composability یکی از ویژگی‌های مهم اکوسیستم DAppهاست. مستند Smart Contract Composability

ساختار DApp چگونه است؟

DApp معمولاً از چند جزء تشکیل می‌شود و فقط «Frontend + Backend روی Blockchain» نیست.

1) Frontend

رابطی که کاربر در مرورگر یا اپ موبایل می‌بیند. Frontend می‌تواند مانند هر Web App با JavaScript، TypeScript یا Frameworkهای رایج ساخته شود. حتی ممکن است روی Hosting متمرکز قرار داشته باشد؛ در این صورت خود Interface یک نقطه تمرکز محسوب می‌شود.

2) Wallet

Wallet معمولاً نقش مدیریت Key و امضای درخواست‌ها را دارد. DApp نباید برای هر تعامل نیازمند دریافت Private Key کاربر باشد. Wallet درخواست Transaction یا Message را به کاربر نمایش می‌دهد و پس از تأیید، Signature ایجاد می‌کند.

3) Smart Contract

Contract منطق Onchain برنامه را اجرا می‌کند؛ برای مثال مالکیت Asset، Ruleهای انتقال، Settlement یا State یک Protocol. برای DAppهای Ethereum، Smart Contract در EVM اجرا می‌شود.

توضیح تخصصی این محیط در مقاله ماشین مجازی اتریوم چیست؟ آمده است.

4) RPC / Node Access

Frontend برای خواندن State یا ارسال Transaction باید با Nodeهای Blockchain ارتباط داشته باشد. این ارتباط می‌تواند از Node شخصی یا RPC Provider انجام شود. اگر DApp فقط به یک Provider متمرکز وابسته باشد، Outage یا Filtering آن Provider می‌تواند UX را مختل کند.

5) Indexer و Offchain Data

خواندن مستقیم تمام Historical Eventها از Blockchain برای Frontend همیشه بهینه نیست. بسیاری از DAppها از Indexer یا Database کمکی برای Search و نمایش سریع داده استفاده می‌کنند. این بخش Offchain است و باید از State نهایی Contract تفکیک شود.

6) Storage و Oracle در صورت نیاز

فایل‌های حجیم یا داده خارجی معمولاً مستقیماً داخل Smart Contract نگهداری نمی‌شوند. بعضی DAppها از Storage خارجی/غیرمتمرکز و Oracle برای اتصال داده بیرونی به منطق Onchain استفاده می‌کنند.

کاربر چگونه با یک DApp تعامل می‌کند؟

  1. کاربر Frontend برنامه را باز می‌کند.
  2. Wallet را به Interface متصل می‌کند.
  3. Frontend State لازم را از Blockchain/RPC می‌خواند.
  4. کاربر یک Action مانند انتقال، ثبت سفارش یا تغییر State را انتخاب می‌کند.
  5. Wallet Transaction یا Message را برای بررسی نمایش می‌دهد.
  6. کاربر پس از بررسی، درخواست را Sign می‌کند.
  7. Transaction به Network ارسال و طبق Rules شبکه پردازش می‌شود.
  8. Frontend نتیجه State جدید را نمایش می‌دهد.

بنابراین Smart Contract «با تأیید اکثریت کاربران» اجرا نمی‌شود. اجرای آن Deterministic است و Nodeها صحت Transaction و State Transition را طبق Protocol بررسی می‌کنند.

تفاوت DApp با اپلیکیشن متمرکز چیست؟

موضوعDAppاپلیکیشن متمرکز
منطق اصلیمی‌تواند در Smart Contract عمومی اجرا شودمعمولاً روی Backend خصوصی اجرا می‌شود
مالکیت داراییمی‌تواند در Wallet کاربر و روی Chain ثبت شوداغلب در Database سرویس نگهداری می‌شود
تغییر Rulesبه Design Contract و Governance بستگی داردOperator می‌تواند Backend را تغییر دهد
شفافیتمنطق و State Onchain می‌تواند قابل Verify باشدBackend معمولاً خصوصی است
هزینه تعاملممکن است Network Fee داشته باشدکاربر معمولاً Gas پرداخت نمی‌کند
Recoveryبسته به Wallet/Account design؛ از دست‌دادن Key می‌تواند جدی باشدمعمولاً Account Recovery متمرکز وجود دارد

مزایای DApp چیست؟

  • Verifiable logic: قواعد Onchain و State می‌توانند مستقل بررسی شوند.
  • کاهش وابستگی به یک Operator: Contract عمومی می‌تواند حتی با تغییر Frontend همچنان قابل فراخوانی باشد.
  • مالکیت مستقیم Asset: در بسیاری از مدل‌ها Asset در Wallet کاربر قرار دارد، نه Account داخلی یک سرویس.
  • Composability: Protocolها می‌توانند روی Smart Contractهای موجود سرویس جدید بسازند.
  • Permissionless interaction: در Contractهای عمومی، Interaction در سطح Protocol می‌تواند بدون حساب سازمانی مرکزی انجام شود.

Ethereum.org نیز در کنار Censorship Resistance و Verifiable Behavior، به این نکته اشاره می‌کند که Contract پایه می‌تواند حتی در صورت از کار افتادن یک Frontend از Interface یا Node دیگری فراخوانی شود؛ البته این مزیت به Architecture واقعی برنامه بستگی دارد. توضیح Ethereum درباره مزایا و وابستگی‌های اپلیکیشن‌های Onchain

محدودیت‌ها و ریسک‌های DApp چیست؟

  • Smart Contract Bug: خطای Contract می‌تواند Asset یا State برنامه را در معرض ریسک قرار دهد.
  • هزینه و مقیاس‌پذیری: Interaction Onchain می‌تواند در دوره‌های شلوغی پرهزینه یا کندتر شود.
  • Key Management: تأیید Signature اشتباه یا از دست‌دادن Key می‌تواند پیامد غیرقابل بازگشت داشته باشد.
  • Frontend/RPC Centralization: Contract ممکن است غیرمتمرکز باشد ولی Interface یا Provider نقطه شکست متمرکز ایجاد کند.
  • Oracle Risk: اگر Contract به داده بیرونی وابسته باشد، کیفیت Oracle بخشی از Security Model است.
  • Upgrade/Governance Risk: بعضی Contractها قابل Upgrade هستند و Admin Key یا Governance می‌تواند Behavior را تغییر دهد.
  • Privacy: عمومی بودن Blockchain به معنی Privacy بیشتر نیست؛ Transactionها و State عمومی می‌توانند قابل مشاهده باشند.

مستند فنی Ethereum نیز Maintenance، Performance Overhead، UX و احتمال بازگشت اجزای متمرکز در Frontend و Infrastructure را از محدودیت‌های DAppها می‌داند. مستند فنی DApp در Ethereum.org

DAppها چه کاربردهایی دارند؟

DApp یک قالب فنی است و می‌تواند برای حوزه‌های مختلف استفاده شود. مهم‌ترین دسته‌ها عبارت‌اند از:

  • خدمات مالی Onchain: وام‌دهی، مبادله Asset و مدیریت نقدینگی.
  • بازی و دارایی دیجیتال: مالکیت و انتقال Itemهای Onchain.
  • Marketplace: معامله Assetهای دیجیتال با Ruleهای Contract.
  • Governance: Proposal، Vote یا Treasury Management در سیستم‌های Onchain.
  • Identity و Credential: ثبت و Verify برخی Credentialها یا Attestationها.
  • Social / Messaging: برنامه‌هایی که بخشی از Social Graph یا Ownership را روی Protocol عمومی قرار می‌دهند.

اینکه یک محصول «DApp» نامیده می‌شود به‌تنهایی نشان نمی‌دهد تمام اجزای آن غیرمتمرکز، امن یا مناسب استفاده مالی هستند؛ معماری هر برنامه باید جداگانه بررسی شود.

قبل از استفاده از یک DApp چه چیزهایی را بررسی کنیم؟

  1. Contract: Contract Address و شبکه صحیح را از منبع معتبر بررسی کنید.
  2. Wallet request: قبل از Sign، نوع Transaction یا Message را بخوانید.
  3. Permissions: Approval نامحدود Token را فقط در صورت نیاز بدهید.
  4. Upgradeability: ببینید Contract قابل Upgrade است و چه کسی Admin Key دارد.
  5. Custody: مشخص کنید Asset در Wallet شما می‌ماند یا داخل Contract/Bridge قفل می‌شود.
  6. Oracle/Bridge: اگر برنامه به داده یا شبکه دیگر وابسته است، Risk آن dependency را بررسی کنید.
  7. Audit: Security Audit مفید است اما تضمین نبود Bug نیست.

چرا Ethereum با DAppها شناخته می‌شود؟

Ethereum یک Layer 1 قابل برنامه‌ریزی است که Smart Contractهای عمومی را در EVM اجرا می‌کند. همین معماری باعث شده توسعه‌دهندگان بتوانند Logic برنامه را در Contract پیاده‌سازی کنند و Frontendهای مختلف به آن متصل شوند.

برای شناخت این زیرساخت، مقاله بلاکچین اتریوم چیست و چگونه کار می‌کند؟ مکمل این بخش است.

البته مفهوم DApp محدود به Ethereum نیست و شبکه‌های Smart Contract محور دیگر نیز می‌توانند Applicationهای Onchain یا غیرمتمرکز داشته باشند.

جمع‌بندی؛ DApp فقط یک سایت متصل به بلاکچین نیست

DApp برنامه‌ای است که بخشی از منطق یا State اصلی آن روی یک شبکه غیرمتمرکز اجرا می‌شود و کاربر معمولاً از طریق Frontend و Wallet با Smart Contract تعامل می‌کند. اما اجزایی مانند Frontend، RPC، Indexer، Storage و Oracle می‌توانند درجات متفاوتی از تمرکز داشته باشند.

بنابراین برای ارزیابی یک DApp نباید فقط به برچسب «غیرمتمرکز» اعتماد کرد. باید بررسی شود کدام بخش واقعاً Onchain است، Contract قابل Upgrade است یا نه، Asset در اختیار چه کسی قرار می‌گیرد و چه Dependencyهایی خارج از Blockchain وجود دارند.

مقالات مرتبط

سوالات متداول

DApp مخفف چیست؟

DApp مخفف Decentralized Application یا «برنامه غیرمتمرکز» است.

آیا هر DApp باید متن‌باز باشد؟

خیر. Open-source بودن می‌تواند Transparency را بیشتر کند اما شرط فنی ضروری برای DApp بودن نیست.

آیا هر DApp توکن اختصاصی دارد؟

خیر. Token می‌تواند بخشی از اقتصاد یا Governance برنامه باشد، اما بسیاری از DAppها بدون Token مستقل نیز قابل طراحی‌اند.

فرق DApp و Smart Contract چیست؟

Smart Contract منطق Onchain است؛ DApp معمولاً مجموعه‌ای بزرگ‌تر شامل Contract، Frontend، Wallet integration و گاهی RPC، Indexer، Storage یا Oracle است.

آیا DApp کاملاً غیرقابل توقف است؟

نه الزاماً. Contract عمومی ممکن است بدون Frontend اصلی همچنان قابل فراخوانی باشد، اما Interface، RPC، DNS، Oracle یا Admin Mechanism می‌توانند نقاط وابستگی ایجاد کنند.

آیا استفاده از DApp ناشناس است؟

استفاده از Wallet الزاماً هویت واقعی را مستقیماً نشان نمی‌دهد، اما Transactionهای Blockchain عمومی قابل تحلیل هستند و «Pseudonymous» با «Anonymous» یکسان نیست.