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

نوسازی Blockchain با پایگاه داده های توزیع شده: سیستم منبع باز.

Renovating Blockchain with Distributed Databases: An Open Source System.

نوسازی Blockchain با بانکهای داده توزیع شده:

یک سیستم منبع باز.

چکیده:

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

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

در این کار ، ChainSQL را به نمایش می گذاریم ، یک سیستم منبع باز که با ادغام blockchain با پایگاه داده ایجاد شده است ، یعنی- ما یک سکوی برنامه بانک اطلاعاتی blockchain را ارائه می دهیم که دارای ویژگی های غیرمتمرکز ، توزیع و شنیداری از blockchain و پردازش سریع پرس و جو و به خوبی است. ساختار داده های طراحی شده از پایگاه داده های توزیع شده.

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

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

یک ارزیابی جامع تجربی برای نشان دادن اثربخشی سیستم انجام شده است.

1. معرفی:

ارزهای دیجیتالی یا رمزنگاری مانند ، بیت کوین [1] ، اتریوم [2] ، ریپل [3] و دیگران ، اخیراً شاهد علاقه فوق العاده ای از طرف کاربر و همچنین جامعه توسعه دهنده بوده اند [4 ، 5 ، 6].

ارزهای رمزپایه در واقع قراردادهای هوشمندانه ای بین کاربران هستند که با استفاده از ساختار داده ای به عنوان "blockchain" اجرا می شوند.

بنابراین ، یک blockchain معاملات را در حالیکه دو محدودیت زیر را برآورده می کند ، ذخیره می کند:

(i) هرکسی باید بتواند به blockchain بنویسد ، و (ii) هیچ کنترل متمرکز وجود ندارد.

blockchain یک بانک اطلاعاتی و یک نرم افزار کاربردی است که در بالای آن [7] است که تعریف داده ها و مکانیزم بروزرسانی داده ها برای blockchain را دیکته می کند.

یک blockchain نه تنها می تواند داده های جدیدی را به پایگاه داده اضافه کند ، بلکه اطمینان می دهد که کلیه کاربران موجود در شبکه دقیقاً داده های یکسانی دارند.

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

یکی از محدودیتهای blockchain ، کمبود ذاتی آن در پردازش پرس و جو جستجو [8] است که در درجه اول به دلیل ذخیره اطلاعات مرتبط و عدم وجود یک ساختار نمایه سازی داده به خوبی تعریف شده برای نمایش داده شد.

به عنوان مثال ، بیت کوین قابل توجه ترین شبکه blockchain است. با این حال ، دو محدودیت دارد:

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

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

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

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

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

این امر آشکار نیست زیرا blockchain و بانک اطلاعاتی توزیع شده دو ساختار داده متفاوت هستند و به گونه ای طراحی شده اند که نیازهای شغلی کاملاً متفاوت را ارائه دهند.

به عنوان مثال ، در حالی که نمایش داده های توزیع شده پایگاه داده بر اساس پارادایم "موازی سازی" طراحی شده است ، به عنوان مثال ، موازی سازی درون پرس و جو یا رویکردهای چند متغیره ، blockchain یک ساختار داده پی در پی است که به دنبال تضمین یکپارچگی داده ها است.

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

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

با این حال ، ذخیره داده غیرمتمرکز و غیر قابل اعتماد در blockchain می تواند به عنوان زیر مورد استفاده قرار گیرد.

از آنجا که یک گره در شبکه blockchain دارای کپی مخصوص خود از داده های blockchain است ، اگر گره X نیاز به اجرای سریع query ها در blockchain داشته باشد ، می تواند یک کپی محلی از blockchain را برای تولید یک پایگاه داده محلی اجرا کند ، و در نتیجه تمامیت داده ها توسط blockchain تأیید می شود و نمایش داده شد سریع در پایگاه داده محلی اجرا می شود.

در این کار ، ChainSQL1 ، یک سیستم blockchain با استفاده از بانک اطلاعاتی جدید را به نمایش می گذاریم که این blockchain را با بانکهای اطلاعاتی توزیع شده ادغام می کند تا بتواند سیستمی داشته باشد که دارای یکپارچگی blockchain و پردازش سریع پرس و جو از پایگاه های داده توزیع شده باشد.

ما سه مورد استفاده از ChainSQL را نشان می دهیم. هرکدام از آنها به عنوان واسط بین برنامه سازمانی و بانک اطلاعاتی زیرین اجرا می شود:

(1) اولین usecase یک میان افزار پایگاه داده چند منظوره است که برنامه سازمانی را با سیستم پایگاه داده متصل می کند.

میان افزار رمزگذاری متقارن و نامتقارن را برای امنیت داده فراهم می کند.

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

(2) Usecase دوم یک میان افزار برای بازیابی فاجعه پایگاه داده است که گره های تولید پایگاه داده را با گره های بازیابی فاجعه متصل می کند.

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

در صورت خرابی گره تولید ، کاربر برای تکمیل کار یکپارچه به گره تولید "جدید" تبدیل می شود که گره ای در مرکز بازیابی است.

(3) Usecase سوم یک ویژگی شنیداری است که کنترل دسترسی انعطاف پذیر را به همراه پشتیبانی ردیابی امکان پذیر می کند.

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

جزئیات مربوط به موارد استفاده فوق در بخش 5 ارائه شده است.

اهمیت ChainSQL.

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

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

برعکس ، Blockchain یک ساختار داده "بی اعتماد" است که قابلیت اطمینان و یکپارچگی داده ها در هسته آن را تضمین می کند.

با این حال ، blockchain فاقد توان کارایی و پرس و جو است.

ما ادغام پایگاه داده های توزیع شده با blockchain را پیشنهاد می کنیم.

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

ChainSQL با استفاده از فن آوری blockchain تمامیت داده ها و قابلیت اطمینان داده های پایگاه داده های توزیع شده را حل می کند و هنوز پردازش سریع پرس و جو از پایگاه های داده توزیع شده را حفظ می کند.

برجسته های ChainSQL.

ChainSQL به دلیل نیاز به مجوز برای دسترسی به داده های کاربر شخصی ، از طراحی ایمن برخوردار است.

معاملات در بلاکچین ذخیره می شوند در حالی که داده های واقعی در پایگاه داده ذخیره می شوند.

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

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

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

بنابراین ، ChainSQL نه تنها لحظه به لحظه از پایگاه داده سنتی بلکه امنیت blockchain را نیز فراهم می کند.

می توان آن را به راحتی با پایگاه داده های سنتی متداول مانند MySQL2 از طریق API پیکربندی کرد.

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

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

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

نمای کلی از سیستم های blockchain و مفاهیم مرتبط در بخش 2 بیان شده است.

ChainSQL به عنوان یک سکوی برنامه کاربردی پایگاه داده blockchain در بخش 3 ارائه شده است و الگوریتم اجماع در بخش 4 توضیح داده شده است.

موارد استفاده Chain SQL در بخش 5 شرح داده شده است.

این سیستم به صورت تجربی در بخش 6 ارزیابی می شود و بخش 7 این کار را نتیجه می گیرد.

2- تكنولوژی و سیستمهای Blockchain تكنولوژی Blockchain اخیراً به بازار عرضه شده است.

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

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

در این بخش به مرور فناوری و سیستم های blockchain می پردازیم و در مورد تحولات اخیر در این زمینه بحث می کنیم.

ما ابتدا در مورد معماری سیستم های blockchain بحث می کنیم.

معماری Blockchain یک blockchain یک ماشین منفرد معامله ای با رمزنگاری و دارای امنیت مشترک با حالت مشترک است [2] و به عنوان مجموعه ای از مفاهیم نشان داده شده در شکل 1 بسته بندی شده است.

خلاصه ای از اجزای blockchain به شرح زیر است:

1- Datastore ساختار داده blockchain است که تمام داده های blockchain را در خود جای می دهد.

2- اجماع مکانیسم توافق نامه blockchain است که یکپارچگی داده ها در سیستم را تضمین می کند.

3- اعتبارسنجی فرایندی است که انتقال حالت صحیح در blockchain را تضمین می کند.

4- شبکه Peer-to-peer یک محیط محاسباتی توزیع شده است که عملیات سیستم blockchain را انجام می دهد (1-3 در بالا).

5- رمزنگاری امنیت و حفظ حریم خصوصی داده ها در blockchain را تضمین می کند.

اکنون ما با برخی جزئیات ادامه می دهیم.

2-1-1- Datastore Datastore یک ساختار داده دسترسی پی در پی است که مبتنی بر تکثیر حالت ماشین است و دارای کل داده های blockchain در هر گره در شبکه blockchain است.

معاملات به صورت بلوکهایی جمع می شوند که هر بلوک متعاقب آن از طریق مقدار هش به بلوک قبلی وصل شود.

از آنجا که بلوک ها فقط به جلو قابل دستیابی هستند ، تغییر در مقدار هش یک بلوک بر روی تمام بلوک های بعدی تأثیر می گذارد ، و به این ترتیب یکپارچگی blockchain را نقض می کند.

همانطور که در شکل 2 نشان داده شده است ، یک بلوک دارای دو بخش است:

(i) یک سرصفحه با ابرداده و (ب) مجموعه ای از معاملات مرتبط.

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

اندازه blockchain به دلیل دسترسی متوالی نگران کننده است ، بنابراین ، تکنیک های مشابه درخت مرکل [11] برای سرعت بخشیدن به روند اعتبار سنجی پیشنهاد شده است.

به همین ترتیب ، رویکردهای مبتنی بر نمودار [12 ، 13 ، 14] نیز پیشنهاد شده اند که بلوک ها و معاملات را در قالب نمودار و نه یک لیست ذخیره می کنند.

2-1-2- اجماع یک blockchain یک موجود غیرمتمرکز غیرمجاز است که به عنوان موتور عملیاتی خود دارای اجماع است.

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

برای مرور کلی از الگوریتم های اجماع برای سیستم های blockchain ، مطالعه [15] را مشاهده کنید.

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

همانطور که در شکل 3 نشان داده شده است ، هر تراکنش جدید وضعیت سیستم را تغییر می دهد.

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

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

باید واضح باشد که پروتکل اجماع اساساً در کلکسیون های زنجیره ای متفاوت است و انگیزه هایی در فن آوری و همچنین تجارت دارد.

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

همچنین لازم به ذکر است که مشکل اجماع در سیستم های ناهمزمان با فرآیندهای تصادفی شناخته شده است "برای" خاتمه قطعی "سخت" [16].

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

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

الگوریتم مبتنی بر اثبات کار (PoW) [17] که توسط Nakomoto [1] برای بیت کوین پیشنهاد شده است ، احتمالاً شناخته شده ترین الگوریتم اجماع است.

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

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

یک جایگزین برای PoW ، مفهوم Proof-of-Stake (PoS) است که در آنجا یک همتا براساس سهام موجود در سیستم پاداش می گیرد.

PoS بر روی این فرضیه عمل می کند که (i) اگر یک مخالف به طرز مخربی عمل کند ، سهام خود را از دست می دهد ، و (ب) گره های مخالف نمی توانند از 1/3 کل گره ها تجاوز کنند.

PoS مشکل مصرف انرژی PoW را حل می کند اما فقط تحت برخی فرضیات کار می کند [18].

نمونه هایی از الگوریتم های اجماع در حال ظهور الهام گرفته از تحمل خطای عملی بیزانس [19] شامل پارچه هایپرلدگر [20].

الگوریتم های اجماع تحمل پذیر تقصیر بیزانس [19] به ارتباطات همه جانبه همه با پیچیدگی O (n2) تکیه می کنند ، جایی که n تعداد گره های شبکه را دارد.

پیشنهادات اخیر شامل یک الگوریتم اجماع مبتنی بر رهبر است [20] که در آن یک رهبر برای تعدادی دور انجام می شود تا بار کاری ارتباطات را با کاهش میانگین پیچیدگی ارتباطات شبکه بهینه کند.

2-1-3- اعتبارسنجی اعتبار یکپارچگی blockchain توسط یک فرآیند اعتبار سنجی که با هدف جلوگیری از مباحثی از قبیل هزینه های مضاعف در ارزهای رمزپایه اجرا می شود ، حفظ می شود.

برای ارزهای رمزپایه [21] ، معامله به عنوان مجموعه چکهای زیر معتبر است:

(i) معامله از نظر رمزنگاری معتبر است ، یعنی- دارای یک امضا قابل تأیید است ، (ب) قالب معاملات معتبر است ، یعنی- کلیه زمینه های معامله دامنه معتبری دارند ، و (iii) حالت معامله معتبر است ، یعنی- محدودیت های هزینه معامله راضی هستند

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

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

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

یک قرارداد هوشمند به صورت موازی برای یک محیط توزیع شده انجام می شود [22].

قراردادهای هوشمند باید در فضایی شفاف و مشترک تعریف شوند تا امنیت بهتری برای سیستم فراهم شود [23].

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

سرگئی و همكاران [25] نشان می دهند كه اجرای قراردادهای هوشمند فاقد روشهای رسمی برای تأیید است و هنوز هم جای سوال دارد كه آیا استفاده های فعلی نیاز به ویژگی Turing-Complete دارد زیرا این ناقل های حمله اضافی را ایجاد می كند.

2-1-4- Blockchain Network Blockchain یک شبکه همتا برای تبادل اطلاعات بین گره هایی است که معاملات با استفاده از یک پروتکل پخش ایمن در شبکه رله می شوند.

ثبات انتشار اطلاعات یک نگرانی در شبکه است و حملات انکار سرویس (DoS) در کلکسیون های عمومی ، مانند بیت کوین و اتریوم رایج است.

به عنوان مثال ، در شبکه بیت کوین ، استخرهای بزرگ معدن می توانند به استخرهای کوچکتر حمله کنند تا انگیزه بیشتری کسب کنند [26].

در Ripple [27] ، یک گره یک لیست گره های منحصر به فرد (UNL) را پیاده سازی می کند و از این رو از حمله DoS جلوگیری می شود زیرا ترافیک از گره های ناخواسته فیلتر می شود.

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

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

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

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

2-1-5- امنیت و حفظ حریم خصوصی امنیت و حریم خصوصی سیستمهای blockchain در درجه اول به رمزنگاری و مفروضات رمزنگاری متکی است.

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

یکی از مهمترین ابزار برای این منظور ، امضاهای دیجیتالی است [29].

امضای دیجیتال سه ویژگی را ارائه می دهد:

(i) تأیید ، یعنی- تأیید صحت امضا آسان است ، (ii) عدم جعل ، یعنی- هیچ کس نباید آن را کپی یا جعل کند ، و (iii) عدم رد ، یعنی- هنگامی که شما بخواهید. امضای یک شیء ، امضای غیرممکن آن غیرممکن است.

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

از کلید خصوصی k برای امضای معامله با هش مقدار H استفاده می شود.

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

یک طرح امضای دیجیتالی مبتنی بر منحنی های بیضوی [30] معاملات چند امضا را امکان پذیر می کند.

نمونه ای از استفاده از رمزنگاری متقارن در یک سیستم blockchain در شکل 4 نشان داده شده است.

فرستنده جفت کلید (عمومی ، خصوصی) ایجاد می کند.

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

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

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

برای دستیابی به حریم خصوصی ، ارزهای رمزپایه از جابجایی سکه ها با مخلوط کردن [31] یا zk-SNARKs استفاده می کنند [32].

بحث بیشتر در مورد حفظ حریم خصوصی و امنیت در سیستم های blockchain را می توان در مطالعه یافت [33].

2-2- تکامل Blockchain پیشنهاد بیت کوین [1] باعث ایجاد ارزهای رمزپایه ای شد و به تبع آن ، بسیاری از سیستم های blockchain پیشنهاد می شوند.

اکنون یک بررسی کلی از تکامل blockchain ارائه می دهیم.

2-2-1- بلاکچین 1-0:

علاقه اخیر به سیستم blockchain با معرفی بیت کوین پیشنهاد شده توسط ناکاموتو آغاز شد [1].

هدف بیت کوین معرفی پرداخت شفاف مرزی بود.

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

مسائل بیت کوین شامل مصرف زیاد انرژی به دلیل اجماع PoW ، توان کم ، تأخیر زیاد و عدم توانایی در پرس و جوهای غنی است.

این اشکالاتی باعث شد که Blockchain 2-0 معرفی شود.

2-2-2- بلاکچین 2-0:

اتریوم [2] قراردادهای هوشمندی را ارائه داد که امکان اجرای کد نوشته شده در Solidity در بالای blockchain را فراهم می آورد.

اتریوم Particia Merkle Tree و مقادیر قرارداد هوشمند را در یک مخزن (کلیدی ، ارزش) نگه می دارد.

با معرفی "اتر" قرارداد هوشمند بی پایان مخرب ممنوع است.

اتر سوخت اتریوم است و برای اجرای قراردادهای هوشمند استفاده می شود.

ایجاد برنامه های تجاری مبتنی بر اتریوم به دو دلیل محدود کننده است:

(i) طراحی ماژول قرارداد هوشمند برای استفاده از مشاغل خاص بهینه نشده است ، و (ii) هیچ تمایزی بین داده و ذخیره کد وجود ندارد.

ریپل [27] مشکل مقیاس پذیری را در اتریوم و بیت کوین با استفاده از یک دفترچه نیمه متمرکز حل می کند.

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

روند اجماع خود مبتنی بر اعتبار و رأی است و فقط به همان ثانیه نیاز دارد که نشان داده شده توسط آرمکنخت و همکاران [34].

پرونده تجاری Ripple مبادلات بین بانکی و برنامه های مالی است.

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

2-2-3- فراتر از Blockchain 2-0:

مطالعه [5] یک یادداشت مفصل در مورد پردازش داده ها برای سیستم های blockchain است.

تعدادی از ابتکارات از منظر ذخیره داده ها و بازیابی داده ها انجام شده است.

به عنوان مثال ، Hyperledger Fabric [35] ابتکاری است که امکان ایجاد یک زنجیره خصوصی برای یک شرکت را فراهم می آورد.

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

Vukolić [36] استدلال کرد که الگوریتم های اجماع تحمل گسل کلاسیک بیزانس برای دستیابی به قوام قوی تر باید در نظر گرفته شود.

Gaetani و همکاران [37] و Blockstack [38] نیاز به یکپارچگی بهتر داده ها با محیط های ابر فعلی را تأکید می کنند.

یک سیستم قابل توجه blockchain BigChainDB [39] است که قابلیت پایگاه داده مبتنی بر اسناد NoSQL را برای جستجوی سریع با سیستم های blockchain تسهیل می کند.

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

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

الگوریتم اجماع در BigChainDB مبتنی بر Paxos است [40] که تحمل گسل بیزانس را تضمین نمی کند.

یکی از موضوعات موجود در BigChainDB عدم وجود زبان یکپارچه برای نمایش داده شد تا تعامل با بانک اطلاعاتی و agnostic باشد که انتخاب بانک اطلاعاتی را محدود می کند.

سیستم دیگر (در حال حاضر در حال توسعه) Catena3 است که معاملات را در یک سیستم blockchain با مجموعه ای محدود از عبارات SQL جایگزین می کند.

با این حال ، کاربرد Catena در برنامه های تجاری به دلیل انتخاب پروتکل اجماع که مبتنی بر PoW است محدود است و مستعد چنگال های سیستم و توان کم است.

به طور خلاصه ، blockchain یک فناوری جالب است و اخیراً بسیاری از ابتکارات امیدوارکننده انجام شده است.

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

3- ChainSQL:

یک بستر کاربردی بانک اطلاعاتی Blockchain در این بخش ، یک مرور کلی از ChainSQL ، یک سیستم بانک اطلاعاتی log-based blockchain را ارائه می دهیم که از یکپارچگی blockchain و پردازش سریع پرس و جو از پایگاه های داده توزیع شده ، به عنوان زمینه درک سیستم که ارائه می کنیم در بخش 5

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

انتخاب بر اساس سناریوی برنامه در نظر گرفته شده است.

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

اکنون جنبه های طراحی اصلی در ChainSQL ارائه شده است.

3-1- مدیریت کاربر:

ما ابتدا درباره مدیریت کاربر در ChainSQL بحث می کنیم.

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

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

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

ChainSQL از دسترسی به جدول قابل تنظیم ، مجوز اعطای الکترونیکی به زیر مجموعه ای از سوابق ، ویژگی ها یا هر دو پشتیبانی می کند.

یک مکانیسم دسترسی مبتنی بر کاربر که در جدول اصلی ، TableList ، به عنوان یک سه گانه (کاربر ، جدول ، عملیات) تعریف شده است ، اعتبارسنجی معاملات را امکان پذیر می کند.

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

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

کاربر در ChainSQL به عنوان یکی از موارد زیر عمل می کند:

(i) به عنوان یک گره کاملاً کامل که در فرایند اجماع شرکت می کند و بنابراین مسئولیت یکپارچگی شبکه را بر عهده دارد ، (ب) به عنوان یک گره جزئی یا گوش شنوایی که به معاملات مربوط به خود فقط علاقه دارد ، و (iii) به عنوان یک مشتری سبک وزن که برای عملیات شبکه به یک گره کامل متصل است.

نمای کلی مکانیسم دسترسی کاربر ChainSQL در شکل 5 نشان داده شده است.

3-2- معماری ChainSQL:

اکنون بلوک های ساختمانی ChainSQL را ارائه می دهیم که یک نمای کلی در شکل 6 داده شده است و اجزای آن در زیر شرح داده شده است:

رابط برنامه.

دسترسی به شبکه blockchain از طریق API امکان پذیر است.

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

پشتیبانی از چندین زبان برنامه نویسی از طریق APIs4 باعث افزایش انعطاف پذیری و کاربرد ChainSQL می شود.

دستورات کاربر ، با فرمت SQL یا JSON ، توسط API در قالب تراکنش های شبکه امضا و بسته می شوند و در صورت تأیید معامله ، برای اجماع به شبکه blockchain منتقل می شود.

اجماع شبکه.

برای حفظ تمامیت داده ها ، اجماع شبکه از اهمیت اساسی برخوردار است.

در ChainSQL ، معامله به شرح زیر تأیید می شود:

زیر مجموعه ای از گره های شبکه انتخاب شده با اجرای یک طرح UNL یک معامله را تأیید می کند.

اگر در یک معامله اجماع حاصل نشود ، عملیات برگشت داده می شود و معامله به blockchain اضافه نمی شود.

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

عملیات بانک اطلاعاتی.

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

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

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

سیستم مجوز و کمک هزینه.

مجوز کاربر در ChainSQL از طریق کلیدهای عمومی و خصوصی است.

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

جداول بانک اطلاعاتی و سه گانه های رابطه (کاربر ، جدول ، دسترسی) در جدول اصلی ، "TableList" ذخیره می شوند.

هماهنگ سازی جدول یکی از موارد زیر است:

پیش فرض ، خودکار یا هیچ.

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

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

3-3- API ChainSQL:

اکنون ما درباره عملیات پشتیبانی شده توسط ChainSQL API بحث می کنیم.

API شامل معانی غنی برای چندین زبان از جمله C ++ و Java است و از نمایش داده شدگان در SQL و JSON با قالب از پیش تعریف شده خاص پشتیبانی می کند.

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

پرس و جوهای کاربر ، با فرمت SQL یا JSON ، شبیه به یک محیط ارتباطی سرویس دهنده و مشتری هستند و به راحتی و به راحتی قابل تغییر هستند.

نمونه سوال در هر دو فرمت SQL و JSON در شکل 7 نشان داده شده است.

ChainSQL API از دستورات کاربر (i) پشتیبانی می کند ، به عنوان مثال ، ایجاد ، به روزرسانی ، حذف و درج و (ب) دستورات مالی مانند ایجاد پیشنهاد ، پیشنهاد به روز رسانی ، پرداخت و سایر موارد.

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

همانطور که قبلاً ذکر شد ، نمایش داده شد همچنین می توانید در پایگاه داده محلی هماهنگ کاربر انجام شود.

عملیات بانک اطلاعاتی از سه نوع است ، یعنی sqlStatement ، TableListSet و sqlTransaction که sqlStatement برای درج ، به روزرسانی یا حذف سوابق استفاده می شود. TableListSet برای ایجاد یا جهش جداول کاربر استفاده می شود. و sqlTransaction برای انجام مجموعه ای از عملیات بصورت اتمی ، i-e- به عنوان یک تراکنش واحد استفاده می شود.

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

یک گره ممکن است بین گزینه های همگام سازی در هر تراکنش و همگام سازی در هر یک از متغیرها انتخاب کند.

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

یک جدول سیستم ، SyncT gjendjeState ، حالت همگام سازی داده ها را تعریف می کند.

به طور مشابه ، حریم خصوصی داده ها نیز توسط کاربر مشخص می شود و می توان یک جدول با پرچم رمزگذاری "روشن" یا "خاموش" توسط کاربر ایجاد کرد.

پشتیبانی از رمزگذاری متقارن و نامتقارن در دسترس است.

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

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

بنابراین ، حریم خصوصی داده ها تضمین شده و دسترسی به داده ها نیز تسهیل می شود.

یکی دیگر از ویژگی های جالب اشتراک رویداد برای "تغییر داده ها" برای نمونه ای از داده ها با استفاده از دستور ممکن subscribT است.

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

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

فروشگاه داده برای معاملات مرتبط پرسیده می شود ، i- e- مجموعه ای از معاملات که داده های کاربر را اصلاح می کنند و تأیید اعتبار برای حسابرسی دارند.

3-4- اعتبار سنجی و ارسال اطلاعات یک معامله به صورت رمزنگاری توسط یک کاربر امضا می شود ، در قالب پرس و جو مناسب بسته بندی می شود و به ماژول اجماع ارسال می شود.

ChainSQL همکار امضای فرمان را تأیید می کند که یک کاربر را به طور منحصر به فرد مشخص می کند.

همانطور که قبلاً ذکر شد ، برای داده های معامله ، رمزگذاری می تواند توسط کاربر "روشن" یا "خاموش" روشن شود.

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

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

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

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

قوانین اعتبار پیش فرض ChainSQL داخلی هستند و طبق نیازهای تجاری قابل تنظیم هستند.

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

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

ثانیا ، زمینه های معامله و صحت معامله معتبر است.

ثالثاً ، نتیجه اجرای معاملات در پایگاه داده محلی معتبر است.

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

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

4- اجماع ChainSQL:

اجماع در هسته یک سیستم blockchain است و یکپارچگی داده ها در شبکه را تضمین می کند.

انتخاب پروتکل اجماع همچنین توان سیستم را تعیین می کند.

از این رو ، اجرای پروتکل اجماع مناسب بسیار مهم است.

از آنجا که مورد تجاری در نظر گرفته شده برای ChainSQL معاملات مالی سازمانی است ، پروتکل اجماع مبتنی بر Ripple است که به دنبال سه محدودیت است:

(1) صحت:

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

(2) همگرایی:

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

(3) توافق نامه:

تمام گره های معتبر در نهایت دقیقاً در همان حالت دیتاستور اتفاق نظر دارند.

ما ابتدا برخی از مفاهیم مربوط به پروتکل اجماع را مورد بحث قرار می دهیم و سپس الگوریتم اجماع را ارائه می دهیم.

4-1- اجماع پویا:

اجماع ChainSQL با توان بالا و زمان اعتبار سنجی سریع مشخص می شود.

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

ما جزئیات زیر را ارائه می دهیم:

هدف اجماع.

هدف اجماع دستیابی به وضعیت توافق شده در مورد داده هاست.

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

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

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

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

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

انتقال دولت Datastore.

در هر مرحله از اجماع ، وضعیت کنونی داده به عنوان "معتبر" توافق می شود.

دولت داده با عدد توالی مشخص می شود که با گذشت زمان افزایش می یابد.

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

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

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

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

اجماع دور.

هر گره معاملات را فقط از زیر مجموعه ای از گره ها به عنوان "مورد اعتماد" یعنی لیست گره های منحصر به فرد یا UNL در نظر می گیرد و تأیید می کند.

اعتماد یک مترادف برای امضای تأیید شده است ، پیام های شبکه i-e فقط از این سرورها تأیید و پردازش می شوند.

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

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

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

معامله هایی که در مجموعه پیشنهادی آینده در نظر گرفته نشده اند برای دورهای آینده در نظر گرفته می شوند تا زمان انقضا عمر معاملات.

طول عمر معاملات بر اساس آخرین فهرست مجموعه داده های داده است.

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

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

4-2- الگوریتم اجماع:

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

شبه کد برای دور اجماع در الگوریتم 1 ارائه شده است و روالهای ابزار اجماع در الگوریتم 2 آورده شده است.

در مرحله اول ، معاملات موجود در دور X فعلی و معاملات ناخواسته Rj − 1 از دور قبلی برای تهیه "مجموعه پیشنهادی" در کنار هم جمع می شوند.

همه گره های اعتبارسنجی معاملات غیرمستقیم را به گره های UNL پخش می کنند.

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

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

پس از تأخیر t1 ، مرحله پیشنهادی مبادله گره های اعتبار سنجی شروع و اعتبار سنجی می شود.

هر گره اعتبارسنجی مجموعه پیشنهادی p را از معاملات موجود در Lo ایجاد می کند و سپس p به گره ها [s1 - sn] در UNL ارسال می شود.

هنگامی که یک گره p را از یک گره در UNL دریافت می کند ، معاملات در p با معاملات در Lo و برای مسابقات معامله مقایسه می شود ، رأی مسابقه به روز می شود.

اگر یک تراکنش x در p از سرور s درج شده باشد ، از سرور s رأی دهید برای معامله x در داده های به روز شده است.

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

اگر رأی اکثریت حاصل نشود ، همسالان پیشنهادات جدیدی را با معاملات دارای تعداد آرا مبادله می کنند> = T * | S |.

آستانه پذیرش T پس از هر دور به تدریج افزایش می یابد تا به اجماع برسد حتی اگر در دور قبلی اختلاف نظر وجود داشته باشد.

در عمل مقادیر آستانه برای رسیدن به همگرایی سریع ، T = 0-5 ، PHI = 0-1 تعیین می شوند.

آستانه پذیرش برای یک معامله در ابتدا به توافق 51٪ تعیین می شود.

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

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

معاملات غیر قطعی در دور قبلی به دور بعدی ارسال می شود.

گره های اعتبار سنجی اثبات رمزنگاری به روزرسانی datastore را منتشر می کنند.

در صورت دستیابی به اجماع ، هر گره تأییدیه اثبات یکسانی را دارد.

شرکت کنندگان به اثبات اعتبار گوش می کنند و یکی از امکانات زیر را دارند:

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

(2) گره های اعتبارسنجی به دلیل عدم تناقض دولت در مورد وضعیت داده ها اختلاف نظر دارند.

گره های اعتبارسنجی ، وضعیت datastore را همزمان می کند.

(3) اگر رأی اکثریت حاصل نشود ، این دور دوباره آغاز می شود.

نتیجه ، از دست دادن زمان ، به طور معمول چند ثانیه است.

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

5- موارد استفاده از زنجیره SQL:

در این بخش ، سه مورد استفاده از Chain SQL ارائه می دهیم:

(i) واسط پایگاه داده چند منظوره برای اتصال برنامه کاربر با پایگاه داده اصلی؛ (ب) یک واسطه بازیابی فاجعه که گره های تولید برنامه کاربردی کاربر را با گره های بازیابی فاجعه متصل می کند. (iii) واسطه حسابرسی که برای پردازش آثار تراکنش با مرکز تولید متصل است.

5-1- پایگاه داده چندرسانه ای Middleware:

بانک اطلاعاتی چند فعال یک واسطه است که برنامه سازمانی را با بانک اطلاعاتی اصلی مرتبط می کند.

پایگاه داده اصلی یا یک بانک اطلاعاتی رابطه سنتی یا یک پایگاه داده NoSQL است.

کلیه عملیات تعریف و دستکاری داده برای پایگاه داده در یک ثبت عملیاتی ثبت می شود که با استفاده از فناوری blockchain حفظ شده و تغییر ناپذیر است ، i-e- قابل تغییر و حذف نیست.

برنامه کاربر برای ارسال معاملات به یک گره شبکه با ChainSQL API تماس می گیرد.

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

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

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

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

نوشتن به blockchain از طریق پروتکل اجماع ChainSQL است.

در صورت خرابی گره ، کاربر یکپارچه به گره دیگری در شبکه تغییر می کند.

این تضمین می کند با زمان بازیابی صفر و استقرار بانک اطلاعاتی چند فعال در زمان واقعی.

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

یک خرابی بانک اطلاعاتی مثال در شکل 9 نشان داده شده است.

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

اگر یک گره پاسخ ندهد ، پرس و جو به گره دیگری در شبکه ارسال می شود.

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

واسط ارائه دهنده برنامه رمزگذاری متقارن و نامتقارن است که از طریق آن کاربر می تواند مکانیزم امنیتی مناسب برای داده ها را انتخاب کند.

طرح های رمزگذاری پشتیبانی شامل امضاء secp256k1 و منحنی بیضوی ed25519 است.

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

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

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

5-2- بازیابی میان بلایای چند فاجعه:

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

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

همانطور که قبلاً ذکر شد ، عملیات کاربر به صورت پرونده های log ، e-g- Binlog ، Redo Log و موارد دیگر در مرکز تولید ثبت می شود و قبل از تولید تراکنش های blockchain مورد تجزیه و تحلیل قرار می گیرد.

در هنگام کشف فاجعه ، اولین گام برای دستیابی به اجماع برای شبکه blockchain است که باید گره پشتیبان را شامل شود به گونه ای که گره پشتیبان دقیقاً داده های مشابه با هر گره در شبکه blockchain را داشته باشد.

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

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

بنابراین ، اگر یک گره در مرکز تولید نتواند ، کاربران برای انجام کار به مرکز بازیابی می روند.

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

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

برنامه کسب و کار.

یک سناریوی مهم برنامه که در آن از ChainSQL استفاده شده است در یک محیط مالی است.

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

ویژگی مقاومت در برابر رمزنگاری در برابر رمزنگاری ChainSQL به همراه بانک اطلاعاتی چند فعال ، امنیت داده های مشتری و ادامه فعالیت های تجاری را تضمین می کند.

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

5-3- شنیداری:

تغییر ناپذیری یک blockchain قابلیت شنیداری را به عنوان یک ویژگی ذاتی برای سیستمهای blockchain به ارمغان می آورد.

در یک سناریوی معمولی ، کاربر A عملیات اعطایی را برای کاربران B و C در جدول T انجام می دهد.

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

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

کاربر B درخواستی را از جدول T درخواست کرده و آن را به گره P ChainSQL ارسال می کند که یک گره کامل است.

گره P هویت کاربر B را از امضای پرس و جو دریافت می کند.

از آنجا که کاربر B دارای مجوزهایی برای انجام پرس و جو انتخاب شده در جدول T است ، گره P query را اجرا می کند و نتیجه را به B باز می گرداند.

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

کاربر C دارای مجوزهایی برای نمایش داده شد فقط در خواندن جدول T است.

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

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

هر بار که یک مرکز داده جدید انجام شود ، کاربر C گره P را به روز می کند.

در درخواست ، کاربر C جدیدترین فهرست داده بسته بسته را مشخص می کند.

گره P یک پیام به روزرسانی ایجاد می کند و سرصف داده ها را از آخرین سوابق بسته شده کاربر C شروع می کند.

علاوه بر هدرها ، گره P ترتیب معاملات را می دهد که باید در پایگاه داده استفاده شود.

این معاملات فقط مربوط به جدول T است.

بنابراین ، ChainSQL اجازه می دهد تا یک تعامل مشتری و سرور غیر قابل اعتماد ، که در آن کاربر می تواند یک بانک اطلاعاتی را با داده های مرتبط فقط بدون سربار حفظ کند تا کل blockchain را ذخیره کند.

برنامه کسب و کار.

ChainSQL ویژگی های تکرار داده ها و تغییر ناپذیری را با کنترل دسترسی انعطاف پذیر ترکیب می کند.

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

کاربر مجوز اعطا می کند و حسابرس تمام داده های کاربر را از گره های شبکه ChainSQL واگذار می کند.

حسابرس می تواند نمایش داده شد در پایگاه داده محلی و می تواند نتایج را به شبکه blockchain گزارش دهد.

6- ارزیابی تجربی:

ما عملکرد ChainSQL را با کمک آزمایشات ارزیابی می کنیم.

ما پارامترهایی مانند تأخیر ، توان ، مقیاس پذیری و همگرایی را در نظر می گیریم و آزمایش های گسترده ای را برای اثبات اثربخشی سیستم انجام می دهیم.

ما ابتدا مجموعه آزمایشی را توصیف می کنیم.

برپایی.

ما آزمایشات روی ابر EC2 Amazon را انجام می دهیم و نمونه های ماشین مجازی را تا 40 در نظر می گیریم.

ما تعداد گره های فراتر از 40 را در نظر نمی گیریم ، زیرا یک رفتار پایدار برای ChainSQL در مقایسه با ریپل مشاهده می کنیم.

آزمایش ها در موارد بزرگ C5 انجام می شود.

این سیستم به طور مستقیم از کد امضای secp256k1 Ripple استفاده می کند.

از طرف دیگر ، می توان از امضاهای منحنی خورشیدگرفتگی ed25519 نیز استفاده کرد.

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

هر معامله وضعیت datastore را به روز می کند و در blockchain ضبط می شود.

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

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

اگر در غیر این صورت مشخص نشده باشد ، تعداد گره ها را به 20 عدد ، معاملات در هر پیشنهاد را 1500 ، PHI = 0-1 و در هر ثانیه درخواست ها را 2000 تنظیم می کنیم.

هر مجموعه آزمایش 10 بار انجام شده و میانگین ها گزارش شده است.

توان سیستم و مقیاس پذیری.

ما ابتدا توان و مقیاس پذیری سیستم را می سنجیم.

ما توان عملکرد سیستم ، i- e- تعداد معاملات در ثانیه را گزارش می دهیم ، زیرا تعداد گره ها را از 5 به 40 افزایش می دهیم.

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

در اولین مجموعه آزمایشات ، شکل 12 (a) ، می توان مشاهده کرد که ChainSQL توان عملیاتی قابل مقایسه با معاملات ریپل ، i-e-1200 در ثانیه را دارد.

همچنین ، با افزایش در اندازه شبکه ، هم برای ChainSQL و هم ریپل شاهد کاهش اندک توان کارایی هستیم.

رفتار کلی ChainSQL با عملکرد Ripple سازگار است و عملکرد آن پایین است.

توجه داشته باشید که برخلاف Ripple ، ChainSQL نه تنها از معاملات مالی پشتیبانی نمی کند بلکه انعطاف پذیر تر است.

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

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

مشاهده می شود که با افزایش اندازه پیشنهاد ، توان سیستم افزایش می یابد و در هر 1500 پیشنهاد در هر پیشنهاد ، به حداکثر مقدار می رسد.

برای بیش از 1500 معاملات در هر پیشنهاد ، توان سیستم بدتر می شود.

برای بقیه آزمایشات ، ما معاملات را برای هر پیشنهاد به 1500 تعیین می کنیم.

تأخیر معامله

تأخیر تأخیر در تأیید معامله است ، i- e- تفاوت زمان تحویل معاملات و تأیید.

ما میانگین تأخیر در میلی ثانیه را گزارش می دهیم زیرا درخواست ها در ثانیه را از 1000 به 5000 و تعداد گره ها را از 5 به 40 می رسانیم.

اندازه طرح پیشنهادی 1500 است.

نتایج ، شکل 13 (a) نشان می دهد که زمان تاخیر با تعداد درخواست در ثانیه به صورت خطی افزایش می یابد.

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

با این حال ، رفتار کلی سیستم پایدار است ، میانگین زمان تاخیر e-g برای 5 گره 2000 میلی ثانیه است و برای 40 گره به 3500 ms می رسد.

همگرایی

یک پارامتر جالب ، آستانه پذیرش PHI ، میزان همگرایی را برای سیستم تعیین می کند.

تعداد گره ها را به 20 عدد ، اندازه پیشنهاد به 1500 ، درخواست در هر ثانیه به 2000 تنظیم می کنیم و رفتار همگرایی را برای تغییر PHI مطالعه می کنیم.

شکل 13 (b) مشاهده می شود که برای PHI = 0-1 کمترین زمان برای همگرایی حاصل می شود.

برای مقادیر ، کوچکتر یا بالاتر از 0-1 ، زمان همگرایی افزایش می یابد.

معاملات زمان برش.

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

تعداد گره ها را به 20 عدد ، اندازه پیشنهاد به 1500 ، PHI = 0-1 تنظیم می کنیم و برش زمان هر مرحله اجرای معاملات را محاسبه می کنیم.

شکل 14 دیده می شود که تأخیر شبکه بیشترین زمان در اجرای معاملات است.

سخنان

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

عملکرد سیستم برای نمایش داده شدگان DDL ، i-e- ایجاد ، تغییر و رها کردن ، و نمایش داده شد DML (به جز انتخاب) ، i-e- insert ، به روزرسانی و حذف ، مشابه شبکه blockchain Ripple است.

توجه داشته باشید که نمایش داده های DDL و DML مبتنی بر blockchain به دلیل نیاز به اجماع کند است.

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

به طور خلاصه ، عملکرد ChainSQL برای نمایش داده هایی که حالت دیتاستور را تغییر می دهد و (ii) به دیتابیس برای نمایش داده هایی که حالت دیتاستور را تغییر نمی دهند ، قابل مقایسه با (i) با Ripple است.

7- نتیجه گیری و کار آینده:

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

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

اثربخشی سیستم با کمک یک مطالعه تجربی دقیق نشان داده شده است.

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

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

تعدادی از ملاحظات از منظر اجرای سیستم نیز در این خط لوله است.

به عنوان مثال ، پشتیبانی از تجزیه و تحلیل داده های بزرگ در ChainSQL ، و پیاده سازی شاخص های پیچیده برای بهینه سازی پرس و جو.

نکات برجسته این اثر به شرح زیر است:

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

* - ChainSQL با استفاده از فن آوری blockchain تمامیت داده ها و قابلیت اطمینان داده های پایگاه داده های توزیع شده را حل می کند و هنوز پردازش سریع پرس و جو از پایگاه های داده توزیع شده را حفظ می کند.

* - ترکیب ویژگی های امنیتی و شنیداری blockchain در سیستم های پایگاه داده توزیع شده با اجرای شبکه blockchain.

* - پشتیبانی از هر دو پایگاه داده NoSQL و SQL یکی از ویژگیهای مطلوب سیستم است و کاربردی بودن سیستم را افزایش می دهد.