DApp مخفف چیست؟
DApp مخفف چیست؟
DApp مخفف Decentralized Application یا «برنامه غیرمتمرکز» است.
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 در سادهترین شکل، رابطی برای تعامل کاربر با منطق برنامهای است که روی یک شبکه عمومی یا غیرمتمرکز اجرا میشود. برای نمونه در Ethereum، Smart Contract میتواند Rules یک بازار، بازی، سیستم رأیگیری Onchain یا پروتکل مالی را اجرا کند و Frontend درخواست کاربر را به Transaction یا Contract Call تبدیل کند.
برای درک رابطه میان این دو بخش، مقاله قرارداد هوشمند چیست؟ را مطالعه کنید.
نکته مهم این است که «DApp بودن» یک طیف است. ممکن است Contract و Asset کاملاً Onchain باشند اما Frontend روی Server متمرکز میزبانی شود؛ یا Interface از Storage غیرمتمرکز استفاده کند ولی Oracle یا RPC Provider وابستگی متمرکز داشته باشد. بنابراین بهتر است درباره درجه تمرکززدایی هر جزء صحبت کنیم، نه اینکه هر DApp را کاملاً غیرمتمرکز فرض کنیم.
Blockchain زیرساختی برای ثبت State و اجرای قواعد قابل Verify فراهم میکند. در شبکههای عمومی، Nodeهای مختلف تراکنشها را طبق Consensus Rules بررسی میکنند و نتیجه معتبر در State شبکه ثبت میشود.
همچنین همه اطلاعات یک DApp الزاماً عمومی نیست. دادهای که Onchain روی یک Blockchain عمومی ثبت شود معمولاً قابل مشاهده است، اما Frontend، Database مکمل، داده رمزنگاریشده یا سیستمهای Offchain میتوانند مدل دیگری داشته باشند.
ویژگیهای کاربردیتر برای ارزیابی یک DApp عبارتاند از:
Ethereum.org Smart Contractها را در بسیاری از موارد شبیه Open APIهای قابل فراخوانی توصیف میکند و همین Composability یکی از ویژگیهای مهم اکوسیستم DAppهاست. مستند Smart Contract Composability
DApp معمولاً از چند جزء تشکیل میشود و فقط «Frontend + Backend روی Blockchain» نیست.
رابطی که کاربر در مرورگر یا اپ موبایل میبیند. Frontend میتواند مانند هر Web App با JavaScript، TypeScript یا Frameworkهای رایج ساخته شود. حتی ممکن است روی Hosting متمرکز قرار داشته باشد؛ در این صورت خود Interface یک نقطه تمرکز محسوب میشود.
Wallet معمولاً نقش مدیریت Key و امضای درخواستها را دارد. DApp نباید برای هر تعامل نیازمند دریافت Private Key کاربر باشد. Wallet درخواست Transaction یا Message را به کاربر نمایش میدهد و پس از تأیید، Signature ایجاد میکند.
Contract منطق Onchain برنامه را اجرا میکند؛ برای مثال مالکیت Asset، Ruleهای انتقال، Settlement یا State یک Protocol. برای DAppهای Ethereum، Smart Contract در EVM اجرا میشود.
توضیح تخصصی این محیط در مقاله ماشین مجازی اتریوم چیست؟ آمده است.
Frontend برای خواندن State یا ارسال Transaction باید با Nodeهای Blockchain ارتباط داشته باشد. این ارتباط میتواند از Node شخصی یا RPC Provider انجام شود. اگر DApp فقط به یک Provider متمرکز وابسته باشد، Outage یا Filtering آن Provider میتواند UX را مختل کند.
خواندن مستقیم تمام Historical Eventها از Blockchain برای Frontend همیشه بهینه نیست. بسیاری از DAppها از Indexer یا Database کمکی برای Search و نمایش سریع داده استفاده میکنند. این بخش Offchain است و باید از State نهایی Contract تفکیک شود.
فایلهای حجیم یا داده خارجی معمولاً مستقیماً داخل Smart Contract نگهداری نمیشوند. بعضی DAppها از Storage خارجی/غیرمتمرکز و Oracle برای اتصال داده بیرونی به منطق Onchain استفاده میکنند.
بنابراین Smart Contract «با تأیید اکثریت کاربران» اجرا نمیشود. اجرای آن Deterministic است و Nodeها صحت Transaction و State Transition را طبق Protocol بررسی میکنند.
| موضوع | 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 متمرکز وجود دارد |
Ethereum.org نیز در کنار Censorship Resistance و Verifiable Behavior، به این نکته اشاره میکند که Contract پایه میتواند حتی در صورت از کار افتادن یک Frontend از Interface یا Node دیگری فراخوانی شود؛ البته این مزیت به Architecture واقعی برنامه بستگی دارد. توضیح Ethereum درباره مزایا و وابستگیهای اپلیکیشنهای Onchain
مستند فنی Ethereum نیز Maintenance، Performance Overhead، UX و احتمال بازگشت اجزای متمرکز در Frontend و Infrastructure را از محدودیتهای DAppها میداند. مستند فنی DApp در Ethereum.org
DApp یک قالب فنی است و میتواند برای حوزههای مختلف استفاده شود. مهمترین دستهها عبارتاند از:
اینکه یک محصول «DApp» نامیده میشود بهتنهایی نشان نمیدهد تمام اجزای آن غیرمتمرکز، امن یا مناسب استفاده مالی هستند؛ معماری هر برنامه باید جداگانه بررسی شود.
Ethereum یک Layer 1 قابل برنامهریزی است که Smart Contractهای عمومی را در EVM اجرا میکند. همین معماری باعث شده توسعهدهندگان بتوانند Logic برنامه را در Contract پیادهسازی کنند و Frontendهای مختلف به آن متصل شوند.
برای شناخت این زیرساخت، مقاله بلاکچین اتریوم چیست و چگونه کار میکند؟ مکمل این بخش است.
البته مفهوم DApp محدود به Ethereum نیست و شبکههای Smart Contract محور دیگر نیز میتوانند Applicationهای Onchain یا غیرمتمرکز داشته باشند.
DApp برنامهای است که بخشی از منطق یا State اصلی آن روی یک شبکه غیرمتمرکز اجرا میشود و کاربر معمولاً از طریق Frontend و Wallet با Smart Contract تعامل میکند. اما اجزایی مانند Frontend، RPC، Indexer، Storage و Oracle میتوانند درجات متفاوتی از تمرکز داشته باشند.
بنابراین برای ارزیابی یک DApp نباید فقط به برچسب «غیرمتمرکز» اعتماد کرد. باید بررسی شود کدام بخش واقعاً Onchain است، Contract قابل Upgrade است یا نه، Asset در اختیار چه کسی قرار میگیرد و چه Dependencyهایی خارج از Blockchain وجود دارند.
DApp مخفف Decentralized Application یا «برنامه غیرمتمرکز» است.
خیر. Open-source بودن میتواند Transparency را بیشتر کند اما شرط فنی ضروری برای DApp بودن نیست.
خیر. Token میتواند بخشی از اقتصاد یا Governance برنامه باشد، اما بسیاری از DAppها بدون Token مستقل نیز قابل طراحیاند.
Smart Contract منطق Onchain است؛ DApp معمولاً مجموعهای بزرگتر شامل Contract، Frontend، Wallet integration و گاهی RPC، Indexer، Storage یا Oracle است.
نه الزاماً. Contract عمومی ممکن است بدون Frontend اصلی همچنان قابل فراخوانی باشد، اما Interface، RPC، DNS، Oracle یا Admin Mechanism میتوانند نقاط وابستگی ایجاد کنند.
استفاده از Wallet الزاماً هویت واقعی را مستقیماً نشان نمیدهد، اما Transactionهای Blockchain عمومی قابل تحلیل هستند و «Pseudonymous» با «Anonymous» یکسان نیست.