بلاک چین؛ انقلاب بعدی تکنولوژی
قسمت اول: سیستمهای توزیع شده، غیر متمرکز و متمرکز
شاید کمتر کسی باشه که اسم بیتکوین به گوشش خورده باشه ولی با تکنولوژی بلاکچین ( و یا زنجیره بلوکی) آشنا نباشه. blockchain یک تکنولوژی است که ارز رمزنگاری شده بیتکوین بر بسترآن طراحی و کدنویسی شده است. برای درک بهتر ساختار و عملکرد blockchain، در ابتدا نیاز است تا با مفاهیم اولیه و تعاریف مربوط به بلاک چین آشنا شویم و سپس به بررسی سیستم های توزیع شده در بلاک چین میپردازیم.
اولین مفهومی که قصد داریم به آن بپردازیم، سیستم های توزیع شده در بلاک چین (Distributed Systems) میباشد. سیستم توزیع شده در سادهترین تعریف آن، مجموعهای از کامپیوترهای مختلفی میباشد که با یکدیگر کار میکنند و از دید کاربر به صورت یک کامپیوتر واحد میباشد.
گره (Node) چیست
به این کامپیوترها در شبکه، گره (Node) میگویند. در صورتی که هر یک از گرهها دچار مشکل شود، بدون اینکه مشکل و اختلالی در کلیت سیستم به وجود آید، کلیت سیستم به فعالیت خود ادامه میدهد. در شکل زیر نمونهای از سیستم سنتی را مشاهده میکنید:
تصور کنید شما، یک وبسایت دارید و این وبسایت یک پایگاه دادهای دارد که تمامی اطلاعات وبسایت در آن ذخیره میشود، در صورتی که مشکلی برای این پایگاه داده بهوجود آید و یا ارتباط آن با وبسایت قطع شود، فعالیت وبسایت نیز با اختلال روبهرو میشود.
همچنین وقتی شما دستوراتی را بر رو پایگاه دادة خود انجام میدهید، این دستورات به صورت یک ماشین تکی، عملیاتها را بر روی پایگاه داده اعمال میکند که این امر خود بر سرعت خواندن ویا نوشتن اطلاعات بر روی پایگاه داده میتواند اثر منفی بگذارد. حال فرض کنید، قصد استفاده از سیستم توزیع شده در این نمونه را داریم. به شکل زیر توجه کنید:
در شکل بالا، به جای وجود یک پایگاه دادة خاص، از چند پایگاه داده استفاده میکنیم و هر یک از دستورات و عملیاتها را با استفاده از یکی از پایگاههای داده (یا اصطلاحا ماشینی که عملیات ما را بر روی آن پایگاه داده انجام میدهد) انجام میدهیم. وجود همچنین سیستمی، علاوه بر افزایش سرعت، به دلیل عدم وابستگی وبسایت به یک پایگاه دادة خاص، پایداری سیستم افزایش مییابد و این سیستم به سادگی از کار نمیافتد ویا در انجام آن اختلالی به وجود نمیآید.
سیستمهای توزیع شده در بلاک چین
استفاده از سیستم های توزیع شده در بلاک چین پیچیدگیها و مشکلات بسیاری هم دارد و انتخاب اینکه سیستمی توزیع شده باشد یا نه، بر اساس نیاز است؛ اما حالا چرا از این نوع سیستمها استفاده کنیم؟
در مثال پایگاه دادهای که مطرح شد، بیاید حالتی را در نظر بگیرید که ما سیستم توزیع شده نداریم و تمامی دستورات و عملیاتها از طریق یک مسیر فرستاده میشوند. در این حالت وقتی شما یک دستوری را میخواهید اجرا کنید، به صورت سلسله مراتبی، دستورات از بخشی به بخش دیگر منتقل میشود و اصطلاحا در مقیاس عمودی عملیاتها صورت میگیرد.
ویدیو پییشنهادی : آموزش رایگان بلاکچین و رمزارزها
برای اینکه بخواهید سریعتر پردازش کنید و یا پردازشهای سنگینتری انجام دهید، نیاز است تا از لحاظ سختافزاری سیستم خود را ارتقا دهید. حال اکنون یک سیستم توزیع شده در نظر بگیرید، در این سیستم، به جای اینکه عملیاتها و دستورات به صورت سلسله مراتبی و توسط یک سیستم صورت گیرد، توسط کامپیوترهای مختلف با قدرت پردازشی مختلف صورت میگیرد.
این امر از لحاظ سختافزاری موجب میشود تا به جای هزینه بالا برای بدست آوردن قدرت پردازش بالاتر، با هزینة کمتر قدرت پردازش کمتر ولی تعداد بیشتری فراهم شود. به این حالت اصطلاحا مقیاس افقی میگویند که شما انجام دستورات و عملیاتها را به صورت همزمان توسط کامپیوتر و یا گرههای مختلف انجام میدهید.
هزینه مدلهای مطرح شده
همانطور که در نمودار زیر مشاهده میکنید، تفاوت هزینه مدلهای مطرح شده از یک نقطه به بعد بسیار زیاد میشود و این نقطهای است که شما برای انجام سریعتر و پردازش سنگینتر، نیاز به قدرت سختافزاری بیشتری دارید.
نکته دیگری که در ارتباط با دو مدل بیان شده، یعنی مقیاس عمودی و مقیاس افقی وجود و دلیل نیاز و ضرورت استفاده از سیستم های توزیع شده در بلاک چین میباشد، در حالتی که از شیوه مقیاس افقی استفاده میشود، شما تنها تا ظرفیت پردازش سختافزارتان امکان پردازش اطلاعات را دارید که این امر خود موجب محدودیت، مخصوصا در مواردی که پردازش خیلی بالایی نیاز دارد، می شود.
در حالی که در مدل مقیاس افقی، شما هیچ محدودیتی در تامین قدرت سختافزاری و توان پردازشی خود ندارید و در صورت نیاز به توان بالاتر، میتوانید کامپیوتر و یا گرهای دیگر با قدرت پردازشی مشخص به سیستم اضافه کنید.
مقیاس پذیری در سیستم های توزیع شده
مقیاسپذیری تنها قسمت مثبت و مهم مورد نیاز در سیستم های توزیع شده در بلاک چین و غیر توزیع شده نمیباشد، بلکه پایین بودن تاخیر زمانی (Low Latency) و تحمل خطا (Fault Tolerance) نیز دو پارامتر مهم دیگر در استفاده از سیستم های توزیع شده در بلاک چین میباشند. حال نیاز است تا بدانیم که این دو پارامتر مطرح شده به چه معنی میباشند تا بتوانیم اهمیت آنها را درک کنیم.
تحمل خطا
یک سیستم ممکن است در شرایطی با مشکل روبهرو شود و تاخیری در ارائه سرویس در آن به وجود آید. برای عدم تاخیر در ارائه سرویس و دارا بودن قدرت تحمل در هنگام بروز مشکل در خطاهایی که عمدتا ناشی از مسائل سختافزاری میباشد، با استفاده از قابلیت تحمل خطا، میتوان جایگزینی سیستم و یا تجهیزات را در زمانی نزدیک به صفر ویا صفر انجام داد و سیستم به صورت اتوماتیک دوباره به عملیات خود ادامه دهد.
این مسئله که سیستم بدون هیچ تاخیر یا با تاخیر نزدیک به صفر، به صورت خودکار و بدون وجود هیچ عامل انسانی، عمل کند، مسئله مهمی است که در سیستمهایی که توزیع شده نیستند، وجود ندارد و امکان قطع یا اختلال سیستم برای زمان نسبتا زیادی وجود دارد. این پارامتری است که در سیستم های توزیع شده در بلاک چین به دلیل استفاده از چندین کامپیوتر یا گره، به خوبی رعایت میشود.
پایین بودن تاخیر زمانی
زمانی که شما یک درخواست را در شبکه از سیستم خود به سیستم دیگر در شهر یا منطقة متفاوت ارسال میکنید، مدت زمانی طول میکشد تا این درخواست که با سرعتی معادل با سرعت نور فرستاده میشود، به فرد مورد نظر در شبکه برسد.
به عنوان مثال کوتاهترین زمانی که یک درخواست ارسال شده و پاسخ داده میشود از شهر نیویورک به سیدنی با استفاده از کابل فیبر نوری، حدود 160 میلی ثانیه است، در صورتی که اگر یک سیستم توزیع شده وجود داشته باشد، این امکان را به شما میدهد تا با استفاده از گرههایی که در هر دو شهر وجود دارد، درخواست خود را ارسال کنید و با انجام این کار از طریق نزدیکترین گره به درخواست شما، مدت زمان تاخیری که در ارسال و دریافت درخواست وجود دارد را کاهش دهید.
تفاوت سیستمهای مبتنی بر پردازش موازی و سیستم های توزیع شده در بلاک چین
تا به اینجا در رابطه با سیستم های توزیع شده در بلاک چین و سه پارامتری که در این نوع سیستمها وجود دارد و اهمیت آنها صحبت کردیم، اما سوالی که ممکن است مطرح شود این است که تفاوت سیستمهای توزیع شده با سیستمهای پردازش موازی (Parallel) چیست؟ آیا این مفهوم یک معنا دارند و مشابه اند ؟ برای پاسخ به این سوال، ابتدا بررسی اجمالی روی سیستمهای موازی میکنیم.
سیستمهای موازی نوعی از سیستمها هستند که در آن چندین پردازنده، محاسبات و دستورات مربوط به خود را به صورت همزمان انجام میدهند.
سیستمهای با قابلیت پردازش موازی به دو حالت عمل میکنند:
حالت اول که تمامی پردازندهها حافظة (Memory) خود را بین یکدیگر به اشتراک گذاشتهاند (تصویر b در شکل زیر) و حالت دوم که یک حافظه در بین چندین پردازنده به اشتراک گذاشته شده است. (تصویر c در شکل زیر). در هر دو حالت پردازشی که در حال انجام میباشد به صورت موازی میباشد.
پردازش موازی ابعاد مثبت زیادی دارد. از جمله اینکه انجام عملیات به صورت همزمان موجب افزایش کارکرد و بهرهوری CPU و در نتیجه بهبود فرآیند اجرا در سیستم میشود. علاوه بر این، بروز مشکل و خطا در یکی از پردازندهها، موجب اختلال در عملکرد سایر پردازندهها نمیشود که این امر قابلیت اطمینان سیستم مبتنی بر پردازندههای موازی را افزایش میدهد.
با توجه به تعریف و ابعاد مثبت پردازش موازی، در ظاهر اینطور به نظر میرسد که سیستمهای با پردازش موازی و سیستم های توزیع شده در بلاک چین مشابه هم فعالیت میکنند، اما تفاوت اساسی بین دو سیستم وجود دارد.
تفاوتهای ساختاری
سیستمهای مبتنی بر پردازش موازی، اهداف و تسکهای مختلف را به صورت همزمان در قالب یک سیستم یا کامپیوتر انجام میدهند اما سیستم های توزیع شده در بلاک چین از بخشها و کامپیوترهای مختلفی تشکیل شدهاند که در مکانهای مختلفی قرار گرفتهاند و به کمک ارسال پیام با یکدیگر در ارتباط هستند و عملیاتشان را هماهنگ میکنند و تسکهای مشخصی را به صورت همزمان اجرا میکنند.
همانطور که مشاهده کردید دو نوع سیستم مورد بحث دارای تفاوتهای ساختاری هستند.سایر این تفاوتها به شرح زیر است:
پس اکنون به تفاوت مفاهیم و کاربرد این دو نوع سیستم پی بردیم. اگر بخواهیم این مقایسه را با مثالی به اتمام برسانیم، فرض کنید که شما میخواهید در باکس ایمیل خود که شامل 1000 ایمیل است، با جست و جوی نام مکتبخونه، ایمیلهای حاوی مکتبخونه را بیابید.
منظور از پردازش موازی در سیستم های توزیع شده در بلاک چین
برای اینکه این عمل در مدت زمان کوتاه صورت گیرد، از پردازش موازی استفاده میشود، بدین صورت که مثلا هر 10 ایمیل توسط یک پردازنده بررسی میشود و 100 پردازنده به صورت همزمان تسک مربوط به خود را انجام میدهند و در نهایت به حافظه منتقل میکنند و شما در مدت زمان کوتاهی میتوانید نتیجه جست و جوی خود را ببینید، اما سیستم های توزیع شده در بلاک چین زمانی معنا پیدا میکنند که به عنوان مثال شما یک پیام مشخص را از منطقهای (کامپیوتر یا گره) به منطقه دیگر (کامپیوتر یا گره در مکان دیگر) ارسال کنید.
ویدیو پییشنهادی : سلسله همایش های تخصصی آشنایی با بلاکچین و ارزهای دیجیتال
برای اینکه در مدت زمان کوتاهی این ارسال صورت گیرد، پیام شما توسط نزدیکترین گرههایی که در شبکه برای درخواست شما وجود دارد، هدایت میشود تا در مدت زمان کوتاهی به گیرندة پیام برسد. پس در این حالت، مجموعهای از کامپیوترها و گرهها با یکدیگر در ارتباط باشند تا بتوانند هدف مشترکی را انجام دهند.
قبل از پرداختن به دستهبندیهای مختلفی که سیستم های توزیع شده در بلاک چین در آن کاربرد دارند، نگاهی به سیستمهای متمرکز و غیر متمرکز و تعریف آنها خواهیم داشت.
سیستمهای متمرکز و غیر متمرکز
در ابتدا از سیستمهای متمرکز شروع میکنیم. سیستمهای متمرکز به نوعی از سیستمها گفته میشود که تمامی گرهها یا کامپیوترها در شبکه به یک سرور مرکزی متصل هستند و تمامی دستورات و عملیاتها توسط سرور مرکزی به گرهها یا کامپیوترها منتقل میشود.
سیستمهای متمرکز از قدیمیترین سیستمها هستند که دارای معایب و مزایایی میباشند. بخشی از معایب و مزایای این نوع از سیستمها به شرح زیر میباشد:
مزایا
- به دلیل مرکزی بودن سرور، حفاظت فیزیکی از این نوع سیستمها سادهتر و کم هزینهتر است.
- دارا بودن منابع اختصاصی (حافظه، CPU، …)
- سرعت بالاتر در آپدیت کردن، به دلیل وجود تنها یک سرور مرکزی
- به سادگی میتوان اتصال گرهای به شبکه را قطع کرد.
- کم هزینه و پربازده بودن برای استفاده در سیستمهای کوچک با بودجه کم
معایب
- به دلیل مرکزی بودن سرور، هزینه تامین امنیت سایبری آن بسیار بالا است.
- در صورت کوچکترین اختلالی در سرور مرکزی، کل شبکه با مشکل روبهرو میشود.
- به دلیل تک بودن سرور، در صورتی که آپدیتی از اطلاعات گرفته نشده باشد، در صورت به وجود آمدن مشکلی در اطلاعات، این امکان وجود دارد که اطلاعات برای همیشه از دست برود.
سختی نگهداری از سرور
در صورتی که قصد حل مشکلی در سرور را داشته باشیم، به دلیل آنکه قطع سرور کل شبکه را با مشکل مواجه میکند، باید در حالتی که سرور به شبکه متصل است، این کار انجام گیرد که فرآیند را دشوار میکند.
در موارد بالا به بخشی از مزایا و معایب سیستمهای متمرکز اشاره شد. اما دو مورد از اساسیترین مسائلی که سیستمهای متمرکز با آن مواجه هستند، مسئله اول تصمیمگیری توسط یک نهاد مرکزی و خاص است که میتواند اعمال سلایق و منافع شخصی یا عدم امکان تصمیمگیری توسط سایر افراد را در پی داشته باشد و مسئله دوم این است که در صورت بروز مشکل در سرور مرکزی، کل شبکه با اختلال روبهرو میشود.
با این حال این نوع از سیستمها کاربردهای مخصوص به خود را دارند. به عنوان نمونه کامپیوترهای شخصی، بازیهای آفلاین و دیباگ کردن سرورها از جمله مواردی هستد که استفاده از سیستمهای متمرکز مناسب است.
در ادامه به بررسی سیستمهای غیرمتمرکز میپردازیم و بعد از آن با در کنار هم قراردادن سه مفهوم، سیستمهای توزیع شده، غیرمتمرکز و متمرکز، به مقایسه آنها میپردازیم.
سیستمهای غیرمتمرکز
سیستمهای غیرمتمرکز بر خلاف سیستمهای متمرکز که توسط یک سرور مرکزی هدایت میشوند، به چندین مرکز تقسیم شده است که هر یک از این مراکز کنترل مخصوص به خود را در شبکه داراست و این مراکز با یکدیگر در ارتباط هستند.
بدین معنا که در این نوع از سیستمها، فرد یا گروه خاصی مسئول کل شبکه نیست و این امر بین افراد و گروههای مختلف متناسب با تعریف شبکه، تقسیم شده است. این نوع از سیستمها نیز مزایا و معایب خود را دارند که این معایب و مزایا عبارتند از:
مزایا
- میزان دسترسی بالا: همواره تعدادی گره یا کامپیوتر در شبکه هستند که در دسترس باشند.
- به دلیل مرکزی نبودن سرور، حداقل مشکل را در اجرای عملیاتها خواهد داشت.
- استقلال و کنترل بیشتر بر روی منابع شبکه؛ به دلیل اینکه هر گره یا گروهی از گرهها توسط نهادهای مختلف کنترل میشوند، استقلال و کنترل بهتری نسبت به حالت متمرکز و وجود سرور مرکزی وجود خواهد داشت.
معایب
- به دلیل اینکه دیگر سرور مرکزی برای تصمیمگیری وجود ندارد، دستیابی به اشتراکی برای انجام فرآیندها در سطح کلان سختتر قابل انجام است.
- امکان شناسایی گرهای که دچار مشکل شده ، سختتر میشود.
- شناسایی اینکه کدام گره در شبکه، به درخواست ارسالی، پاسخ داده است، دشوار میشود. هنگامی که یک درخواست توسط یک گره در یک سیستم غیر متمرکز انجام میگیرد، شناسایی اینکه در واقع کدام گره این درخواست را داده است، امری دشوار میباشد.
چه تفاوتی بین سیستمهای غیر متمرکز و متمرکز و سیستم های توزیع شده در بلاک چین وجود دارد؟
خب تا به اینجا در رابطه با سیستمهای متمرکز و غیر متمرکز و مزایا و معایب آنها صحبت کردیم، اما حالا قصد داریم به این سوال پاسخ بدهیم که چه تفاوتی بین سیستمهای غیر متمرکز و متمرکز و توزیع شده وجود دارد؟ برای پاسخ به این سوال، ابتدا به شکل زیر دقت کنید.
در این شکل، شما هر سه نوع سیستم را کنار یکدیگر میتوانید مشاهده کنید. بر خلاف ظاهر تعریف غیر متمرکز و توزیع شده که به نظر میرسد مشابه هم هستند، اما تفاوت اساسی با یکدیگر دارند. در واقع در سیستمهای غیر متمرکز و متمرکز، تمرکز بر روی سطح کنترل در شبکه است ولی در سیستمهای توزیع شده، اشاره به مکانهای مختلف قرار گیری شبکه میکند.
بدین معنا که در سیستمهای متمرکز و غیر متمرکز همانطور که در شکل مشاهده میکنید، بر روی این مساله تاکید دارد که آیا شبکه مورد نظر توسط یک نهاد خاص هدایت میشود یا بین گروهها و بخشهای مختلف تقسیم میشود و توسط افراد و گروههای مختلف هدایت میشود اما در سیستم توزیع شده، این مسئله را بیان میکند که اعضای شبکه یا گرهها، در یک مکان مشخص قرار دارند یا در مکانهای مختلف قرار گرفتهاند و با یکدیگر ارتباط دارند؟ در واقع یک سیستم میتواند توزیع شده غیرمتمرکز یا توزیع شده متمرکز باشد.
بیتکوین
بهترین مثالی که در این رابطه ، بیتکوین است. بیتکوین یک شبکه توزیع شده غیرمتمرکز هست که کل شبکه بر روی گرههایی قرار دارند که در مکانهای مختلف هستند و توسط یک نهاد مرکزی خاص هدایت نمیشود.
بلاک چین نیز از همین قاعده و سیستم تبعیت میکند که در مقالات بعدی و با بیان سایر مفاهیم مورد استفاده در بلاکچین، به کاربرد این نوع از سیستمها و طریقة رفع معایبی که ذکر شد، میپردازیم.
در آخرین مطلب از این مقاله، قصد داریم به دستهبندی سیستم های توزیع شده در بلاک چین نگاهی داشته باشیم.
دستهبندی سیستم های توزیع شده در بلاک چین
سیستمهای توزیع شده در دستهبندیهای مختلفی قرار میگیرند که این دستهبندیها شامل موارد زیر میباشد:
- پایگاههای داده توزیع شده
- اجماع در سیستم های توزیع شده در بلاک چین
- محاسبات توزیع شده
- فایلهای سیستمی توزیع شده
- سیستم ارسال پیام توزیع شده
- برنامههای توزیع شده
هر یک از دستهبندیهای ذکر شده، کاربردها و برنامههای مربوط به خود را دارد که در اینجا قصد داریم، بر روی هر یک از دستهبندیها بررسی مختصری داشته باشیم.
پایگاههای داده توزیع شده
اکثر پایگاههای دادة توزیع شده به زبان NoSQL و غیر رابطهای هستند و به صورت کلید-مقداری (key-value) میباشند. این نوع از پایگاههای داده عملکرد و مقیاسپذیری بسیار بالا را به همراه دسترسپذیری و ثبات ایجاد کردهاند.
قبل از ادامه بحث در رابطه با پایگاههای دادة توزیع شده، نیاز است با یکی از مفاهیم اساسی در این حوزه یعنی تئوری CAP آشنا شویم.
تئوری CAP
تئوری CAP در پایگاههای داده توزیع شده به این مساله اشاره میکند که نمیتوان همزمان سه ویژگی سازگاری (Consistency)، دسترسپذیری (Availability) و تحمل تقسیمپذیری (Partition Tolerance) را در پایگاه دادة توزیع شده داشت. بدین معنا که ما همزمان تنها میتوانیم دو مورد از ویژگیها را به صورت همزما داشته باشیم و هر سه همزمان امکان پذیر نیست
در این بخش قصد داریم ببینیم سه ویژگی مذکور، به چه معنا هستند و به طور ساده، تعاریف هر یک از مفاهیم را بیان کنیم:
سازگاری
در یک سیستم سازگار، هنگامی که یک کاربر برای یک سرور مقداری را مینویسد و پاسخی را دریافت میکند، انتظار دارد که آن مقدار (یا حتی یک مقدار جدیدتر) را از هر سروری که از آن قصد خواندن دارد، دریافت کند. به معنای دیگر هر عملیات خواندنی که پس از انجام یک عملیات نوشتن صورت گیرد، باید مقدار اولیهای که نوشته شده است را برگرداند. برای درک بهتر به شکل های زیر توجه کنید:
در شکل زیر یک نمونه از سیستم غیرسازگار را مشاهده میکنید. دو سرور G_1 و G_2، هر کدام مقدار اولیة v_0 را دارند. کاربری قصد دارد مقدار v_1 را بر روی سرور G_1 بنویسد. این کاربر مقدار v_1 را برای نوشته شدن برای سرور G_1 ارسال میکند و پس از آپدیت مقدار در G_1، سرور پاسخ آن را به کاربر باز میگرداند و مقدار در سرور G_1، به v_1 تغییر میکند.
اکنون کاربر قصد دارد تا مقدار را از سرور G_2 بخواند. درخواست خواندن خود را به سرور G_2 میدهد، اما به جای مقداری که قبلتر نوشته بود، مقدار اولیهای که سرور داشته است یعنی v_0 به اون بازگردانده میشود.
سیستم غیرسازگار
در شکل زیر نمونهای از سیستم سازگار را مشاهده میکنید. در این سیستم پس از ارسال درخواست کاربر برای تغییر مقدار در سرور G_1، بر خلاف سیستم غیرسازگار که سرور بدون هیچ ارتباطی با سرور دیگر، پاسخ را به کاربر باز میگرداند، اکنون سرور G_1 ابتدا به سرور دیگری که با آن در ارتباط است که در اینجا G_2 میباشد، مقدار فرستاده شده توسط کاربر را ارسال میکند، تا هر دو سرور مقدار جدیدی که کاربر نوشته است را پیدا بکنند.
سرور G_2 پس از دریافت مقدار و آپدیت آن، پاسخ خود را به سرور G_1 باز میگرداند و سپس سرور G_1 نیز پس از دریافت پاسخ از سرور G_2، پاسخ مورد نظر را به کاربر باز میگرداند. اکنون در صورتی که کاربر قصد خواندن اطلاعات از سرور G_2 را داشته باشد، پاسخی که دریافت میکند، همان مقداری است که در ابتدا برای نوشته شدن به سرور G_1 ارسال کرده است. این ویژگی در یک سیستم توزیع شده، ضمانت میکند که تمامی گرهها در شبکه، کپیای از آخرین نسخة اطلاعات را دارند.
دسترسپذیری
دسترسپذیری بدین صورت تعریف میشود که هر درخواست که توسط گرهای در شبکه که دچار نقص یا شکست (failing) نیست، دریافت میشود، باید پاسخی داشته باشد. بدین معنا که در سیستمی که دسترسپذیر است، هر درخواستی که از سمت کاربر به سرور داده میشود، در صورتی که سرور مشکلی نداشته باشد، باید به درخواست کاربر پاسخ دهد. سرور اجازه ندارد که درخواست کاربر را نادیده بگیرد و پاسخ ندهد.
تحمل تقسیمپذیری
این ویژگی بدین معنا میباشد که به شبکه این اجازه داده میشود تا پیامهای ارسالی بسیاری را که از یک گره به گرة دیگر ارسال شده است، به طور دلخواه از دست بدهد. سیستم علی رقم تقسیمپذیری دلخواه در شبکه، باید عملکرد درستی داشته باشد تا بتواند در برابر تقسیمپذیری تحمل کند. بدین معنا که در یک سیستمی که ویژگی تحمل تقسیمپذیری وجود دارد، در صورتی که گروهی از گرهها با مشکل روبهرو شوند ویا شکست بخورند، یک سیستم توزیع شده کماکان باید به درستی به کار خود ادامه دهد.
با توجه به تعریف ویژگیهای گفته شده، میتواند متوجه شد که چرا نمیتوان هر سه مورد را باهم به صورت همزمان داشت. برای درک بهتر، به مثال زیر توجه کنید:
یک سیستم به صورت زیر در نظر بگیرید که مشابه اشکال بالاتر، دو گره و یک کاربر داریم.
گره G_1
حال فرض میکنیم که کاربر قصد ارسال و نوشتن مقداری را در گره G_1 دارد. مقدار خود را برای این گره ارسال میکند و گره نیز پاسخ خود را برای کاربر ارسال میکند. مشابه تصویر زیر:
حال کاربر از گره G_2 قصد خواندن اطلاعات دارد و پاسخی که از گره دریافت میکند به دلیل وجود ویژگی تحمل تقسیمپذیری و عدم ارتباط گره G_1 و G_2، مقداری که گره به او باز میگرداند، همان مقدار اولیهای میباشد که سرور داشته است و مقدار آن آپدیت نشده است. مشابه تصویر پایین:
این بدین معنا میباشد که طبق تئوری CAP، در یک سیستم توزیع شده، نمیتوان به صورت همزمان ویژگی سازگاری و دسترسپذیری را داشت. چون طبق تحمل تقسیمپذیری این امکان وجود دارد تا گروهی از گرهها، دچار مشکل شوند و در صورتی که در دسترس باشند، اما ارتباطی با دیگر گرهها برای دریافت آخرین اطلاعات شبکه را نداشته باشند. در مقالات بعدی و در رابطه با بلاکچین، در این رابطه صحبت میکنیم که چگونه در بلاکچین ویژگی ذکر شده در تئوری CAP رفع شده است.
اجماع در سیستم های توزیع شده در بلاک چین
در سیستم های توزیع شده در بلاک چین مسئلهای که وجود دارد و در سیستمهای متمرکز مشاهده نمیشود، حضور همزمان تمامی گرهها برای تصمیمگیری در رابطه با موضوعی در داخل شبکه میباشد. موضوعی که تحت عنوان اجماع در داخل سیستمهای توزیع شده تعریف میشود. اجماع در واقع راههای رسیدن به اشتراکی در بین گرهها و اعضای شبکه برای تصمیم در رابطه با موضوع یا تغییری در شبکه میباشد.
برای رسیدن به این تصمیم یک حد نصابی تعریف میشود که این حد نصاب متناسب با الگوریتمهای قابل تعریف برای اجماع در سیستمهای توزیع شده، متفاوت میباشد. اجماع یکی از موارد مهم در بلاکچین میباشد که با حضورش، حذف واسطه را بدون هیچ مشکل یا اختلالی در شبکه امکانپذیر کرده است.
در الگوریتمهای توزیع شده که در مقالات بعدی به آنها میپردازیم، در رابطه با اجماع و اینکه چگونه تعریف میشود، چه حد نصابی نیاز دارد و به چه صورت، اجماع به درستی در یک سیستم توزیع شده شکل میگیرد، به طور کامل صحبت خواهیم کرد.
برنامههای توزیع شده
این برنامهها بر خلاف برنامههای عادی که به صورت متمرکز هستند، به صورت همتا به همتا (Peer to Peer) و توزیع شده میباشند. در این برنامه، فرد یا گروهی مسئول برنامه نیست و اطلاعات شبکه بر روی تمامی گرههای شبکه قرار گرفته است که همین مساله منجر به توزیع شده بودن آن میشود و علاوه بر این تمام افراد و گرهها در این شبکه به میتوانند با افراد دیگر به صورت مستقیم یا اصطلاحا همتا به همتا ارتباط برقرار کنند. از جمله معروفترین برنامههای توزیع شده بیت تورنت، بیتکوین، اتریوم و تمامی برنامههایی که بر بستر بلاکچین اجرا میشوند، میباشند.
علاوه بر موارد ذکر شده، محاسبات توزیع شده، فایلهای سیستمی توزیع شده و سیستم ارسال پیام توزیع شده، نیز متناسب با تعریف خود، منجر به توزیع شده بودن محاسبات، فایلهای سیستمی و ارسال پیام میشوند.
در این مقاله تلاش شد تا با سیستم های توزیع شده در بلاک چین، غیر متمرکز و متمرکز آشنا شوید و با تعریف و عمکرد این سیستمها به چه صورت تعریف میشوند و عمل میکنند. آشنا شوید. در مقالات بعدی، الگوریتمهای توزیع شده در سیستمهای توزیع شده و دفتر کل توزیع شده که در بلاکچین مورد استفاده قرار میگیرد، را بررسی خواهیم کرد.