Dapp یا برنامه های کاربردی غیر متمرکز چیست؟

هر آنچه که لازمه در زمینه Dapp یا همان برنامه های کاربردی غیر متمرکز بدانید در این پست گفته شده است. به طور خلاصه و مفید برنامه Dapp برنامه ای است که تحت مالکیت هیچ شخص یا سازمانی نیست و به دلیل غیرمتمرکز بودن برنامه و اجرای آن در بستر بلاک چین، باعث ایجاد اعتماد برای استفاده کنندگان میشود. مثلا سیستم رای گیری که در هیچ کجای دنیا برای مردم قابل اعتماد نیست، چرا که این سیستم در نهایت در اختیار یک شخص یا گروه یا حزب و یا سازمان و دولت قرار دارد و می تواند در نتایج رای گیری دخل و تصرف صورت گیرد. اما اگر همین سیستم رای گیری را در بستر بلاک چین و از طریق Dapp راه اندازی کنید، دیگر کسی مالکیت سیستم را در اختیار نخواهد داشت و آرا به صورت شفاف در نتایج رای گیری اعمال خواهد شد و هر رای دهنده قادر خواهد بود رای خود را پی گیری و نتیجه رای خود را در سیستم مشاهده کند.اجازه دهید مثال دیگری بزنم:چند بار در چنین موقعیتی قرار گرفته ­اید؟ به دنبال ابزار جدیدی برای خرید هستید و قیمت­ها را به صورت آنلاین مقایسه می­کنید. به سایت SmallWebRetailer.com برخورد می­ کنید که قیمت­ها را 30% ارزان­تر از سایت WellKnown.com زده است. سریع کالا را در سبد خریدتان قرار می­ دهید که مبادا قیمت افزایش پیدا کند. و آدرس پستی و مشخصات کارت بانکی را وارد می­ کنید. ناگهان.... از خرید دلسرد می شوید و از خودتان می­ پرسید که چرا کالایی با این مشخصات باید از قیمت واقعی آن کمتر فروخته شود؟ اگر وب سایت SmallWebRetailer.com کلاه­بردار باشد چه؟ آیا امکان دارد پولم را بدزدد؟ پس از چند دقیقه تردید در خرید، صفحه­ ی مرورگر دیگری را باز می­ کنید و مستقیما به WellKnown.com می­روید. با آگاهی از این مطلب که ابزار جدید را 30% گران­تر از سایت قبلی می­خرید اما اطمینان دارید که کلاه­برداری در کار نیست. سفارش را تکمیل کرده و خرید را انجام می­دهید.چرا مضطرب شدید؟ شاید به این دلیل که به سایت SmallWebRetailer.comاعتماد نداشتید. شاید نمی­ خواستید خود را درگیر مسائل و مشکلات کلاهبرداری از کارت بانکی کنید.چی میشد اگه میتونستید همان ابراز رو از اون سایت خرده فروشی خرید میکردید و مطمئن بودید که یک "برنامه تجارت الکترونیکی" خرید شما را تضمین می کند و تا زمانی که سفارش را تحویل نگرفتید، پولی به فروشنده پرداخت نشود.! اگر این شرایط توسط فروشنده یا شخص ثالثی ارائه نشده باشد و همه ی این موارد در یک پلتفرم انجام بگیرد و شرایط معامله به صورت رمزنگاری شده و امن انجام بگیرد بهتر نبود؟ خلاصه مطالبی که گفتم رو یک بار دیگه به صورت شفاف توضیح می دهم:1. اگر انتقال پول تا زمان تحویل مرسوله در جایی، نه توسط خرده‌فروش یا شخص ثالث، بلکه توسط برخی از پلتفرم ها، نگهداری می­شد، چطور بود؟2. اگر قوانین نگهداری و سپس آزادسازی انتقال پول به صورت رمزگذاری شده باشد و تعامل دستی در کار نباشد، چطور می­شد؟3. چطور می‌شد خودتان می­توانستید تمام موارد انجام کار را دنبال و بررسی کنید؟اگر مطمئن بودید که تا زمان تحویل سفارش، وجه شما با خیال راحت در جایی ذخیره می‌شود، شرط می‌بندم روی خرید کلیک می­کردید. چنین سامانه‏ هایی وجود دارد و به آن‌ها برنامه‌های غیرمتمرکز گفته می‌شود. بازارهای غیرمتمرکز، مانند OpenBazaar (https://openbazaar.org/)، به این‌روش کار می‌کنند. مکانیزمی که طی آن وجوه تنها زمانی به فروشنده منتقل می‌شود که کالا به‌صورت سالم تحویل گرفته‌شده باشد. این پروسه را قرارداد هوشمند می‌نامند.برنامه‌های غیرمتمرکز، decentralized apps یا Dapps نیز شناخته می‌شوند (dee-appsخوانده می‌شوند)، بخشی از موج جدید برنامه‌های تحت­ وب هستند که به‌منظور افزایش شفافیت در معاملات تجاری، فرایندهای دولتی، زنجیره‌های تأمین و همه سامانه‏ هایی که در آن‌ها نیاز به تقابل دو طرفه، اعتماد بین مشتری و تأمین‌کننده، کاربر و ارائه دهنده است، از آن استفاده می‌شود. هدف برنامه‌های غیرمتمرکز به حداقل رساندن یا حذف نیاز به هرگونه اعتماد در تعامل بین شرکت‌کنندگان سیستم، باهدف توانمندسازی کاربران، است. این نیازها، فراتر ازآنچه وب 2.0 ارائه می‌دهد است. برخی ادعا می‌کنند که برنامه‌های غیرمتمرکز می‌تواند ستون فقرات وب 3.0 باشد. DAPP چیست؟قبل از اینکه در مورد برنامه‌های غیرمتمرکز صحبت کنم، مفهومی را که قبلاً با آن آشنا هستید و به‌احتمال‌زیاد متوجه آن نشده ­اید را مجدداً بیان می‌کنم: منظورم برنامه ­ی متمرکز است. احتمالاً هرگز این عبارت را نشنیده‌اید، زیرا برنامه‌های معمولی وب و سازمانی به‌طور ضمنی نسبت به کاربران آن‌ها متمرکز هستند. حتماً می­پرسید، "متمرکز" دقیقاً به چه معناست؟یک برنامه یا سیستم متمرکز توسط یک نهاد واحد یا مرکزی مانند یک فرد، شرکت، موسسه، آژانس دولتی و غیره کنترل می‌شود. نهاد، سیستم را مستقیماً در محل خود یا از طریق ارائه دهنده خدمات یا ابر، میزبانی می‌کند و کنترل کامل تمام اجزا و لایه‌های معماری سیستم را بر عهده دارد. کاربر به حسن نیت موجودیت مرکزی اعتماد دارد و بسته به شهرت موجودیت تصمیم می‌گیرد که از آن سیستم استفاده کند یا خیر. ازنظر کاربر، سیستم یا قابل‌اعتماد است یا نه. امروزه اکثر برنامه‌های کاربردی تحت وب و سازمانی به این شکل طراحی‌شده است.شکل 1 یک تعامل معمولی بین یک کاربر و یک سیستم قابل‌اعتماد متمرکز را نشان می‌دهد. چیز شگفت‌انگیزی در آن پیدا نمی­ کنید.شکل شماره 1بیایید به سراغ برنامه­ های غیرمتمرکز برویم. اگر برنامه تجارت الکترونیک را که در بالا معرفی کردم در نظر بگیرید، حتما قبول خواهید کرد که نسبت به SmallWebRetailer.com مزایایی دارد:· شرایط مطلوب معامله - معامله به پایان می‌رسد و پول فقط زمانی منتقل می‌شود که خرده فروش همه­ ی شرایط مربوط به معامله را رعایت کرده باشد، مانند تأیید تحویل سالم سفارش. این کار باعث می­شود یکی از دغدغه­ هایی را که در مورد SmallWebRetailer.comداشتید حذف شود: عدم اطمینان از تحویل گرفتن و اینکه چه اتفاقی بر سر پولتان می ­افتد.· اجرای مستقل تراکنش و تأیید آن- معامله توسط خرده فروش یا شخص ثالث انجام نمی‌شود، بلکه توسط یکی از چندین شرکت‌کننده در بستر پشتیبانی از برنامه تجارت الکترونیک پردازش می‌شود و سپس همه شرکت‌کنندگان در پلتفرم به‌طور مستقل آن را تأیید می‌کنند. به مکانیزمی که همه طرفین باهم در مورد تأیید یک تراکنش موافقت می‌کنند، اجماع می­ گویند. مکانیسم اجماع این اطمینان را به شما می­ دهد که شرایط معامله وعده داده‌شده توسط بسیاری از طرف­ های مستقل، به‌جای یک خرده فروش ناشناس، اجرا و تأیید می‌شود. اجماع شکلی توزیع شده و غیرقابل اعتماد از توافق در مورد تأیید یک معامله است. توزیع شده به این معنی است که یک مقام مرکزی مستقل تأیید یک تراکنش را انجام نمی­دهد. در عوض، همه طرف‌ها در راستی‌آزمایی آن مشارکت دارند و در مورد آن توافق می‌کنند. غیرقابل اعتماد به این معنی است که طرفین برای توافق در مورد نتیجه تأیید، نیازی به اعتماد به یکدیگر ندارند. اجماع زمانی حاصل می­شود که اکثریت واجد شرایط شرکت­کنندگان در مورد نتیجه معامله توافق کرده باشند.· شفافیت - می‌توانید کد پردازش تراکنش را بررسی کنید و قبل از انتقال پول خود به خرده‌فروش، تأیید کنید که شرایط مشخص شده را رعایت می‌کند. این عمل اطمینانی به شما می دهد که برنامه تحت شرایط وعده داده‌شده اجرا می­ شود.می‌توانید با ایجاد برنامه تجارت الکترونیک به‌عنوان شبکه‌ای از گره‌های پردازشی بااهمیت و عملکرد یکسان‌که هرکدام متعلق به طرف دیگری است، همه این الزامات را برآورده کنید. هر گره باید:· بتواند یک تراکنش را به همان روشی که سایر گره ­ها انجام می­ دهند پردازش کند.· تمام تراکنش­ ها را به همان روشی که گره ­های دیگر انجام می­ دهند تأیید کنید.· به طور مساوی در نتیجه یک معامله مشارکت داشته باشند.نتیجه ‌این معماری آن خواهد بود که پردازش به‌جای متمرکز شدن بر روی مجموعه خاصی از سرورها که در اختیار یک نهاد خاص است، بر شبکه‌ای از گره ­های مستقل متمرکز می­ شود. چنین تمرکززدایی کاربر را از نیاز به اعتماد به یک نهاد خاص رها می‌کند: تنها کافی است کاربر به طراحی شبکه اعتماد کند. برنامه ­های ساخته‌شده بر اساس این معماری به‌عنوان برنامه‌های غیرمتمرکز شناخته می‌شوند. مثال دیگری را برای روشن‌تر شدن مفهوم ارائه می‌دهم.برنامه‌های غیرمتمرکز در مقابل برنامه‌های کاربردی متمرکز متداولبرای توضیح مزیت ساخت یک برنامه غیرمتمرکز نسبت به توسعه یک برنامه متمرکز متداول، مثالی را ارائه می­کنم: برنامه رأی‌گیری الکترونیکی.برنامه رأی‌گیری متمرکزبه‌طورکلی برنامه‌های رأی‌گیری متمرکز سنتی توسط یک شرکت برای تسهیل در رأی‌گیری سهامداران یا توسط اداره محلی یا دولت برای تسهیل در تصویب یا انتخاب پیشنهاد‌های قانونی ارائه می‌شود. موسسه‌ای که برنامه را اجرا می‌کند، به‌طور مستقیم یا غیرمستقیم (حداقل در طول جلسه رأی‌گیری) مالک آن است.همان‌طور که در بالای شکل 2 مشاهده می‌کنید، یک برنامه رأی‌گیری متمرکز بر روی یک یا چند سرور متصل به پایگاه داده مرکزی اجرا می‌شود. این سیستم از طریق یک یا چند سرور، وب‏گاه رأی‌گیری را در اختیار رأی‌دهندگان قرار می‌دهد. این موسسه می‌تواند وب، برنامه و سرورهای پایگاه داده را مستقیماً در محل یا در ابر میزبانی کند. اگر سیستم رأی‌گیری توسط موسسه در داخل پیاده‌سازی شده باشد، میزبانی ابری می‌تواند از طریق ارائه دهنده رایانش ابری به صورت "Infrastructure as a Service (IaaS)"، ارائه شود یا سیستم رای­ گیری به صورت اجاره از طریق ارائه دهنده برنامه ابری که "Software as a Service (SaaS)" ارائه می‌دهد، اجرا شود.شکل شماره 2به رأی‌گیری متمرکز اعتماد کنیدبا توجه به همه رسوایی‌های مالی و حسابداری که در چند سال گذشته در سطح شرکت‌ها و دولت اتفاق افتاده است، قابل‌درک است که به سازمان‌هایی که سهامدار یا شهروند آن هستید، اعتماد کامل نداشته باشید. شاید به این دلیل باشد که فکر می­ کنید نتایج رای­ گیری دستکاری شده باشند.مثلا تصورمان این است که یک توسعه‌دهنده یا مدیر بدذات برنامه رأی‌گیری، با مشارکت برخی از طرفین که به نتیجه خاصی از رأی‌گیری علاقه دارند، می‌تواند به قسمت‌های کلیدی سیستم دسترسی داشته و در نحوه جمع‌آوری و پردازش آراء، دست‌کاری کرده و در سطوح مختلف معماری برنامه اعمال کند. بسته به نحوه طراحی برنامه، ممکن است برخی از مدیران پایگاه داده حتی بتوانند آرا را به‌صورت عطف به ماسبق(نتایج قبلی) تغییر دهند.امنیت در رأی‌گیری متمرکزهنگام رأی‌گیری از طریق یک برنامه متمرکز، نه‌تنها نگران حسن نیت شرکت یا موسسه‌ای هستید که انتخابات را سازمان‌دهی می‌کند، بلکه نگران این هستید که آیا سیستم به‌درستی در برابر دست‌کاری خارجی ایمن شده است یا خیر. به‌عنوان‌مثال، احزاب خارجی بخواهند که رأی‌گیری به طریقی خاص پیش برود و با هک کردن سیستم به نتیجه دلخواه خود برسند.همان‌طور که قبلاً توضیح دادم، یک سیستم رأی‌گیری متمرکز تنها شامل تعداد معینی از سرورهای موجود در یک شبکه است. هر سرور به‌طورکلی تنها یک عملکرد را ارائه می‌دهد، بنابراین تنها یک نقطه شکست دارد، نه‌تنها ازنظر پردازش، بلکه ازنظر امنیتی. به‌عنوان‌مثال، اگر یک هکر بتواند کد را در سرور وب تغییر دهد تا رأی‌ها در آن لایه، ره‌گیری و اصلاح شوند، کل سیستم به خطر می‌افتد. تنها با هک کردن سرور برنامه یا حتی بهتر از آن، سرور پایگاه داده، می‌توان به همان نتیجه رسید. نقض امنیت در بخشی از سیستم، برای به خطر انداختن امنیت کل سیستم کافی است.برنامه رأی‌گیری غیرمتمرکزیک برنامه غیرمتمرکز بر دو اصل فنی کلیدی استوار است:· منطق کاربردی آن به‌صورت هم‌زمان و مستقل بر روی هر سرور شبکه همتا به همتا (P2P) وجود دارد و اجرا می‌شود. ازنظر تئوری، هر شرکت‌کننده مالک هر سروری است که به‌عنوان گره نیز شناخته می‌شود. یک گره مرکزی، سرورها را کنترل یا هماهنگ نمی‌کند. در عوض، مستقیماً با یکدیگر ارتباط برقرار می‌کنند و درنتیجه به‌عنوان گره‌های همتا نیز شناخته می‌شوند. آن‌ها به‌طور مداوم خروجی یکدیگر را تأیید می‌کنند، بنابراین یک کاربر فقط باید به شبکه P2P اعتماد کند، نه یک سازمان فردی. داده‌ها و وضعیت برنامه در یک کپی محلی از پایگاه داده در هر سرور شبکه ذخیره می‌شود، همان‌طور که در شکل 2 نشان داده‌شده است.· فناوری پایگاه داده آن، ‌که زنجیره‏ بلوکی نامیده می‌شود، تضمین می‌کند که داده‌ها را نمی‌توان به‌صورت گذشته‌نگر تغییر داد.اعتماد و امنیت در برنامه‌های غیرمتمرکز به لطف تکرار شبکه P2Pچگونه می‌توان با تمرکززدایی در برنامه رأی‌گیری (با توجه به دو اصل ذکر شده) نگرانی‌های اعتماد و امنیت را برطرف کنید؟ اجرای یک برنامه رأی‌گیری غیرمتمرکز روی شبکه‌ای از سرورهای متعدد، که هریک ازنظر تئوری متعلق به یک حزب متفاوت است، عدم اعتماد و امنیت را از بین می­ برد. کمی بیشتر فکر کنید: اگر آرا توسط یک سرور واحد پردازش و تأیید نشده است، بلکه توسط بسیاری از سرورهای متعلق به احزاب مختلف پردازش و تأییدشده است، همچنین آراء نه در یک پایگاه داده واحد، بلکه در چندین پایگاه داده ذخیره‌شده‌اند که به‌صورت محلی روی هر پردازش ­کننده ­ای قرار دارد، چه اعتماد و چه نگرانی‌های امنیتی برطرف می‌شود:· اعتماد - اگر یکی از شرکت‌کنندگان سعی در تخریب و تغییر رأی کند و رأی اصلاح‌شده را در شبکه تبلیغ کند، سایر شرکت‌کنندگان در هنگام اعتبار سنجی، رأی را به عنوان اصلاح شده تشخیص داده و آن را رد می‌کنند. درنتیجه رأی تغییر یافته را در نسخه محلی پایگاه داده خود ذخیره نمی‌کنند و رأی تغییر یافته را در کل شبکه منتشر نمی‌کنند، بنابراین تغییر مخرب بی‌معنی می‌شود.· امنیت – تلاش هکرها برای تغییر آرا در یک سیستم غیرمتمرکز بسیار دشوارتر از تلاش برای انجام این کار در یک سیستم متمرکز است. حتی اگر بتوانند آرا را در یک سرور تغییر دهند، یا خودشان را بر روی یک سرور از شبکه برنامه رای­ گیری غیرمتمرکز میزبانی کنند تا این کار را آسان­تر انجام دهند، سایر شرکت­ کنندگان تغییر را تشخیص داده و رد می­ کنند، همانطور که قبلاً مشاهده شد. بنابراین، هک موفقیت آمیز، مستلزم به خطر انداختن نه یک سرور شبکه، بلکه حداقل 51 درصد از گره ­های شبکه به طور همزمان است، با این فرض که وضعیت برنامه همان چیزی باشد که بین اکثر گره ­های شبکه توافق شده است. همانطور که می­ دانید، تلاش برای دستکاری بخش بزرگی از یک شبکه که شامل هزاران سرور می­ باشد، کاری فوق العاده چالش برانگیز است، به خصوص اگر هر یک به طور مستقل مدیریت شوند. همچنین، ممکن است هر یک از آنها با روشی متفاوت برای جلوگیری از نقض امنیت تنظیم شده باشند.اعتماد و امنیت در برنامه‌های غیرمتمرکز به لطف زنجیره‏ بلوکیپایگاه داده زنجیره‏ بلوکی مبتنی بر ساختار داده است و همان‌طور که از نامش پیداست، زنجیره‌ای از بلوک‌ها است. یک بلوک می‌تواند به‌عنوان تاریخچه ­ای از معاملات باشد که حاوی مجموعه‌ای از معاملات است و یک پیوند به بلوک قبلی دارد که هرکدام به‌صورت دیجیتالی امضاشده ­اند و برخی توسط ابرداده (مانند شماره بلوک و اطلاعات تمبر زمان) به هم پیوند شده ­اند. هر تراکنش (هر بلوک به‌طورکلی) و پیوندهای بین بلوک‌ها توسط فناوری رمزنگاری، ایمن شده ­اند و آن‌ها را تغییرناپذیر کرده است: تغییر عطف به ماسبق در معاملات واحد تقریباً غیرممکن است، به‌خصوص که بلوک‌های بیشتری به زنجیره اضافه می‌شوند. بنابراین، یک پایگاه داده زنجیره‏ بلوکی با حفاظتی که در برابر دست‌کاریی شرکت‌کنندگان مخرب و طرف­ های خارجی انجام می­ دهد، نگرانی‌های مربوط به اعتماد و امنیت را برطرف می‌کند.تا اینجا، ممکن است مفهوم برنامه رأی‌گیری غیرمتمرکز را از دیدگاه منطقی یا سطح بالا امیدوارکننده بدانید، اما شاید جنبه‌های فیزیکی و سطوح پایین معماری آن برایتان نامقهوم باشد. شاید برخی از تردیدهای شما موارد زیر باشند:· معماری سیستم - آیا شبکه‌ای که برنامه رأی‌گیری غیرمتمرکز را میزبانی می‌کند، نوع خاصی از شبکه است؟ آیا سرورها با استفاده از یک پروتکل خاص یا با استفاده از فناوری استاندارد اینترنت با یکدیگر ارتباط برقرار می‌کنند؟· پردازش و تأیید رأی - چگونه ارسال رأی در سراسر شبکه پخش می‌شود به‌طوری‌که رأی روی هر سرور شبکه پردازش می‌شود؟ چگونه یک رأی شمارش می‌شود و سپس در زنجیره‏ بلوکی ذخیره می‌شود؟ چگونه یکی از اعضای شبکه صحت سوابق رأی‌گیری دریافت شده از سایر اعضا را تأیید می‌کند؟سعی می‌کنم به این سؤالات در دو بخش بعدی که جزئیات سطح پایین برنامه رأی‌گیری غیرمتمرکز را پوشش می‌دهد، پاسخ دهم. انجام این کار به من اجازه می­ دهد، درحالی‌که دو نمای مکمل سطح پایین سیستم را ارائه می‌کنم، شروع به معرفی اتریوم کرده و به اجزای زیرساختی مشخصی اشاره کنم:· یک نمای ساختاری برنامه غیرمتمرکز - معماری سطح پایین سرویس‌گیرنده و سرور برنامه غیرمتمرکز رأی‌دهی را توضیح خواهم داد.· نمای تراکنشی برنامه غیرمتمرکز -گام‌به‌گام کل چرخه یک تراکنش رأی‌دهی را دنبال می‌کنم.نمای ساختاری: آناتومی یک برنامه غیرمتمرکزنمای ساختاری برنامه رأی‌گیری غیرمتمرکز شامل توصیف اجزای سمت مشتری و سمت سرور است که در سمت مشتری، رای­ دهنده توسط رابط کاربری رای خود را می­ دهد و در سمت سرور، منطق شبکه که توسط شبکه ­ای از سروها اجرا می ­شود نشان داده می­ شوند.برنامه غیرمتمرکز سمت کاربر: یک برنامه وبسرویس‌گیرنده وب رأی‌گیری که در شکل 3 نشان داده‌شده است، ابتدا در مرورگر کاربر توسط یک وب سرور معمولی بارگیری می‌شود، عموماً به‌عنوان یک برنامه وب حاوی HTML و JavaScript. رابط کاربری وب حاوی هیچ‌گونه اسکریپت سمت سرور نیست و مستقیماً از طریق یک کتابخانه جاوا اسکریپت سمت کاربر به نام Web3.js است که با سرور خاصی از شبکه ارتباط برقرار می‌کند. همچنین این اجازه را به کاربر می­ دهد که با یک گره شبکه واقع در محل خود ارتباط برقرار کند. تا اینجای کار، این برنامه هیچ تفاوت عمده‌ای با یک برنامه وب معمولی ندارد.شکل 3برنامه غیرمتمرکز سمت سرور: یک شبکه P2Pسمت سرور، برنامه غیرمتمرکز متشکل از یک شبکه P2P از سرورها است که کد یکسانی را اجرا می‌کنند و کپی‌های یکسانی از پایگاه داده زنجیره‏ بلوکی دارند. همان‌طور که می‌دانید، ویژگی اصلی این توپولوژی شبکه ‌در این است که از هیچ هماهنگی مرکزی استفاده نمی­ شود، بلکه در عوض از ارتباط مستقیم بین هر گره و تعدادی از گره‌های دیگر استفاده می­ شود که به‌عنوان گره‌های همتا یا صرفاً همتا شناخته می‌شوند. نیازی به گره اصلی نیست. همان‌طور که در شکل 4 نشان داده‌شده است، لازم نیست که یک گره به همه گره‌های شبکه متصل باشد. اتصال به چند گره برای اطمینان از انتشار سریع تراکنش‌ها در کل شبکه کافی است.شکل 4شبکه اتریومشبکه‌های مختلفی از P2P وجود دارد که بسترهای زنجیره‏ بلوکی را پشتیبانی می‌کنند. معروف‌ترین آن شبکه بیت‏کوین است.در اینجا تمرکز ما روی شبکه اتریوم است که گره‌های شرکت‌کننده آن (همان‌طور که در شکل 5 نشان داده‌شده است) پایگاه داده زنجیره‏ بلوکی و یک نرم‌افزار به نام سرویس‌گیرنده گره را میزبانی می‌کند و به یک گره امکان برقراری ارتباط با سایر گره‌ها را می‌دهد. ازآنجاکه همه گره‌ها معادل یکدیگر هستند، بنابراین در شبکه اتریوم هیچ مفهوم مشخصی از کلاینت و سرور وجود ندارد. هر گره یک سرور برای گره‌های دیگر است، اما درعین‌حال، مشتریِ گره‌هایِ دیگر است. به همین دلیل است که عنصر نرم‌افزاری یک گره اتریوم را کاربر(مشتری) می‌نامند.کاربرهای اتریوم یک رابط مشتری مشترک را نشان می‌دهند و از طریق یک پروتکل P2P به نام Wire با یکدیگر ارتباط برقرار می‌کنند. این پروتکل یک روش استاندارد برای ارسال داده‌ها (به‌ویژه یک تراکنش) در سراسر شبکه (مانند یک رأی ارسال‌شده)، و یک بلوک (مانند مجموعه ­ای از آراء ادغام شده در پایگاه داده بلاک­چین) است.پیاده‌سازی‌های مختلفی از یک سرویس‌گیرنده اتریوم وجود دارد. همان‌طور که در شکل 5 مشاهده می‌کنید، به زبان‌های مختلف، از C++ تا Go نوشته‌شده‌اند، اما همه آن‌ها رابط کاربری استاندارد و پروتکل Wire را پیاده‌سازی می‌کنند، بنابراین می‌توانند به‌طور یکپارچه تعامل داشته باشند.شکل 5مزیت کاربر گره اتریوم نسبت به کاربر گره بیت‏ کوین این است که قادر است نه‌تنها تراکنش‌ها و بلاک‌های رمزنگاری‌شده را در سراسر شبکه، مانند یک گره بیت کوین، منتشر کند، بلکه کد برنامه‌ای را که در پایگاه داده زنجیره‏ بلوکی میزبانی‌شده است را نیز اجرا کند. از این نظر، پلتفرم هایی مانند اتریوم به‌عنوان زنجیره­ های‏ بلوکی قابل‌برنامه‌ریزی شناخته می‌شوند. کد برنامه‌های غیرمتمرکز در قراردادهای هوشمند ساختاریافته است، که منطق و حالت را به همان روشی که کلاس­ ها در اکثر زبان­های شی­ گرا انجام می­ دهند، دربرمی‌گیرد. به‌عنوان‌مثال، برنامه غیرمتمرکز رأی‌دهی، می­ تواند براساس قراردادهای هوشمند مختلفی طراحی‌ شود و در زنجیره‏ بلوکی اتریوم میزبانی ‌شوند. به‌زودی توضیح می‌دهم که قرارداد هوشمند چیست، چگونه آن را به کار ببرید، چگونه آن را اجرا کنید و یک قرارداد هوشمند در کجا ذخیره و اجرا می‌شود. صبر کنید.نقش گره‌های شبکهاگرچه همه گره‌های شبکه به‌طور یکپارچه از طریق پروتکل مشترک P2P Wire ارتباط برقرار می‌کنند، اما همه گره‌ها عملکرد یکسانی را انجام نمی‌دهند. به‌طورکلی، همان‌طور که در شکل 6 نشان داده‌شده است، دو نوع اصلی از گره‌ها را داریم که ازنظر عملکرد متفاوت هستند:· گره کامل - اکثر گره‌ها یک راه ­اندازی استاندارد دارند که به آن‌ها امکان می‌دهد تراکنش‌ها را به‌صورت غیرفعال پردازش کنند: آن‌ها می‌توانند از پایگاه داده زنجیره‏ بلوکی بخوانند، اما نمی‌توانند بلوک‌های جدید در زنجیره‏ بلوکی ایجاد کنند. اما می‌توانند بلوک‌های دریافت شده از گره‌های همتا را به زنجیره‏ بلوکی محلی اضافه کنند. آن­ها فقط برای تأیید صحت بلوک‌های زنجیره‏ بلوکی که از گره‌های همتا دریافت کرده ­اند، تراکنش‌ها را اجرا می­ کنند. در مورد برنامه رأی‌گیری، گره‌های کامل، آرای دریافتی از همسالان خود را به دیگر همسالان خود منتقل می‌کنند. گره‌های کامل همچنین با اجرای قراردادهای هوشمند برنامه‌های غیرمتمرکز رأی‌دهی، صحت بلوک‌های دریافت شده و آرای معتبر را بررسی می‌کنند. اما آرا را در بلاک‌های جدید زنجیره‏ بلوکی ذخیره نمی‌کنند.شکل 6· گره استخراج- برخی از گره‌ها برای پردازش فعال تراکنش‌ها پیکربندی‌شده‌اند: آن‌ها تراکنش‌ها را در بلاک‌های جدید زنجیره‏ بلوکی گروه‌بندی و ذخیره می‌کنند. برای انجام چنین کارهای فشرده محاسباتی و انرژی‌زا، اتر (ارز رمزنگاری‌شده که در بستر اتریوم پشتیبانی می‌شود) پاداش می‌گیرند. سپس این بلوک‌های جدید را در بقیه شبکه P2P منتشر می‌کنند. به این‌گونه گره‌ها، گره‌های استخراج (یا minning node) گفته می‌شود، زیرا فرآیند ادغام یک بلاک جدید در زنجیره‏ بلوکی و دریافت پاداش برای انجام این کار توسط توکن­ های ارزهای رمزنگاری‌شده، به‌عنوان استخراج شناخته می‌شود. در مورد برنامه غیرمتمرکز رأی‌گیری، گره‌های استخراج، آرای دریافت شده از گره‌های همتا را در یک بلاک جدید گروه‌بندی می‌کنند، بلوک را به زنجیره‏ بلوکی اضافه می‌کنند و بلوک را از طریق همتایان خود منتشر می‌کنند.تا اینجای کار دیدگاه ساختاری برنامه غیرمتمرکز رأی‌گیری را بررسی کرده‌اید. شکل 7 کل سیستم، ازجمله طرف کاربر و سرور را نشان می‌دهد.شکل 7دیدگاه تراکنشی: از طریق چرخه عمر یک تراکنشبا افزودن یک بعد زمانی به نمای استاتیک که در شکل 7 مشاهده کردید، شکل 8 گام‌به‌گام چرخه کامل یک تراکنش رأی‌گیری را نشان می‌دهد:1. کاربر یکی از گزینه‌های احتمالی رأی‌گیری را از یک لیست پیش‌فرض در سرویس‌گیرنده وب انتخاب کرده و روی رأی کلیک می‌کند.2. یک تابع جاوا اسکریپت، رویداد کلیک را کنترل کرده و رأی­ انتخاب شده را می­ گیرد. سپس از طریق توابع مختلف کتابخانه web3.js، با یک گره اتریوم پیکربندی‌شده ارتباط برقرار می‌کند، به قرارداد هوشمند رأی‌گیری متصل می‌شود و تابع castVote() را بر روی آن فراخوانی می‌کند. فراخوانی castVote()، یک پیام تراکنش ایجاد می‌کند که به‌صورت دیجیتالی در مقابل کاربر امضاشده است تا ثابت شود فرستنده اصلی است.3. گره اتریوم محلی متصل، پیام تراکنش را مدیریت کرده، آن را تأیید می‌کند و آن را به گره‌های همکار خود منتقل می‌کند.4. گره‌های همتا همین کار را انجام می‌دهند و انتشار تراکنش را ادامه می‌دهند تا زمانی که تراکنش به گره‌های استخراج برسد. بسته به نسبت گره‌های کامل به گره‌های استخراج، این امر به‌سرعت اتفاق می‌افتد. گره‌های استخراج، همانند یک گره کامل، مراحل مشابهی (مراحل 2 و 3) را انجام می‌دهند. علاوه بر این، گره استخراج، تراکنشی را انتخاب می‌کند، مانند تراکنش رأی‌گیری. یک تراکنش مفید تلقی می­شود اگر هزینه اجرای تراکنش بیشتر از هزینه­ ی برقی باشد که گره استخراج در طول پردازش مصرف می­ کند. در این صورت، گره استخراج، تابع castVote() را اجرا می‌کند و با سایر گره‌های استخراج رقابت می‌کند تا تراکنش را روی زنجیره‏ بلوکی ذخیره کند. گره برنده ­ی استخراج (گره­ استخراجی که با موفقیت الگوریتم اجماع یک مشکل رمزنگاری را حل کرده باشد) تراکنش رأی‌دهی را در میان سایر تراکنش‌ها در یک بلوک جدید زنجیره‏ بلوکی ثبت می‌کند. سپس بلاک جدید را به همه گره‌های هم رده خود (بدون توجه به گره کامل بودن یا گره‌ استخراج‌ بودن) منتقل می‌کند.5. هر گره‌ای که یک بلاک جدید دریافت کرده است، واقعی بودن تک تک تراکنش‌های موجود در آن و اعتبار کل بلوک را بررسی می‌کند که درست است یا خیر. سپس تمام تراکنش‌های موجود در آن را پردازش می‌کند. هنگام انجام این کار، به‌طور ضمنی اعتبار قرارداد را نیز تأیید می‌کند. به‌عنوان‌مثال، منطق ارسال رأی این است که تائید شود تعداد آرای یک نامزد یا تعداد کل آراء داده شده به همه ­ی نامزدها از تعداد رای­ دهندگان بیشتر نباشد. اگر گره، بلوک را با موفقیت تأیید کند، آن را به گره‌های همکار خود منتقل می‌کند و تا زمانی که کل شبکه زنجیره‏ بلوکی، بلوک جدید را دریافت نکرده باشند، همان عمل تأیید و انتشار را انجام می‌دهند. 6. گره محلی اتریوم با توجه به کاربر، بلوک جدید را دریافت کرده و با اجرای تمام تراکنش­ های موجود بر روی آن، آن را تأیید می­ کند (همانطور که تمام گره ­های دیگر انجام داده ­اند). یکی از این‌ها، تراکنش رأی دادن است که برای ایجاد یک رویداد VoteConfirmation در صورت تکمیل موفقیت ­آمیز برنامه ­ریزی شده است. این‌رویداد برای همه مشتریانی که مشترک آن هستند، منتشر می‌شود، ازجمله رابط کاربری وب برنامه غیرمتمرکز.7. کد جاوا اسکریپت موجود در سرویس‌گیرنده وب رأی‌دهنده یک تابع callback دارد که در برابر رویداد VoteConfirmation ثبت‌شده است و فعال می‌شود.8. سرانجام، تابع callback اعلان تأیید رأی را روی صفحه رأی‌دهنده نشان می‌دهد.شکل 8 برخی اصطلاحات برنامه غیرمتمرکزاگرچه برنامه‌های غیرمتمرکز ایده نسبتاً جدیدی هستند، اصطلاحات استاندارد پیرامون آن‌ها تقریباً پس از ساخت اولین برنامه‌های غیرمتمرکز ظاهر شد. در این بخش، خلاصه‌ای از اصطلاحات کلیدی را توضیح می­ دهم. قبلاً با برخی از این اصطلاحات در قسمت‌های قبلی آشنا شده‌اید، اما اکنون آن‌ها را دقیق‌تر تعریف می‌کنم.قرارداد هوشمندقرارداد هوشمند توافقی بین دو یا چند طرف است و شامل تبادل دارایی‌های دیجیتالی است. یک یا چند نفر از این طرف‌ها دارایی‌های دیجیتالی را در آغاز قرارداد به قرارداد اختصاص می‌دهند. متعاقباً، دارایی‌ها طبق یک پروتکل از پیش ­تعریف شده که در منطق رمزگذاری شده است و وضعیتی که در ابتدای قرارداد مقداردهی اولیه شده است، بین طرفین توزیع می‌شود.نماینده مستقلنماینده خودمختار یا مستقل، یک نهاد نرم‌افزاری است که به‌طور مستقل با خدمات نرم‌افزاری خارجی در تعامل است و می‌تواند پس از تغییرات تأییدشده در محیط بیرونی، خود را مجدداً پیکربندی یا حتی برنامه‌ریزی مجدد کند.سازمان غیرمتمرکزیک سازمان متمرکز سنتی، شامل دارایی‌ها و طبقات مختلفی از افراد، به‌طورمعمول سرمایه‌گذاران، کارکنان و مشتریان است. سرمایه‌گذاران با تملک بخشی از سازمان از طریق خرید سهام، آن را کنترل می‌کنند. تعامل بین برخی از رده‌های افراد، تحت تأثیر کنترل آن‌ها بر سازمان است. به‌عنوان‌مثال، کارکنان می‌توانند توسط سرمایه‌گذاران یا سایر کارکنان مجاز، به‌طور مستقیم یا غیرمستقیم توسط سرمایه‌گذاران جذب شوند.یک سازمان غیرمتمرکز یا decentralized organization(DO)توسط هیچ شخص یا نهادی کنترل نمی‌شود. پروتکل‌های از پیش تعیین‌شده چیزی است که تعامل بین طبقات افراد درگیر در سازمان را تعیین می‌کند. اما چنین پروتکل‌هایی را می‌توان طوری طراحی کرد که برخی افراد قدرت بیشتری نسبت به سایرین داشته باشند (برای مثال، بسته به تعداد سهام متعلق به آن‌ها) دقیقاً مانند سازمان‌های متمرکز.سازمان مستقل غیرمتمرکزیک سازمان مستقل غیرمتمرکز یا decentralized autonomous organization(DAO) هم یک سازمان غیرمتمرکز و هم یک نماینده مستقل است. مانند یک نماینده مستقل، این یک نهاد نرم‌افزاری است که به‌طور مستقل با خدمات نرم‌افزاری خارجی در تعامل است. افرادی که با سازمان مستقل غیرمتمرکز مشارکت دارند، مانند سازمان‌های غیرمتمرکز، از طریق پروتکل‌های از پیش تعریف‌شده با یکدیگر ارتباط برقرار می‌کنند.تفاوت اصلی بین سازمان مستقل غیرمتمرکز و سازمان غیرمتمرکز در این است که تعامل بین سازمان مستقل غیرمتمرکز و طرف­ های خارجی تا حد زیادی خودکار است و پروتکل‌های تعامل در یک قرارداد هوشمند برنامه‌ریزی شده است، درحالی‌که تعامل بین افرادی که صاحب سازمان غیرمتمرکز هستند و طرف­ های خارجی فقط منوط به یک پروتکل دستی یا دفترچه راهنما هستند. نکته کلیدی این است که ازنظر احزاب خارجی، سازمان‌های مستقل غیرمتمرکز از سازمان‌های غیرمتمرکز قابل‌اعتمادتر هستند زیرا تعاملات خودکار قابل پیش‌بینی هستند، درحالی‌که تعاملات مبتنی بر یک پروتکل دستی به‌طور کامل بر شهرت افراد تحت آن متکی است.بر اساس این تعاریف، نظرات در مورد اینکه آیا پلتفرم­ های زنجیره ‏­بلوکی که باهدف اصلی یا تنها برای حمایت از یک رمزارز ساخته‌شده‌اند، می‌تواند به‌عنوان سازمان مستقل غیرمتمرکز یا سازمان غیرمتمرکز طبقه‌بندی شود، متفاوت است. ازآنجاکه زیرساخت بیت‏ کوین اجازه اجرای پروتکل‌های تعامل خودکار را نمی‌دهد، برخی معتقدند که باید به‌عنوان سازمان غیرمتمرکز طبقه‌بندی شود.شرکت مستقل غیرمتمرکزیک شرکت مستقل غیرمتمرکز یا decentralized autonomous corporation(DAC) یک سازمان مستقل غیرمتمرکز است که می‌تواند تا حدی از طریق خرید سهام، متعلق به آن باشد. مانند شرکت‌های کلاسیک (متمرکز)، شرکت مستقل غیرمتمرکز بسته به موفقیت مالی، سود سهام را به‌صورت دوره‌ای تقسیم می‌کند. از سوی دیگر، یک سازمان مستقل غیرمتمرکز عموماً یک سازمان غیرانتفاعی است و شرکت‌کنندگان با مشارکت در اکوسیستم آن و افزایش سرمایه داخلی آن، صرفاً ازنظر اقتصادی سود می‌برند.جنبه‌های کلیدی هر یک از این اصطلاحات در جدول زیر خلاصه‌شده است.برنامه‌های غیرمتمرکز در مقابل برنامه‌های توزیع‌شدهبرنامه‌های غیرمتمرکز را نباید با برنامه‌های توزیع‌شده اشتباه گرفت. این دو مفهوم شباهت‌هایی باهم دارند، اما یکسان نیستند.اگر برنامه‌ای روی چندین سرور در شبکه اجرا شود، توزیع ­شده است. ساده‌ترین مثال یک برنامه توزیع‌شده یک برنامه وب است که معمولاً بر روی یک وب سرور، یک سرور برنامه و یک سرور پایگاه داده و احتمالاً یک سرور ایمیل و رایانه‌های اصلی قدیمی توزیع می‌شود. برنامه رأی‌گیری متمرکز که قبلاً مشاهده شد نمونه‌ای از برنامه توزیع‌شده است. توزیع ­شده است، چرا که در چندین سرور پخش‌شده است، اما متمرکز نیز هست، زیرا همه سرورها متعلق به یک موسسه هستند.یک برنامه توزیع‌شده بر روی چندین سرور یک شبکه اجرا می‌شود. یک برنامه غیرمتمرکز به طور کامل روی هر گره از یک شبکه ­ی بزرگ تکرار می­شود.مقایسه ساختار برنامه‌های توزیع‌شده و غیرمتمرکزاگر یک برنامه به‌طور کامل در هر گره از شبکه تکرار شود و هر گره ازلحاظ تئوری متعلق به یک نهاد متفاوت باشد، غیرمتمرکز می‌شود. هرچه تعداد واحدهایی که گره ­های شبکه دارند، بیشتر باشد، شبکه به‌طور کامل قابل‌اعتمادتر است. بدیهی است که شبکه‌هایی که فقط تعداد اندکی مالک دارند، نمی‌توانند قابل‌اعتماد تلقی شوند، زیرا درواقع پردازش را غیرمتمرکز نمی‌کنند.یک برنامه متمرکز به‌طورکلی توزیع می‌شود، اما برنامه‌های غیرمتمرکز می‌توانند بر روی چندین سرور در هر گره منطقی توزیع شوند.برنامه‌های غیرمتمرکز خوب و بددر چند سال گذشته برنامه‌های غیرمتمرکز زیادی توسعه‌یافته است. برخی از آن‌ها دوره­های مختلفی از سرمایه‌گذاری خطرپذیر را گذرانده­اند و با موفقیت در تولید به کار گرفته‌شده‌اند. دیگر برنامه‌ها نتوانسته‌اند سرمایه‌گذاران و کاربران را متقاعد کنند و هرگز مرحله اثبات مفهوم(proof-of-concept) را پشت سر نگذاشته‌اند.زمینه ­های خوب برای استفادهبا توجه به‌تازگی این فناوری، پیش‌بینی اینکه چگونه کار می‌کند و چگونه شکست خواهد خورد، دشوار است. بااین‌وجود، برای زنجیره‏ بلوکی و به‌ویژه برای اتریوم زمینه ­های استفاده خوبی شناخته شده است. برنامه‌های غیرمتمرکز بهینه آن‌هایی هستند که از مزایای اصلی این فناوری‌ها استفاده می‌کنند، به‌طور خاص تغییرناپذیری، تمرکززدایی، امنیت و انعطاف‌پذیری را ثبت می‌کنند. درنتیجه، زمینه‌های اصلی احتمالی که توسط برنامه‌های غیرمتمرکز متحول خواهند شد عبارت‌اند از: منشأ و مالکیت، ردیابی اصالت، تأیید هویت، حسابرسی قانونی، حسابرسی هزینه‌های خیریه، بازارهای پیش‌بینی، مدیریت وفاداری مشتریان، تأمین سرمایه جمعی، رأی‌گیری الکترونیکی، سرمایه‌گذاری، وام‌دهی، مدیریت بازی‌های برخط، پرداخت حق امتیاز نویسنده، اینترنت اشیاء، رایانش ابری و حتی آزادی بیان. بیایید ببینیم قبلاً چه راه‌حل‌های ابتکاری در برخی از این زمینه‌ها پیداشده است.ردیابی اصالت و اصالتیکی از بزرگ‌ترین مشکلاتی که بر مدیریت زنجیره تأمین تأثیر می‌گذارد ردیابی اصالت مواد است، به‌ویژه وقتی ‌که زنجیره‌های طولانی کالاهای فرآوری شده از چندین کشور عبور می‌کند. در اینجا برخی از برنامه‌های غیرمتمرکز که با راه‌حل‌های مبتنی بر زنجیره‏ بلوکی، نوآوری ایجاد کرده ­اند را شرح می­ دهیم:· برنامه‌های کاربردی مانند Provenanceردیابی مواد مبتنی بر زنجیره‏ بلوکی را ایجاد کرده تا اطمینان حاصل شود که در زنجیره ­ی تامین، اطلاعاتی از بین نرفته یا دست­کاری نشده و کالاهای باکیفیت و مورد انتظار به دست مشتری نهایی می‌رسد. یکی از اولین برنامه‌هایی که بر اساس Provenance ساخته‌شده است، روی صنایع غذایی متمرکزشده است تا زنجیره تأمین مواد اولیه را از نقطه جمع‌آوری (یعنی فرآیند تولید مواد غذایی) تا نقطه نهایی فروش که مصرف‌کننده است را ردیابی می­ کند. هدف از این سیستم این است که ثابت کند غذای فروخته‌شده همان ویژگی­ هایی را دارد که در تبلیغات به مشتریان ادعا شده است، مانند مکان و نوع برداشت یا پرورش، منابع ارگانیک و تغییر ژنتیکی، اینکه به صورت سالم تهیه می‌شود یا خیر و الی آخر.·شرکت Unilever، شرکت چندملیتی کالاهای مصرفی، درحال‌توسعه یک سیستم مبتنی بر زنجیره‏ بلوکی با همکاری تعدادی از شرکت‌های نوپا برای ردیابی زنجیره تأمین چای از کشاورزان در مالاوی است.·شرکت Everledger یک برنامه غیرمتمرکز است که هدف آن جایگزینی فرآیند صدور گواهینامه کاغذی برای الماس با یک سیستم مبتنی بر زنجیره‏ بلوکی است. یک پرونده دیجیتالی کامل از یک الماس، شامل شناسه گواهی آن و بسیاری از ویژگی‌ها، مانند برش، درجه، وضوح، رنگ و عیار، روی زنجیره‏ بلوکی ذخیره می‌شود و سپس شناسه گواهی با لیزر روی سنگ حک می‌شود. تمام اطلاعات مربوط به الماس را می‌توان در هر نقطه از زنجیره تأمین با کمک اسکنری که شناسه گواهی را از روی سنگ می‌خواند، بازیابی کرد. تقریباً 2 میلیون الماس در Everledger ثبت ‌شده است.· شرکت داروسازی Pfizer با شرکت بیوتکنولوژی Genentechهمکاری می‌کند تا MediLedger، سیستم ردیابی تحویل دارو مبتنی بر زنجیره‏ بلوکی را توسعه دهد. هدف این است که منشأ و اصالت تحویل داروهای Pfizer در سراسر زنجیره توزیع را بررسی کنیم تا از سرقت، کلاه‌برداری و جعل جلوگیری شود.تأیید هویتهمانند ردیابی اصالت، تأیید هویت سعی می‌کند از مشاغل و افراد در برابر عواقب کلاه‌برداری و سرقت هویت محافظت کند. KYC-Chain یک پلتفرم جدید است که بر روی زنجیره‏ بلوکی اتریوم ساخته‌شده است و به کاربران اجازه می‌دهد هویت دیجیتالی خود را به‌صورت ایمن مدیریت کنند. همچنین به مشاغل و مؤسسات مالی کمک می‌کند تا داده‌های مشتریان را به شیوه‌ای مطمئن و آسان مدیریت کنند. این سیستم به‌گونه‌ای طراحی‌شده است که کاربران "کلید" داده‌های شخصی و گواهی هویت خود را دارند. درنتیجه، صاحبان هویت که می‌توانند افراد یا شرکت‌ها باشند، افرادی هستند که می‌توانند انتخاب کنند کدام بخش از اطلاعاتشان، با چه کسی و تحت چه شرایطی به اشتراک گذاشته شود. چنین اطلاعاتی قبل از به اشتراک گذاشتن، توسط مالکان و نمایندگان ثبت‌شده توسط اسناد رسمی و مؤسسات تأیید می‌شود.اثبات مالکیتزنجیره ‏های‏ بلوکی سنتی مرتبط با رمزارزهایی مانند بیت‏کوین، توسط دفتر کل به‌طور ضمنی، مالکیت دارایی‌های دیجیتالی را اثبات می‌کنند، مثلا مقدار بیت‏کوین ذخیره‌شده در یک آدرس خاص. فقط صاحبان قانونی آدرس می‌توانند وجوه خود را منتقل کنند زیرا آن‌ها تنها کسانی هستند که کلید خصوصی را می‌دانند.برنامه TrustToken سعی می‌کند فراتر برود. این برنامه‌های غیرمتمرکز برای اثبات مالکیت دارایی‌های فیزیکی مانند املاک و مستغلات طراحی‌شده است. دارایی‌های مالی مانند سهام و اوراق قرضه؛ کالاهایی مانند طلا؛ و حتی مالکیت معنوی مانند موسیقی، کتاب و ثبت اختراع از طریق قراردادهای هوشمند. ایده ‌این است که می‌توانید مالکیت این دارایی‌ها را از فردی به فرد دیگر به همان شیوه‌ای که بیت‏ک وین بین آدرس‌ها منتقل می‌شود، منتقل کنید. فرض اساسی برای موفقیت TrustToken این است که اثبات مالکیت ثبت‌شده از طریق سیستم باید طبق قانون قابل‌اجرا باشد.اقتصاد اشیاء (Economy of Things)کسب ‏و‏کار فناوری Slock.it (https://slock.it/) در حال ایجاد زیرساختی برای "اقتصاد اشیا" است که در تقاطع اینترنت اشیاء و فناوری زنجیره‏ بلوکی قرار دارد. این زیرساخت که شرکت آن را شبکه اشتراک جهانی (Universal Sharing Network) نامیده است، می‌تواند به‌عنوان یک اینترنت مالی مورداستفاده قرار گیرد، بطوریکه که اشیاء مستقل متصل، نه‌تنها می‌توانند خود را بفروشند و اجاره دهند، بلکه هزینه خدمات یکدیگر را نیز پرداخت کنند. فناوری که این شرکت بر اساس قراردادهای هوشمند اتریوم درحال‌توسعه است باهدف ارائه هویت به اشیاء مستقل و توانایی دریافت پرداخت ‏ها و ایجاد توافق بدون نیاز به‌واسطه است. قفل­ های هوشمند (Smart lockers)، می‌تواند قفل اجسام فیزیکی را هنگام پرداخت هزینه باز کند. این­ها نمونه برنامه‌هایی هستند که قبلاً در این پلتفرم ایجادشده‌اند. از آنجاکه قفل ­های هوشمند اجاره تجهیزات ورزشی، اتاق‌های هتل، دوچرخه و ادارات را آسان می‌کنند، تصور می‌شود که این راه‌حل پایه و اساس اقتصاد مشترک را نیز فراهم می‌کند.بازارهای پیش‌بینی غیرمتمرکزبازارهای پیش‌بینی به افرادی که پیش ­بینی ­های درستی از رویدادهای واقعی جهان، مانند برنده ­ی انتخابات ریاست جمهوری، نتیجه همه‌پرسی، سطح نرخ بهره در تاریخ مشخص یا برنده مسابقات ورزشی داشته باشند، پاداش می‌دهند. گذشته از استفاده‌های سوداگرانه، ابزارهای مفیدی برای اقتصاددانان، برنامه ­ریزان مدیریت دولتی و راهبردیاب­ های شرکتی و کسانی که می توانند تصمیمات خود را بر اساس احتمالات رویدادی که در حال حاضر معامله می­شوند، باشد. این نوع ابزارها منعکس‌کننده "خرد جمعی" است.اگرچه بازارهای متمرکزی مانند predictit.org (www.predictit.org)وجود دارد، اما طرح­های غیرمتمرکز مختلفی در حال ظهور هستند. Augur یک پلتفرم پیش‌بینی بازار غیرمتمرکز است که بر اساس Ethereum ساخته‌شده است. ایده این طرح در آن است که مزایای زیر را برای تمرکززدایی فراهم کند:· بر اساس شبکه اتریوم، هیچ نقطه شکستی وجود ندارد، بنابراین ذاتاً در دسترس است.· هیچ‌کس تعریف بازارها را کنترل نمی‌کند: هرکسی می‌تواند بر اساس یک پیش‌بینی جدید بازار جدیدی را راه‌اندازی کرده و برای ایجاد آن بازار پاداش دریافت کند.· نتیجه رسمی هر پیش‌بینی به‌طور مرکزی تعیین نمی‌شود. این سرمایه‌گذاری جمعی از شرکت‌کنندگان در بازار است، بنابراین کمتر احتمال دستکاری را دارد.· وجوه در زنجیره­ ی بلوکی ذخیره شده و ریسک طرف مقابل را از بین می­ برد. به برندگان پیش‌بینی، سریع پرداخت می‌کند و احتمال خطاها را کاهش می‌دهد.تأمین مالی تجارت بین‌المللیتجارت بین‌المللی در کشورهای مختلف، یک تجارت پیچیده بین عرضه‌کننده و تولیدکننده است. همان‌طور که در شکل 9 مشاهده می‌کنید، عموماً کاری پیچیده است و طرف ­های زیادی درگیر آن هستند، مانند بانک‌هایی که پرداخت را تسهیل می‌کنند، واسطه‌های تجاری که شرکت‌های توزیع، حمل‌ونقل و حمل کالا را تسهیل می‌کنند، بیمه‌هایی که خطرات مالی را تحت پوشش قرار می‌دهند. کالا در حال عبور است و مقامات گمرکی قانونی بودن کالا و پرداخت حقوق ورودی را بررسی می‌کنند.شکل 9دو طرف درگیر در تراکنش، غالبا با هم برخورد ندارند. اما برای اینکه تراکنش با موفقیت به پایان برسد باید از پروتکل­ های موثری استفاده کنند که هر دو طرف را در مقابل رفتارهای مخرب طرف دیگر محافظت کند. هر دو طرف معامله باید بررسی­ های لازم را نسبت به طرف مقابل داشته باشند و اینکار مستلزم صرف زمان و کاغذبازی است و اغلب باعث تاخیر می­ شود. برنامه we.trade پلتفرمی است که توسط کنسرسیومی از شرکای بانکی ازجمله Société Générale، Deutsche Bank، Nordea، Santander و HSBCحمایت می‌شود و هدف آن ساده‌سازی و افزایش بازدهی به کمک فناوری زنجیره­ ی بلوکی است. این پلتفرم هر مرحله از معامله را به‌صورت آشکار و شفاف دنبال می‌کند تا هر یک از طرفین بتوانند اسناد مربوطه را با اطمینان از اینکه هیچ‌کس در آن دست‌کاری نمی‌کند، ارسال کرده و مصرف کنند. معاملاتی که قبلاً هفته‌ها طول می‌کشید، اکنون می‌توانند در عرض چند روز تکمیل شوند.حسابرسی نظارتیزنجیره‏ بلوکی برای اطمینان از اینکه سوابق ذخیره‌شده در آن تغییر نکرده یا دست‌کاری نشده‌اند، مناسب است. Balanc3 یک برنامه غیرمتمرکز است که روی اتریوم ساخته‌شده است و از صحت سوابق حسابداری برای اهداف نظارتی اطمینان می‌دهد.تأمین سرمایه جمعیهدف WeiFund ارائه ابزارهای منبع باز، مدولار و توسعه‌پذیر غیرمتمرکز جمعی بر اساس زنجیره‏ بلوکی اتریوم است. کاربران می‌توانند کمپین‌های تأمین سرمایه جمعی را از طریق این ابزارها راه‌اندازی و مدیریت کنند. کدگذاری قوانین بودجه بر اساس فناوری قرارداد هوشمند این امکان را به کاربران می‌دهد که بدانند در صورت شکست یا موفقیت کمپین، چه سرنوشتی در انتظار پولشان است.اکنون‌که با برخی از پیاده‌سازی‌های موفق برنامه‌های غیرمتمرکز آشنا شده‌اید، این سؤال برایتان پیش می ­آید که آیا ارزشش را دارد که برنامه خود را بر اساس فناوری زنجیره‏ بلوکی پایه‌گذاری کنید. برنامه‌های غیرمتمرکز بی‌معنیتصمیم‌گیری در مورد اینکه آیا زنجیره‏ بلوکی فناوری مناسبی برای ساخت برنامه‌­تان است یا نه، دشوار است. آنچه باید از خود بپرسید این است که آیا عملکردی که یک پلتفرم زنجیره‏ بلوکی ارائه می‌دهد نیازهای تجاری شما را برآورده می‌کند یا خیر. مهم‌تر از همه، این است که آیا مزایای استفاده از چنین بستری باهمه محدودیت‌های فنی و پیچیدگی‌های اضافی ناشی از این فناوری، برتری خواهد داشت یا خیر. یک پست وبلاگ با عنوان "اجتناب از پروژه زنجیره‏ بلوکی بیهوده[1]" الزامات لازم برای توجیه استفاده از بستر زنجیره‏ بلوکی بر روی فناوری‌های سنتی‌تر مانند پایگاه‌های داده SQL یا NoSQL را تجزیه‌وتحلیل می‌کند،. در این مقاله بیان شده است که پروژه زنجیره‏ بلوکی تنها در صورتی منطقی است به سوالات زیر پاسخ مثبت داده شود:· آیا برنامه شما به پایگاه داده مشترک نیاز دارد؟· آیا پایگاه داده نیاز به پشتیبانی از چندین گروه نوشتاری دارد؟· آیا طرفین نویسندگی به یکدیگر اعتماد ندارند؟· آیا احزاب نویسنده می‌خواهند بدون نیاز به یک نهاد مرکزی که مورد اعتماد همه شرکت‌کنندگان باشد، وضعیت پایگاه داده را مستقیماً تغییر دهند؟· آیا تراکنش ­هایی که طرفین نویسنده ایجاد می‌کنند به‌طور مشترک با یکدیگر تعامل دارند؟طبق این معیارها، مثلا یک برنامه داخلی سازمانی که هیچ داده‌ای را در معرض دید خارجی قرار ندهد، انتخاب مناسبی برای برنامه‌های غیرمتمرکز نخواهد بود. سایر نامزدهای ضعیف برنامه‌های غیرمتمرکز، برنامه‌هایی هستند که محرمانه بودن قوانین تجاری در مورد آن‌ها اهمیت دارد. یک قرارداد هوشمند، طبق تعریف، برای همه طرفین تعامل، کاملاً باز و شفاف است. بنابراین، جلوگیری از دسترسی شرکت‌کنندگان و درک منطق قوانین، اهداف را برآورده می­کند.اگرچه برنامه‌های میکروبلاگینگ غیرمتمرکز مانند EthTweet برنامه‌های غیرمتمرکز معقول تلقی می‌شوند چون برای افرادی که معتقدند پیام ارسالی نباید تغییر داده شده یا حذف شود، اینگونه برنامه­ های برای چنین دسته ­ای از افراد مفید خواهد بود. برنامه‌های غیرمتمرکز پیام ­رسان مانند "WhatsApp غیرمتمرکز" نمی‌تواند محصول مفیدی باشد. به یک دلیل، یکی از نقاط ضعف فنی بستر زنجیره‏ بلوکی این است که پردازش تراکنش‌ها (در این مورد پیام‌های ارسالی) تقریباً 15 ثانیه طول می‌کشد تا یک بلاک جدید زنجیره‏ بلوکی ادغام شود. بنابراین، پیام‌ها هرگز سریع نیستند.هنگام ساخت برنامه‌های غیرمتمرکز، باید برخی از جنبه‌های عملیاتی را در نظر داشت چرا که با توجه به‌تازگی فناوری، ممکن است برخی مشکلات را در مسیر ایجاد کند. به‌عنوان‌مثال، اگرچه یک قرارداد هوشمند به‌طور خودکار تضمین می­کند که وجوه تحت شرایط خاصی آزاد و منتشر ‌شوند، اما یک تراکنش تجاری نیز ممکن است شرایطی در دنیای واقعی داشته باشد که قابل پیاده ­سازی در منطق برنامه ­نویسی نباشد. یک مثال کلاسیک برای یک قرارداد هوشمندِ غیرقابل‌اجرایِ خودکار، وام الکترونیکی است. اگر وام‌گیرنده مجبور بود پول قرض گرفته‌شده را در یک حساب زنجیره بلوکی نگه دارد و سود بهره را پرداخت نکند در این صورت قرارداد هوشمند پول را به طور خودکار به وام­ دهنده برمی­ گرداند، استقراض هیچ سود اقتصادی نخواهد داشت. در این موارد، هنوز مشخص نیست که آیا یک دادگاه قانونی می‌تواند عناصر غیر خودکار یک قرارداد هوشمند را اجرا کند یا لازم است قرارداد را با یک ترتیب قانونی سنتی تکمیل کند.[1] Gideon Greenspan, “Avoiding the Pointless Blockchain Project,” http://mng.bz/4Oqg.