تماس با ما
 
بدان
 
امروز پنجشنبه ، ۱۳۹۹/۱۲/۰۷
 
کلیه مقالات

رویکردها برای توسعه برنامه کاربردی IoT برای Blockchain اتریوم

Approaches to Front-End IoT Application Development for the Ethereum Blockchain

رویکردهای توسعه برنامه کاربردی IoT در مورد Blockchain اتریوم:

چکیده :

چندین پروتکل لیدر توزیع شده وجود دارد که به طور بالقوه برای اینترنت چیزها مناسب است (IoT) ، از جمله Ethereum ، Hyperledger Fabric و IOTA.

این مقاله به طور خلاصه آنها را از دیدگاه توسعه برنامه IoT ارائه می دهد.

برنامه های IoT مبتنی بر blockchain (BC) می توانند منطق زنجیره ای - قراردادهای هوشمند - و وب ، تلفن همراه یا قطعات برنامه جلویی مشتری را در خود جای دهند.

ما سه معماری ممکن برای برنامه های IoT جلوی BC ارائه داده ایم.

آنها در موقعیت یابی کلاینت های Blockchain Ethereum (دستگاه محلی ، سرور از راه دور) و در موقعیت یابی فروشگاه کلیدی مورد نیاز برای مدیریت معاملات خروجی متفاوت هستند.

محدودیت های عملی این معماری ها ، که از شبکه Ethereum برای تبادل معاملات مطمئن استفاده می کنند ، حجم داده ها ، مکان و هماهنگ سازی گره کامل blockchain و مکان و دسترسی به فروشگاه کلیدی Ethereum است.

نتایج این آزمایشات نشان می دهد که یک گره کامل اتریوم به احتمال زیاد با دستگاه های IoT محدود قابل اجرا نیست.

بنابراین به نظر می رسد معماری با مشتریان از راه دور Ethereum یک رویکرد مناسب است ، جایی که دو گزینه زیر گزینه وجود دارد و در محل / مدیریت کلیدی فروشگاه متفاوت است.

علاوه بر این ، ما استفاده از معماری هایی را با یک ارتباط اختصاصی بین دستگاه IoT و مشتری از راه دور blockchain برای کاهش بیشتر ترافیک شبکه و تقویت امنیت پیشنهاد کردیم.

ما انتظار داریم که این فناوری بتواند بر روی فناوری های کم مصرف و کم بیت موبایل نیز کار کند.

تحقیقات ما تفاوت در رویکردهای معماری را روشن می کند ، اما تصمیم نهایی برای یک پروتکل ویژه و معماری برنامه جلویی کاملاً بر اساس مورد استفاده خاص در نظر گرفته شده است.

1. معرفی :

ما می توانیم تلاش های اولیه برای استفاده مشترک از اینترنت اشیاء (IoT) و فناوری های توزیع دفترچه توزیع را مشاهده کنیم.

این تلاش ها به بررسی امکان سنجی چنین رویکرد توسعه برنامه کاربردی ، ارائه اثبات مفهوم (PoC) و اکتشاف فرصت های احتمالی تجارت است.

IoT [1] مفهومی کاملاً تثبیت شده است که به چندین چیز بهم پیوسته همراه با برنامه های مربوط به ابر یا مه متناوب مربوط می شود.

این درحال تحول در اینترنت است و در حوزه های برنامه های مختلف مستقر است.

از طرف دیگر دفترچه توزیع شده که در حال حاضر عمدتا با فناوریهای blockchain (قبل از میلاد) اجرا می شوند [2].

با این وجود ، آنها به احتمال زیاد می توانند زمینه های سیستم ها ، خدمات و کاربردهای فناوری اطلاعات و ارتباطات را به همان اندازه IoT مختل کنند.

دامنه سیستم های موجود در BC از نظر ویژگی های تکنولوژیکی و همچنین در پذیرش آنها در بین جوامع کاربر و توسعه دهنده متفاوت است.

با اولین نمونه های استقرار راه حل IoT بر اساس پیش از میلاد ، ناکارآمدی های خاصی در طراحی فعلی قبل از میلاد ظاهر می شود.

به عنوان مثال ، پرداختهای ناچیز به دلیل هزینه بالای تراکنش و زمان طولانی تأیید معامله در شبکه بیت کوین تقریبا غیر واقعی شده اند.

مقیاس پذیری مورد نیاز IoT (میلیاردی دستگاه مورد انتظار) اغلب به دلیل اندازه blockchain و نرخ معاملات محدود است.

پروتکل های پیشین BC سعی در برخی از این ناکارآمدی ها با پسوندهای کاربردی دارند.

به موازات آن ، پروتکل های جدید لجر در حال تهیه هستند که الزامات IoT از ابتدا ساخته می شوند.

هر دو تحولات IoT و BC به طور طبیعی به دنبال تلفیق در راه حلهای مشترک هستند ، بنابراین فضای بزرگی را برای توسعه و استفاده از برنامه ها فراهم می کند.

با این حال ، رویکرد صحیح و انتخاب فن آوری های مناسب بسیار دور از سر راست بودن است.

این مسئله می تواند به جزئیات مورد مورد استفاده بستگی داشته باشد.

تغییر به ظاهر ناچیز در استفاده پیش بینی شده ، می تواند منجر به افزایش شدید پیچیدگی و تلاش های اضافی برای انطباق راه حل شود ، یا حتی ممکن باشد غیرممکن باشد.

هدف از تحقیق ما تجزیه و تحلیل و ارائه محدودیتهای عملی در توسعه برنامه های IoT مبتنی بر اتریوم (ETH) قبل از میلاد است.

بنابراین ما رویکردهای معماری را برای طراحی برنامه های جلویی دستگاه IoT مبتنی بر ETH پیش از میلاد ، ترسیم و مقایسه می کنیم.

ما سه نسخه از این معماری ها را پیاده سازی کردیم و آنها را از نظر عملکرد و امنیت ارزیابی کردیم.

این تحقیق دستورالعمل هایی را برای توسعه دهندگان برنامه IoT فراهم آورده است تا بتوانند آنها را در انتخاب سیستم مناسب انتخاب کرده و از انتظارات غیرواقعی تحمیل شده به دستگاه های IoT و فن آوری های BC اجتناب کنند.

از این رو رویکرد معماری آنها با توجه به کاربرد مورد نظر و مشخصات سیستم IoT برنامه ریزی شده می تواند شکل بگیرد.

در بخش 2 ما به طور خلاصه وضعیت هنر را ارائه می دهیم از جمله سه پروتکل دفتر توزیع شده توزیع شده که در حال حاضر به عنوان کاندیداهای عملی برای فناوری های IoT BC و برخی موارد استفاده از BC در IoT ظاهر می شوند.

در بخش 3 ما اصول توسعه برنامه BC برای IoT را تشریح می کنیم.

بخش 4 چهار روش مختلف معماری برای دستگاه های IoT را قادر ساخته و مقایسه می کند ، و از طرف مثبت و منفی آنها ، که ناشی از آزمایش عملی ماست ، تجزیه و تحلیل می کند.

بخش 5 این مقاله را با تأمل بر تحولات آینده مورد انتظار در BC برای IoT نتیجه می گیرد.

2- حالت هنر:

فن آوری های blockchain پایه و اساس شناخته شده cryptocur ارز شناخته شده است ، اما بسیاری از زمینه های برنامه های ممکن دیگر را نیز ارائه می دهد.

دو دامنه کاربرد اصلی برای BC با شرایط مختلف تجارت وجود دارد:

فن آوری های مالی (FinTech) و IoT.

اگرچه هر دو حوزه نیاز به ویژگی مشترک اصلی یک صندوق قابل اعتماد معاملات غیر متمرکز دارند ، اما تفاوتهای اساسی را می توان به عنوان مثال یافت. استفاده اصلی ، حجم و نرخ معاملات ، سخت گیری شرایط امنیتی یا هزینه معاملات.

در FinTech چالش اصلی اطمینان از پرداختهای مالی کاملاً ایمن و قابل اعتماد ، با حجم معاملات کمی و تحمل نسبت به تأخیر معاملات است.

از طرف دیگر ، در IoT ، دستگاههای بی شماری و حجم معاملاتی گسترده پیش بینی شده است که پرداخت های خرد و نانو برای درآمد IoT و کسب درآمد از داده ها مورد نیاز است.

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

موارد استفاده موفقیت آمیز بسیاری از راه حل های IoT BC وجود ندارد که به فراتر از اثبات ایده های ساده (PoC) یا بالاتر از سطح آمادگی فناوری (TRL) 4 برسند و بیش از فقط چند دستگاه را شامل می شوند.

این تعجب آور نیست زیرا دامنه برنامه BC IoT هنوز در مراحل اولیه خود قرار دارد.

فعالیت ها در درجه اول به سمت روشن شدن نقش BC در IoT ، آزمایش محدودیت ها در اجرای و کاوش در فرصت های شغلی ممکن انجام می شود.

با این وجود ، موارد استفاده جالبی ارائه شده است ، در درجه اول در حوزه های شارژ شبکه هوشمند و شارژ الکتریکی ، لجستیک و مدیریت دستگاه IoT.

در چالش های اصلی شبکه هوشمند که در حال حاضر با IoT و BC مورد توجه قرار گرفته است ، خواندن کنتور هوشمند ، فروش انرژی مازاد در شبکه های محلی ، شارژ وسایل نقلیه برقی و مدیریت سمت تقاضا است [4] ، [5].

در تدارکات نقش IoT و BC برای شناسایی محصول و ردیابی محموله های محموله مورد بررسی قرار می گیرد.

در [6] یک راه حل برای ردیابی ظروف ارائه شده است ، که نور ، دما و سایر پارامترهای محیطی را اندازه گیری می کند و سپس این اطلاعات را در یک زنجیره ایمن نگه می دارد.

این مهم برای اثبات انطباق حمل و نقل با مقررات مربوط به مواد غذایی یا کالاهای پزشکی و یا حتی در صورت عدم تحقق شرایط حمل و نقل ، در صورت عدم تحقق شرایط حمل ، مجازات است.

در [7] رویکرد مشابهی در زنجیره تأمین داروخانه اعمال می شود.

Zerado بر روی کنترل دسترسی برای املاک و مستغلات مبتنی بر NFC و BC [8] تمرکز دارد تا رشد اقتصاد اشتراکی را فعال کند.

مدیریت دستگاه IoT برای سایر حوزه های کاربردی اساسی است ، زیرا شامل دسترسی و ذخیره اطلاعات IoT در BCS می شود.

در [9] این مفهوم در یک سناریوی خانه هوشمند برای مدیریت لوازم خانگی و مصرف برق اثبات شده است.

ایده مشابهی در [10] برای مدیریت ماشینهای فروش ارائه شده است.

2-1- فن آوری های سربسته توزیع شده متنوع:

مشخصات و پیاده سازی های مختلف دفترچه های توزیع شده در دسترس است ، اما به نظر ما در حال حاضر سه چشم انداز مربوط به IoT دارند.

این دو BC است ، اتریوم [11] و پارچه هایپرلدگر [12].

سوم IOTA [13] است که مبتنی بر یک معماری جدید لجر با توزیع کمتر بلوک است.

گرچه Bitcoin (BTC) [14] برجسته ترین پروتکل BC است که شهرت خود را بیشتر به دلیل محبوبیت رمزنگاری رمزنگاری بیت کوین بدست آورد ، اما نقش احتمالی آن در IoT و / یا توسعه نرم افزار توزیع شده بسیار محدود است و نامزد مناسبی برای آن نیست. راه حل IoT قبل از میلاد.

پروتکل بیت کوین یعنی فاقد برنامه های هوشمند توزیع شده روی زنجیره ای ، دارای اندازه زنجیره ای بسیار بزرگ و تأخیر در تأیید معاملات طولانی است.

بنابراین نقش آن کم و بیش به حمایت از رمزنگاری در برنامه های FinTech محدود شده است.

سایر محدودیت های عملی در پروتکل های محبوب قبل از میلاد با دامنه های کاربردهای جدید قبل از میلاد ، به عنوان مثال IoT ، آشکار می شود.

پروتکل های موجود BC سعی در کنار آمدن با محدودیت هایی با موارد اضافی دارند که کمابیش با موفقیت پروتکل های اصلی BC را انجام می دهند.

به عنوان مثال کانال های دولتی ، معاملات خارج و زنجیره ای را برای کمک به مقیاس پذیری اضافی ، حفظ حریم خصوصی و کاهش تأخیر در تأیید ، در مقایسه با معماری های فعلی قبل از میلاد ، ترکیب می کنند.

در ETH ، این روش در Raiden [15] و در BTC در شبکه لایتنینگ [16] آشکار می شود.

قراردادهای هوشمند ETH نمی توانند با URL خارجی تماس بگیرند ، که ادغام آنها با "جهان خارج از زنجیره" محدود می شود.

این کمبود می تواند توسط اوراکل فراتر رود [17].

اینها به عنوان واسطه خدمت می کنند و اطلاعاتی را به همراه یک اثبات صحت به فرم blockchain / نرم افزارهای خارجی (به عنوان مثال وب سایت ها) یا اشخاص سخت افزاری ارائه می دهند.

این افزودنیها مورد توجه بسیاری قرار گرفته اند ، اما نابالغ هستند (به عنوان مثال عدم تطابق شدید بین نقشه های راه اعلام شده و تاریخ های واقعی تحویل) و با پذیرش عملی اندکی.

این توضیح می دهد که چرا IOTA رویکرد متفاوتی اتخاذ کرده است ، جایی که فناوری لجر (و کل سیستم اطراف آن) از همان ابتدا برای IoT طراحی شده است.

سه فناوری رهبری توزیع شده در جدول 1 مقایسه شده است.

فن آوری های خاص با جزئیات بیشتر در زیر بخش های زیر ارائه شده است.

2-1-1- اتریوم:

کاغذ سفید اتریوم [11] ، که اولین سند توصیف ETH است ، توضیح می دهد که پروتکل اتریوم در ابتدا به عنوان نسخه به روز شده از رمزنگاری ساخته شده بود ، و ویژگی های پیشرفته ای مانند سپر on-blockchain ، محدودیت برداشت ، قراردادهای مالی ، بازارهای قمار را ارائه می دهد. و مانند آن از طریق یک زبان برنامه نویسی بسیار کلی.

پروتکل ETH ، که توسط بنیاد اتریوم ساخته شده است ، در مقاله زرد مشخص شده است [18].

پروتکل ETH یک پروتکل BC است.

معاملات جدید بلوک هایی را تشکیل می دهند که توسط گره های معدن اعتبار می شوند.

معدنچیان از الگوریتم اجماع اثبات کار (PoW) استفاده می کنند.

کارگران معدن کار خود را با کارمزد معدن ، که توسط صادرکنندگان معامله پرداخت می شود ، پاداش می دهند.

گره های ETH می توانند در یکی از دو شبکه عمومی ، شبکه اصلی یا شبکه تست روپستن شرکت کنند.

هر دو پروتکل BC یکسان را اجرا می کنند ، اما cryptocurrency در روپستن هیچ ارزش واقعی ندارد.

شبکه های خصوصی نیز ممکن است.

نوآوری اساسی در ETH در مقایسه با BTC پشتیبانی از قراردادهای هوشمند (SC) است.

اینها برخی از الزامات یا تعهدات رسمی نیستند ، اما می توان به عنوان نمایندگان مستقل که رفتار آنها با کد قرارداد آنها تعیین می شود ، مناسب تر توضیح داد.

این کد هر بار که این حساب پیامی را دریافت کند ، اجرا می شود ، یعنی یک معامله برای آن است.

برای توسعه قراردادهای هوشمند و بنابراین برنامه های توزیع شده (DApps) یک زبان محاسباتی جهانی (یعنی Turing کامل) ارائه شده است.

زبان اصلی SC زبان کدگذاری سطح پایین است و شبکه ETH یک ماشین مجازی (یعنی دستگاه مجازی Ethereum ، EVM) فراهم می کند که چنین کد هایی را اجرا می کند.

چندین زبان سطح بالا (er) برای توسعه برنامه در دسترس است.

پرچمدار فعلی Solid [19] است - یک زبان جاوا اسکریپت ، اما سایر زبان ها در گذشته استفاده شده اند.

كد سطح بالاتر قبل از اجرا در EVM به bytecode وارد می شود.

به همین دلایل اتریوم به عنوان بستر (i) مالی (ارز) ، سیستم های توکن) ، (ب) نیمه مالی (به عنوان مثال سنجش جمعیت) و (iii) برنامه های غیر مالی (رای گیری آنلاین ، رأی گیری غیر متمرکز) به وجود آمد.

این پروتکل پیشرو BC از نظر نوآوری است.

بسیاری از پروژه های BC که فراتر از معاملات با ارزش ساده و عرضه سکه ها هستند ، مبتنی بر ETH هستند.

cryptocurrency ETH - دیگر - دارای دومین سرمایه در بازار است و فقط بر بیت کوین مقدم است.

2-1-2- پارچه هایپرلدگر:

Hyperledger Project یک تلاش مشترک برای ایجاد یک چارچوب دفترچه راهنمای منبع باز و کد منبع باز و کد است.

پروژه هایپرلدگر که در اوایل سال 2016 به عنوان پروژه بنیاد لینوکس تاسیس شد ، در حال حاضر بیش از 130 عضو دارد از جمله رهبران امور مالی ، بانکی ، در اینترنت چیزها ، زنجیره تأمین ، تولید و فناوری.

پارچه هایپرلدگر پارچه (HLF) [12] ، یکی از چندین پروژه که هم اکنون تحت پروژه Hyperledger در انکوباسیون قرار دارد ، یک سکوی مجاز blockchain است که عمدتاً در استفاده از تجارت مورد استفاده قرار می گیرد.

این منبع آزاد و مبتنی بر استانداردها است ، قراردادهای هوشمندانه دلخواه را اجرا می کند (به نام کد زنجیره ای) ، از امنیت قوی ، ویژگی های هویت ، API های اصلی REST ، CLI ها پشتیبانی می کند و از یک معماری مدولار با پروتکل های اجماع قابل تعویض استفاده می کند (در حال حاضر اجرای اجماع تحمل پذیری در برابر بیزانس با استفاده از پروتکل PBFT پشتیبانی می شود).

پروتکل سربرگ توزیع شده پارچه توسط همسالان اجرا می شود.

پارچه بین دو نوع همسالان تفاوت قائل است:

(i) تأیید اعتبار هم گره گره ای در شبکه است که وظیفه انجام اجماع ، اعتبارسنجی معاملات و حفظ دفترچه ها و (ب) یک همکار غیر معتبر را دارد که گره ای است که به عنوان یک پراکسی برای اتصال به اعتبار همسالان کار می کند [20].

پروتکل HLF به عنوان مثال اجرا می شود. سکوی IBM Watson IoT [[21].

این یک پلتفرم خدمات به عنوان یک سرویس (BaaS) ، که دستگاه های IoT را قادر می سازد داده ها را به دفترچه های خصوصی blockchain ارسال کنند تا در معاملات مشترک با سوابق مقاوم در برابر دستکاری شوند.

HLF در IBM Watson IoT عمدتا برای blockchain های خصوصی در تنظیمات شرکت مناسب است ، زیرا از یک الگوریتم اجماع متفاوت نسبت به مثال استفاده می کند. ETH

این با یک مستند HTTPS REST مستند برای کلیه عملکردهای مربوط به blockchain متمایز است.

بنابراین ، توسعه دهندگان وب می توانند از ویژگی های BC بهره مند شوند ، اما همچنان از فناوری های API استفاده می کنند که در حال حاضر آنها را با بلوک ها و تراکنش های آشنا و همچنین همسالان و شبکه ها ، نظارت بر وضعیت زنجیره ، و ثبت نام ها و مدیریت کاربران BC دنبال می کند.

2-1-3- IOTA:

توسعه IOTA [13] توسط بنیاد IOTA در سال 2015 آغاز شد.

از ویژگیهای بارز شاخص توزیع IOTA در مقایسه با فناوری های BC ، این است که در ابتدا برای مقابله با چالش های اعمال شده توسط IoT طراحی شده است.

این موارد شامل مقیاس پذیری (دفتر IOTA محدودیتی در تعداد یا امتیاز معاملات ندارد) ، صفر هزینه معاملات (اصل اجماع مختلف) و تأیید معاملات سریع است.

گزینه های جدید ارائه شده به IoT از این طریق شامل نانو پرداخت های ماشین به ماشین ، فید داده های امن (سنسور) و شناسایی دستگاه های IoT است.

بر خلاف ETH یا BTC ، که تا حدی از موفقیت عظیم آنها به عنوان cryptocurrency به دام می افتند و سعی می کنند با افزودنیها و پسوندهای پروتکلهای خود با چالشهای IoT کنار بیایند (کانالهای دولتی ، ملاحظات مکانیسمهای اجماع جایگزین) ، IOTA است. بر اساس معماری جدید دفترچه توزیع شده بدون بلوک.

این با استفاده از نمودارهای چرخه ای کارگردانی (DAG) پیاده سازی شده است و به آن نوار حلقوی گفته می شود.

این روش به شدت متفاوت از اعتبار معامله نسبت به استخراج بلوک در ETH و BTC را ارائه می دهد.

برای هر معامله صادر شده ، یک گره IOTA باید دو معامله را از سایر گره های موجود در محاصره و بدون هزینه تأیید کند.

برخلاف قبل از سال قبل از میلاد ، اجماع دیگر از بین نرفته است ، بلکه در عوض بخشی ذاتی از سیستم است و منجر به عدم تمرکز و خود تنظیم شبکه همسالان می شود.

یکی از محدودیت های مهم IOTA عدم سفارش معاملات به عنوان یک نتیجه از DAG است.

این امر عملاً امکان قراردادهای هوشمند در IOTA را محدود می کند.

محیط برنامه IOTA از گره های IOTA تشکیل شده است.

اینها از یک هسته یا یک نور (برای دستگاه های لبه محدود منبع) در ارتباط با مشتری و بخش نرم افزار تشکیل شده اند.

اجرای مرجع مشتری جاوا است ، اما سایرین در نقشه راه توسعه قرار دارند [22].

یک کتابخانه JavaScript با پوشش کامل API برای NodeJS و برنامه های مرورگر در دسترس است.

همه تماس های API از طریق درخواست POST HTTP با فرمت JSON ارسال می شوند.

مشتریان عملکرد اصلی IOTA را ارائه می دهند ، که می تواند از طریق رابط IOTA eXtension IOSA (IXI) با ماژول ها توسعه یابد.

یكی از ماژول های IOTA برای خدمات ایمن ، رمزگذاری شده و مجاز خدمات جریانی داده ها ، پیامرسانی تأیید شده ماسك شده (MAM) است.

یک رمزنگاری قابل مبادله در شبکه عمومی IOTA موجود است.

3- توسعه برنامه Blockchain برای IoT:

رهبران توزیع شده یک محیط قابل اعتماد برای مبادله معاملات فراهم می کنند.

از نظر توسعه برنامه های کاربردی برای IoT ، دو الگوی را می توان با هم ترکیب کرد - جلویی و زنجیره ای.

بسته به نوع در نظر گرفته شده ، هر دو بخش برنامه را می توان برای یک راه حل ترکیب کرد.

قطعات برنامه جلویی عبارتند از برنامه های وب ، تلفن همراه و جاسازی شده ، که از طریق API های مشتری که در معرض مشتری های BC قرار دارند ، از BC استفاده می کنند.

قطعات برنامه جلویی برای رابط های کاربر و دستگاه های IoT برای استفاده از BC مورد نیاز است.

منطق تجارت در زنجیره به قراردادهای هوشمند (یعنی کد زنجیره ای در HLF) اطلاق می شود که برنامه هایی هستند که در شبکه BC مستقر و اجرا می شوند.

اعدام قراردادهای هوشمند در سال قبل از میلاد مسیح اعتبار دارد.

BC بنابراین یک ماشین مجازی غیرمتمرکز و قابل اعتماد برای اجرای قراردادهای هوشمند فراهم می کند.

منطق زنجیره ای کاملاً برای IoT لازم نیست.

3-1- قسمت برنامه زنجیره ای:

محیط غیرمتمرکز برای معاملات قابل اعتماد ، که نیاز مقامات مرکزی مورد اعتماد را از بین می برد ، به عنوان مثال است. پایه برای مثال ارزهای رمزنگاری شده

با این حال ، برخی از فن آوری های BC از ارائه قراردادهای هوشمند ویژگی واقعی انقلابی سال قبل از میلاد فراتر رفته اند ، در معماری سنتی وب ، ابر و مشروب موجود نیست.

قراردادهای هوشمند منطق تجاری زنجیره ای است که در شبکه blockchain اجرا می شود.

این اجرا را می توان توسط هر شرکت کننده در شبکه تأیید کرد و بنابراین به همان روشی که اعتماد به هر معامله دیگری در شبکه BC انجام شده قابل اعتماد است.

کد قراردادهای هوشمند به زبان برنامه نویسی متناظر (مثلاً در Solity برای ETH ، در برو (یا جاوا) برای HLF) نوشته شده است ، آن را به bitcode مناسب برای خاص BC ، و در شبکه مستقر می کند.

پس از استقرار در شبکه BC ، یک قرارداد هوشمند با آدرس منحصر به فرد خود ، مشابه با حساب های معمولی قبل از میلاد ، آدرس می گیرد.

یک قرارداد هوشمند توابع را در معرض نمایش قرار می دهد ، که می تواند توسط سایر حساب های blockchain نیز مورد استفاده قرار گیرد

این عملکردها نوعی API روی زنجیره را برای سایر حسابهای BC نشان می دهد و از طریق blockchain قابل دسترسی است.

قرارداد هوشمند معاملات مربوط به آن را دریافت می کند ، با پارامتر مورد نیاز یک عملکرد خاص در SC تعبیه شده در معامله.

قرارداد هوشمند درخواست ورودی را مطابق با منطق برنامه نویسی خود پردازش می کند و به صورت اختیاری وقایع را آغاز می کند.

3-2- قسمت برنامه جلویی:

برنامه های وب ، موبایل یا جاسازی شده منطق برنامه معمولی (مانند عملکرد رابط های کاربر ، کسب داده های حسگر ، پردازش داده های محلی) را با قابلیت های BC ترکیب می کنند.

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

برنامه های جلویی از کتابخانه BC از طریق API مشتری BC و API های مشتری BC استفاده می کنند که در معرض دید مشتری های BC قرار دارند.

این بلوک های کاربردی یک بخش برنامه جلویی در ادامه این بخش با جزئیات بیشتری توضیح داده شده است.

قطعات برنامه جلویی برای رابط کاربر و دستگاه های IoT برای استفاده از BC مورد نیاز است.

برنامه های برنامه جلویی را می توان در مرورگرها / کیف پولهای وب مجهز به BC ، به عنوان مثال اجرا کرد. مه [23] یا Chrome و Firefox با افزونه مرورگر Metamask [24].

این کار اجرای بسیار مؤثر از رابط های کاربری مبتنی بر وب (UI) را ممکن می کند.

هنگامی که قسمت جلویی به UI نیاز دارد ، یک مرورگر به عنوان محیط اجرای برنامه انتخاب می شود و توسعه دهندگان می خواهند به فناوری های شناخته شده UI وب (مثلاً HTML5 ، JS) اعتماد کنند ، اما هنوز BC را در راه حل های خود اعمال می کنند.

علاوه بر ویژگی های رایج مرورگر (پروتکل های HTTP / HTTPs ، رندر HTML) ، یک مرورگر وب با قابلیت BC کتابخانه های API مشتری را برای استفاده از BC و برنامه های کاربردی مورد نیاز برای برنامه های کاربردی BC ، و همچنین کیف پول کلیدی برای ایمن نگه داشتن و مدیریت کاربران BC پیاده سازی می کند. حساب ها.

مرورگر وب با قابلیت BC ساده ترین ساده است ، اما البته تنها گزینه اجرای UI نیست.

رابط کاربری پیشرفته می تواند به عنوان مثال ساخته شود به عنوان برنامه های رومیزی cross platform ، اما توسعه دهندگان باید برای ارتباطات BC کتابخانه ها را وارد کنند و کیف پولهای کلیدی را به تنهایی پیاده سازی کنند.

سیستم IoT جاسازی شده بدون سرنشین بدون دخالت مستقیم کاربر عمل می کند ، بنابراین یک مرورگر محیط مناسبی برای اجرای برنامه نیست.

در این حالت ، برنامه معمولاً در بعضی از محیط های زمان اجرا انجام می شود (مثلاً NodeJS برای JS) و برای بهره برداری مناسب ، کتابخانه های API مربوط به مشتری BC باید برای استفاده در محیط وارد شوند.

این پایه برای دستگاه IoT با پشتیبانی BC است.

دو حالت کلیدی عملکرد برای دستگاه های IoT با قابلیت BC وجود دارد تا با تغییر و تحولات قبل از میلاد با آنها واکنش نشان دهند.

در اولین مورد ، یک دستگاه توسط یک آدرس / حساب BC مشخص می شود.

معاملات BC را می توان به این آدرس و از طریق آن ارسال کرد.

برای اینکه معاملات صحیح توسط صادرکنندگان به طور صحیح امضا شود ، موقعیت مکانی و دسترسی ایمن به فروشگاه کلیدی حساب لازم است (برای جزئیات بیشتر به بخش 4 مراجعه کنید).

در این حالت دستگاه / برنامه می تواند به عنوان مثال به طور خود مختار وضعیت خود را در زنجیره ثبت می کند.

در حالت دوم ، دستگاه IoT حساب BC خود را ندارد.

اما حتی بدون آن ، یک دستگاه می تواند تراکنش ها یا رویدادهای ایجاد شده توسط قراردادهای هوشمند در شبکه BC را رهگیری کند.

در این روش برنامه می تواند اقدامات خاصی را انجام دهد (مثلاً جابجایی در رله) ، اگر یک معامله یا رویداد مربوطه در زنجیره ثبت شده باشد (مثلاً معامله مقداری از ارزش به یک آدرس مشخص شده در BC).

این روش کار منفعل است ، دستگاه ها و برنامه های IoT نمی توانند معاملات ایجاد کنند (به عنوان یک اسکایپ عمل می کند) ، اما از نظر مدیریت فروشگاه کلیدی ایمن بسیار ساده تر است.

اگرچه در زمینه های خود کاملاً متمایز است ، هر دو حالت عملکرد برای کاربرد جلویی ارزش عملی دارند.

چهار بلوک عملکردی اصلی وجود دارد که در یک برنامه جلویی وجود دارد تا عملکرد مورد نظر را برقرار کرده و به درستی با BC ارتباط برقرار کند:

مشتری BC مسئولیت اجرای پروتکل های BC و در نتیجه کل ارتباط با شبکه BC را بر عهده دارد.

این شامل مدیریت بلوک ها (به روز نگه داشتن زنجیره محلی) و معاملات (به عنوان مثال ارسال معاملات خروجی) ، گوش دادن به رویدادها ، مدیریت همسالان و شبکه ، نظارت بر وضعیت زنجیره ، مدیریت حساب ها یا بلوک های معدن است.

چندین پیاده سازی مشتری ETH BC وجود دارد ، اما geth [25] معمولاً به عنوان مرجع عمل می کند ، زیرا توسط توسعه دهندگان بنیاد اتریوم ساخته شده است.

یک جایگزین محبوب ، برابری است [26].

در IOTA مشتری BC IOTA Core است [27].

API مشتری BC بخشی از مشتری BC است که قابلیت های مشتری را در معرض نمایش می گذارد.

از طریق این API مشتری کل عملکرد مشتری مشتری BC قابل بهره برداری است.

به API از طریق رابطهای مشترک برنامه نویسی و ارتباطی ، معمولاً ارتباطات بین فرآیندی (IPC) ، HTTP POST یا Websockets (WS) قابل دسترسی است.

IPC را می توان در صورت اجرای برنامه و مشتری BC در همان دستگاه (ارتباط محلی) ، HTTP و WS از طرف دیگر دسترسی از راه دور به مشتری BC را نیز فعال کرد.

داده های عبور از یکی از این کانال ها معمولاً به عنوان JSON ساخته می شوند.

کتابخانه های API مشتری BC توسعه برنامه ها و استفاده از API مشتری BC را تسهیل می کنند.

پیاده سازی های مختلفی از این کتابخانه ها برای زبان های مختلف برنامه نویسی و توسط توسعه دهندگان مختلف در دسترس است.

در ETH چنین کتابخانه ای web3.js است [28] (نسخه فعلی 0.20.x ، با 1.0.0 بتا اعلام شده است) ، در IOTA iota.lib.js است [29] - همه برای JavaScript.

اجرای دیگر ممکن است در بلوغ آنها متفاوت باشد.

این کتابخانه ها در پروژه های کاربردی گنجانده شده اند.

این کتابخانه ها به غیر از قرار دادن API مشتری BC ، این ویژگی ها می توانند ویژگی های دیگری را ارائه دهند.

یکی از این کیف پول محلی است که دسترسی به حساب ها و کلیدهای کاربر را حفظ و امن می کند و امضای معاملات خروجی را امکان پذیر می کند.

به عنوان مثال ، این قابلیت در ETH web3.js 0.x.x پشتیبانی نمی شود ، اما در 1.0.0 بتا اضافه می شود.

این از اهمیت فوق العاده ای برای توسعه برنامه IoT BC برخوردار است زیرا اکنون کد برنامه می تواند حساب ها را به راحتی ، ایمن و بدون تعامل کاربر مدیریت کند.

کیف پولها / مرورگرهای اختصاصی ETH نیاز به تأیید کاربر برای معامله جدید خروجی دارند که در دستگاه ها و برنامه های جاسازی شده کاربردی ندارد.

کتابخانه های مشتری API مشتری عملکردهایی را برای امضای معاملات و انتقال آن به شبکه BC فراهم می کند.

در زبان برنامه نویسی برنامه جلویی ، معامله ای به عنوان ساختار داده ارائه می شود ، که سپس به توابع مربوطه منتقل می شود.

این ساختار داده امضایی ثبت نشده است ، اما بنابراین معمولاً آدرس منبع را تعریف می کند.

به عنوان مثال در برنامه نویسی JS با web3.js 1.0.0 کتابخانه ، تابع sendTransaction () چنین ساختاری را با فرمت JSON دریافت می کند ، امضای مناسب را ایجاد می کند ، نتایج را در RLP برای ساخت معامله خام رمزگذاری می کند و آن را به همسالان شبکه BC پخش می کند.

signTransaction () از طرف دیگر فقط معامله ای خام ایجاد می کند که بعداً بعداً می تواند بعنوان مثال به شبکه منتقل شود. sendSignedTransaction ().

برای امضای معامله ، sendTransaction () و signTransaction () به دسترسی به یک حساب ETH قفل شده نیاز دارند.

برنامه کاربردی مورد نظر را پیاده سازی می کند و از BC از طریق کتابخانه های API مشتری BC استفاده می کند.

کد برنامه نویسی برنامه در مورد ETH و IOTA است که اغلب در جاوا اسکریپت نوشته شده است.

دلایل این دو بخش هستند.

اول ، در هر دو مورد ، کتابخانه های API مشتری JS BC پیشرفته ترین و اثبات شده و دوم ، مناسب برای مرورگر مستقر در برنامه های دستگاه IoT است.

4- ترسیم معماری برنامه های جلویی در دستگاه های IoT مبتنی بر اتریوم:

معماری قطعات برنامه های جلویی به شدت بستگی به قابلیت ها و محدودیت های دستگاه های IoT ، جایی که قسمت های جلویی مستقر هستند وجود دارد.

دستگاه های IoT طیف گسترده ای از قابلیت های ارتباطی (میزان بیت ، پایداری اتصال) و محاسبات (CPU ، ذخیره سازی) را نشان می دهند ، از گره های حسگر گنگ گرفته تا رایانه های کاملاً مجهز.

بنابراین لازم است که از قبل از این قابلیت ها آگاهی داشته باشید ، تا بطور صحیح انتخاب کنید که بلوک های خاص خاص (بخش 3.2) چگونه می توانند اجرا شوند و چگونه پیکربندی شوند.

به عنوان مثال geth مشتری ETH ، می تواند با گزینه های مختلف همگام سازی BC (تمام داده های زنجیره ای کامل مشتری (هدرهای بلوک و اجسام بلوک)) در دستگاه بارگیری و ذخیره شود ؛ مشتری روشنایی فقط وضعیت فعلی زنجیره را ، همزمان سازی سریع تر ، دریافت می کند. با این حال ، فیلتر کردن رویداد غیرقابل اطمینان).

تمام ملاحظات مربوط به معماری و تنظیمات با هدف ارائه یك اجرای مطمئن از منطق كاربرد جلویی و گردش كار برای معاملات ETH (ایجاد ، امضای ، ارسال ، نظارت) مربوط به یك دستگاه خاص است.

گزینه های مختلفی برای طراحی معماری برنامه جلویی دستگاه IoT با قابلیت ETH وجود دارد.

گزینه ها در محاسبات ، ارتباطات و الزامات امنیتی که به دستگاه IoT تحمیل شده متفاوت است.

محدودیت های محاسبات و ارتباطات عمدتا مربوط به همگام سازی داده های زنجیره ای (مقادیر عظیم) است.

اگر کانالهای با سرعت بسیار کمی در دستگاه استفاده شوند (به عنوان مثال شبکه با پهنای کم انرژی (LPWAN)) ، ارتباطات همچنین می توانند برای مبادله تراکنش ها مسئله ای شوند.

امنیت از نظر معماری به موقعیت مکانی و دسترسی به فروشگاه اصلی ، مورد نیاز برای امضاهای معاملات و کنترل دسترسی کانالهای HTTP و WS برای JSON-RPC اشاره دارد.

گزینه های معماری برای برنامه های جلویی در دستگاه های IoT با قابلیت ETH به شرح زیر است:

گره مستقل با سرویس گیرنده geth و قسمت برنامه در حال اجرا در همان دستگاه فیزیکی و با یک فروشگاه محلی محلی.

سرویس گیرنده geth از راه دور که در آن برنامه JS و کتابخانه های API مشتری BC بر روی یک دستگاه IoT محدود انجام می شوند ، اما مشتری BC (geth) روی یک رایانه / سرور با قابلیت دیگر.

در این حالت دو گزینه زیر وجود دارد:

فروشگاه محلی محلی در دستگاه IoT یا Remote Key key در سرور محلی که geth در آن کار می کند.

4-1- معماری گره مستقل IoT:

در معماری گره مستقل ، که در شکل 2a نشان داده شده است ، تمام بلوک های عملکردی در همان دستگاه فیزیکی اجرا می شوند.

همانطور که مشتری BC (geth) نیز در حال اجرا است ، تقاضای زیادی را به پردازنده و حافظه تحمیل می کند.

اگر همگام سازی کامل BC فعال شود ، باید چندین گیگابایت داده زنجیره ETH را برای انتقال و ذخیره در دستگاه حساب کنید.

فروشگاه کلیدی در این مورد در محلی قرار دارد و با ابتکار مشتری قبل از میلاد BC قفل می شود.

خطر اصلی در این حالت امنیت سخت افزار است (کلیدهای سرقت شده در صورت نقض حریم خصوصی دستگاه فیزیکی).

تجربه ما با چنین راه اندازی نشان داد که این دستگاه فقط برای قوی ترین دستگاه ها (IoT) مناسب است.

ما سعی کردیم مشتری کامل را روی سیستم تعبیه شده RPi v3B با اتصال به اینترنت سیمی اجرا کنیم.

همگام سازی زنجیره بسیار غیرقابل اعتماد بود.

ما هماهنگ سازی طولانی غیرمعمول را تجربه کردیم (همگام سازی چندین روز به طول انجامید و هنوز کامل نشده بود) ، وقفه های غیرمنتظره در هماهنگی و غیره.

در حین انجام این آزمایشات ، یک مشتری مرجع داشتیم که بر روی یک رایانه معمولی اجرا می شود (همان ظرفیت های شبکه IP) و همگام سازی در آنجا غیر مشکلی بود.

دانستن این نکته حائز اهمیت است که یک BC همگام نشده مانع از استفاده قسمت خدمات در سرویس های BC می شود.

ما همچنین سعی کردیم geest را در حالت نور نیز اجرا کنیم.

همگام سازی موفقیت آمیز تر بود ، با این حال ما با فیلتر کردن رویدادها که با قرارداد هوشمند ما راه اندازی شده اند ، مشکلات جدی را تجربه کردیم.

برخی از رویدادها به دلیل اطلاعات ناقص داده های ارائه شده ، با وجود اینکه معاملات مربوطه به طور صحیح ضبط شده اند ، و همگام سازی زنجیره ای از بین رفته اند.

4-2- مشتری از راه دور geth با فروشگاه کلید از راه دور:

با داشتن مشتری از راه دور geth و فروشگاه کلید از راه دور ، geth را روی یک سرور جداگانه و محدودیت کم اجرا می کنیم.

البته بخشی از برنامه JavaScript در دستگاه محلی IoT باقی مانده است.

در این روش بیشترین منبع تقاضا از دستگاه IoT منتقل می شود.

یک سرور از راه دور قابلیت عملکرد geth را نسبت به API JSON-RPC و با HTTP یا WS به عنوان کانال حمل و نقل در معرض دید قرار می دهد.

در این تنظیمات ، فروشگاه کلیدی در سرور باقی مانده و در همان ابتدا با استفاده از گچ ، دقیقاً مانند مورد گره مستقل ، مورد استفاده قرار گرفت.

مشتری گیت از راه دور با معماری فروشگاه کلید از راه دور در شکل 1b نشان داده شده است.

این معماری در واقع اثبات شده است که دارای ارزش عملی است.

یک دستگاه محلی در اجرای قسمت برنامه موفق بود ، در حالی که یک سرور از راه دور یکپارچه کردن سرعت را اجرا می کند.

ما ترافیک بین دستگاه محلی و سرور از راه دور را با Wireshark تجزیه و تحلیل کردیم.

یک معامله معمولی که توسط برنامه به شکل JSON-RPC روی HTTP ارسال شده است از یک درخواست و پاسخ HTTP POST تشکیل شده است.

اندازه پیامهای درخواستی در حدود 800 B بود که معامله معمولی با فرمت JSON در حدود 450 B بود.

عناوین پروتکل پیام TCP / IP بودند.

پیام پاسخ کوچکتر بود ، 280 B.

اگر از WS به جای HTTP استفاده می شد ، پیام ها تقریباً 200 B کوچکتر بودند.

به نظر نمی رسد زیاد باشد ، اما هنوز هم می تواند بیش از حد ارتباط دستگاههای کم بیت باشد.

این امر به ویژه صادق است ، اگر نه تنها تعداد محدودی از معاملات از طریق HTTP / WS منتقل شود ، بلکه از برخی فرم های فیلتر رویداد (web3.js) استفاده می شود که از اصل نظرسنجی استفاده می کنند و بار ثابت شبکه ایجاد می کنند.

با این حال این معماری خطرات امنیتی بالقوه ای را که باید درک کنیم وجود دارد.

اگر geth با قفل قفل فروشگاه کلید اجرا شود ، از هر کسی که با JSON-RPC به HTTP یا WS دسترسی پیدا می کند می تواند معاملات امضا شده با این کلید را ایجاد کند.

کنترل دسترسی به HTTP یا WS ساخته شده در gest وجود ندارد ، بنابراین باید امنیت لایه شبکه IP را با دقت در این مورد برنامه ریزی کنیم.

این خطرات فقط در مواردی که دستگاه IoT به عنوان خالق فعال معاملات انجام می شود ، مرتبط است.

اگر در حالت منفعل اجرا شود (با ضربه زدن به زنجیره برای معاملات و رویدادها) ، هیچ فروشگاه اصلی لازم نیست ، بنابراین هیچ خطری از این نظر وجود ندارد.

4-3- مشتری گشت از راه دور با فروشگاه محلی محلی:

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

از آنجا که این دیگر در سرور قرار نمی گیرد ، خطرات امنیتی برای به اشتراک گذاشتن همان سرور geth توسط چندین دستگاه کاهش می یابد.

در این حالت ، برنامه باید معاملات خام از جمله امضا را ارسال و ایجاد کند و سریال سازی مناسبی را اعمال کند.

برای اینکه بتوانید این کار را انجام دهید ، کتابخانه های جدید / اضافی JavaScript مورد نیاز است.

امضای معاملات در نسخه web3.js نسخه 0.x.x پشتیبانی نمی شود.

در این حالت باید از کتابخانه های اضافی مانند LightWallet یا Ethereumjs-tx استفاده شود.

خوشبختانه ، web3.js نسخه 1.0.0.beta تمام عملکردهای لازم برای نگهداری و مدیریت کیف پول محلی را اعلام کرد.

ما این را به عنوان توصیه کننده ترین روش برای پیاده سازی مشتری گلی از راه دور با معماری فروشگاه محلی محلی می بینیم.

جالب است که ، انتقال معاملات خام به جای اشیاء معامله JSON از طریق HTTP / WS ، منجر به اندازه پیام های کوچکتر نمی شود ، که به دلیل رمزگذاری RLP کارآمدتر انتظار می رفت.

معامله خام یعنی هش مربوط به امضا و معامله (موجود در موضوع معامله JSON نیست) ، و در نتیجه حدود 40 پیام بزرگتر در این مورد خاص.

4-4- اختصاصی دستگاه محلی برای ارتباط با سرور از راه دور:

به عنوان آخرین گزینه ، ما یک پروتکل ارتباطی اختصاصی بین دستگاه محلی IoT می بینیم که سرور از راه دور (geth) را خاتمه دهد ، همچنین فرمت های داده های JSON یا RLP موجود را دور نمی کند.

ما دو مزیت در آن می بینیم.

اول ، الزامات پهنای باند ارتباطی را می توان به حداقل رساند و از این طریق قادر به برقراری ارتباط از طریق کانال های کم بیت نیز باشید.

دوم ، ما می توانیم از کنترل های دسترسی پیشرفته سرور استفاده کنیم تا خطرات امنیتی توصیف شده در مشتری گشت از راه دور با معماری فروشگاه کلید از راه دور به حداقل برسد.

این معماری تا حدودی از فلسفه غیرمتمرکز همسالان متمایز است که برای رهبران توزیع شده و پیش از میلاد اساسی است.

از طرف دیگر ، رویکردهای مشابه به عنوان مثال در نظر گرفته می شود در اکثر مشتری های تلفن همراه BC (برنامه تلفن همراه باید به سرور اعتماد کند که عملکرد BC را در اختیار شما قرار می دهد).

تحولات محاسبات اخیر مه و معماری شبکه 4 / 5G همچنین نشان می دهد که گره های لبه شبکه می توانند به عنوان دروازه برنامه کاربردی باشند و عملکردهایی مانند این تا گره های انتهایی را فراهم می کنند.

5. نتیجه گیری ها :

با تحقیقات ما انتظار داریم نحوه مطابقت با الزامات و محدودیت های دستگاه های IoT با رویکرد معماری مناسب برای توسعه برنامه های کاربردی IoT جلویی برای ETH را روشن کنیم.

در حال حاضر ما در حال ایجاد ابزاری برای تولید و نظارت بر معاملات به صورت خودکار در دستگاه های IoT هستیم که یک تست عملکرد سیستماتیک از معماری های فوق را ممکن می سازد.

ما با اندازه گیری بار شبکه و پروفایل ترافیک ، به انجام مطالعات شبیه سازی و شبیه سازی گره های ETH IoT متصل به فن آوری های کم مصرف و کم بیت تلفن همراه ادامه خواهیم داد.

سپاسگزاریها :

نویسندگان مایلند حمایت از برنامه تحقیقاتی "الگوریتم ها و روش های بهینه سازی در ارتباطات" را تأمین کنند ، که توسط آژانس تحقیق اسلوونیایی تأمین می شود.