برنامههای کاربردی غیرمتمرکز (DApps) برنامههایی هستند که به جای یک کامپیوتر تکی بر روی یک شبکه P2P از رایانهها اجرا میشوند. این برنامهها از زمان ظهور شبکههای P2P بوجود آمدهاند. این اپلیکیشن ها نوعی برنامه نرمافزاری طراحی شده برای اجرا در بستر اینترنت میباشند، به نحوی که کنترل آنها توسط یک موجودیت واحد انجام نمیشود.
از طرف دیگر خیلیها براین عقیده هستند که برنامههای کاربردی غیرمتمرکز (DApps) که امروزه در سراسر جهان مورد بحث قرار گرفته است، گونهای جدید از برنامههای کاربردی است، و از ویژگیهای این نوع برنامهها اینست که متعلق به هیچ کس نیستند، قابل از کار افتادن (خاموشی وتوقف کامل) نیستند، و امکان این را دارند که فاقد زمان عدم ارائه سرویس (وقفه موقتی) باشند.
- برنامههای کاربردی غیرمتمرکز لزوماً نیازمند اجرا بر روی شبکه زنجیره بلاکی (Blockchain) نیستند. به عنوان مثال: BitTorrent، BitMessage، Tor، … همگی برنامههای غیرمتمرکز مرسومی هستند که در شبکه P2P اجرا میشوند، که زنجیره بلاکی (نوع خاصی از شبکه P2P) نیست.
- در مقایسه با قراردادهای هوشمند ساده، مشابه چیزی که در Bitcoin کلاسیک دیده میشود و برای ارسال پول ازیک فرد به فرد دیگر است، برنامههای کاربردی غیرمتمرکز تعداد نامحدود شرکت کنندگان در هر طرف را دارند.
نکته: تعاریف فوق یک دیدگاه جامع و غیر قابل تغییر نیست و دیدگاههای مختلفی در مورد این موضوع وجود دارد.
تفاوت بین برنامههای کاربردی غیرمتمرکز و قراردادهای هوشمند
برنامههای کاربردی غیرمتمرکزبه مثابه وب سایتی مبتنی بر زنجیره بلاکی هستند، درجایی که قرارداد هوشمند آن چیزی است که اجازه میدهد تا آن را به زنجیره بلاکی وصل کنید. برای درک سادهتر این موضوع خوب است نگاهی به چگونگی کار وب سایتهای مرسوم داشته باشیم.
- اپلیکیشن های مرسوم وب، از HTML، CSS و جاوا اسکریپت برای نمایش و اجرای یک صفحه استفاده میکنند. و همچنین برای دستیابی به جزئیاتی که در پایگاه داده وجود دارد نیاز است که ازیک API استفاده شود. به این ترتیب هنگامی که شما مثلاً به صفحه فیسبوک وارد میشوید، این صفحه برای واکشی اطلاعات شخصی شما و نمایش آنها در صفحه یک API را فراخوانی میکند.
در وب سایتهای معمولی: Front End → API → Database
- برنامههای کاربردی غیرمتمرکز شبیه برنامههای وب معمولی هستند و از همان تکنولوژی برای نمایش و اجرای صفحه پیش رو استفاده میکنند. مهمترین تفاوت این است که به جای API جهت اتصال به پایگاه داده، از یک قرارداد هوشمند جهت اتصال با یک زنجیره بلوکی (blockchain) استفاده میشود.
در برنامههای کاربردی غیرمتمرکز مبتنی برزنجیره بلاکی: Front End → Smart Contract → Blockchain
در مقایسه با برنامههای کاربردی متمرکز مرسوم، که برنامه لایه پشت صحنه (backend) در سرورهای متمرکز اجرا میشود، برنامههای کاربردی غیرمتمرکز کد لایه پشت صحنه (backend) خود را در یک شبکه متمرکز P2P اجرا میکنند. در واقع برنامههای کاربردی غیرمتمرکز بصورت تمام وکمال شامل لایه پشت صحنه (backend) و لایه جلویی (frontend) به صورت یک بسته کامل میباشند. قرارداد هوشمند تنها بخشی از یک برنامه کاربردی غیرمتمرکز است.
از سویی دیگر، قرارداد هوشمند فقط شامل بخش پشت صحنه و اغلب تنها بخش کوچکی از تمامی یک برنامه کاربردی غیرمتمرکز است. این بدان معنی است که اگر بخواهیم یک برنامه کاربردی غیرمتمرکز که از سیستم قرارداد هوشمند استفاده میکند ایجاد کنیم، باید چندین قرارداد هوشمند را ترکیب کنیم و با سایر سیستمهایی که برای بخش frontend وجود دارد، متصل نماییم.
سورس برنامه جلوی صحنه و رابط کاربری، اپلیکیشن های غیرمتمرکز را میتوان با زبانهای مختلفی (درست مثل اپلیکیشن های دیگر) نوشت که میتواند بخش پشت صحنه آنرا فراخوانی کند. علاوه بر این، برای میزبانی بخش frontend میتوان از فضاهای غیرمتمرکز مانند Swarm یا IPFS استفاده کرد.
برنامههای کاربردی غیرمتمرکز مبتنی بر زنجیره بلاکی
برای اینکه یک برنامه کاربردی بتواند در زمره برنامههای کاربردی غیرمتمرکز در زمینه زنجیره بلاکی قرار بگیرد، باید دارای معیارهای زیر باشد:
- برنامه باید به طور کامل منبع باز باشد
- دادهها و سوابق عملیات برنامه باید بهصورت رمزنگاری و بهصورت غیرمتمرکز/ توزیع شده ذخیره شوند
- برنامه باید از توکن رمزنگاری/ داراییهای دیجیتال برای مصارف داخلی خود استفاده کند
- برنامه باید توکن ها را تولید کند و دارای مکانیسم مبتنی بریک الگوریتم/ پروتکل استاندارد رمزنگاری جهت اجماع داخلی باشد
طبقه بندی برنامههای کاربردی غیر متمرکز
بر اساس اینکه برنامه کاربردی غیرمتمرکز از کدام یک از مدلهای زنجیره بلاکی استفاده میکند، میتوان این برنامهها را در سه دسته طبقه بندی نمود:
نوع ۱-
- این نوع از برنامههای غیرمتمرکز خودشان دارای یک زنجیره بلاکی هستند (مانند بیت کوین).
- سایر رمزینه ارزها (مانند:, Litecoin, Dogecoin, Peercoin, Feathercoin, Zetacoin …) نیز در این رده قرار میگیرند.
نوع ۲-
- این نوع از برنامههای غیرمتمرکز از زنجیره بلاکی برنامههای نوع ۱، استفاده میکنند.
- برنامههای غیرمتمرکز نوع ۲، پروتکلها میباشند. این نوع برنامهها دارای توکن هایی هستند که برای عملکرد آنها ضروری است.
- یکی از نمونههای این نوع برنامههای کاربردی غیرمتمرکز، پروتکل Omni میباشد.
نوع ۳-
- این نوع از برنامههای غیرمتمرکز از پروتکلهای برنامههای نوع ۲، استفاده میکنند.
- به عنوان مثال، شبکه SAFE از پروتکل Omni برای صدور SafeCoins استفاده میکند که از آن برای ذخیره سازی فایلهای توزیع شده استفاده میشود.
بر اساس این طبقه بندی، میتوان بسیاری از پروژههای رمزنگاری حال حاضر را تحت عنوان یکی از این سه گروه دستهبندی نمود.
معروفترین پروژههای DApps
در حال حاضر Bitcoin و Ethereum دوتا از بزرگترین پلتفرمهای زنجیره بلاکی جهان هستند که برنامههای کاربردی غیرمتمرکز متعددی روی این زنجیرهها ساخته میشوند.
از سوی دیگر، برخی از توسعه دهندگان برنامههای کاربردی غیرمتمرکز ایجاد زنجیره بلاکی برای خودشان را بر میگزینند.
لیستی از برخی برنامههای کاربردی غیرمتمرکز و طبقه بندی “نوع” آنها در جدول زیر مشاهده میشود:
برنامه کاربردی در عمل | شرح | طبقه بندی (نوع) | توکن مورد استفاده | زنجیره بلاکی |
The SAFE Network | یک شبکه ارتباطی و ذخیره سازی دادهها بصورت غیر متمرکز | نوع ۳ | SafeCoin (SFE) | Bitcoin’s Blockchain |
Augur | یک پلت فرم پیش بینی بازار کاملاً منبع باز و غیرمتمرکز | نوع ۲ | Augur (REP) | Ethereum’s Blockchain |
Factom | یک سیستم نگهداری سوابق غیرمتمرکز و غیر قابل تغییر | نوع ۱ | Factom (FCT) | Private Blockchain |
Golem | یک برنامه غیر متمرکز برای ایجاد اولین بازار جهانی در زمینه استفاده از ظرفیت و توان بلااستفاده کامپیوترها | نوع ۲ | Golem (GNT) | Ethereum’s Blockchain |
Siacoin | یک ابر خصوصی، کاملاً منبع باز و غیرمتمرکز | نوع ۱ | Siacoin (SC) | Private Blockchain |
Storj | یک پروتکل P2P، غیرمتمرکز برای ارائه فضای اختصاصی ذخیره سازی ابری بصورت کاملاً امن و رمزنگاری شده | نوع ۲ | Storjcoin X (SJCX) | Ethereum’s Blockchain |
Counterparty | یک پلت فرم مالی غیرمتمرکز برای ایجاد برنامههای کاربردی مالی بصورت P2P | نوع ۲ | Counterparty (XCP) | Bitcoin’s Blockchain |
چگونگی عملکرد برنامههای کاربردی غیرمتمرکز
همانطور که بیان گردید، یک برنامه کاربردی غیرمتمرکز، پلتفرم نرم افزاری منبع بازی است که با استقاده از بلوکهای غیرمتمرکز پیاده سازی میشود و سوخت (عامل محرکه) آن استفاده از توکن هایی است که با استفاده از یک پروتکل / الگوریتم استاندارد رمزنگاری، تولید شده است.
در واقع منبع باز بودن زمینه ساز غیرمتمرکز بودن برنامه را ایجاد میکند. به طوری که همه افراد میتوانند به سورس برنامه دسترسی داشته باشند و به بهبود آن کمک کنند. همچنین روند افزایش مقیاس پذیری محصول را از لحاظ کیفیت و کمیت افزایش میدهد.
غیرمتمرکز سازی برنامه کاربردی با استفاده از زنجیره بلاکی گام بعدی است. خدمت این زنجیره بلاکی این است که به عنوان یک دفتر عمومی و دائمی ثبت اسناد/ معاملات، با قابلیت مراجعه افراد مختلف در هر زمان که بخواهند، عمل میکند.
و در نهایت، برای اضافه کردن رکوردها / معاملات به چنین دفتر کلی، از توکن هایی که قبلاً به نحوی بدست آمده است یا با بکارگیری الگوریتمها/ پروتکلهای مختلفی استحصال میگردند، استفاده میشود.
محبوبترین پروتکلهایی که مورد استفاده قرار میگیرند، در حال حاضر proof-of-work (که در بیت کوین استفاده شده) و proof-of-stake (که در Dash استفاده شده) میباشند. این پروتکلها جهت رسیدن به اجماع یا توافق بین همه کاربران یک برنامه کاربردی غیرمتمرکز مشخص مورد استفاده قرار میگیرند.
آینده برنامههای کاربردی غیرمتمرکز
تجربهای که تا به امروز از برنامههای کاربردی غیرمتمرکز بدست آمده است مانند این است که یک نگاه زیرچشمی و اجمالی به یک دنیای غیرمتمرکز داریم که به سرعت در حال تکامل و چرخش است.
برخی از صاحب نظران این حوزه معتقدند که: برنامههای کاربردی غیرمتمرکز به دلیل ساختار انگیزشی بالای آنها، انعطاف پذیری، شفافیت، انعطاف پذیری و طبیعت توزیع شده، بزودی از بزرگترین شرکتهای نرم افزاری در زمینه ابزار، جایگاه نزد کاربران و ارزیابی شبکهای پیشی خواهند گرفت.
–
نوشته :مسعود خرقانی، متخصص فناوری اطلاعات بانکی