
این سند تجربه و شیوه های به دست آمده در طول توسعه یک بستر غیر متمرکز برای مدیریت و ذخیره راه حل های سازمانها را توصیف می کند.
کاربرد غیر متمرکز
بیایید یک برنامه معمول مانند "یادداشت ها" را در نظر بگیریم. کاربر یادداشت می کند و برنامه آنها را در حافظه رایانه در HDD ذخیره می کند. HDD وسیله ای است و به عنوان هر چیزی در این دنیا ، ممکن است فرسوده یا خراب شود. این بدان معناست که در صورت بروز اتفاقی یا در پایان عمر مفید HDD ، ما تمام یادداشت های خود را از دست خواهیم داد ، که می تواند حاوی اطلاعات ارزشمندی باشد. یک گزینه مناسب می تواند انتقال به برنامه مشتری-سرور باشد ، به عنوان مثال ، به برنامه های وب "یادداشت ها". با استفاده از آن ، ما در مرورگر یادداشت خواهیم کرد و آنها را در یک سرور از راه دور بارگذاری می کنیم. در این حالت ، ما مسئولیت ذخیره اطلاعات را به یک سرور شخص ثالث ، که اطلاعات را ذخیره می کند ، دقیقاً مانند رایانه ما تغییر می دهیم. اما اگر صاحب سرور دسترسی را انکار کند یا سرور خراب شود؟
ما دوباره اطلاعات خود را از دست خواهیم داد. تمرکز مشکل اصلی این رویکردها است. با استفاده از DAPP ، به طور خاص ، استفاده از فناوری blockchain در برنامه ها می تواند این مشکل را حل کند.
DAPP ، و همچنین برنامه وب کلاسیک ، دارای قطعات جلوی و باطن است. ویژگی بارز آن استفاده از blockchain به جای یک سرور از راه دور متمرکز ، یعنی به عنوان یک پس زمینه است.
عدم تمرکز ویژگی اصلی و مزیت آن است. به طور تعریف ، یک blockchain زنجیره ای از بلوک ها با اطلاعات ، به عنوان مثال ، یادداشت های ما است. در Ethereum Blockchain ، هر یک از شرکت کنندگان در شبکه دارای یک نسخه از زنجیره بلوک ها با اطلاعات مستقل از یکدیگر هستند. این بدان معنی است که تمام HDD های همه اعضای شبکه باید از بین بروند یا از بین بروند تا اطلاعات را از دست بدهند. شبکه blockchain Ethereum شامل هزاران شرکت کننده است و به سرعت در حال گسترش است ، که امکان از دست دادن اطلاعات را به حداقل بحرانی کاهش می دهد.
کنگره
blockchain زنجیره ای از بلوک ها است. بلوک ساختاری با هش ، هش بلوک قبلی برای ارتباطات و لیستی از معاملات است.
کاربر blockchain یک آدرس منحصر به فرد برای شناسایی خود در معاملات و یک کلید خصوصی برای تأیید معاملات خود دریافت می کند. کلید خصوصی یک عدد صحیح مثبت انتخاب شده است. کلید خصوصی توسط یک الگوریتم هش به یک کلید عمومی تبدیل می شود و کلید عمومی به یک آدرس منحصر به فرد تبدیل می شود.
معامله انتقال cryptocurrency از یک آدرس به آدرس دیگر است. به عنوان مثال ، این معامله 0. 41 اتر را منتقل می کند:

بلوک با معامله داده شده:

الگوریتم هشویی مورد استفاده Ethereum Ethash نامیده می شود. این ابرداده از آخرین بلوک موجود در سیستم (معاملات و هش بلوک قبلی) را با استفاده از یک کد ویژه به نام Nonce: یک عدد باینری تصادفی (ایجاد الگوریتم Ethereum) ، که مقدار منحصر به فرد عملکرد هش را تعیین می کند ، هشدار می دهد. برای هر بلوک جدید در blockchain ، شبکه مقدار هش هدف را تعیین می کند (پس از پر شدن بلوک جدید با معاملات تنظیم می شود) ، و تمام معدنچیان شبکه سعی می کنند مقدار Nonce را حدس بزنند ، که منجر به این مقدار خواهد شد.
اصول رمزنگاری که زیربنای چنین هشدار دهنده است ، انتخاب تصادفی از غیرقانونی را عملاً غیرممکن می کند. این بدان معناست که تنها راه برای یافتن غیر مناسب ، حرکت چرخه ای در کل طیف وسیعی از راه حل های ممکن تا زمان یافتن صحیح است. در این حالت ، راه حل می تواند به عنوان "اثبات کار" عمل کند ، این بدان معناست که رایانه ای که ارزش صحیح غیرقانونی را پیدا کرده است باید در واقع کار را انجام دهد ، یعنی از قدرت پردازش برای اجرای الگوریتم هشدار استفاده کنید.
اولین بلوک بلوک صفر است و هش والدین ندارد ، در حالی که بقیه بلوک ها پس از محاسبه هش توسط معدنچیان به سیستم بلوک اضافه می شوند.
زنجیره بلوک ها در تمام گره های شبکه توزیع می شود. یک گره هر یک از شرکت کنندگان برابر شبکه است که دارای یک blockchain کاملاً بارگذاری شده در رایانه خود است. این ویژگی عدم تمرکز را فراهم می کند ، زیرا شبکه به یک سرور گره خورده است ، در حالی که حداقل یک گره وجود دارد ، زندگی می کند.
هش در بلوک ها امنیت و قابلیت اطمینان اطلاعات ذخیره شده را فراهم می کند. اگر یک مهاجم در معامله یک اتر اضافی را به خود اختصاص دهد ، الگوریتم blockchain عدم تطابق (به عنوان معاملات قبلی شناخته شده است) و معامله را لغو می کند. همچنین تغییر معاملات موجود غیرممکن است ، زیرا هش از کلیه معاملات و هش از بلوک های گذشته که در ایجاد هش بلوک شرکت کرده اند و blockchain با حالت قابل اعتماد هماهنگ می شود. در غیر این صورت ، مهاجم مجبور است هش کل blockchain را که غیر واقعی است ، حساب کند.
قراردادهای هوشمند
یک قرارداد هوشمند یک کد برنامه است که منطق و حالت خود را در blockchain ذخیره می کند.
قراردادهای هوشمند در اتریوم به صورت کلاس هایی که می توانند به زبانهای مختلف از جمله برنامه نویسی بصری قابل اجرا باشند ، ارائه شده و قبل از ارسال به blockchain ، در کد بایت برای دستگاه مجازی Ethereum (EVM) تهیه شده است. تغییر حالت دستگاه مجازی را می توان با یک زبان کامل اسکریپت تورینگ نوشت ، یعنی قابل مقایسه با بیشتر زبانهای برنامه نویسی محبوب.
بر خلاف زبان اسکریپت در پروتکل بیت کوین ، EVM از چرخه ها پشتیبانی می کند ، بنابراین این پلت فرم از مکانیسم به نام "گاز" برای محدود کردن قراردادهایی استفاده می کند که می توانند مدت زمان طولانی را برای تکمیل انجام دهند. این است که کمیسیون از تماس گیرنده برای محاسبات در قالب گاز گرفته شده است ، که به اتر تبدیل می شود و به پیچیدگی تماس بستگی دارد (پیچیدگی بستگی به میزان تغییر در حالت قرارداد دارد ، یعنی تماس در حالی که (درست است) برای blockchain هزینه ای ندارد).
در این حالت ، می توان قراردادی ایجاد کرد که هزینه ها را بازپرداخت کند ، اما چنین روشی دارای معایبی است.
بیایید یک قرارداد ساده را در نظر بگیریم:

این قرارداد در جاوا اسکریپت مانند استحکام زبان نوشته شده است. این زبان به دلیل پشتیبانی فعال جامعه و توسعه دهندگان انتخاب شده است.
در قرارداد فوق ، در حالی که روش سلام را با پارامتر فراخوانی می کنید ، یک خط خروجی است. کد استحکام در مقایسه با JavaScript هیچ ویژگی اساسی ندارد. ویژگی MSG. Sender واقعاً مهم است ، زیرا آدرس روش فراخوانی را برمی گرداند ، که به نوبه خود امکان محدود کردن دسترسی به روش را فراهم می آورد. نیاز و اثبات توابع در نسخه های جدید استحکام مشابه عبارت IF THROW است.
بیایید به ترتیب قراردادهای هوشمند در blockchain حرکت کنیم. برای دسترسی به قرارداد از blockchain ، باید مستقر شود. در این حالت ، استقرار قرارداد یک معامله معمول است که در زیر آورده شده است ، همچنین باید در بلوک "استخراج شود" (برای محاسبه هش این معامله و دیگران در بلوک با استفاده از الگوریتم Ethash).

خط "به" آدرس را نشان می دهد که استقرار قرارداد را انجام می دهد ، و خط "از" آدرس خود قرارداد را نشان می دهد. قسمت InputData حاوی کد قرارداد به صورت کد بایت شش ضلعی است. کد قرارداد را می توان توسط هر کسی مشاهده کرد ، بنابراین ذخیره کردن داده های مخفی در کد بهترین روش نیست.
فراخوانی روش تغییر وضعیت قرارداد به عنوان معامله در blockchain شکل می گیرد. مثلا:

همه چیز با استقرار یکسان است.
محیط های توسعه
محیط اصلی برای توسعه قراردادها در استحکام ، Remix IDE است. برنامه کاملاً ابتدایی است ، در زیر ما فقط به شیوه های کار با Ethereum (نقطه محیط) توجه می کنیم.
- JavaScript VM - JavaScript یک شبیه ساز واقعی blockchain است.
- تزریق Web3 - برای اتصال به ماژول Web3 در صفحه مورد نیاز است. با Metamask کار می کند (علاوه بر Chrome ، به شما امکان می دهد بدون بارگیری خود بلوک به بلوک دسترسی پیدا کنید).
- ارائه دهنده Web3 - اتصال به بلوک سفارشی.
Remix IDE توانایی کار مستقیم با پرونده های محلی را دارد که بسیار مناسب است. برای انجام این کار ، شما باید RemixD را نصب کنید: NPM نص ب-G RemixD
سپس موارد زیر را انجام دهید:
Remix D-s

روی پیوند نماد کلیک کنید و همه چیز باید کار کند. نصب . NET SDK 2005 ممکن است در هنگام تنظیم RemixD مورد نیاز باشد.
سپس blockchain را برای آزمایش قراردادها انتخاب کنید. در حال حاضر ، blockchain خصوصی قابل شروع است ، اما این گزینه به دلیل تنظیم و ضرورت معدن دائمی بسیار وقت گیر است ، و همچنین برای آزمایش سریع ناخوشایند است. به عنوان یک گزینه ، می توان از یک تست عمومی استفاده کرد ، به عنوان مثال Ropsten. تفاوت آن از اصلی ترین این است که اتر را می توان به صورت رایگان دریافت کرد ، اگرچه سرعت تأیید معاملات خیلی زیاد نیست.
کار با قراردادها امکان پذیر است در حالی که کل blockchain به طور کامل بارگیری می شود. برنامه برابری برای چنین موردی مناسب است. این امکان همگام سازی مناسب با هر شبکه و کار با قراردادها و معاملات را فراهم می کند.
به عنوان مثال ، از Metamask به عنوان کیف پول ، گره (یک blockchain کاملاً هماهنگ در سرور Metamask) و ارائه دهنده Web3 استفاده می شود. Metamask فقط یک افزودنی به Chrome است و چیز دیگری نیست. این افزودنی دسترسی به بلاکچین های هماهنگ از راه دور از سرورهای Metamask را فراهم می کند (برابری blockchain را به رایانه حاوی آن بارگیری می کند) ، این امکان را برای امتناع از بارگیری فراهم می کند. و همچنین ماژول JavaScript Web3 را برای سرور Metamask در هر صفحه پیکربندی می کند ، که در آن افزودنی اجرا می شود. این امکان برقراری ارتباط با برنامه های JS با قراردادهای موجود در blockchain را فراهم می کند و از ضرورت پیکربندی اتصال رهایی می یابد. Metamask یک کیف پول ساده با سابقه معاملات و یک مدیر حساب است.
بیایید نمودار فعالیت Metamask را در نظر بگیریم:

ادمکشی
به روش کلاسیک ، شما باید مشتری Ethereum را بارگیری کرده و کل blockchain را با رایانه محلی همگام سازی کنید ، در واقع ، این گره می شود. این می تواند جایگاه مهمی در HDD داشته باشد و منابع شبکه را برای هماهنگی با شبکه صرف کند. علاوه بر این ، در dapp web3. js باید به صورت دستی وصل شود و برای گره لازم پیکربندی شود.
>MetaMask می تواند این مشکلات را حل کند و کار را با Blockchain شبکه اتریوم تسهیل کند. Metamask یک برنامه افزودنی برای یک مرورگر ، "پل" بین مرورگر و blockchain Ethereum است. Metamask هنگام کار با blockchain اصلی و آزمایش ، دسترسی به گره های از راه دور خود را فراهم می کند ، که نیاز به بارگیری کل زنجیره بلوک های blockchain مورد نیاز را از بین می برد. یکی دیگر از ویژگی های Metamask تزریق خودکار شیء Web3JS در تمام صفحات وب است. این شیء قبلاً برای شبکه و حساب کاربری که در رابط پسوند انتخاب شده اند پیکربندی شده است.

Metamask را در مرورگر از سایت رسمی نصب کرده و پیکربندی را در رابط پسوند شروع کنید.
ابتدا blockchain راست را انتخاب کنید. علاوه بر بلوک اصلی ، آزمایشی نیز می تواند انتخاب شود یا از طریق IP مستقیماً به هر شبکه مشتری متصل شود. تست تست Ropsten ضروری است.

در مرحله بعد ، ما باید در شبکه Ropsten یک حساب کاربری ایجاد کنیم. برای انجام این کار ، بر روی دکمه تغییر حساب کلیک کرده و ایجاد حساب را انتخاب کنید. پس از آن ، حساب ایجاد شده را در لیست انتخاب کنید.
در منوی متن حساب ، آدرس Ethereum را می توان کپی و دریافت کرد.
اما برای هزینه معامله ، گاز مورد نیاز است ، آن را به ETH تبدیل می کند ، و 0 مورد از آن در حساب جدید وجود دارد. مهمترین مزیت روپستن این است که می توانیم ETH رایگان دریافت کنیم. برای انجام این کار ، روی دکمه خرید و انتخاب سرویس کلیک کنید. در صفحه باز شده ، ETH را درخواست کنید و منتظر بمانید تا معامله تأیید شود.
پس از انجام کلیه عملیات ، یک محیط کاملاً سفارشی برای کار با DAPP دریافت می کنید.
ترافل
Truffle چارچوبی برای همکاری با قراردادهای هوشمند Ethereum است. ویژگی های اصلی آن:
- تست قراردادها
- تدوین قراردادها
- قراردادهای هوشمند از طریق مهاجرت مستقر می شوند.
برای نصب ترافل ، دستور زیر را اجرا کنید: NPM نص ب-g truffle
برای اولیه سازی Truffle Run Truffle init در فهرست با Framework: برای کار بیشتر ، ایجاد پرونده های . sol با قراردادهای موجود در پوشه قراردادها.
سپس ، قراردادها را با فرمان کامپایل ترافل کامپایل کنید. این دستور در پرونده های پوشه ساخت با اطلاعات لازم برای استقرار قراردادها ایجاد می کند.
برای قراردادهایی که پرونده های سفارشی را مطابق با قراردادهای ما انجام می دهند. مهاجرت در ترافل نشان دهنده پرونده های JS است ، که در آن 4 اسکریپت برای استقرار قرارداد توصیف قراردادها به روش های مختلف است. در صورت وجود چندین مهاجرت ، آنها به صورت متوالی اجرا می شوند.
ساده ترین مهاجرت را برای یک قرارداد در نظر بگیرید:

در این حالت ، MyContract بارگیری می شود و با کمک ماژول Deployer در بلوک اجرا می شود که تنظیمات آن در پرونده truffle. js (root) است.
مهاجرت های ماشه مهاجرت را شروع می کنند.
آزمایش واحد قراردادها در هر دو جاوا اسکریپت و استحکام انجام می شود. تست JavaScript بر اساس چارچوب Mocha کار می کند.
بالا
این چارچوب در آزمایش بتا است.
Uport می تواند جایگزینی برای Metamask در یک پروژه واقعی باشد. در عین حال ، Uport از نظر مفهومی متفاوت است.
سرویس Uport کاملاً غیر متمرکز است. یعنی ذخیره سازی داده ها و منطق در قراردادهای هوشمند متمرکز شده اند.
الگوریتم عملیاتی Uport:
- کاربران باید برنامه تلفن همراه را به تلفن های هوشمند خود نصب کرده و در سیستم ثبت نام کنند. سپس شناسه خود را در سیستم و آدرس در blockchain دریافت می کنند.
- در صورت لزوم ، برنامه (قرارداد هوشمند) می تواند در سیستم ثبت شود. پس از آن ، شما شناسه و کلیدهای برنامه را دریافت می کنید (آنها فقط به Uport گره خورده اند).
- توسعه دهنده هنگام تهیه کتابخانه از UPORT استفاده می کند و برنامه را تحت یک الگوی خاص می سازد:
- هنگام ورود به برنامه ، کاربر باید کد QR را برای اسکن واجب تهیه کند. کاربر آن را با استفاده از برنامه UPORT در تلفن هوشمند اسکن می کند. برنامه ، بر اساس کد URI QR شناخته شده ، شناسه خود را به برنامه ارسال می کند. برنامه کاربر را مشخص می کند (آدرس خود را دریافت می کند).
- هر زمان که معامله ای را برای مشتری آغاز کنید ، یک پنجره تأیید در برنامه ظاهر می شود. فقط پس از تأیید در برنامه ، معامله توسط کلید کاربر امضا شده و اجرا می شود.
غبار
غبار یک مرورگر رسمی وب DAPP است. این یک کیف پول یکپارچه اتریوم دارد و این با سایر مرورگرهای معمول متفاوت است. این امکان را برای مدیریت حساب و ایجاد معاملات ساده برای ارسال اتریوم ، برای استقرار قراردادها فراهم می کند. در حقیقت ، Mist یک مرورگر معمولی با MetaMask داخلی است ، اما همچنین غبار کل blockchain را روی دیسک بارگیری می کند و از گره های از راه دور مانند Metamask استفاده نمی کند.
IPF
یکی از خصوصیات کار blockchain ، تکثیر بلوک های معاملات است که در آن قراردادها و وضعیت آنها در هر گره ذخیره می شوند. این بدان معناست که اگر یک سیستم عظیم وجود داشته باشد که ساختارهای پیچیده داده را دستکاری کند ، مقدار زیادی "گاز" برای انجام اقدامات در مورد داده ها در قراردادها و ذخیره در رایانه شخصی غیر ضروری برای داده های مشتری صرف می شود.
بهترین راه حل ممکن است یک پایگاه داده معمولی (MySQL ، Oracle و غیره) باشد و سپس تنها شناسه سوابق لازم را می توان در قرارداد هوشمند ذخیره کرد. اما اگر وابستگی به یک پایگاه داده متمرکز وجود داشته باشد ، فایده blockchain چیست؟اما اگر پایگاه داده ناکام باشد ، کل سیستم بی معنی خواهد بود ، زیرا یک شناسه به معنای هیچ چیز بدون بانک اطلاعاتی نیست.
با وجود تعریف فوق ، IPF ها باید به عنوان نوعی سیستم فایل در نظر گرفته شوند. در این سیستم فایل ، پرونده ها توسط محتوا آدرس داده می شوند ، نه با نام. در IPFS شما به پرونده هش آن مراجعه می کنید ، که توسط محتوای آن تخمین زده می شود. بنابراین اگر پرونده و هش آن تغییر یابد ، به عنوان یک پرونده جدید در سیستم فایل IPFS در نظر گرفته می شود. این خاصیت کمی شبیه GIT است و ذخیره نسخه های فایل با کمک IPF ها می توانند سازماندهی شوند.
بیایید عدم تمرکز IPF ها را در نظر بگیریم. این شبیه به BitTorrent است. ما یک فایل را از طریق IPFS Client بارگیری می کنیم ، هش خود را بدست می آوریم ، و سپس وارد حافظه نهان محلی ما می شود (/useame/. ipfs). هنگامی که کاربر دیگری به پرونده ما احتیاج دارد ، ما او را هش می دهیم ، و سپس او درخواست HTTP را به LocalHost می دهد: 5001/IPFS/[هش پرونده مورد نیاز] (اگر می خواهیم با یک مشتری محلی کار کنیم). این سیستم در حال جستجوی این پرونده و عضو شبکه IPFS است ، از جایی که می توان این پرونده را بارگیری کرد. از آنجا که این پرونده فقط در دسترس است یا ما و ما آنلاین هستیم ، مشتری دوم می تواند این فایل را بارگیری کرده و به طور خودکار آن را در حافظه نهان خود بارگذاری کند.
مشتری بعدی می تواند پرونده ای را از هش ما درخواست کند و به عنوان مثال از مشتری دوم آن را دریافت کند و مشتری اول برای این عمل دیگر نیازی به آنلاین ندارد.
مشابه BitTorrent ، ما پرونده را در شبکه قرار می دهیم ، یعنی آن را از رایانه ما "توزیع" کنید و سایر کاربران آن را بارگیری می کنند و در حالی که یک شرکت کننده برابر در شبکه هستیم ، آن را به روشی مشابه توزیع می کنیم و یک پرونده غیر متمرکز را ارائه می دهیمتبادل.
مزایای IPF ها:
- عدم تمرکز
- آدرس دهی به محتوا: ما مطمئن هستیم که پرونده مطابق هش مشخص تغییر نخواهد کرد (احتمال برخورد بسیار اندک است)
- منبع خاصی لازم نیست (میزان فضای روی دیسک به اندازه قابل تنظیم حافظه نهان بستگی دارد)
- سرعت دسترسی: مشتری که از آن پرونده های خود را بارگیری می کنیم ممکن است بسیار نزدیک ما باشد یا ما یک حافظه پنهان (امکان کار آفلاین) داریم ، در حالی که
- منبع می تواند در مکانی با پاسخ شبکه طولانی قرار داشته باشد یا اصلاً آفلاین باشد
- یک راه حل عالی برای میزبانی DAPP Frontend
مضرات IPF ها:
- تغییر ناپذیری: پرونده ها قابل حذف یا تغییر نیستند. در صورت فراموش شدن ، هر پرونده می تواند از بین برود یا توسط کسی در حافظه نهان ذخیره نشود.
- مدرک عدم تمرکز بستگی به تعداد بارگیری و توزیع پرونده در حال حاضر دارد. در حقیقت ، این بدان معناست که اگر برنامه ما به صورت آنلاین استفاده نشود یا برای مدت طولانی از آن استفاده نشود ، می تواند داده هایی را که از منبع بارگیری شده است به طور جزئی یا کاملاً از دست بدهد. بنابراین ، محصولات انبوه هدف اصلی IPF ها هستند.
- عدم وجود مرورگر با پشتیبانی IPF ، ضرورت نصب مشتری جداگانه.
هر کاربر باید یک مشتری IPFS داشته باشد تا مستقیماً با آن کار کند. مشتری یک برنامه کنسول است ، اولین باری که آن را شروع می کنیم ، باید پوشه حافظه نهان را با دستور IPFS INIT تنظیم کنیم. پس از آن ما می توانیم از طریق کنسول یا از طریق Web-Gui با اجرای دستور Daemon IPFS و رفتن به http: // localhost: 8080/webui کار کنیم.
از کتابخانه مشخص شده ، که با یک مشتری IPFS از طریق RPC-API ارتباط برقرار می کند ، برای توسعه برنامه های Frontend با IPF استفاده می شود.
یک ویژگی جالب اضافه کردن یک پوشه کامل است. این امر به شما امکان می دهد سایت ها را به روشی بسیار آسان در یک شبکه غیرمتمرکز قرار دهید. برای انجام این کار ، از دستور ipfs ad d-r [مسیر به پوشه] استفاده کنید و نتیجه زیر را بدست آورید:

تمام پرونده های موجود در پوشه به طور خودکار در سیستم بارگیری می شوند و یک هش از پوشه در خط آخر قرار می گیرد. اکنون می توانید با استفاده از درخواست HTTP زیر به پرونده در پوشه با هش شناخته شده دسترسی پیدا کنید: LocalHost: 8080/IPFS // qmyha9yw5ywrqfhkg7cq6fowcu8hn3rk5pqf2uj5apgfnq
یکی از ویژگی های IPFS سیستم IPNS است. کمی تنوع به IPF ها اضافه می کند. ایده این است که هش IPFS را با شناسه همکار (یک مشتری شخصی) بدست آورید ، که می تواند به صورت پویا تغییر یابد. در همین حال ، کاربران فقط شناسه IPNS شما (یک شناسه همکار) را می شناسند و با دسترسی به آن ، یک حافظه نهان IPFS دریافت می کنند که می تواند به صورت پویا تغییر کند. این ویژگی برای میزبانی وب سایت های پویا استفاده می شود.
معماری برنامه های غیر متمرکز (DAPP)
بیایید مهمترین لحظات معماری در ساخت DAPP را در پایه blockchain Ethereum برجسته کنیم:
- هیچ ماژول متمرکز در برنامه وجود ندارد. از آنجا که کار ماژول های غیرمتمرکز پس از ترک شبکه ، به عنوان مثال ، یک پایگاه داده یا میزبانی پرونده انجام می شود.
- برنامه باید در شبکه حداکثر خود باشد و برابر باشد. یعنی وقتی برنامه در یک شبکه جدید اجرا می شود ، باید به خودی خود محیط لازم را بازآفرینی کند. در عین حال ، ایجاد سازندگان برنامه کاربردی ، که سایر شرکت کنندگان به آن وابسته هستند ، شکل بدی است.
بنابراین ، دو معماری ممکن برای ساخت DAPP بر اساس blockchain Ethereum وجود دارد:
1. برنامه وب در blockchain عمومی
این نوع معماری در حال حاضر رایج ترین است ، زیرا توسعه آن آسان و کاملاً مناسب برای خدمات عمومی است.
معماری را می توان به شرح زیر ارائه داد:

مرورگر DAPP در آغاز زنجیره است. در حال حاضر ، چنین مرورگر غبار و مرورگر با افزودن Metamask (Chrome و Firefox) است. وظیفه اصلی چنین مرورگرها فراهم کردن رابط کاربری با حساب و اجرای یک شیء Web3 است که برای شبکه انتخاب شده پیکربندی شده است. اما این قابلیت نیز می تواند در مرورگر معمول اجرا شود.
برنامه وب بعدی که از Web3JS استفاده می کند ، می آید. Web3JS به استفاده از RPC اجازه می دهد تا با گره blockchain در میزبان مشخص شده کار کند. در بیشتر موارد ، چنین برنامه هایی به طور کلی یا blockchain آزمایش شده اند تا در همه جا در دسترس باشند.
ضرر این رویکرد روند کار از طریق blockchain عمومی و خصوصی است. در مورد یک مورد کلی ، ما باید هزینه معاملات را به ارز واقعی بپردازیم. در واحد آزمون زمان تأیید معامله عالی وجود دارد. همچنین ، ضرر عدم حفظ حریم خصوصی در محل کار است ، زیرا معاملات در اینترنت قابل مشاهده است.
2. یک برنامه شخصی خود در blockchain خصوصی
بیایید نمودار معماری را در نظر بگیریم:

این رویکرد شامل یک blockchain خصوصی است. این یک blockchain است که فقط برای شبکه ما ایجاد شده است. این بدان معنی است که ما آن را در شبکه سازمان متمرکز می کنیم. یک شبکه خصوصی مزایای زیر را دارد:
- حریم خصوصی blockchain: فقط اعضای شبکه می توانند با blockchain کار کنند.
- سرعت ایجاد بلوک به دلیل اندازه شبکه زیاد است
- هزینه معامله کم
این ضرر در مقایسه با فیلم های عمومی ، عدم تمرکز ضعیف است. شبکه محلی بیشتر از اینترنت شکست می خورد.
سپس مشتری را مشخص کنید. این برنامه یک برنامه دسک تاپ خود را نشان می دهد که در صورت لزوم GETH و IPFS Client را نصب می کند و همه چیز را پیکربندی می کند. این کار کاربر نهایی را از پیکربندی محیط به صورت دستی نجات می دهد.
برنامه در زاویه ای تهیه می شود. Electron برای بسته بندی یک برنامه وب در فرم دسک تاپ استفاده می شود (این یک برنامه پنجره معمولی می شود).
برای قابلیت اطمینان ویژه ، تعامل بین مشتری و blockchain با استفاده از فناوری IPC انجام می شود. این امکان برقراری ارتباط مستقیم بین فرآیند مشتری و GETH (اجرای Ethereum در GO) را فراهم می کند ، که این امر از مداخلات خارج است.
در این معماری ، استفاده از IPF شک دارد. از آنجا که ما می توانیم کل blockchain را ذخیره کنیم ، زیرا فقط شامل معاملات سازمان است. اما IPFS برای ذخیره پرونده هایی مانند تصاویر ، اسناد و غیره ضروری است. سپس ، خوب است که IPF ها را محلی کنیم. ممکن است. برای انجام این کار ، برای یافتن جزئیات ، یک تحقیق انجام دهید.
یک مشکل در اجرای این معماری وجود دارد: توسعه دهندگان Web3JS پشتیبانی API را برای کار با حساب ها به منظور محافظت از کاربران حذف کردند. به نظر آنها ، باید از غبار و متاماسک برای کار با حساب استفاده شود ، که خلاف معماری فوق است.
راه حل های ممکن برای این مشکل:
- کتابخانه Web3JS را به عنوان مثال.
- از کتابخانه Web3_IPC برای مدیریت حساب های مشترک با Web3JS09 استفاده کنید-
گزینه شماره 2 وقت کمتری دارد.
در این معماری ، مشکل کاربر نهایی انتزاع از کار با آدرس ها و کلیدهای خصوصی blockchain حل شد ، و همچنین ثبت نام و ورود به سیستم کلاسیک ارائه شد. جوهر راه حل جدا کردن داده ها و آدرس حسابداری کاربر است. به عنوان مثال ، اگر کاربر با این برنامه در آن دسترسی به رایانه خود را از دست بدهد ، رایانه جدید یک ورود جدید ایجاد می کند و هنگامی که داده های حسابداری وی در قرارداد هوشمند تأیید می شود ، آدرس قدیمی در قرارداد با یک برنامه جدید جایگزین می شودبشربنابراین ، آدرس جدید امتیازات کاربر را دریافت می کند و قدیمی بی فایده می شود و مهاجمان قادر به استفاده از آن نخواهند بود.
قرارداد ، رسیدگی به یک مشکل می تواند مانند:

علاوه بر این ، برنامه باید تمام قراردادهای لازم را ایجاد کند (در صورت عدم دسترسی) و اگر فناوری اجازه می دهد ، blockchain خصوصی را آغاز کنید (در صورت یافتن). این یک عدم تمرکز واقعی را فراهم می کند.
تجارت گزینه های دودویی در ایران...
ما را در سایت تجارت گزینه های دودویی در ایران دنبال می کنید
برچسب :
نویسنده : زینالعابدین مراغهای
بازدید : <-PostHit->
تاريخ : دوشنبه
5 تير
1402 ساعت: 17:52