پرش به محتوای اصلی
Change page

مقدمه ای بر dappها

آخرین ویرایش: @nader.sedigh(opens in a new tab), ۴ اردیبهشت ۱۴۰۳

یک برنامه‌ی غیرمتمرکز (dapp) برنامه‌ای است که روی یک شبکه‌ی غیرمتمرکز ساخته شده است و یک قرارداد هوشمند را با یک رابط کاربری فرانت‌اند ترکیب می‌کند. در اتریوم، قراردادهای هوشمند در دسترس و شفاف هستند - مانند وب سرویس‌های باز - بنابراین dapp شما حتی می‌تواند شامل قرارداد هوشمندی که شخص دیگری نوشته است نیز باشد.

پیش‌نیازها

قبل از یادگیری در مورد dappها، باید اصول زنجیره‌ی بلوکی را بیاموزید و در مورد شبکه‌ی اتریوم و نحوه‌ی غیرمتمرکز بودن آن مطالعه کنید.

تعریف dapp

یک dapp کد بک‌اند خود را در یک شبکه‌ی همتا به همتای غیرمتمرکز اجرا می‌کند. این را با برنامه‌ای مقایسه کنید که کد بک‌اند آن روی سرورهای متمرکز اجرا می‌شود.

یک dapp می‌تواند دارای کد فرانت‌اند و رابط‌های کاربری باشد که به هر زبانی (درست مانند یک برنامه) برای برقراری تماس با بک‌اند خود نوشته شده است. علاوه بر این، بخش ظاهری آن می‌تواند در فضای ذخیره‌سازی غیرمتمرکز مانند IPFS(opens in a new tab) میزبانی شود.

  • غیرمتمرکز - ‏dappها روی اتریوم به عنوان یک پلتفرم غیرمتمرکز عمومی باز کار می‌کنند که هیچ شخص یا گروهی آن را کنترل نمی‌کند
  • قطعی - ‏dappها صرف‌نظر از محیطی که در آن اجرا می‌شوند عملکرد یکسانی دارند
  • تورینگ کامل - ‏dappها می‌توانند هر عملی را با توجه به منابع مورد نیاز انجام دهند
  • ایزوله - ‏dappها در یک محیط مجازی به نام ماشین مجازی اتریوم اجرا می‌شوند تا اگر قرارداد هوشمند باگ داشته باشد، عملکرد عادی شبکه‌ی زنجیره‌ی بلوکی را مختل نکند

درباره‌ی قراردادهای هوشمند

برای معرفی dapp‌ها، باید قراردادهای هوشمند را معرفی کنیم - چون اصطلاح بهتری نداریم آن را بک‌اند برای dapp می‌نامیم. برای یک نمای کلی دقیق، به بخش ما در مورد قراردادهای هوشمند بروید.

قرارداد هوشمند کدی است که بر روی زنجیره‌ی بلوکی اتریوم وجود دارد و دقیقاً طبق برنامه اجرا می‌شود. پس از استقرار قراردادهای هوشمند در شبکه، نمی‌توانید آن‌ها را تغییر دهید. dappها می‌توانند غیرمتمرکز باشند، زیرا منطق نوشته‌شده در قرارداد کنترلشان می‌کند، نه یک فرد یا شرکت. این مهم همچنین به این معنی است که شما باید قراردادهای خود را با دقت طراحی کنید و آن‌ها را کاملاً آزمایش کنید.

مزایای توسعه‌ی dapp

  • خرابی صفر – وقتی قراردادی هوشمند مستقر شده و روی زنجیره‌ی بلوکی قرار گرفته است، شبکه به‌عنوان یک کل همیشه می‌تواند به کلاینت‌هایی که دنبال تعامل با قرارداد هستند خدمات‌رسانی کند. بنابراین فعالان بداندیش نمی‌توانند حملات به خدمات را با هدف قرار دادن dappهای منفرد آغاز کنند.
  • حریم خصوصی - برای استقرار یا تعامل با یک dapp، نیازی به ارائه‌ی هویت واقعی ندارید.
  • مقاومت در برابر سانسور – هیچ نهاد واحدی در شبکه نمی‌تواند کاربران را از ارسال تراکنش‌ها، استقرار dapp‌ها یا خواندن داده‌ها از زنجیره‌ی بلوکی منع کند.
  • صحت و تمامیت کامل داده - داده‌های ذخیره‌شده در زنجیره‌ی بلوکی، به لطف رمزنگاری‌های اولیه، تغییرناپذیر و غیرقابل‌انکار هستند. عوامل بداندیش نمی‌توانند تراکنش‌ها یا سایر داده‌هایی را که قبلاً عمومی شده‌اند، جعل کنند.
  • محاسبات بدون اعتماد/رفتار قابل تأیید – قراردادهای هوشمند را می‌توان تجزیه و تحلیل کرد و تضمین کرد که به روش‌های قابل‌پیش‌بینی و بدون نیاز به اعتماد به یک مقام مرکزی اجرا شوند. این مورد در مدل‌های سنتی صادق نیست. به عنوان مثال، هنگامی که ما از سیستم‌های بانکداری آنلاین استفاده می‌کنیم، باید اعتماد کنیم که مؤسسات مالی از داده‌های مالی ما سوء استفاده نمی‌کنند، سوابق را دستکاری نمی‌کنند یا هک نمی‌شوند.

معایب توسعه‌ی dapp

  • نگهداری – نگهداری از dappها دشوارتر است زیرا اصلاح کد و داده‌های منتشر شده در زنجیره‌ی بلوکی سخت‌تر است. برای توسعه‌دهندگان سخت است که به‌روزرسانی‌های dapp خود (یا داده‌های زیربنایی ذخیره‌شده توسط dapp) را پس از استقرار آن‌ها انجام دهند، حتی اگر اشکالات یا خطرات امنیتی در نسخه‌ی قدیمی شناسایی شده‌باشند.
  • سربار عملکرد - سربار عملکرد بسیار زیادی وجود دارد، و مقیاس‌پذیری واقعاً سخت است. برای دستیابی به سطح امنیت، صحت و تمامیت، شفافیت و قابلیت اطمینان مورد نظر اتریوم، هر گره هر تراکنش را اجرا و ذخیره می‌کند. علاوه بر این، اجماع اثبات سهام نیز به زمان نیاز دارد.
  • ازدحام شبکه – وقتی یک برنامه از منابع محاسباتی بیش از حد استفاده می‌کند، از کل شبکه پشتیبان‌گیری می‌شود. در حال حاضر، شبکه فقط می‌تواند حدود ‏10‎-15 تراکنش را در ثانیه پردازش کند. اگر تراکنش‌ها سریع‌تر از این ارسال شوند، مجموعه تراکنش‌های تأیید نشده به سرعت می‌تواند افزایش یابد.
  • تجربه‌ی کاربری – مهندسی تجربیات کاربرپسند ممکن است دشوارتر باشد، زیرا عموماً برای کاربر نهایی عادی سخت است که مجموعه‌ای از ابزار لازم برای تعامل با زنجیره‌ی بلوکی را به شیوه‌ای واقعاً ایمن را ایجاد کند.
  • متمرکز کردن – راه‌حل‌های کاربرپسند و توسعه‌دهنده‌پسند ساخته‌شده بر روی لایه‌ی پایه اتریوم ممکن است به هر حال شبیه سرویس‌های متمرکز به نظر برسند. به‌عنوان مثال، چنین سرویس‌هایی ممکن است کلیدها یا سایر اطلاعات حساس را در سمت سرور ذخیره کنند، با استفاده از یک سرور متمرکز یک فرانت‌اند ارائه دهند، یا قبل از نوشتن در زنجیره‌ی بلوکی، منطق تجاری مهمی را بر روی یک سرور متمرکز اجرا کنند. متمرکزسازی بسیاری از (اگر نه همه) مزایای زنجیره‌ی بلوکی را نسبت به مدل سنتی حذف می‌کند.

با تصویر راحت‌تر یاد می‌گیرید؟

ابزارهایی برای ساخت dapps

Scaffold-ETH - به‌سرعت Solidity را با استفاده از یک فرانت‌اند که با قرارداد هوشمندتان سازگار است آزمایش کنید.

برنامه‌ی اتریومی بسازید - با یک فرمان برنامه‌های بر پایه‌ی اتریوم بسازید.

One Click Dapp - ابزار FOSS برای تولید صفحات فرانت dapp از ABI.

Etherflow - ابزار FOSS برای توسعه‌دهندگان اتریوم به‌منظور آزمایش گره خود، نوشتن و اشکال‌زدایی فراخوانی‌های RPC از مرورگر.

thirdweb - کیت توسعهٔ نرم‌افزار به هر زبان، قراردادهای هوشمند، ابزارها، و زیرساخت توسعه Web3.

بیشتر بخوانید

آیا می‌خواهید در مورد منابع جامعه که به شما کمک کرده بدانید؟ این صفحه را ویرایش و اضافه کنید!

آیا این مقاله مفید بود؟