بلاک چین چیست و چگونه کار میکند؟
بلاک چین چیست؟ انسانها طی سالیان متمادی به دنبال راه حل یا فرمولی برای همه چیز بودند. از نظریات توصیف شکل گیری جهان هستی گرفته، تا نظریات علوم روانشناسی، فلسفی، جامعه شناسی، سیاست، اقتصاد و … . اما رویای آرمانشهر مورد انتظار بشر و دستیابی به صلح و هم افزایی پایدار، تنها در گروی یک مفهوم است: اعتماد. گویی اعتماد حلقه اتصال تمامی خواستههای بشر است که تا به امروز در اشخاص واسطه، حکومتها، سیستمها و سازمانها جستجو شده است. اما امروزه فناوری انقلابی بلاک چین اساساً اصل را بر عدم اعتماد گذاشته و این چالش را نه به دست بشر، بلکه با حذف واسطههای معتمد و جایگزینی فرایندهای مبتنی بر خرد جمعی به سرانجام میرساند. فناوری بلاک چین علی رغم ظاهر پیچیده و گنگی که دارد، به سادگی قابل فهم بوده و امروز در مرکز توجهات جوامع علم و تکنولوژی قرار گرفته است. در این مقاله قصد داریم با توصیف ریشههای تاریخی شکل گیری بلاک چین، ساز و کار دقیق این فناوری را به شما معرفی کنیم. تا انتهای این مقاله با ما همراه باشید تا هرآنچه برای فهم عمیق این فناوری نیاز است را فرا گیرید.
بلاک چین چیست؟ اجازه دهید برای پاسخ به این سوال، از یک بازی مشهور کمک بگیریم. تا به حال با دوستانتان بازی مافیا انجام دادهاید؟ اصول این بازی بسیار ساده است؛ اقلیت مافیا در میان اکثریت شهروندان مخفی شده و وانمود می کنند که خود نیز شهروند هستند. وظیفه شهروندان این است که با گفتگو در طول روز مافیا را تشخیص دهند و آنها را حذف کنند، و وظیفه مافیا این است که شهروندان را در تصمیم گیری ها گمراه کنند و هر شب مخفیانه یک شهروند را به قتل برسانند. در یک کلام، مافیا بازی اعتماد است. شاید بیراه نباشد اگر بگوییم زندگی واقعی ما نیز نمونه بزرگ شدهای از بازی مافیاست. همه ما در زندگی واقعی، با افراد گوناگون تعاملات گوناگون (شغلی، عاطفی و …) داریم و همه این تعاملات نیازمند اعتماد طرفین است. اعتماد جوهره اصلی روابط انسانیست و در این مقاله قصد داریم فناوری انقلابی را به شما معرفی کنیم که چالش اعتماد را یک بار برای همیشه حل میکند.
فهرست محتوا
- بخش اول: یک تعریف ابتدایی برای بلاک چین
- بخش دوم: تاریخچه مختصر بلاک چین
- بخش سوم: دنیای بدون بلاک چین
- بخش چهارم: ابزارهای لازم برای درک بلاک چین
- بخش پنجم: چهار تعریف برای بلاک چین
- بخش ششم: اجزای تشکیل دهنده بلاک چین
- بخش هفتم: تراکنش های بلاک چین
- بخش هشتم: کاربران بلاک چین
- بخش نهم: بلاک ها در بلاک چین
- بخش دهم: نقش نودها (ماینرها) در بلاک چین
- بخش یازدهم: اجماع در بلاک چین
- بخش دوازدهم: نقش زنجیره در بلاک چین
- بخش سیزدهم: انواع بلاک چین
- جمعبندی
بخش اول: یک تعریف ابتدایی برای بلاک چین
شاید تا کنون چیزهایی درباره فناوری بلاک چین شنیده باشید، شاید هم نه! شاید درک کاملی از این فناوری داشته باشد، و شاید هم بلاک چین را با چیزهای دیگر اشتباه گرفته باشید که احتمالش هم کم نیست. بنابراین قبل از هر حرفی اجازه دهید بگوییم بلاک چین چه چیزهایی نیست!

*توضیح تصویر: عباراتی که در ۱۲ ماه اخیر، بیشتر از همه در ارتباط با بلاک چین جستجو شدهاند. (منبع: Google Trends)
بلاک چین هرگز نوعی فیلترشکن نبوده و نیست. بلاک چین نام نسخه جدید و ضد فیلتر پیامرسان تلگرام هم نیست. همچنین بلاک چین چیزی شبیه تالار بورس اوراق بهادار نیست که مثلا سهام فلان شرکت را ببریم روی بلاک چین؛ بلاک چین با شبکه های هرمی و بازاریابی شبکهای هیچ سنخیتی ندارد و در نهایت باید بگوییم که بلاک چین واژه معادلی برای توصیف بیت کوین هم نیست؛ بلکه پلتفرم بیت کوین اولین پیاده سازی موفق بلاک چین در حوزه مالی بوده که تا به امروز جلوههای تمرکز زدایی، توزیع شدگی، ارتباط همتا به همتا، شفافیت و امنیت بلاک چین را به منصه ظهور رسانده است. اما برای آن که ذهنیتی ابتدایی از بلاک چین داشته باشیم و بتوانیم این مقاله را تا انتها دنبال کنیم، در اینجا تعریفی ابتدایی از مفهوم بلاک چین ارائه خواهیم داد.
بلاک چین در تعریف عام، یک پایگاه داده مدرن برای ثبت، نگهداری و مدیریت دادههاست؛ اما در تعریفی دقیقتر میتوان گفت:
بلاک چین ابزاری برای یکپارچه سازی و هماهنگی سیستم های توزیع شده و همتا به همتاست. بلاک چین به خودی خود فناوری نیست؛ بلکه ابزاریست که از فناوری هایی همچون رمزنگاری ، دفتر کل توزیع شده ، ارتباط همتا به همتا، و الگوریتمهای اجماع بهره می گیرد. تفاوت بلاک چین با سیستمهای ثبت و مدیریت سنتی داده، از آنجا نشأت میگیرد که دادههای ذخیره شده در این سیستم، میان تمامی اعضای شبکه به اشتراک گذاشته میشود و با رمزنگاری دادهها و بهره گیری از روشهای اجماع، امکان حذف، تغییر، سانسور، هک و تقلب در دادههای ثبت شده، تقریباً غیر ممکن میگردد.
در ادامه این مقاله میکوشیم تا تمامی اصطلاحات تخصصی مورد استفاده در تعریف فوق را توضیح دهیم.
بخش دوم: تاریخچه مختصر بلاک چین
ایده اولیه بلاک چین، اولین بار در سال ۱۹۹۱ توسط استوارت هابر و اسکات استورنتا، به منظور ثبت و مدیریت بهینه دادهها مطرح گردید. تفاوت بنیادین بلاک چین با سیستمهای ثبت داده سنتی، ایدهی تایم استمپ یا زمانبندی و مرتبسازی اسناد دیجیتالی بود که امکان دستکاری، سانسور و تغییر تاریخ اسناد را غیر ممکن میساخت. اما این نوآوری تا سال ۲۰۰۸ چندان جدی گرفته نشد. در سال ۲۰۰۸ بیت کوین به عنوان اولین ارز رمزنگاری شده و اولین کاربرد عملی بلاک چین، توسط فرد یا افراد ناشناسی با نام مستعار ساتوشی ناکاموتو به جهان معرفی شد. بیت کوین شبکهای از تراکنشها بر بستر بلاک چین است که کاربران را قادر میسازد بدون دخالت هیچ گونه واسطهای و بدون حضور یک سیستم مرکزی (مانند بانک) برای یکدیگر پول بفرستند. عنوان مقاله (یا وایت پیپر) ساتوشی ناکاموتو این بود: «بیت کوین: یک سیستم پول نقد الکترونیکی همتا به همتا».
اما کاربردهای بلاک چین تنها به امور مالی محدود نخواهد شد. ما در عصری زندگی میکنیم که نیاز به ثبت و مدیریت اطلاعات، بیش از پیش در حال افزایش است و در چنین شرایطی فناوری بلاک چین به عنوان نسل جدیدی از تکنولوژی های ارتباطی، روشهای جایگزین جدیدی را پیش رویمان قرار خواهد داد. طبق گزارش LinkedIn Learning، بلاک چین به عنوان یک مهارت، در سال ۲۰۱۹ از مهارت های IT از جمله محاسبات ابری، استدلال تحلیلی (analytical reasoning)، هوش مصنوعی و طراحی تجربه کاربری (UX) پیشی گرفته است و به پرطرفداترین مهارت حوزه IT در بین کارفرمایان جهان در سال ۲۰۲۰ تبدیل شده است.

درباره حوزههای کاربردی بلاک چین بیشتر بخوانید:
- بلاک چین ، اینترنت اشیاء و هوش مصنوعی
- کاربردهای واقعی بلاک چین در زنجیره تأمین
- کاربردهای تجاری فناوری بلاک چین
بخش سوم: دنیای بدون بلاک چین
حال که اندکی با تاریخچه پیدایش بلاک چین آشنا شدیم، لازم است از خود بپرسیم که ضرورت وجود آن چیست؟ مگر دنیای سنتی فناوری اطلاعات، بدون بلاک چین چه چیزی کم داشت؟ تمرکزگرایی و وجود سازمانهای واسطه چه مشکلاتی برای ما ایجاد کردهاند که بلاک چین قرار است آنها را حل کند؟ در ادامه به تک تک این سوالات پاسخ خواهیم گفت.
برای درک ضرورت استفاده از بلاک چین، نیازمند مرور سیر تاریخی فرایند تبادل داده هستیم. این دادهها میتوانند اطلاعات مربوط به تراکنشهای مالی باشند، یا اطلاعات هویتی شما، یا سوابق بیمه، و یا حتی سوابق کاری، اطلاعات مربوط به تولید و عرضه یک محصول دارویی، حقوق مالکیت معنوی یا هر چیز دیگر. از زمان پیدایش حیات، چالش اعتماد یکی از اساسی ترین چالشهای انسان برای برقراری ارتباط و داد و ستد بوده است. در گذشته ترجیح مردم بر این بود که تنها با کسانی که میشناسند و شخصاً به آنها اعتماد دارند وارد معامله شوند. اما از زمان آغاز شهرنشینی و گسترش روابط و مناسبات اجتماعی، همیشه نیاز به یک شخص یا سازمان واسطه احساس میشد. ابتدا ریش سفیدان و اشخاص معتمد شهرها این نقش را برعهده داشتند و بعدها، سازمانهای واسطه.
به عنوان مثال بانکها از زمان شکلگیری تا کنون، مسئولیت نگهداری از داراییهای مردم و ثبت دادههای مربوط به تراکنشهای آنها را برعهده داشته و دارند. این سازمانهای واسطه، بسیاری از مشکلات مردم را برطرف کردند. برای مردمی که در تمامی مناسبات خود همواره با مشکل اعتماد دست و پنجه نرم میکردند، اعتماد به یک سازمان واسطه بسیار سادهتر از اعتماد به تک تک افراد جامعه بود. در عصر جدید و با توسعه تجارت الکترونیکی، این نیاز بیش از پیش محسوس شد. اکنون شما میتوانید با افرادی از سراسر جهان تعامل و داد و ستد داشته باشید، بدون اینکه حتی آنها را بشناسید یا به آنها اعتماد داشته باشید. با گسترش دستگاههای الکترونیکی، اختراع شبکه و فراگیر شدن تدریجی اینترنت، کم کم بسیاری از سازمانهای سنتی، جای خود را به سرویسها و پلتفرمهای اینترنتی دادند. بخش عظیمی از نقل و انتقالات مالی به فضای دیجیتالی وارد شد و پلتفرم های متمرکز همچون گوگل، فیسبوک، اوبر، آمازون (در داخل ایران مثل دیجیکالا و اسنپ) و … بسیاری از نیازهای ارتباطی مشترکین را برطرف ساختند.
تا به اینجای کار، اقتصاد واسطه محور روز به روز در حال گسترش بود؛ اما علی رغم تمامی مزیتهای سیستمهای متمرکز و سازمانهای واسطه، ایراداتی هم به آنها وارد است. ایراداتی که شاید تا زمانی که موجب بروز مشکلی نگردند، به آنها توجه نکرده و آنها را جدی نمیگیریم. در اینجا به چند مورد از این ایرادات خواهیم پرداخت:
- قدرت بیش از حد پلتفرمهای متمرکز
- توانایی سانسور، تحریف و تقلب
- ضعف امنیت
- عدم شفافیت در الگوریتمهای حاکمیتی
- تحمیل هزینههای غیرمنصفانه
- بروکراسی پیچیده در روندهای سازمانی
در ادامه این بخش، تک تک این موارد را توضیح خواهیم داد:
قدرت بیش از حد پلتفرمهای متمرکز
پلتفرم های متمرکز به دلیل ذخیره حجم کلانی از دادههای کاربران (Big data) و همچنین دارا بودن قدرت بسیار زیاد محاسباتی و هوش مصنوعی، کنترل بسیار زیادی بر دادههای عموم مردم دارند. از این رو همواره این ریسک وجود دارد که این شرکتها با سوء استفاده از این دادهها در سرنوشت بسیاری از مردم تأثیرگذار باشند. به عنوان مثال ماجرای رسوایی فیسبوک و کمبریج آنالایتیکا (cambridge analytica) در جریان انتخابات ریاست جمهوری سال ۲۰۱۶ امریکا را به یاد آورید؛ در جریان این رسوایی فاش شد که شرکت کمبریج آنالایتیکا با همکاری فیسبوک به اطلاعات شخصی بیش از ۵۰ میلیون شهروند امریکایی دسترسی یافته و از این دادهها برای تبلیغات روانی هدفمند و تغییر نتیجه انتخابات به نفع جمهوری خواهان استفاده کرده است. همچنین شرکت قدرتمند گوگل نیز با ذخیره کوکیهای کاربران موتور جستجوی خود، قدرت بسیار زیادی در کنترل افکار عمومی و جهت دهی به آن بدست آورده که گهگاهی خبرهای آن را نیز میشنویم. البته قضیه به اینجا منتهی نمیشود. زمانی که دیتای کاربران از جنس پول و تراکنشهای مالی باشد، قضیه از این هم خطرناکتر میشود. شاید تا کنون درباره قدرت بی حد و حصر بانکها و سیستمهای پرداخت چیزهایی شنیده باشید. بانک ها با در اختیار داشتن حجم عظیمی از سپردههای مالی راکد شهروندان، قدرت بسیار زیادی به دست آوردهاند. این قدرت بی حد و حصر به آنها اجازه میدهد در بسیاری از تصمیم گیری های کلان حکومتی و همچنین در امور مربوط به قانون گذاری اعمال نفوذ داشته باشند.
توانایی سانسور، تحریف و تقلب
زمانی که کنترل تمامی دادههای یک سیستم در اختیار یک سازمان متمرکز باشد، امکان بالقوه سانسور، تغییر اطلاعات، تحریف و تقلب گریزناپذیر خواهد بود. به عنوان مثال بارها و بارها شاهد فساد مالی در بانکهایی بودهایم که با دستکاری و تقلب در تراکنشها، مبالغی از سرمایههای عمومی را کلاهبرداری کردهاند. بارها و بارها شاهد این بودهایم که شبکههای اجتماعی مثل اینستاگرام و فیسبوک، به علت منافع شخصی یا تحت تأثیر دولتها، برخی از پستهای کاربران را حذف کردهاند. تمامی این اتفاقات ناشی از کنترل متمرکز سازمانها و شرکتها بر دادههای کاربران است.
ضعف امنیت
امنیت دادهها همواره از چالشهای پیش روی سازمانهای غیرتوزیع شده است. تصور کنید کلیه اطلاعات و دادههای یک شبکه یا سوابق بانکی، در یک کامپیوتر یا سرور مرکزی ذخیره شده باشند. در این صورت هرگونه حادثه غیر مترقبه طبیعی، سرقت سایبری و هک، و همچنین مشکلات فنی، میتواند باعث آسیب پذیری یا از بین رفتن تمامی این اطلاعات شود. به این موارد اصطلاحاً نقطه بحرانی شکست (single poin of failure) یا SPoF میگویند. تنها راه مقابله با این تهدیدات بالقوه، توزیع شدگی اطلاعات است؛ به گونهای که دیگر تنها یک سرور مرکزی، نگهدارنده تمامی اطلاعات نباشد. به عنوان یک اصل اساسی میتوان گفت تا زمانی که با از کار انداختن یکی از اجزای سیستم بتوان کارایی کل سیستم را تحت تأثیر قرار داد، این سیستم توزیع شده نیست؛ فرقی هم نمیکند که طراحی آن در ظاهر چقدر پیچیده به نظر برسد.
عدم شفافیت در الگوریتمهای حاکمیتی
وقتی قصد دارید از یک پلتفرم متمرکز استفاده کنید، در ابتدای کار مجموعهای از قوانین و شرایط را تحت عنوان terms and conditions یا Terms of service میپذیرید که اختیاراتی را از جانب شما به صاحبان و مدیران این پلتفرمها اعطا میکند. در این قرارداد یک طرفه تنها شرایط و تعهداتی که شما ملزم به رعایت آن هستید ذکر شده و معمولاً هیچ خبری از تعهدات سازمان نسبت به شما وجود ندارد. در حقیقت شما هیچ حقی ندارید، چرا که چاره دیگری جز استفاده از این پلتفرم ندارید.
حتماً تاکنون بارها این تعهدنامه را در هنگام استفاده از سرویسهای گوگل یا فیسبوک و اینستاگرام مشاهده کردهاید؛ آیا چاره دیگری جز پذیرش آن هست؟ آیا میتوانید از این پلتفرم استفاده نکنید؟ آیا تا به حال در این تعهدنامه هیچ حقی برای مصرف کنندگان درنظر گرفته شده است؟ تا به حال پیش آمده است که از نحوه رفتار الگوریتم این پروتکلها گیج و سر درگم شوید؟ به عنوان مثال تغییر رتبه ناگهانی یک وبسایت در سرویس جستجوی گوگل یا نمایش ندادن پستهای اینستاگرام برای یک اکانت خاص، یا حتی ممنوعیت ناگهانی فعالیتهای روزمره (نظیر لایک کردن و کامنت گذاشتن) شما در شبکههای اجتماعی بدون هیچ دلیل واضح و مشخصی، همه و همه از ویژگیهای این قرارداد یک طرفه و غیرشفاف است. تمامی این اتفاقات ناشی از عدم شفافیت الگوریتم حاکمیتی این پلتفرمهای متمرکز است؛ اما آیا راهکار بهتری سراغ داریم؟
تحمیل هزینههای غیرمنصفانه
برای رفع بخشی از مشکلاتی که در موارد قبلی گفته شد، و همچنین برای تأمین هزینههای ناشی از خدمات سازمانها، به ناچار بخشی از این هزینهها توسط کاربران تأمین میگردد. به عنوان مثال بانکها برای تأمین هزینه حفظ امنیت سرمایهها و نظارت بر صحت تراکنشها، هزینهای را به عنوان کارمزد به هر تراکنش تحمیل میکنند که باید توسط مشتریان پرداخت شود. وجود این کارمزدها اجتناب ناپذیر است و در برخی موارد از جمله در تراکنشهای خُرد، باعث عدم صرفه اقتصادی تراکنش میگردد.
بروکراسی پیچیده در فرآیند سازمانی
به دلیل عدم یکپارچگی و هماهنگی در میان اجزای مختلف یک سازمان، بسیاری از عملیات اجرایی این سازمانها درگیر پروسههای زمانبر و پرزحمت میگردند. به عنوان مثال برای طی مراحل احراز هویت در یک سازمان یا یک بانک، باید مدارک مشابهی را به بخشهای متنوعی از سازمان ارائه دهید تا در هر بخش به طور جداگانه تأیید شوند. یا همچنین برای دسترسی تمامی اعضای یک شبکه سنتی به نسخههای بروزرسانی شده اسناد و اطلاعات، نیازمند صرف هزینههای بیش از حد هستیم. بخشی از این مشکلات به دلیل آن است هنوز استفاده از اسناد دیجیتالی در بسیاری از سازمانها مرسوم نبوده و یا صحتسنجی و تأمین امنیت آن با مشکلاتی مواجه است. آیا روش بهتری برای یکپارچه سازی و ایجاد هماهنگی میان بخشهای مختلف یک سازمان وجود دارد؟ تمامی ایرادات و مشکلاتی که در بالا گفته شد، مقدمهای بود برای معرفی فناوری بلاک چین؛ برای اینکه بدانیم چرا به شبکههای غیر متمرکز، توزیع شده و همتا به همتا نیاز داریم؛ شفافیت در سیستمهای مالی و پلتفرمها و سرویسهای اجتماعی چه مشکلاتی را حل میکند؛ امنیت دادههای کاربران پلتفرمهای متمرکز چگونه به خطر میافتد؛ عدم غلبه منافع شخص به گروه چگونه محقق میگردد و در نهایت اینکه حذف واسطهها چه کمکی به کاهش هزینههای کاربران خواهد کرد.
در ادامه با ارائه تعاریف دقیقی از بلاک چین، چگونگی رفع چالشهای فوق را توضیح خواهیم داد.
بخش چهارم: ابزارهای لازم برای درک بلاک چین
پیش از صحبت درباره چیستی و چگونگی کارکرد فناوری بلاک چین، اجازه دهید برخی از اصطلاحات و مفاهیم مرتبط با این فناوری را مورد مطالعه قرار دهیم. ابتدایی ترین مفاهیم مورد نیاز برای ورود به دنیای بلاک چین عبارتند از:
- تمرکزگرایی و تمرکززدایی
- توزیع شدگی
- دفتر کل
- دفتر کل توزیع شده (DLT)
- تحمل خطای بیزانس
- رمزنگاری و هش
در ادامه، هر یک از این مفاهیم را توضیح خواهیم داد:
تمرکز گرایی و تمرکز زدایی
هرگاه از تمرکزگرایی صحبت میکنیم، تنها یک منظور داریم: قدرت و حاکمیت متمرکز. در سازمانها، سیستمها و پلتفرمهای متمرکز، ساختار توزیع قدرت به شکل یک هرم است. معماری یک ساختار متمرکز میتواند متشکل از زیربخشهای بسیاری باشد که هر یک در بخش مربوط به خود دارای قدرت تصمیم گیری هستند، اما معمولاً تمامی اختیارات و مسئولتها در نهایت متعلق به یک شخص یا مجموعه کوچکی از اشخاص (به طور مثال سهامداران ارشد یا اعضای هیئت مدیره سازمان) است. قدرتهای متمرکز میتوانند بدون ضمانت حفظ منافع تک تک اعضا یا کاربران سیستم، به اختیار خود تصمیمات جدید اتخاذ کنند؛ اما این تصمیمات منجر به تغییراتی خواهند شد که در نهایت به سود عدهای از اعضا و به ضرر عدهای دیگر از اعضا تمام خواهد شد.
به عنوان مثال سیستم مالی کشوری مانند ایران را درنظر بگیرید. تمامی افراد سرمایه گذار در سیستم بانکی ایران، اعضای اولیه این سیستم مالی هستند. در طبقه بالاتر بانکها و مؤسسات مالی و اعتباری قرار دارند که همگی تابع مقررات وضع شده از سوی بانک مرکزی هستند. در مرتبه بالاتر، بانک مرکزی قرار دارد که خود از دو رکن اساسی ناظر به نام شورای پول و اعتبار و مجمع عمومی تشکیل شده است. در نهایت در صدر این سیستم مالی رئیس کل بانک مرکزی قرار دارد که میتواند با تصمیمات مستقیم خود دستور اجرا یا عدم اجرای مصوبات را صادر کند. به عنوان مثال فرض کنید رئیس بانک مرکزی دستور دهد نرخ بهره بانکی در سال جدید ۱ درصد افزایش یابد؛ یا به طور مثال چهار صفر از واحد پول ملی کسر شود و یا اینکه پایه پولی افزایش یا کاهش یابد. تمامی این تصمیمات تأثیرات مستقیم و غیر مستقیمی بر کاربران این سیستم (که بیشترین تعداد و کمترین قدرت تصمیم گیری را دارند) خواهد داشت. چنین سازمانی، سازمان متمرکز نامیده میشود.
اما در مقابل، زمانی که از تمرکز زدایی صحبت میکنیم، منظورمان دقیقاً تقسیم قدرت تصمیم گیری و حاکمیت، در میان اعضا است. به عنوان مثال یک سیستم مالی را در نظر بگیرید که در آن، هیچ شخص یا سازمان خاصی (مثل بانک) مسئولیت مستقیم حفظ امنیت تراکنشها را بر عهده نداشته باشد؛ بلکه این مسئولیت بر عهده مجموعه ای از کاربران شبکه و کامپیوترهای آنهاست. هر کاربر با توجه به قدرت پردازشی که وارد شبکه میکند، میتواند در حفظ شبکه مشارکت کند و اصطلاحاً حق رأی داشته باشد. همچنین در این سیستم فرضی، هیچ شخص یا نهادی مسئولیت بررسی نهایی آرا و اعمال تصمیمات را برعهده ندارد؛ بلکه این فرایند از طریق یک کد متن باز عمومی انجام میگیرد که همه کاربران نیز از صحت عملکرد آن مطمئن هستند.
اگر توانایی تصور چنین سیستمی را دارید، به شما تبریک میگوییم! شما با بخشی از پروتکل بیت کوین (اولین پول نقد الکترونیکی همتا به همتا) به عنوان اولین سیستم مالی غیرمتمرکز آشنا شدهاید. در حقیقت مفهوم تمرکززدایی در سیستم مالی ارزهای رمزنگاری شده همچون بیت کوین ، تنها و تنها به کد عمومی و غیرقابل تغییر این رمز ارز شده بستگی دارد. نوشته زیر، توصیهایست که ساتوشی ناکاموتو (خالق بیت کوین) پیش از جدا شدن از پروژه بیت کوین ، به توسعه دهندگان مطرح کرد:
طبیعت بیت کوین به گونهایست که پس از عرضه اولین نسخه، طراحی هسته این سیستم باید تا انتهای عمر این رمز ارز بدون تغییر باقی بماند.
ساتوشی ناکاموتو خالق افسانهای بیت کوین
در صحبت از تمرکزگرایی، همواره باید یک نکته مهم را مد نظر داشت. تمرکز زدایی از یک سیستم و توزیع مراکز قدرت، به هیچ عنوان با اصطلاح توزیع شدگی شبکه برابر نیست. برای فهم دقیقتر مفهوم توزیع شدگی، ادامه این مقاله را مطالعه فرمایید:
توزیع شدگی
مفهوم توزیع شدگی در دنیای فناوری اطلاعات، از دو جنبه قابل بحث است. توزیع شدگی شبکه، و توزیع شدگی پایگاه داده. مفهوم توزیع شدگی در شبکه به معنای مجموعهای از کامپیوترهای مستقل و ناهمگن است که برای کاربر به صورت یک سیستم منسجم و یکپارچه ظاهر میشوند. در این حالت مجموعهای از وظایف بین کامپیوترهای مختلف تقسیم شده اما در نهایت یک خروجی واحد و یکپارچه مورد انتظار است. اما توزیع شدگی در پایگاههای داده مفهوم کاملاً متفاوتی دارد. در پایگاههای داده توزیع شده، بجای اینکه دادهها تنها روی یک سرور مرکزی ذخیره شوند، روی چندین سرور یا کامپیوتر ذخیره میگردند. این توزیع شدگی لزوماً به معنای توزیع شدگی مکانی نیست.
به عنوان مثال ممکن است پایگاه دادهای (بنا به نیازهای خاص آن پلتفرم) در چندین دیتا سنتر در مناطق مختلف جهان توزیع شده باشد (همانند گوگل و فیسبوک) و یا ممکن است این توزیع شدگی در میان چندین کامپیوتر یا سرور واقع در یک ساختمان باشد. چیزی که در اینجا اهمیت دارد این است که تمامی دادهها پس از بروزرسانی، به صورت همزمان در چندین سرور ذخیره شوند تا هیچ یک از این سرورها به تنهایی نقطه شکست بحرانی (SPoF) نباشند؛ به عنوان مثال در یک سیستم توزیع شده، نمیتوان با هک یک سرور تمامی سیستم را از کار انداخت؛ چرا که سرورهای دیگری نیز همین دادهها را به طور یکسان ذخیره سازی کردهاند. همانطور که تا کنون حدس زدهاید، استفاده از پایگاه داده توزیع شده، هیچ ارتباطی با تمرکز زدایی از حاکمیت سیستم ندارد. برای دستیابی به یک سیستم توزیع شده و (به طور همزمان) غیر متمرکز، لازم است ابتدا با مفهوم دفتر کل توزیع شده آشنا شویم.
دفتر کل
یکی از مهمترین مفاهیم مورد نیاز برای درک بلاک چین ، فناوری دفتر کل توزیع شده یا (distributed ledger technology or DLT) است. اما برای معرفی این مفهوم، لازم است ابتدا به معرفی «دفتر کل» بپردازیم. تمامی کسب و کارهایی که به هر نحوی با عملیات مالی سر و کار دارند، برای حسابداری و کنترل این عملیات مالی از ابزار اولیهای تحت عنوان دفتر کل استفاده میکنند. تمامی عملیات مالی (تراکنشها) با شرح توضیحات، تاریخ و ذکر ماهیت (بدهکار و بستانکار) در این دفتر ثبت میگردد. مانده حسابهای هر صفحه از این دفتر، در پایان صفحه، ذیل عبارت «نقل به صفحه …» ذکر شده و به صفحه بعدی ذیل عبارت «منقول از صفحه …» انتقال مییابد. قصد ما در اینجا آموزش حسابداری نیست، اما فرایند ثبت دادهها در دفتر کل و نحوه ایجاد ارتباط میان صفحات این دفتر را به خاطر بسپارید تا مشابه همین فرایند را در بلاکهای بلاک چین نیز مشاهده کنید!
پیدایش دفتر کلها اتفاق نادری به حساب نمیآمد؛ چرا که انسانها از زمانی که داد و ستد را شروع کردند، تقریباً همین فرایند ثبت داده را روی سنگها یا لوحهای گلی نیز انجام میدادند. هر کس دفتر کل مخصوص به خود را داشت و حسابهای روزانه، ماهانه و سالانه خود را در آن یادداشت میکرد و در نهایت میتوانست میزان بدهکاری و بستانکاری خود را از این طریق تشخیص دهد. اما مشکل از جایی شروع شد که میان دفتر کلهای گوناگون، مغایرتی پیدا میشد. به عنوان مثال دو فرد با یکدیگر تبادلات مالی انجام داده بودند و اطلاعات مربوط به این مبادلات را هر یک به طور جداگانه در دفتر کلهای خود ثبت کرده بودند. گاهی پیش میآمد که به دلیل خطا و اشتباه، و یا تعمداً و به قصد کلاهبرداری، شخصی اطلاعات اشتباهی را در دفتر کل خود ثبت میکرد. مشکل اینجا بود که هیچ یک از طرفین نمیتوانست حقانیت دفتر کل خود را به دیگران ثابت کند. بنابراین دفتر کلها به افراد واسطه معتمد در شهرها و جوامع سپرده شد تا آنها وظیفه ثبت و نگهداری حسابها را بر عهده گیرند.
اما این روش نیز در طولانی مدت جوابگوی نیاز مردم نبود؛ چرا که همان واسطه معتمد نیز امکان خطا داشت و علاوه بر این امکان تبانی میان ذینفعان و واسطهها نیز وجود داشت. در حال حاضر همان ساختار سنتی دفتر کل ها به صورت تکامل یافته مورد استفاده قرار میگیرد. هر نهاد، سازمان یا شخص حقوقی، برای کنترل حسابهای خود از حسابداری مبتنی بر دفتر کل استفاده میکند و وظیفه نظارت بر این دادهها نیز بر عهده سازمانهای حسابرسی (همان واسطههای معتمد) خواهد بود. شاید واضح ترین نمونه از دفتر کل هایی که امروزه مورد استفاده قرار میگیرند، همان دفتر کل موجود در بانکها باشد. بانکها برای کنترل حسابهای سپرده گذاران، از دفتر کلی استفاده میکنند که تمامی مبادلات در آن ثبت شده و پس از انجام هر تراکنش، به روز رسانی میگردد. تا به اینجا با مفهوم دفتر کل آشنا شدیم و اکنون قصد داریم مفهوم دفتر کل توزیع شده را مورد بررسی قرار دهیم.
دفتر کل توزیع شده (DLT)
در قرن اخیر با گسترش شبکه اینترنت و افزایش روز افزون کامپیوترها و دستگاههای الکترونیکی، دفتر کل های سنتی به تدریج وارد فضای دیجیتالی شدند. اندکی بعد پلتفرمها شکل گرفتند که هر یک برای ذخیره و پردازش دادههای کاربران خود، مجبور به راهاندازی پایگاههای داده (ِData Base) خود بودند. پایگاههای داده در ابتدا بر روی کامپیوترها یا سرورهای متمرکز ذخیره میشدند؛ به این معنا که تأمین امنیت این اطلاعات و پردازش آن تنها توسط یک سازمان متمرکز صورت میپذیرفت. همچنین در صورت وقوع حادثهای همچون حملات سایبری یا هک این پایگاه داده، امنیت دادههای کل شبکه به خطر میافتاد.
با توسعه علم رمزنگاری و رشد قدرت پردازش و ذخیره سازی، رفته رفته مفهومی تحت عنوان «دفتر کل توزیع شده (DLT)» مطرح شد. دفتر کل توزیع شده پایگاه دادهای است که توسط تمامی مشارکت کنندگان یا نودها (Node) قابل به روزرسانی بوده و نسخه بروزرسانی شده آن تقریباً به طور لحظهای در اختیار سایر اعضای شبکه قرار میگیرد. هیچ فرد یا سازمان بخصوصی توانایی ایجاد تغییر یا حذف دادههای ثبت شده در این پایگاه داده توزیع شده را ندارد. دفترکل های توزیع شده را میتوان فناوری مادر بلاکچین دانست. به بیان دقیقتر، همه بلاک چین ها از فناوری دفتر کل توزیع شده بهره میگیرند؛ اما هر دفترکل توزیع شدهای لزوماً یک بلاک چین نیست. این فناوری علاوه بر بلاک چین، در گونههای دیگری از پایگاههای داده رمزنگاری شده همچون دگ (DAG) و تمپو (Tempo) نیز مورد استفاده قرار میگیرد.
آنچه در اینجا ارزشمند و مورد توجه است، شفافیت اطلاعات و توزیع شدگی آن است. همین ویژگی دفتر کل توزیع شده است که امکان سانسور، دستکاری و تقلب را در آن کاهش میدهد. استفاده از دفترکل های توزیع شده، شاید در ابتدای امر، هزینههای بیشتری را به سازمانها تحمیل کند؛ اما در بلند مدت هزینههای ناشی از هماهنگی، تأمین امنیت، بازرسی و … را کاهش خواهد داد.
اگر تا به اینجای مقاله را مطالعه کرده باشید، مبنای کلی عملکرد بلاک چین را شناختهاید؛ اما احتمالاً سوالاتی هم در ذهنتان شکل گرفته است؛ مثلاً اگر اکثریت افراد حاضر در شبکه بر روی نسخه ای از دفتر کل که آن را به نفع خود دستکاری کردهاند توافق کنند چه میشود؟ اگر افرادی با هویتهای ساختگی و جعلی در شبکه مشارکت کرده و اطلاعات جعلی و اشتباهی را در دفتر کل توزیع شده ثبت کنند چه؟ اصلاً آیا تضمینی هست که تمامی دفتر کل ها به طور همزمان مورد حملهای مشابه قرار نگرفته و دادههای موجود در آنها حذف یا دستکاری نشود؟ اینجا دقیقاً همان جاییست که الگوریتمهای اجماع شبکه (با بهره گیری از فناوری رمزنگاری) وارد بازی شده و این احتمال را به شدت کاهش میدهند. پیش از ورود به بحث رمزنگاری اجازه دهید شما را با مسألهای تاریخی در زمینه ثبت داده آشنا کنیم؛ مسأله بیزانتین یا خطای بیزانس.
تحمل خطای بیزانس
مفهوم تحمل خطای بیزانس (Byzantine Fault Tolerance) در فضای سیستم های توزیع شده، به معنی توانایی یک شبکه کامپیوتری توزیع شده برای ارائه عملکرد مطلوب و صحیح است. هدف از این عملکرد صحیح، دفاع در برابر شکست های سیستمی، از طریق کاهش تاثیرگذاری نودهای خرابکار بر روی عملکرد شبکه است که در نهایت سبب شکل گیری اجماع درستی میان نودهای درستکار در سیستم خواهد شد.
مسأله بیزانس در حقیقت نوعی آزمایش فکریست که سالهای سال برای دانشمندان علوم کامپیوتر بیپاسخ باقی مانده بود. این مشکل با الهام از استراتژی فتح قلعههای نظامی در زمان امپراطوری روم شرقی طرح شده است. تصور کنید گروهی از ژنرالهای بیزانسی از جهات مختلف قلعهای را محاصره کرده و در حال تدارک حملهای برای فتح آن هستند. نکته حائز اهمیت در این حمله، این است که ژنرالها باید به توافق برسند تا همگی با هم حمله را آغاز کنند. زیرا در غیر این صورت حمله با شکست مواجه خواهد شد. بنابراین تنها کاری که باید انجام شود، این است که ژنرال ارشد، نامهای حاوی پیام حمله را از طریق پیکهایی برای دیگر ژنرالها بفرستد و در صورت مثبت بودن پاسخ آنها حمله را در زمان مقرر شده در پیام، آغاز کند. اما در اینجا دو مشکل کوچک وجود دارد: ژنرالهای نفوذی، و پیکهای خیانتکار.
به عنوان مثال ممکن است یکی از ژنرالهای نفوذی، با درخواست ژنرالهای دیگر برای حمله موافقت کند، اما در عمل به نیروهایش فرمان عقب نشینی بدهد. یا اینکه یکی از پیکهای خیانتکار، پیام را دستکاری کند و بجای پیام حمله، پیام عقب نشینی را به دیگر ژنرالها مخابره کند. در هر دو صورت حمله با شکست مواجه خواهد شد. چاره کار چیست؟
پیش از صحبت درباره راه حل، اجازه دهید این مسأله ساده را قدری دقیقتر و شفافتر بیان کنیم. این ژنرالها نمایانگر همان مراکز داده توزیع شده هستند و پیام حمله نیز نقش یک داده مهم و حساس را ایفا میکند. ژنرالهای نفوذی نمایانگر نودهای خرابکار سیستم هستند و پیک های خیانتکار، نمایانگر سارقان، کلاهبرداران و مهاجمان سایبری. مشکلی که در ارتباط با ژنرالهای نفوذی وجود دارد، بحث احراز هویت است. آنها با یک هویت جعلی در میان نودهای درستکار ظاهر شده و دادههای اشتباهی را به دیگران مخابره میکنند. مشکل وجود پیکهای خیانتکار نیز دقیقاً به امنیت دادهها مربوط است. بنابراین به راه حلی نیاز داریم که هم مشکل احراز هویت نودهای شبکه را برطرف سازد، و هم امنیت دادهها را در برابر جعل، سانسور و یا حذف شدن تأمین کند. ما به دنبال دستیابی به روشی برای اجماع صحیح هستیم و بهترین ابزار برای این هدف، فناوری رمزنگاریست. با مطالعه قسمت بعد، میتوانید به راه حل معمای بیزانتین پی ببرید.
رمزنگاری و هش
اولین تجربههای عملی بکارگیری رمزنگاری برای ایمن سازی دادهها، در جنگ جهانی دوم و توسط آلمانهای نازی اتفاق افتاد. دانشمندان آلمانی برای مخابره پیامهای رمزنگاری شده، دستگاهی به نام انیگما اختراع کرده بودند که رمزگشایی از پیام ها را تنها برای نیروهای خودی (به وسیله کلید رمزگشایی مخصوص) ممکن میساخت. اما در سوی دیگر جنگ، دانشمندی به نام الن تورینگ، رمزگشایی از این ماشین جادویی را با اختراع اولین نمونه عملی کامپیوتر ممکن ساخت. در حال حاضر رمزنگاری دادهها را میتوان در سه بخش (یا روش) مجزا مورد بررسی قرار داد:
- رمزنگاری متقارن
- رمزنگاری نامتقارن
- تابع هش یک طرفه
آنچه که به بحث فعلی ما مربوط است و نقش حلقه مفقوده فناوری بلاک چین را ایفا می کند، رمزنگاری نامتقارن، و توابع هش یک طرفه هستند اما برای تکمیل موضوعات طرح شده، در این مقاله هر سه روش را به طور خلاصه توضیح خواهیم داد.
تابع هش یک طرفه
در رمزنگاری یک طرفه، دادههای ورودی را به گونهای رمزنگاری میکنیم که دیگر قابل رمزگشایی و دستیابی به داده اولیه نباشند. در این روش از توابع یک طرفه استفاده میکنیم. توابع یکطرفه توابعی هستند که در ازای یک ورودی خاص، یک خروجی درهمنگاری شده خاص تولید میکنند؛ از این رو این توابع را اصطلاحاً توابع درهمساز یا درهمنگارنده مینامند. با در اختیار داشتن خروجی یک تابع یکطرفه، هرگز نمیتوان به داده ورودی دست یافت. در واقع در این روش، داده ورودی به شیوهای خاص (بسته به نوع الگوریتم رمزنگاری) کد گذاری شده و در ازای هر داده ورودی، رشته کاراکترهایی شامل اعداد و حروف درهم ریخته با طولی ثابت (به طور مثال ۶۴ کاراکتر) ایجاد میشود که اصطلاحاً هش (Hash) نامیده میشود. تابع هش، دارای خصوصیات زیر است:
- هش یک داده ورودی ، یکتاست؛ به این معنی که هر چند بار و در هر زمانی که از کلمهای مانند «سلام» هش بگیرید، به یک هش ثابت دست خواهید یافت.
- کوچکترین تغییری در داده ورودی، هش آن داده را به کلی تغییر میدهد. برای مثال، هش کلمهای مانند «اتفاق» و هش کلمهای مانند «اتفاقی» دو چیز کاملاً متفاوت است.
- هش خروجی در هر تابع هش خاص، طول ثابتی دارد (مثلاً همیشه ۲۵۶ کاراکتر است) و طول آن هیچ ارتباطی با طول داده ورودی ندارد. برای مثال، اگر شما از کلمهای مانند «سلام» هش بگیرید، با یک رشته کد با طول ثابتی مواجه میشوید که با طول هش عبارتی مانند «سلام صبح بخیر امیدوارم روز خوبی را سپری کرده باشید» برابر است.
- هیچ دو داده ورودی متفاوتی، هش یکسانی نخواهند داشت و به هیچ وجه امکان ندارد که یک هش ، متعلق به دو داده ورودی مختلف باشد (به بیان دقیقتر احتمال تکراری بودن هش دو داده یکتا، بسیار نزدیک به صفر است اما صفر نیست).
- تابع هش ، یک طرفه است؛ به این معنی که هش گرفتن از یک داده ورودی، کار بسیار سادهای است؛ اما برعکس این عملیات، یعنی دستیابی به داده اولیه از روی هش خروجی، امری محال است.
- سرعت تولید هش از داده ورودی زیاد و قابل قبول است (چرا که در صورت زمانبر بودن، استفاده عملی از آن دشوار خواهد بود).
الگوریتمی که دارای شرایط فوق باشد، یک الگوریتم مناسب و غیرقابل نفوذ برای رمزنگاری دادهها تلقی میگردد. از این روش رمزنگاری، برای غیر قابل تغییر کردن و ثبت دائمی دادهها در دفتر کل توزیع شده استفاده میکنیم. به عنوان مثال فرض کنید دادههای موجود در هر صفحه از دفتر کل را یکبار در تابع هش قرار دهیم و هش خروجی را در صفحه بعدی ذخیره کنیم (در توضیحات مربوط به دفتر کل سنتی گفتیم که مانده حساب هر صفحه، در صفحه بعدی با عنوان «منقول از صفحه قبل» آورده میشود که در اینجا بجای این مانده حساب، هش دادههای هر صفحه را قرار میدهیم). حال هش صفحه قبل نیز، یکی از دادههای ورودی صفحه بعد به شمار میرود که به همراه دادههای این صفحه در تابع هش قرار داده شده و هش خروجی، در صفحه بعدی ذخیره میشود. تابع هش مورد استفاده در بلاک چین بیت کوین SHA256 نام دارد که مخفف عبارت Secure Hash Algorithm 256-bit است. خروجی این تابع هش، یک رشته ۲۵۶ بیتی شامل کاراکترهای ۰ و ۱ است. میتوان این خروجی را به فرم نوشتاری هگزادسیمال (در مبنای ۱۶) نوشت که در این صورت به یک کد در هم ریخته ۶۴ کاراکتری شامل اعداد و حروف تبدیل خواهد شد.
تکرار فرایند رمزنگاری هش در تمامی صفحات دفتر کل، عملاً دستکاری، حذف یا تغییر دادههای موجود در صفحات قبلی را غیرممکن میسازد. چرا که با ایجاد هرگونه تغییری در دادههای هر یک از صفحات، هش خروجی این صفحه تغییر یافته و بدین ترتیب هش صفحات بعدی نیز نامعتبر خواهد شد. این چیدمان هوشمندانه مکانیزمی را ایجاد میکند که با اتکا به آن میتوان از غیرقابل تغییر بودن دادههای ثبت شده اطمینان حاصل کرد.
حال مساله بیزانتین را در شبکه توزیع شده به یاد آورید؛ تصور کنید پیام های رد و بدل شده توسط ژنرال ها (نودها) با چنین مکانیزمی به صورت زنجیروار به یکدیگر متصل شوند. بدین ترتیب ژنرالهای خرابکار (یا همان بازیگران خرابکار شبکه توزیع شده) دیگر قادر به تغییر پیامها و دادههای رد و بدل شده نخواهند بود؛ زیرا در صورت اعمال کوچکترین تغییری در دادههای ثبت شده، هش خروجی به طور کلی تغییر یافته و هش پیامهای بعدی را نیز بیاعتبار خواهد ساخت.
پس تا زمانی که اکثریت ژنرالها (یا نودهای شبکه) را افراد درستکار تشکیل دهند، بیشترین قدرت پردازشی برای محاسبه هش در دست این عده خواهد بود و بازیگران خرابکار نخواهند توانست هش تمامی پیامها را زودتر از آنان محاسبه و جایگزین کرده و پیامها را جعل نمایند (توجه داشته باشید که در این مثال مفهومی، از ذکر جزئیات صرف نظر کرده ایم. به عنوان مثال فرایند محاسبه هش، بسیار سریع بوده و نیازی به قدرت پردازشی چندانی ندارد؛ اما در روشهای عملی همچون الگوریتم اثبات کار در بلاک چین بیت کوین، با وارد ساختن پارامتر دیگری به نام سختی شبکه، فرایند یافتن هش را تعمداً سخت خواهیم کرد تا قدرت اجماع در نهایت در اختیار اکثریت درستکار شبکه که صاحب بیشترین قدرت پردازشی هستند باقی بماند؛ درباره روش اثبات کار، در ادامه مقاله توضیح خواهیم داد).
توابع هش یکطرفه، امروزه برای حفظ امنیت پلتفرمها و سایتهایی که به کاربران امکان ساخت حساب کاربری و تعیین گذرواژه میدهند نیز استفاده میشوند. به عنوان مثال پایگاه داده شرکت فیسبوک هیچگاه گذرواژه حساب شما را ذخیره نمیکند؛ بلکه در هنگام ایجاد هر حساب کاربری و تعریف گذرواژه توسط کاربر، با استفاده از توابع رمزنگاری یک طرفه، گذرواژه کاربر هش شده و هش آن در پایگاه داده فیسبوک ذخیره میشود. فیسبوک با داشتن این هش نمیتواند به حساب شما دسترسی یابد؛ اما هرگاه که برای ورود به حساب خود، گذرواژه را در مرورگر رایانه خود وارد میکنید، این گذرواژه به صورت هش شده برای فیسبوک ارسال شده و با تطبیق آن با هشی که از قبل ذخیره شده، اجازه دسترسی به حساب شما صادر میگردد.
رمزنگاری متقارن
حال به سراغ روشهایی میرویم که تحت شرایط خاصی، رمزگشایی آسان هش را ممکن میسازند. به این صورت که برای هش کردن داده، از یک کد دیگر تحت عنوان کلید استفاده میگردد. یکی از روشهای رایج رمزنگاری، رمزنگاری متقارن، یا رمزنگاری کلید توافقی است. رمزنگاری متقارن روشیست که در آن کلید رمز کردن و باز کردن رمز یکیست. این روش را میتوانید به صورت صندوقی درنظر بگیرید که با همان کلیدی باز میشود که با آن قفل شده است (که مطابق تجربه روزمره ماست).
یکی از نکاتی که استفاده از روش رمزنگاری متقارن را محدود میکند این است که همه طرفهای درگیر در فرآیند، باید روی یک کلید توافق کرده و آن را در اختیار داشته باشند و هیچ فرد دیگری نیز نباید به این کلید دسترسی داشته باشد. استفاده از کلید توافقی در حین کار با طرف دوم قابل اعتماد ایرادی ندارد؛ اما از سوی دیگر، وقتی با گروههای بزرگ یا منابع ناشناس زیادی سر و کار داریم، به دلیل در معرض خطر قرار گرفتن کلید، باید روش امنی نیز برای جابجایی کلید پیدا کرد. این روش، خود مستلزم وجود یک کانال امن یا استفاده از رمزنگاری است که تشکیل یک دور باطل میدهد و به هر حال در ابتدا باید کلیدها رد و بدل شده باشند. علاوه بر این، برخی از کاربردهای ویژه رمزنگاری (همچون احراز هویت)، در این روش رمزنگاری ممکن نیستند.
رمزنگاری نامتقارن
الگوریتم رمزنگاری نامتقارن (یا رمزنگاری کلید عمومی-خصوصی) روشی بسیار جدید بوده و بر پایه توابع یک طرفه استوار است. نحوه کار الگوریتم رمزنگاری مبتنی بر کلید عمومی-خصوصی، به این صورت است که هر فرد برای ارتباط با سایر اشخاص، یک جفت کلید عمومی و خصوصی برای خود ایجاد میکند که کلید عمومی (public key) برای رمزگذاری، و کلید خصوصی برای رمزگشایی پیام مورد استفاده قرار میگیرد (قفلی را تصور کنید که یک کلید مخصوص قفل کردن و یک کلید مخصوص باز کردن دارد).
کلیدهای عمومی و خصوصی تولید شده توسط این الگوریتم، به گونهای هستند که هر پیام رمزنگاری شده با کلید عمومی، تنها با کلید خصوصی متناظر آن رمزگشایی میگردد. یکی از مزایای روش رمزنگاری نامتقارن نسبت به روش متقارن، این است که کلید عمومی را میتوان بین عموم منتشر کرد تا رمزنگاری دادهها برای همه اعضای شبکه ممکن باشد (بدون اینکه امنیت پیام های ارسالی به خطر بیفتد)؛ اما کلید خصوصی را باید نزد خود مخفی نگه داشت.
عملکرد کلید خصوصی و عمومی را میتوان به صندوقی تشبیه کرد که دارای دو کلید است. یکی از کلیدها تنها به صورت ساعتگرد کار میکند و دیگری فقط به صورت پادساعتگرد عمل خواهد کرد. فرض کنید کلید خصوصی در قفل این صندوق به صورت ساعتگرد میچرخد و کلید عمومی تنها به صورت پادساعتگرد قابل چرخاندن است. واضح است که کلیدی به جز این دو کلید نه به صورت ساعتگرد و نه به صورت پادساعتگرد نمیتواند در قفل حرکت کند. علاوه بر این قفل صندوق یک قفل سه حالته است. در چپ قفل، بالا باز و در سمت راست دوباره قفل میشود. احتمالاً موضوع کمی برایتان گنگ شد؛ یعنی پیامی که با کلید عمومی رمزنگاری شده را میتوان با کلید خصوصی رمزگشایی کرد، و پیامی که با کلید خصوصی رمزگذاری شده را نیز میتوان با کلید عمومی رمزگشایی کرد؟ پاسخ مثبت است. وقتی از کلید خصوصی و عمومی صحبت میکنیم، در حقیقت از یک جفت کد رمزنگاری صحبت میکنیم که فرقی نمیکند کدام را نزد خود نگه دارید و کدام را منتشر کنید. از هر کلیدی که برای رمزنگاری پیام استفاده کنید، کلید دیگر قادر به رمزگشایی آن پیام است.
حال دوباره به توضیحات بخش مربوط به مسأله بیزانتین رجوع کنید. خواهید دید که با بکارگیری رمزنگاری نامتقارن در ارسال پیام (یا تبادل داده)، هم مسأله هویت ژنرالهای نفوذی و هم دستکاری پیام توسط پیک های خیانتکار به طور کامل برطرف خواهد شد. چرا که حالا پیام ارسالی برای هر یک از ژنرالها، با کلید عمومی مربوط به او رمزگذاری شده و تنها با کلید خصوصی خود او قابل رمزگشاییست. پس دیگر پیکها نخواهند توانست محتویات پیام را مشاهده کرده یا آن را تغییر دهند. همچنین هر ژنرالی مجبور است پیام را با کلید خصوصی خود امضا کرده و برای سایرین ارسال کند؛ این بدان معنیست که هویت کسی که پیام را میفرستد، به خود پیام پیوست شده و در این صورت اگر ژنرال خرابکاری در میان جمع باشد، دستش رو خواهد شد.
تمامی آنچه که در این روش توضیح دادیم، همان چیزیست که در پروتکل های انتقال امن دادههای فرامتنی (HTTPS) به کار گرفته میشود و شما هر روز هنگام استفاده از مرورگر اینترنت خود و چک کردن سایتهایی که از این پروتکل پیروی میکنند، بدون اینکه دقت کنید، با آن تعامل دارید. بدین ترتیب اطلاعات ارسالی از سرور به شما و بلعکس، در میانه راه توسط سرویس دهندگان اینترنت یا افراد سوءاستفاده گر، قابل استفاده نخواهد بود؛ چرا که تمامی دادهها به صورت رمزنگاری شده انتقال مییابند و تنها در مقصد قابل رمزگشایی هستند (از این به بعد به قفل کوچک سبز رنگ در نوار آدرس مرورگر خود توجه بیشتری داشته باشید!). در دهه ۹۰ میلادی نیز برنامهای نرم افزاری تحت عنوان PGP (pretty good privacy) برای ارتباطات امن ایمیلی ابداع شد که میتوان آن را اولین استفاده رسمی از الگوریتم رمزنگاری نامتقارن در فضای اینترنت دانست. تا به اینجای کار تمامی مقدمات لازم برای فهم منطق شکل گیری و کارکرد بلاک چین را فرا گرفتهایم. در ادامه این مقاله قصد داریم ضمن ارائه تعریف دقیقی از واژه بلاک چین ، نحوه کارکرد دقیق آن را بیان کنیم.
بخش پنجم: چهار تعریف برای بلاک چین
در این مرحله توجه شما را به تعریف دقیق اصطلاح بلاک چین و توضیح کاربردهای متفاوت آن جلب می کنیم. برای معرفی جنبههای مختلف بلاک چین ، میتوان چهار تعریف زیر را برای آن ارائه داد:
- بلاک چین به عنوان یک ساختمان داده
- بلاک چین به عنوان یک الگوریتم
- بلاک چین به عنوان مجموعهای از چند فناوری
- بلاک چین به عنوان عبارتی برای توصیف تمامی سیستم های همتا به همتای توزیع شده با حوزه کاربردی مشترک
بلاک چین به عنوان یک ساختمان داده
مفهوم ساختمان داده (data structure) در علوم کامپیوتر و مهندسی نرم افزار، روشی برای سازماندهی دادهها بدون در نظر گرفتن محتوای اطلاعاتی ذاتی آنهاست. ساختمان داده را میتوان همچون نقشه معماری یک ساختمان درنظر گرفت. نقشه معماری یک ساختمان، نحوه جداسازی و ایجاد ارتباط میان فضاها از طریق دیوارها، طبقات و پله ها را بدون در نظر گرفتن کاربرد ذاتی آنها مشخص مینماید. وقتی از بلاک چین به عنوان یک ساختمان داده صحبت می کنیم، در حقیقت به دادههایی اشاره داریم که در کنار هم قرار گرفته و یک بلاک را تشکیل میدهند که این بلاک ها نیز با مکانیزم خاصی همچون زنجیر به یکدیگر متصل شده و بلاک چین (زنجیره بلوک) را تشکیل میدهند.
میتوان این بلاکها را بسیار شبیه به صفحات یک کتاب دانست. وقتی به کتاب بنگریم، میبینیم که واژهها و جملات نقش همان اطلاعات و دادههای ذخیره شده را دارند. این اطلاعات بجای درج شدن روی یک طومار بلند بالا، در صفحات مختلف کتاب چاپ شدهاند. صفحات نیز از طریق موقعیت خاص خود در کتاب، از طریق فصلها، بخشها و شماره صفحات، به یکدیگر متصل میشوند. اگر بخواهید اطمینان حاصل کنید که صفحهای از کتاب حذف شده یا نه، میبایست توالی شماره صفحات را مورد بررسی قرار دهید. علاوه بر این، اطلاعات درج شده در صفحات نیز همچون خود صفحات کتاب، مرتب سازی شدهاند. این مرتب سازی مهمترین بخش کار است که باید به طور کامل رعایت شود. دقت داشته باشید که مرتبط سازی بلاکهای داده در یک ساختمان داده، با استفاده از یک سیستم شماره گذاری بسیار مخصوص حاصل میشود که با شماره گذاری کتابهای معمولی بسیار متفاوت است.
بلاک چین به عنوان یک الگوریتم
در علم نرم افزار، اصلاح الگوریتم به مجموعه دستورالعملهای متوالی اجرا شونده توسط کامپیوتر اطلاق میگردد. این دستورالعملها اغلب دربردارنده ساختمانهای داده هستند. وقتی از بلاک چین به عنوان یک الگوریتم صحبت میکنیم، به مجموعهای از دستورالعملهای متوالی اشاره داریم که بر محتوای اطلاعاتی بسیاری از ساختمانهای دادهی مرتب سازی شده و توزیع شده در یک سیستم همتا به همتا (همچون یک سیستم رای گیری دموکراتیک) تأثیر میگذارند.
بلاک چین به عنوان مجموعهای از چند فناوری
وقتی از بلاک چین به عنوان مجموعهای از فناوریها صحبت میکنیم به ترکیبی از ساختمان داده بلاک چینی ، الگوریتم بلاک چینی ، و همچنین فناوریهای رمزنگاری و امنیت اشاره داریم که چنین ترکیبی ، یکپارچه سازی سیستمهای همتا به همتای کاملاً توزیع شده را (بدون توجه به هدف کاربردی این برنامه) ممکن خواهد ساخت.
بلاک چین به عنوان یک چتر مفهومی برای توصیف تمامی سیستم های همتا به همتای توزیع شده با حوزه کاربردی مشترک
میتوان بلاک چین را به عنوان واژهای مادر برای اشاره به تمامی سیستمهای همتا به همتای توزیع شده که از مجموعه فناوریهای بلاک چینی استفاده میکنند نیز در نظر گرفت. توجه داشته باشید که در این تعریف، بلاک چین بجای اشاره به یک واحد نرم افزاری که بخشی از یک سیستم توزیع شده است، به کلیت مفهوم سیستمهای کاملاً توزیع شده اشاره دارد.
بخش ششم: اجزای تشکیل دهنده بلاک چین
واژه بلاک چین ترکیبی از دو واژه بلاک (Block) و زنجیر (Chain) است؛ بلاکهایی برای ثبت و ذخیره دادهها (به عنوان مثال دادههای مالی، سوابق علمی، سوابق پزشکی، حقوق مالکیت معنوی، بیمه و …) و زنجیرهای که باعث حفظ ارتباط بلاکها، و تغییرناپذیری این دادهها میگردد.
برای اینکه بدانیم بلاک چین دقیقا چگونه کار می کند، باید نگاهی به تک تک اجزاء مفهومی تشکیل دهنده آن بیندازیم. هر بلاک چین شامل اجزاء زیر است:
در بخش های بعدی ابتدا اجزاء مختلف بلاک چین را به صورت جداگانه بررسی کرده و سپس ارتباط آنها با یکدیگر را بیان مینماییم.
بخش هفتم: تراکنش های بلاک چین
تراکنشها وقتی از تراکنشهای بلاک چینی صحبت میکنیم، منظورمان تراکنشهاییست که بدون نظارت و تایید یک نهاد واسطه مانند بانک، مستقیماً میان دو کاربر شبکه انجام شده و در عین حال از امنیت کافی برخوردار باشد. در دنیای دادههای اینترنتی و موجودیتهای دیجیتالی، با حذف واسطه متمرکز، دو چالش اساسی به وجود خواهد آمد. اولین چالش، اثبات مالکیت کاربران بر داراییهای دیجیتالی و دومین چالش، جلوگیری از خرج مجدد دارایی (Double Spending) است. در ادامه با اشاره به بلاک چین عمومی بیت کوین، چگونگی حل این دو چالش را توضیح خواهیم داد.
اثبات مالکیت
ابتدا یک سیستم متمرکز سنتی همانند بانک را درنظر بگیرید. بانک در ازای احراز هویت افراد، برای آنها حسابی ایجاد کرده و آنها را قادر میسازد تا با استفاده از کارتهای بانکی (که رمز آن تنها در اختیار خود فرد است) از موجودی حساب خود استفاده کنند. به بیان دقیقتر هر شخص صاحب حساب، با در اختیار داشتن کارت بانکی و رمز آن، مالکیت خود را بر دارایی موجود در حساب اثبات میکند. همچنین بانک بعد از انجام هر تراکنش توسط شخص صاحب کارت، نقش واسطه ایفا کرده، مبلغ تراکنش را از حساب فرستنده کسر و به حساب گیرنده اضافه میکند. بدین ترتیب در سیستم بانکی افراد امکان خرج مجدد یک دارایی را نخواهند داشت. البته دقت داشته باشید که در سیستمهای متمرکز، سرنوشت کل پولهای در جریان، در دست نهاد واسط (بانک) بوده و صحت تراکنشها در گرو اعتماد اولیه ما به این سیستم است.
اما در بلاک چین بیت کوین، داراییهای دیجیتالی (یا بیت کوینها) خود، از جنس تراکنش بوده و تنها در کیف پولهای دیجیتالی ذخیره میشوند و نمایانگر هیچ معادل فیزیکی در دنیای واقعی نیستند. در این سیستم، مالکیت یک سکه یا پول دیجیتالی توسط یک امضای دیجیتالی مشخص میشود. انتقال پول (بیت کوین) در این سیستم اینگونه است که مالک اولیه، با امضای هش یک تراکنش قبلی (موجود در کیف پول خود) از طریق کلید خصوصی و اضافه کردن کلید عمومی صاحب جدید آن و الحاق این اطلاعات به یکدیگر، مقداری از موجودی حاصل از تراکنش های قبلی در کیف پول خود را به فرد دیگری انتقال میدهد (برای درک بهتر این فرایند پیشنهاد میکنیم بخش مربوط به رمزنگاری نامتقارن را از همین مقاله مجددا مطالعه کنید). فرد دریافت کننده نیز میتواند با بررسی امضای دیجیتال، سلسه مالکیت مبلغ انتقال یافته را بررسی کرده و با ارائه کلید خصوصی خود، موجودی انتقال یافته را خرج کند. بنابراین میتوان گفت که مالکیت داراییهای دیجیتالی در بلاکچین، تنها با ارائه کلید خصوصی (و امضای تراکنش) اثبات میگردد.
خرج مجدد دارایی (Double Spending)
مسأله دیگر آن است که فرد دریافت کننده تراکنش، مطمئن باشد که فرستنده، تراکنش را دوبار یا چند بار خرج نکرده باشد. برای حل این مشکل نیازمند آنیم که از اطلاعات تمامی تراکنشها از ابتدا تا آن تراکنش باخبر باشیم. بنابراین در بلاک چین بیت کوین، تمامی اطلاعات تراکنشها از ابتدا تا به امروز، به صورت عمومی منتشر میشود. علاوه بر این، نودهای شبکه برای تشخیص صحت تراکنش و جلوگیری از خرج مجدد دارایی، نیازمند نوعی اجماع هستند تا با اتکا بر آن بتوانند بر روی صحت اطلاعات یک زنجیره از تراکنشها (به ترتیب رخداد و انتشار در شبکه) با یکدیگر توافق نمایند (در ادامه انواع روشهای اجماع میان نودهای شبکه را توضیح خواهیم داد). بنابراین تا زمانی که اکثریت نودهای شبکه درستکار و صادق باشند، امکان خرج مجدد دارایی (به صورت سهوی یا عمدی) وجود نخواهد داشت.
تا به اینجای کار از اصول منطقی کارکرد تراکنشهای بلاک چینی مطلع شدید؛ اما هنوز هم ماهیت تراکنشها برایمان قدری مجهول است. با بررسی اجزای تشکیل دهنده تراکنش در شبکه بیت کوین، این موضوع را شفاف میکنیم. پیشتر اشاره کردیم که در بلاک چین بیت کوین، داراییهای دیجیتالی (یا بیت کوینها) از جنس تراکنش هستند. یعنی هر تراکنش، دقیقاً معادل پول نقدیست که از فرستنده به گیرنده منتقل میشود. برای درک بهتر، تراکنشهای دیجیتالی شبکه بانکی سنتی را در نظر بگیرید: تراکنشی نزد بانک انجام میشود و موجودی از حساب فرستنده کسر و به حساب گیرنده افزوده میشود. اما در شبکه بیت کوین، تراکنش مستقیماً از فرستنده به گیرنده ارسال میشود؛ فرستنده آن را با کلید خصوصی خود امضا، و با کلید عمومی (در واقعیت با آدرس گیرنده) گیرنده، رمزنگاری میکند. گیرنده نیز تراکنش را دریافت کرده و با ارائه کلید خصوصی خود (امضای تراکنش) قادر است این تراکنش را همچون پول نقد، خرج کند. بنابراین تراکنشهای بلاک چینی ماهیتی شبیه چک پول دارند و هر تراکنش، نمایانگر ارزشی بیرون از خود نیست؛ بلکه به خودی خود ارزشمند است. به مثال زیر دقت کنید:
هر تراکنش شبکه بیت کوین از مجموعهای ورودی و خروجی تشکیل شده است. ورودی ها (Input)، همان تراکنشهای دریافتی هستند که هنوز خرج نشدهاند (یعنی در هیچ تراکنش دیگری به عنوان ورودی استفاده نشدهاند) که به آنها اصطلاحاً UTXO) Unspent Transaction Output) یا «خروجی یک تراکنش قبلی خرج نشده» میگوییم. خروجیهای تراکنش (Output) نیز در حقیقت شامل مجموعه آدرسهای گیرنده یا گیرندگان تراکنش هستند. در مثال بالا، باب از یک تراکنش ۵۰ بیت کوینی خرج نشده، به عنوان ورودی تراکنش A استفاده کرده و در قسمت خروجیها، آدرسی از آلیس (گیرنده تراکنش) و آدرس دیگر متعلق به خود را قرار داده است تا بعد از انتقال ۰.۵ بیت کوین به آلیس، ۴۹.۵ بیت کوین باقیمانده به آدرس خودش بازگردد.
لازم به ذکر است که اگر باب آدرس خود را به عنوان خروجی دوم در این تراکنش قرار نمیداد، باقیمانده ۵۰ بیت کوین، به عنوان کارمزد، به آدرس ماینری که این تراکنش را تأیید و بلاک حاوی آن را استخراج کرده انتقال مییافت. همچنین آلیس برای انجام تراکنش B و انتقال بیت کوین به یکی از کارمندانش، از ۳ ورودی (شامل تراکنش خرج نشدهای که از باب دریافت کرده است) استفاده کرده و آدرس بیت کوین کارمندش را به عنوان تنها خروجی این تراکنش وارد کرده است. پس اکنون متوجه شدیم که هر تراکنش بیت کوین میتواند شامل چندین ورودی و خروجی باشد و مقادیر مختلف بیت کوین، میتوانند با یکدیگر ترکیب شده و یا تقسیم شوند.
لازم به توضیح است که مدل فوق تنها مربوط به بلاک چین بیت کوین و بلاک چین های شبیه بیت کوین است (مانند بیت کوین کش و بیت کوین اس وی)؛ اما به عنوان مثال در بلاک چین اتریوم ، مدل ذخیره دارایی ها مبتنی بر حساب است. هر آدرس اتریوم به یک حساب اتریوم مرتبط شده و دارایی ها در موجودی حساب ذخیره میشود نه در UTXO (درست شبیه به حسابهای بانکی).
بخش هشتم: کاربران بلاک چین
شبکه بلاک چین مبتنی بر حفظ حریم خصوصی کاربران خود است. اگر نگاهی به سیر فناوریهای دیجیتال از آغاز پیدایش اینترنت تا کنون داشته باشیم، میدانیم که سیستمهای مالی همواره با دو چالش اساسی از سوی کاربران و حکومتها دست به گریبان بودهاند. از یک سو کاربران مایل به حفظ حریم خصوصی خود بوده و راضی به انتشار اطلاعات هویت و تراکنشهای خود نزد بانکها نیستند؛ و از سوی دیگر حکومتها برای مبارزه با جرائم مالی و پولشویی، به رهگیری تراکنشهای کاربران نیاز دارند.
روشی که بلاک چین های عمومی برای حفظ حریم خصوصی کاربران خود استفاده میکنند، انتشار عمومی اطلاعات تراکنشها در عین ناشناس ماندن طرفین تراکنش است. به عنوان مثال در شبکه بیت کوین به جای اینکه تراکنشها بین دو شخص با هویتهای مشخص جابجا شود، بین آدرسهای بیت کوین جابجا میشوند. اطلاعات تمامی تراکنش ها در بلاک چین ، در اختیار عموم قرار دارند ولی تنها چیزی که از این تراکنشها مشخص است، انتقال بیت کوین از یک آدرس به یک آدرس دیگر است. هویت طرفین تراکنش در این روش کاملاً مخفی است. این روش حفظ حریم خصوصی، تقریباً مشابه روش به کار گرفته شده در بازار های معاملاتی بورس است. بسیاری از آنها، اطلاعات زمانی و مبالغ مبادله شده در بازار خود را به صورت عمومی منتشر میکنند، اما هیچ اطلاعاتی از هویت افراد شرکت کننده فاش نمیکنند.
بنابراین روش به کار رفته در بلاک چین را میتوان پاسخی به چالشهای حفظ حریم خصوصی در اینترنت دانست؛ یعنی «عمومی بودن اطلاعات، در عین حفظ حریم خصوصی؛ شناسایی و رهگیری تراکنشها ، در عین ناشناس ماندن». مقامات قضایی و دولتی در صورت مشکوک بودن به تراکنشهای یک یا چند آدرس، میتوانند اطلاعات هویتی کاربر را از سرویس دهندگان کیف پول یا صرافیهای رمز ارز دریافت کنند. ضمن اینکه کاربران نیز ضمن حفظ حریم خصوصی خود، در صورت متهم شدن به اعمال مجرمانه میتوانند با افشای سابقه تراکنشهای خود به صورت داوطلبانه، از خود رفع اتهام کنند.
بخش نهم: بلاک ها در بلاک چین
تا کنون مفهوم کلی بلاک ها در بلاک چین را میدانیم؛ اجازه دهید همینجا قدری توقف کنیم و از خود بپرسیم لزوم وجود بلاک در بلاک چین چیست؟ مگر بلاک چین یک دیتابیس ایمن برای نگهداری و انتقال دادهها نیست؟ پس چه لزومی دارد که این داده ها در بلاک ها جمع آوری شده و سپس بلاک ها را به هم مرتبط سازیم؟ چرا این ارتباط میان تک تک داده ها برقرار نشود و اصطلاحاً دیتا چین (datachain) نداشته باشیم؟
پاسخ بسیار ساده است: فلسفه وجودی بلاک چین، حفظ ارتباط زمانی دادهها و تغییرناپذیری آنهاست که این امر تنها با بکارگیری ساختمان دادهای شامل دادهها و هش آنها امکان پذیر است. این ساختمان داده همان بلاک نام دارد. میتوانیم دادهها را یک به یک ذخیره کرده و روی هر یک از آنها عملیات رمزنگاری و اجماع شبکه را اعمال کنیم. اما مهمترین مسأله، این است که این ساختار چقدر قابلیت استفاده دارد و اصطلاحاً مقیاس پذیری آن چقدر است؟ در حقیقت فرقی نمی کند که بلاک های بلاک چین شما حاوی یک تراکنش باشد، یا هزاران تراکنش؛ در هر دو حالت شما با بلاک چینی روبرو هستید که از مکانیزمی مشابه برای ایمن سازی دادهها استفاده کرده و فقط ساختمان داده آن با دیگری متفاوت است (هر بلاک ساختمان دادهای است که موقعیت زمانی تراکنشها در بلاک چین و همچنین ارتباط آنها با یکدیگر را مشخص میسازد). اما برای مقیاس پذیری بیشتر و رقابت پذیری بلاک چین با سایر شبکههای سنتی انتقال ارزش (همچون پی پال یا ویزا)، نیازمند آنیم که به بلاکهایی با ظرفیت بیشتر اندیشیده و دادهها را به صورت بستههای چندتایی ذخیره کنیم.
پارامترهای مشترک در همه بلاکهای یک بلاک چین، حجم بلاک (block size) و زمان بلاک (block time) هستند. حجم بلاک، نمایانگر میزان ظرفیت هر بلاک برای ذخیره سازی اطلاعات است. به عنوان مثال حجم بلاک ها در بلاک چین بیت کوین ۱ مگابایت (البته پس از اجرای آپدیت سگویت، این میزان دچار تغییراتی شد که در مقالهی مربوط به سگویت، به تشریح آن پرداختهایم)، و در بلاک چین بیت کوین کش ۸ مگابایت است. همچنین زمان بلاک از جمله پارامترهای ثابتی است که توسط کد اولیه بلاک چین تعیین گردیده و در هر بلاک چین ، بنا به کاربردها و ملاحظات گوناگون، متفاوت است. زمان بلاک مفهومیست که به فاصله زمانی متوسط میان ساخت دو بلاک متوالی در شبکه اطلاق میگردد. به عنوان مثال زمان ساخت بلاک در بلاک چین بیت کوین به طور میانگین ۱۰ دقیقه است.
به طور کلی هر بلاک بیت کوین از دو بخش تشکیل شده است:
- بدنه بلاک (Body)
- سربرگ بلاک (Header)
بدنه هر بلاک شامل تراکنش ها یا دادههای موجود در آن بلاک است؛ هر تراکنش شامل اطلاعاتی نظیر آدرسهای دیجیتالی فرستنده (ورودیها) و گیرنده (خروجیها) و مبلغ تراکنش است. اما هدر یا سربرگ بلاک، شامل اطلاعاتیست که هر بلاک را از سایر بلاک های زنجیره بلاک چین متمایز ساخته و آن را غیر قابل تغییر میسازد؛ در اینجا سربرگ بلاک های بلاک چین بیت کوین را به عنوان نمونه بررسی میکنیم؛ سربرگ هر بلاک بیت کوین شامل اطلاعات زیر است:
- ورژن (Version) یا نسخه نرم افزار مورد استفاده توسط ماینر
- برچسب زمانی (Timestamp)
- هش بلاک قبلی (Previous Block Hash)
- ریشه درخت مرکل (Merkle Root)
- هش تارگت (Target Hash) یا Bits
- عدد نانس (Nonce)
اگر این اصطلاحات برای شما نا آشناست، نگران نباشید؛ در ادامه آنها را به تفصیل شرح خواهیم داد. اطلاعات موجود در سربرگ بلاک، در حقیقت همان اجزائی هستند که زنجیره (chain) را میسازند.
ورژن (Version) یا نسخه نرم افزار مورد استفاده توسط ماینر
دستگاه های ماینر امروزه از نرم افزارهای ماینینگ گوناگونی برای استخراج بیت کوین استفاده میکنند؛ اما همگی آنها یک پروتکل ثابت و مشترک دارند و همین پروتکل مشترک امکان همکاری آنها با یکدیگر را میسر میسازد. نسخه ماینر مورد استفاده، یکی از اطلاعاتی است که توسط خود شبکه در قسمت هدر بلاک ثبت میشود.
برچسب زمانی (Timestamp)
برچسب زمانی یا timestamp موجود بر روی هر بلاک ، در واقع نشان دهنده زمانی است که ماینر ، تراکنش های تأیید نشده را از استخر حافظه یا mempool جدا کرده و آنها را در یک بلاک کاندید قرار میدهد. بنابراین «زمان تشکیل بلاک کاندید»، همان برچسب زمانی هک شده بر روی سربرگ بلاک است. برچسب زمانی در حقیقت نوعی ثانیه شمار است که زمان تشکیل بلاک کاندید را از تاریخ مبدأ ۱۹۷۰-۰۱-۰۱ ۰۰:۰۰:۰۰ UTC محاسبه میکند.
هش بلاک قبلی (Previous Block Hash)
یکی دیگر از اطلاعاتی که در قسمت هدر یک بلاک جای دارد، هش بلاک قبلی است. همانطور که گفتیم، هش (Hash) در واقع همان خروجی رمزنگاری شده از اطلاعات موجود در یک بلاک است و قرار گرفتن هش یک بلاک در سربرگ بلاک بعدی ، عاملی است که اتصال زنجیرهوار بلاک ها در بلاک چین و تغییرناپذیری آنها را میسر میکند (درست مانند همان مکانیزمی که در دفتر کل حسابداری توضیح دادیم)؛ به این صورت که ایجاد هر تغییر کوچکی در اطلاعات یک بلاک ، باعث میشود هش خروجی به کلی تغییر کرده و در نتیجه این بلاک، نامعتبر و جعلی تلقی شود؛ چرا که هش این بلاک دیگر با هشی که در بلاک بعدی ثبت شده است (Previous Block Hash) مطابقت ندارد.
ریشه درخت مرکل یا Merkle root
درخت مرکل نوعی ساختار داده برای ذخیرهسازی تراکنش ها در بلاک های بیت کوین است. در این ساختار، از هر تراکنشی که بر روی یک بلاک ثبت میشود به صورت جداگانه هش گرفته میشود. این هش ها سپس به صورت دو به دو در کنار یکدیگر قرار گرفته و هش آنها نیز محاسبه میگردد. این روند یک نمودار درختی را تداعی کرده و تا جایی ادامه پیدا میکند که به یک هش واحد برای کل تراکنش های موجود در یک بلاک دست پیدا کنیم. این هش واحد، ریشه درخت مرکل نام دارد. در بلاک چین بیت کوین، ریشه درخت مرکل به عنوان نماینده تمامی تراکنشهای یک بلاک، در هدر (سربرگ) بلاک ذخیره میشود.
پس به طور خلاصه، یک درخت مرکل متشکل از ساختارهای درختی باینری (دودویی) از دادهها است؛ به این صورت که هر درخت از مجموعهای از برگها، گرههای میانی، و گره ریشه تشکیل شده که هر گره، حاوی هش گرههای زیرشاخه خود است. اجزای درخت مرکل عبارتند از:
- تعداد زیادی برگ در انتهای درخت که حاوی هش دادههای اولیه یا همان تراکنشها هستند.
- مجموعهای از گرههای میانی که هر گره، حاصل درهم سازی (هش) دو نود فرزند خود است.
- یک گره ریشه یکتا که از درهم سازی دو گره فرزند خودش تشکیل شده و نشان دهنده رأس درخت است.
برای آشنایی با کاربرد درخت مرکل در بلاک چین بیت کوین، این مقاله را مطالعه کنید:
هش تارگت (Target Hash)
یکی از مهمترین قسمتهایی که برای درک منطق الگوریتم اثبات کار در شبکه بیت کوین باید از آن آگاهی داشته باشید، هش هدف یا هش تارگت است. هش تارگت در واقع همان پارامتری است که ماینرها را به انجام محاسبات ریاضی وامیدارد. به این صورت که شرط از پیش تعیین شده شبکه برای پذیرش یک بلاک جدید، این است که ارزش عددی هش سربرگ این بلاک، باید کوچکتر یا مساوی با مقدار هش تارگت شود. پس بطور خلاصه تا اینجا فهمیدیم که ماینرها برای ایجاد هر بلاک جدید در شبکه بیت کوین، ابتدا تراکنشها را در یک بلاک کاندید گردآوری کرده و سپس از سربرگ این بلاک هش میگیرند تا شرط مورد نظر شبکه یعنی کوچکتر شدن مقدار هش از هش تارگت را برآورده کرده و بلاک جدید را به ثبت برسانند. اما در اینجا دو سوال پیش میآید: اول اینکه هش تارگت در هر بلاک چگونه تعیین میشود؟
پاسخ به این سوال، نیازمند توضیح مکانیزم دیگری به نام سختی شبکه (Difficulty) است؛ سختی شبکه، پارامتری است که هر دو هفته یک بار (یا به بیان دقیقتر پس از هر ۲۰۱۶ بلاک) به صورت خودکار توسط شبکه بروزرسانی میشود. در واقع سختی، مکانیزمی است که با کم و زیاد کردن مقدار هش تارگت، محاسبات ماینرها برای دستیابی به هش صحیح و قابل قبول را سختتر یا آسانتر میکند.
مبنای عملکرد مکانیزم سختی، اینگونه است که شبکه پس از ساخت هر ۲۰۱۶ بلاک، زمان میانگین ساخت بلاک ها را اندازه گیری کرده و آن را با ایده آل خود (که همان فاصله زمانی ۱۰ دقیقهایست) مقایسه میکند. در صورتی که زمان میانگین ساخت بلاک ها از ۱۰ دقیقه کمتر باشد، مکانیزم سختی، مقدار هش تارگت را کوچکتر کرده و میزان محاسبات لازم برای دستیابی به هش صحیح را افزایش میدهد (زیرا با کاهش مقدار هش تارگت ، بازه هش های صحیح برای ماینرها کوچکتر شده و دستیابی به آن محاسبات بیشتری را طلب میکند). همچنین در صورتی که پس از ساخت ۲۰۱۶ بلاک اخیر، زمان میانگین ساخت بلاک ها از ۱۰ دقیقه بیشتر باشد، مکانیزم سختی به طور خودکار، مقدار هش تارگت را افزایش داده و میزان محاسبات مورد نیاز برای دستیابی به هش صحیح را کاهش میدهد (زیرا با بزرگتر شدن مقدار هش تارگت، بازه هش های صحیح برای ماینرها بزرگتر شده و احتمال دستیابی آنها به هش صحیح افزایش مییابد؛ از این رو به طور میانگین ، محاسبات کمتری انجام خواهد شد).
همانطور که در توضیح تابع هش گفتیم، هر داده ورودی یکتا، هش خروجی منحصر به فرد خود را دارد. از طرفی میدانیم که اطلاعات موجود در سربرگ یک بلاک مانند نسخه نرم افزار ماینر، برچسب زمانی، ریشه درخت مرکل، هش بلاک قبلی و حتی هش تارگت ، همگی مقادیر ثابتی هستند که هش آنها به راحتی محاسبه میشود. پس با جمع این دو گزاره، در مییابیم که هش سربرگ بلاک همواره مقدار ثابتی خواهد داشت. حال سوال دوم مطرح میشود: این که با توجه به ثابت بودن محتویات سربرگ بلاک، ماینرها چگونه باید هش سربرگ را کوچکتر از مقدار هش تارگت بدست آورند؟ پاسخ این سوال در ششمین و آخرین جزء بلاک بیت کوین نهفته است؛ جزئی که برخلاف سایر اجزا، دارای یک مقدار متغیر است که باید توسط ماینر ها پیدا شود. این جزء متغیر ، عدد نانس نام دارد.
درباره سختی شبکه و هش تارگت بیشتر بخوانید:
عدد نانس (Nonce)
کلمه Nonce مخفف عبارت «Number Only Used Once یا عددی که تنها یک بار استفاده میشود» است. نانس در واقع آخرین حلقه مفقوده از مکانیزم اثبات کار است؛ یعنی همان عددی که ماینر ها وظیفه پیدا کردن آن را بر عهده دارند؛ یک عدد متغیر که توسط ماینر ها بارها و بارها به اطلاعات موجود در سربرگ بلاک اضافه شده و پس از اضافه شدن آن، از این سربرگ هش گرفته میشود (یک فرایند آزمون و خطا که به دفعات بسیار زیاد توسط کامپیوترها انجام میگیرد)؛ هشی که مقدار آن باید کوچکتر یا مساوی هش تارگت باشد.
بنابراین تمام کاری که ماینر ها باید انجام بدهند به این ترتیب است: حدس زدن یک عدد به عنوان عدد نانس ، اضافه کردن آن به سایر اطلاعات موجود در هدر بلاک و هش گرفتن از کل این اطلاعات. در صورتی که مقدار این هش کوچکتر مساوی هش تارگت باشد، به معنی آن است که معادله به درستی حل شده است؛ اما اگر این هش از هش تارگت بزرگتر باشد، ماینر باید عدد دیگری را جایگزین عدد نانس قبلی کند؛ تا جایی که بلاخره هش مورد نظر یافت شود.
البته این فرآیند ممکن است کمی ساده به نظر برسد؛ اما حقیقت این است که دستیابی به این هدف در واقع اصلاً کار راحتی نیست و توان پردازشی بسیار زیادی را میطلبد؛ علیالخصوص که سختی شبکه بیت کوین در حال حاضر بسیار بالاست و به همین دلیل، هش تارگت نیز بسیار کوچک است. بنابراین احتمال این که ماینری بتواند در اولین حدسهای خود عدد نانس را بیابد عملاً غیرممکن است و ماینرها باید برای این کار تعداد زیادی از اعداد تصادفی را امتحان کنند. جالب است که بدانید امروزه قدرت دستگاههای تخصصی ماینینگ، بر اساس تعداد هش بر ثانیه بیان میشود. این دستگاهها در واقع کامپیوترهایی هستند که به طور خاص، تنها یک عملیات را انجام میدهند: هش SHA256. درباره الگوریتم هش SHA256 ، در بخش «رمزنگاری و هش» توضیح دادیم.
درباره نانس بیشتر بخوانید:
بخش دهم: نقش نودها (ماینرها) در بلاک چین
هر یک از مشارکت کنندگان در حفظ شبکه بلاک چین، یک نود نام دارد. نودها کامپیوترها یا سرورهایی هستند که هر کدام یک نسخه از تمامی اطلاعات شبکه را در اختیار داشته و وظیفه اعتبار سنجی دادهها (یا همان تراکنش ها) و کسب اجماع مورد نظر برای محافظت از شبکه در برابر حملهها و کلاهبرداری ها را بر عهده دارند. روش های اجماع در بلاک چین های گوناگون متفاوت است اما برای سادگی، در این قسمت نیز بلاک چین بیت کوین را مد نظر قرار میدهیم که الگوریتم اجماع آن گواه اثبات کار یا PoW نام دارد.
در این روش نودها با توان پردازشی که در اختیار دارند، برای تایید تراکنشها و ساخت بلاکهای جدید، با یکدیگر رقابت میکنند. شاید بپرسید انگیزه نودها برای محافظت از شبکه چیست؟ این انگیزه از دو بخش تشکیل شده:
- پاداش شبکه
- کارمزد تراکنشها
طبق قراردادی از پیش تعیین شده در کد بیت کوین، اولین تراکنش در هر بلاک، یک تراکنش مخصوص است (اصطلاحاً تراکنش coin base) که در طی آن بیت کوین های جدیدی تولید شده و به استخراج کننده آن بلاک تعلق میگیرد. مبلغی که به عنوان جایزه و پاداش به استخراج کننده تعلق میگیرد، هم انگیزه ایست برای جذب نودها و استخراج کننده های بیشتر (که طبیعتاً منجر به افزایش امنیت و پایداری شبکه میشود) و هم راهیست برای صدور بیت کوین های جدید و تزریق آنها به مجموعه بیت کوین های در گردش.
از آنجا که هیچ نهاد مرکزی ای در این شبکه وظیفه عرضه بیت کوین های جدید را برعهده ندارد، این روش بهترین راه حل است. همانطور که استخراج طلا در دنیای واقعی، نیازمند صرف هزینه های بسیار و استفاده از ماشین آلات مخصوص است، استخراج بیت کوین نیز علاوه بر مصرف برق زیاد، به پردازندههای محاسباتی بسیار قوی نیاز دارد. در مورد استخراج طلا، این طلاهای استخراج شده هستند که به معدنچیان انگیزه تهیه ماشین آلات مخصوص و تحمل شرایط سخت کاری را میدهند؛ در مورد بیت کوین نیز صدور بیت کوین های جدید و اختصاص آن به استخراج کننده (به عنوان پاداش) است که باعث ایجاد انگیزه در استخراج کنندگان میشود.
علاوه بر این، یک انگیزه بزرگ دیگر نیز همان کارمزد تراکنشهای موجود در یک بلاک است که پس از استخراج، به استخراج کننده تعلق میگیرد. اگر در تراکنشی خروجی تراکنش از مقدار ورودی آن کمتر باشد، ما به التفاوت آن به عنوان کارمزد تراکنش در نظر گرفته میشود. بنابراین مقدار این کارمزد توسط فرستندگان تراکنش ها تعیین شده و اولویت تأیید تراکنش ها را برای ماینرها مشخص میسازد. به عبارت دیگر پاداش یک استخراج کننده، علاوه بر بیت کوین های جدید تولید شده در هر بلاک، شامل مجموع کارمزد تراکنش های موجود در آن بلاک نیز میباشد. مقدار کل بیت کوین های تولید شده و در گردش دارای سقف محدود ۲۱ میلیون BTC (واحد یک بیت کوین) است. از آنجا که پس از رسیدن به این مقدار، بیت کوین جدید دیگری در هنگام استخراج بلاکها تولید نمیشود، پاداش استخراج کنندگان تنها از طریق کارمزد تراکنشهای موجود در آن بلاک پرداخت میگردد.
لازم به ذکر است که تمامی مطالب گفته شده درباره ماینینگ، مربوط به شبکه بیت کوین بود؛ این درحالیست که در بسیاری از بلاک چین های دیگر، مکانیزم ماینینگ به شیوهای کاملاً متفاوت از بیت کوین اجرا میشود. به عنوان مثال برخی از پروژههای رمز ارز ، پیش از راه اندازی رسمی بلاک چین خود، همه یا بخشی از کوین های شبکه را پیش تولید (یا اصطلاحاً Premine) کرده و آنها را برای تأمین هزینههای پروژه پیش فروش میکنند.
اما روش کار ماینرها به چه صورت است؟ پس از انجام هر تراکنش جدید در شبکه، اطلاعات تراکنش های جدید در میان تمام نودهای شبکه توزیع میشود. هر نود، تراکنش های جدید را در یک بلاک کاندید قرار داده و توان پردازشی خود را صرف یافتن پاسخ معمای ریاضی الگوریتم اثبات کار میکند (همان هش صحیح و عدد نانس که در قسمت قبل توضیح دادیم). در واقع همه نودهای شبکه برای یافتن پاسخ این مسأله ریاضی با یکدیگر رقابت میکنند و هر ماینری که توان پردازشی بیشتری در اختیار داشته باشد، شانس بیشتری برای برنده شدن دارد.
در نهایت یک نود پاسخی برای بلاک خود یافته و اصطلاحاً بلاک جدید را استخراج (Mine) می کند. سپس این پاسخ را برای تمامی نودهای دیگر شبکه ارسال میکند. سایر نودها تراکنش های موجود در بلاک را بررسی کرده و در صورت اطمینان از صحت آنها و همچنین عدم وجود مشکل دابل اسپند (خرج مجدد دارایی)، این بلاک را تأیید (confirm) میکنند. سپس همه نودها آخرین بلاک استخراج شده را به زنجیره بلاکهای قبلی ذخیره شده در سیستم خود اضافه کرده و برای استخراج بلاک بعدی (که دربرگیرنده هش بلاک قبلی است) اقدام میکنند.
احتمالاً ذهنتان گرفتار این سوال است که انجام این مسابقه ریاضی ظاهراً بیهوده و صرف انرژی (برق) هنگفت برای فراهم ساختن توان پردازشی، دقیقاً چه لزومی دارد؟ چرا بلاک های جدید با یک رای گیری ساده در میان تمام نودهای شبکه ساخته نمیشوند؟ پاسخ این سوالات در مکانیزم اجماع شبکه نهفته است که در قسمت بعدی به آن میپردازیم.
بخش یازدهم: اجماع در بلاک چین
پیش از اختراع بیت کوین، نیک زابو ایده پروژهای به نام بیت گلد (BitGold) را مطرح کرد که شباهتهای بسیار زیادی با بیت کوین کنونی داشت. اما پروژه بیت گلد یک نقطه آسیب پذیر داشت و آن، روش اجماع نودهای شبکه بود. زابو برای حل مسأله بیزانتین (که پیشتر آن را توضیح دادیم) در سیستمهای توزیع شده و همتا به همتا، بر کثرت نودها تکیه داشت؛ یعنی مادامی که تعداد نودهای درستکار شبکه در اکثریت باشند (بیش از ۵۰ درصد نودها درستکار باشند)، تراکنشها به درستی ثبت شده و بلاکها نیز به درستی تشکیل میشوند. اما این روش اجماع با مشکل بزرگی با نام حملات سیبیل (Sybil Attack) مواجه بود.
در حمله سیبیل، مهاجمان با ایجاد آدرسهای IP جعلی پرشمار و ایجاد هویت های گوناگون (مانند بیماری Sybil Dorsett)، بدون صرف هزینه خاصی، اکثریت نودهای شبکه را در اختیار میگیرند. به این ترتیب این مهاجمان در هنگام اجماع، نودهای واقعی (و درستکار) را به حاشیه میرانند. آنها با این کار میتوانند از دریافت یا ارسال بلاکها اجتناب ورزیده و از دسترسی سایر کاربران به شبکه جلوگیری کنند. آنها همچنین قادرند با انجام حمله ۵۱ درصدی، ترتیب تراکنشها را تغییر داده، از تایید شدن برخی آنها جلوگیری کنند. این اقدامات در نهایت راه را برای انجام تراکنشهای دابل اسپند (خرج مجدد دارایی) هموار میسازد.
پروژه بیت گلد به دلیل وجود همین نقایص کلیدی، هیچگاه به مرحله عمل نرسید؛ اما ساتوشی ناکاموتو مخترع بیت کوین، با استفاده از الگوریتم اجماع «گواه اثبات کار (PoW)»، این مشکل را مرتفع کرد. الگوریتم گواه اثبات کار را میتوان بجای «هر IP یک رأی»، به عنوان «هر CPU یک رأی» تعبیر کرد. اتفاق نظر دسته جمعی در این روش، بر روی طولانیترین زنجیره (تراکنشها) که بیشترین توان پردازشی صرف آن شده است متمرکز میشود.
روشهای اجماع در بلاک چین های گوناگون، متفاوت است. الگوریتم اجماع مورد استفاده در بلاک چین بیت کوین (و همچنین رمز ارزهایی همچون لایت کوین، بیت کوین کش و اتریوم)، گواه اثبات کار (PoW) نام دارد. بلاک چین های مبتنی بر این روش، عمومی و بدون مجوز هستند؛ به این معنا که هر شخصی به اختیار خود میتواند با تأمین تجهیزات سخت افزاری و دانلود نسخه کامل بلاک چین، به دادههای شبکه دسترسی یافته و در ثبت و اعتبارسنجی دادهها مشارکت داشته باشد؛ در این بلاک چین ها اطلاعات به صورت شفاف در اختیار همگان قرار داشته و هویت افراد معمولا به شکل نام مستعار (و در برخی موارد همچون بلاک چین های زی کش یا مونرو به صورت ناشناس) است.
علاوه بر الگوریتم گواه اثبات کار، روشهای اجماع دیگری همچون گواه اثبات سهام (Proof of Stake or PoW) و اثبات سهام محول شده (Delegated Proof of Stake or DPoS) نیز وجود دارند. الگوریتم اثبات سهام در رمز ارزهایی همچون نئو (NEO)، استلار (Stellar) ،کاردانو (Cardano)،کازمز (Cosmos) و کیوتوم (QTUM) به کار رفته است. در این روش، نودها بدون نیاز به قدرت پردازشی، و تنها با وثیقه گذاشتن بخشی از سهام خود (یعنی رمز ارز موجود در کیف پولهای خود) در شبکه، میتوانند در اعتبارسنجی تراکنشها و ساخت بلاکها مشارکت کرده و در ازای هر تراکنش، کارمزد دریافت کنند.
روش اثبات سهام محول شده (DPoS) نیز گونه خاصی از الگوریتم اثبات سهام است که با محدودسازی شمار نودهای اعتبارسنج شبکه، سطح بسیار بالاتری از مقیاسپذیری را فراهم میکند. در این روش، رای دهندگان برای اجماع در شبکه، میتوانند حق استفاده از سهام خود را به دیگران منتقل کنند تا به صورت وکالتی از طرف آنها در رایگیری شرکت نمایند. بلاکچین رمز ارزهایی همچون EOS ، ترون (Tron) ، تزوس (Tezos) و ترا (Terra) از این روش برای اجماع شبکه استفاده میکنند.
درباره الگوریتم های اجماع بلاک چین بیشتر بخوانید:
- الگوریتم اثبات کار (PoW) چیست؟
- الگوریتم اثبات سهام (PoS) چیست؟
- الگوریتم اثبات سام محول شده (DPoS) چیست؟
احتمالاً تا به اینجای کار پاسخ برخی از سوالات خود را گرفتهاید. با مطالعه سرگذشت بیت گلد، حتماً حالا میدانید که چرا الگوریتم اجماع بیت کوین، تنها با یک رأیگیری ساده در میان نودها کار نمیکند و نیازمند توان پردازشی عظیم است. لزوم به کارگیری الگوریتم گواه اثبات کار در بلاک چین بیت کوین، از آنجا نشأت میگیرد که ساتوشی ناکاموتو، در وایت پیپر معروف خود، برای حل مشکل دابل اسپند (خرج مجدد تراکنش ها) استفاده از سرور تایم استمپ (Timestamp) یا «برچسب زمانی» برای تراکنش ها را پیشنهاد کرد. عملکرد یک سرور تایم استمپ، اینگونه است که ابتدا هش یک بلاک (شامل تراکنش ها) را گرفته و جزئیات زمانی آنها را در یک رشته تایم استمپ ذخیره و به طور عمومی منتشر میکند.
تایم استمپ ها وجود تراکنش ها و ترتیب زمانی رخداد آن ها را اثبات میکنند. لازم به ذکر است که هر تایم استمپ در هش خود، در بر دارنده تایم استمپ بلاک قبلی خود نیز هست. به این ترتیب زنجیرهای از هش های تایم استمپ های به هم وابسته تشکیل میشود که جزئیات زمانی تراکنش ها را ثبت کرده و عملاً خرج مجدد دارایی را غیرممکن میسازد. به بیان سادهتر نودهای اعتبارسنج، هر تراکنش را تنها یکبار به عنوان ورودی تراکنشهای دیگر میپذیرند و تمامی تراکنشهای بعدی که آن را به عنوان ورودی استفاده کنند، دابل اسپند شناخته شده و رد میشوند.
برای پیادهسازی یک سیستم ذخیره تایم استمپ غیرمتمرکز و توزیع شده در میان نودهای شبکه، از الگوریتم اجماع «گواه اثبات کار» استفاده میکنیم که طرح و ایده اولیه آن در الگوریتم هش کش (Hashcash) توسط آدام بک (Adam Back) معرفی شده و هدف آن مبارزه با حملات اسپم ایمیلی بود.
مبنای عملکرد روش گواه اثبات کار، رقابت برای حل یک مسأله ریاضی پیچیده، از طریق آزمون و خطای پی در پی است. به این صورت که هر نود (ماینر) شبکه، با استفاده از الگوریتم رمزنگاری واحدی (مانند الگوریتم SHA-256 در شبکه بیت کوین)، محتویات بلاک جدید (شامل اطلاعات تراکنش ها، برچسب زمانی و هش بلاک قبلی) را به همراه یک عدد متغیر تصادفی به نام نانس (nonce)، به دفعات هش می کند تا به یک جواب مشخص و از پیش تعیین شده برسد (به عنوان مثال مقادیر عددی کوچکتر یا مساوی ۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۰۱۰e1ee222f0165a8374aaeaac73bea0adf964f3d4f298e).
اگر بخش مربوط به «رمزنگاری یک طرفه» و «اجزای سربرگ بلاک» را به دقت مطالعه کرده باشید، حتماً تا کنون نقش عدد نانس را میدانید. طبق تعریفی که پیشتر ارائه دادیم، توابع هش یک طرفه، در ازای هر ورودی یکتا، یک هش خروجی یکتا تولید میکنند و این عمل تکرارپذیر است؛ یعنی هر چندبار که ورودی یکسانی را به تابع بدهید، هر بار خروجی یکسانی تولید خواهد شد. پس هش محتویات یک بلاک، همیشه مقدار ثابتی خواهد داشت؛ مگر اینکه یک متغیر آزاد (یعنی نانس) را به محتویات بلاک اضافه کنیم تا هر بار با تغییر مقدار آن، یک هش کاملاً متفاوت تولید شود. حتماً متوجه شدهاید که افزودن نانس به عنوان یک پارامتر ورودی تابع هش، همان چیزیست که این مساله ریاضی را دشوار ساخته و حل آن را ارزشمند میسازد. در واقع میتوان گفت، تمامی ماینرها با صرف قدرت پردازشی خود، در پی یافتن عدد نانس صحیحی هستند که اگر به ورودیهای ثابت تابع هش افزوده شود، هش خروجی مقداری کوچکتر یا مساوی با جواب از پیش تعیین شده داشته باشد. این عدد از پیش تعیین شده «هش تارگت (target Hash)» نام دارد که مقدار آن از طریق مکانیزم سختی شبکه (Difficulty) تعیین میگردد.
سختی شبکه معیاریست که میزان پردازش مورد نیاز برای یافتن یک هش کوچکتر یا مساوی با هش تارگت را نشان میدهد. هرچقدر سختی شبکه افزایش یابد، تعداد صفرهای ابتدایی هش تارگت افزایش یافته (که منجر به کوچکتر شدن بازه مورد قبول برای هش صحیح میشود)، و طبیعتاً یافتن هش مورد نظر را دشوارتر میسازد. سختی شبکه تقریباً هر دو هفته یکبار (به بیان دقیقتر، بعد از هر ۲۰۱۶ بلاک جدید)، به صورت خودکار، به گونهای تنظیم میشود که زمان میانگین ساخت بلاک ۱۰ دقیقه باشد. یعنی اگر زمان میانگین ساخت ۲۰۱۶ بلاک قبلی بیشتر از ۱۰ دقیقه باشد، به معنای آن است که بخشی از قدرت پردازشی ماینرها، طی این مدت از شبکه خارج شده و بنابراین سختی شبکه در این مرحله کاهش مییابد. همچنین اگر اگر زمان میانگین ساخت ۲۰۱۶ بلاک قبلی کمتر از ۱۰ دقیقه باشد، به معنای آن است که در این مدت، قدرت پردازشی موجود در شبکه افزایش یافته است (یا تعداد نودها بیشتر شده، یا نودها از دستگاههای ماینر بیشتری استفاده کردهاند، و یا تکنولوژی دستگاهها ارتقا یافته و در زمان کمتر، پردازش بیشتری انجام میشود)؛ پس در این مرحله سختی شبکه تا جایی افزایش مییابد که زمان میانگین ساخت بلاکها همان ۱۰ دقیقه باقی بماند.
حال که مکانیزم اجماع «گواه اثبات کار» را به درستی درک کردید، احتمالاً هنوز چند سوال جدی برایتان باقیست: آیا همه این عملیات پیچیده، کاری بیهوده نیست؟ آیا طرح یک معمای هش برای ساخت بلاک و سعی و رقابت برای یافتن پاسخ آن، همچون کندن و پرکردن یک گودال در خاک نیست؟ آیا بهتر نبود، این محاسبات و پردازشهای سنگین به هدفی معنادار (همچون محاسبه لایههای پروتئین برای پیشرفتهای پزشکی، یا جستجوی حیات فرازمینی، یا درمان سرطان از طریق نگاشت دی.ان.اِی و ….) اختصاص مییافت؟ این همه پردازش و مصرف برق هنگفت تنها برای ساختن یک بلاک از تراکنشها؟
پاسخ صریح ما به این سوال این است که خیر! هیچ کدام از این محاسبات بیمعنا و بیهدف نیست. ذات محاسبات ماینرها در شبکه بیت کوین، به هیچ وجه شبیه به کندن و پرکردن گودال نیست. چرا که شما با کندن گودال پیشرفت میکنید. با هربار بیل زدن، گودال شما عمیقتر میشود و این موضوع را با چشم میبینید. این یک فرایند خطیست که نتایج آن با مقیاسها، خطکشها و ترازها قابل اندازهگیریست. اما در الگوریتم اثبات کار هیچ نشانهای از پیشرفت در حل مسأله وجود ندارد. شما هرگز نمیتوانید بگویید سی درصد این مساله را حل کرده ام و هفتاد درصد آن باقی مانده است؛ چرا که احتمال یافتن هش یک بلاک پس از ۲۴ ساعت کار مداوم بر روی آن، با احتمال یافتن آن در همین لحظه برابر است (یا با احتمال یافتن آن در هر لحظه دیگری).
شما برای یافتن هش صحیح، با تغییر عدد نانس، تک تک راه حلها را آزمون و خطا میکنید. این کار درست مثل انداختن سکه شیر یا خط است؛ شما برای یافتن یک هش ۲۵۶ بیتی، سعی میکنید ۲۵۶ سکه را به هوا بیندازید و همه آنها شیر بیایند. در هر بار تلاش، شانس شما یکسان است. جالب است بدانید که درست همین ماهیت تصادفی اثبات کار است که آن را ارزشمند میسازد. شما نمیتوانید با مرتبط ساختن این محاسبات با اهداف ارزشمند دیگر (همچون محاسبه لایههای پروتئین برای پیشرفتهای پزشکی) یک استاندارد ارزش ایجاد کنید. ماهیت بیت کوین مشابه پول و وظیفه آن، درجه بندی ارزش است؛ نه اینکه صرفاً چیزی باارزش فرضی ارائه دهد. ارزش ذاتی بیت کوین، به کارایی آن است؛ به انجام معاملات به صورت غیرمتمرکز و ایمن، در یک بستر مالی با عرضه محدود و کنترل شده. اما بیت کوین برای ارائهی این ارزش، نیازمند قربانی کردن (یا صرف کردن) زمان و انرژیست.
اگر قدری عمیقتر به این قضیه نگاه کنید، متوجه میشوید که الگوریتم اثبات کار، همچون پلی است که بیتهای بیمعنا (تراکنشهای بیت کوین) را به ارزشهای واقعی این دنیا (ماده، انرژی و زمان) گره میزند (موهبتی که طلا به طور طبیعی از آن برخوردار است) و به عنوان آخرین توضیح، بیت کوین برای داشتن استانداردی از ارزش، باید جایی خارج از تمام طرحهای ارزشمند فعلی واقع شود؛ باید خودش به تنهایی بیارزش باشد.
اما برای فهم بهتر این قسمت، سوال دیگری برایتان مطرح میکنیم: به نظر شما چرا باید چنین مکانیزمی برای افزایش سختی وجود داشته باشد؟ اصرار ساتوشی برای ثابت نگهداشتن زمان ساخت بلاک (بر روی ۱۰ دقیقه) از کجا نشأت میگیرد؟ چرا ساتوشی ناکاموتو تمام نبوغ و خلاقیت خود را صرف دشوار نمودن فرایندها کرده است؟ قدری به این سوال فکر کنید؛ پاسخ آن را در قسمت بعدی (یعنی زنجیره) بررسی خواهیم کرد.
بخش دوازدهم: نقش زنجیره در بلاک چین
فلسفه ارتباط زنجیروار بلاکها به یکدیگر، ثبت همیشگی و تغییرناپذیری تراکنشهاست. در شبکه بلاک چین، هش محتویات هر بلاک، جزئی از دادههای ورودی بلاک بعدیست؛ این بدان معنیست که هرگونه تغییر در اطلاعات بلاکهایی که پیشتر استخراج شدهاند، تقریباً غیرممکن بوده و برای ایجاد کوچکترین تغییری در آنها، باید با صرف توان پردازشی بسیار زیاد، دوباره به روش اثبات کار، آن بلاک و تمامی بلاکهای بعد از آن را استخراج کنید.
برای درک بهتر این مکانیزم، لازم میدانیم در اینجا مفهومی تحت عنوان «زنجیره مرجع» یا «زنجیره اصلی» را به شما معرفی کنیم که در وایت پیپر بیت کوین نیز بارها به آن اشاره شده است. پیشتر گفتیم که تمامی تراکنشهای تایید شده در بلاک چین بیت کوین، در بلاکهای داده ذخیره شده و این بلاکها به صورت زنجیروار به یکدیگر مرتبط میشوند. حال هرگاه ماینرها به طور تصادفی یا به عمد، دو یا چند بلاک را همزمان (یا با فاصله زمانی بسیار اندک) استخراج کنند، زنجیره تراکنشها به چند انشعاب تقسیم میشود که شماتیک آن را در تصویر زیر مشاهده میکنید.
در صورت وقوع چنین رخدادی، نودهای شبکه موظفند اولین بلاکی که به آنها اعلام شده را اعتبارسنجی کرده و عملیات ساخت بلاک جدید را بر روی این بلاک ادامه دهند (یعنی هش این بلاک را در محاسبات خود برای استخراج بلاک بعدی وارد کنند). در این میان، زنجیرهای که بیشترین توان پردازشی نودها را به خود اختصاص داده و عملیات ساخت بلاکهای جدید بر روی آن دنبال شود، «زنجیره مرجع»، «زنجیره اصلی» یا اصطلاحاً «طولانیترین زنجیره (longest chain)» نام میگیرد و سایر انشعابات نیز اصطلاحاً فورک (Fork) نامیده میشوند. در بلاک چین بیت کوین، بلاکهایی که در این فورکهای ناموفق ایجاد شدهاند را بلاکهای اورفان (Orphan blocks) مینامند.
علت پیدایش بلاکهای اورفان معمولاً دو چیز است:
- بلاکهای ناصحیح: این بلاکها حاوی تراکنشی با نیت خرابکارانه (خرج مجدد یک دارایی یا دابل اسپند) هستند و نود خرابکار به منظور جلوگیری از تایید تراکنش اولیه خود (یعنی تراکنش صحیح)، اقدام به استخراج و تایید بلاکی همزمان با بلاک صحیح میکند تا تراکنش صحیح (تراکنش اول) را مردود ساخته و تراکنش دابل اسپند را در زنجیره اصلی قرار دهد. اما همانطور که پیشتر گفته بودیم، امکان چنین اقدامی در شبکه بیت کوین بسیار کم است. چرا که همیشه تراکنش اولیه زودتر به دست اکثریت نودها رسیده و احتمال تایید آن بسیار بیشتر از تراکنش دابل اسپند است. در چنین حالتی، نود خرابکار برای تأیید تراکنش دوم خود و قرار دادن آن در زنجیره اصلی، باید از قدرت پردازشی بسیار زیادی برخوردار باشد تا هم این بلاک و هم بلاکهای بعدی را با سرعتی بیشتر از سرعت سایر نودهای شبکه استخراج کرده و زنجیره اصلی را با بلاکهای خود تشکیل دهد. با توجه به توضیحاتی که تا کنون دادهایم، اکنون میدانیم که چنین کاری عملاً غیر ممکن است؛ زیرا مادامی که بیشترین قدرت پردازشی در اختیار اکثریت درستکار شبکه باشد، احتمال چنین کاری بسیار اندک بوده و اجرای آن بسیار پرهزینه است.
- بلاکهای تاخیریافته: این بلاکها معمولاً به طور تصادفی، همزمان (یا با فاصله زمانی اندکی) از بلاک دیگری استخراج میشوند؛ اما نکته آنجاست که این دو بلاک، حاوی تراکنشهای صحیح اما مشترکی هستند و از آنجا که میدانیم هر تراکنش باید تنها یکبار در زنجیره ثبت شود، در اینجا یک فورک ایجاد شده و بلاکی که به هر دلیلی دیرتر به اکثریت نودهای شبکه برسد، اورفان خواهد شد.
در هر دو مورد، برای این که ترتیب تراکنشها در زنجیره به درستی حفظ شود، پس از مشخص شدن و قطعی شدن زنجیره صحیح، شبکه به طور خودکار مجدداً سازماندهی شده (re-Org) و تراکنشهای غیرمشترک موجود در بلاکهای اورفان را مجدداً به استخر تراکنشهای تأیید نشده و در صف انتظار، بازمیگرداند. همانطور که گفتیم، بلاک اورفان (یا مترادف فارسی آن: یتیم) در بلاک چین بیت کوین حذف میگردد؛ اما سایر بلاک چین ها با این پدیده رفتار متفاوتی دارند. به عنوان مثال در شبکه اتریوم، بلاک هایی که به صورت همزمان با بلاک های زنجیره اصلی ماین میشوند، بلاک های اومر (Ommer) نامیده میشوند. بر خلاف بیت کوین، در بلاک چین اتریوم هش بلاک های اومر در بلاک های زنجیره اصلی ذخیره میشود و همچنین ماینرهایی که این بلاک ها را ماین کردهاند نیز بخشی از پاداش ساخت بلاک را دریافت میکنند؛ اما در شبکه بیت کوین اینگونه نیست.
اگر به تصویر بالا بیشتر دقت کنید، در پایین تصویر، محور زمان را مشاهده خواهید کرد. میتوان زمان را عاملی کلیدی در امنیت شبکه دانست. در روش “گواه اثبات کار” اگر گروهی از هکرها بخواهند بلاکی که در گذشته ساخته شده است را تغییر دهند، باید آن بلاک و تمام بلاکهای پس از آن را مجدداً استخراج کنند (چرا که در صورت ایجاد هرگونه تغییر کوچکی در محتویات یک بلاک، هش آن نامعتبر گردیده و باید مجدداً استخراج شود. همچنین از آنجا که هش هر بلاک جزئی از محتوای بلاک بعدی خود است، پس هش بلاکهای بعدی نیز تا انتها نامعتبر شده و تمامی بلاکها باید مجدداً استخراج شوند). در چنین شرایطی اگر هکری مایل به دستکاری، تغییر یا سانسور در بلاکهای گذشته باشد، باید عملیات استخراج مجدد را به قدری سریع انجام دهد که به زنجیره طولانیتر ساخته شده توسط اعضای درستکار شبکه رسیده و حتی از آن سبقت بگیرد تا به عنوان زنجیره مرجع کل شبکه انتخاب شود. اما چنین شانسی عملاً نزدیک به صفر بوده و با اضافه شدن هر بلاک جدید به زنجیره، این شانس به طور تصاعدی کاهش مییابد.
وقتی از امنیت در شبکه بلاک چین صحبت میکنیم، باید بدانیم که این امنیت توسط هیچ نهاد، شخص، یا گروهی تأمین نمیشود؛ بلکه این مکانیزمهای هوشمندانه شبکه (یعنی هزینهها و مشوقها) هستند که اعضای شبکه را به رفتار درستکارانه و پرهیز از خطا و اشتباه سوق میدهند. اگر شخصی مایل به تغییر تراکنش ارزشمندی (به نفع خود) در گذشته باشد، مجبور است هزینه بسیار هنگفتی (شاید حتی بیشتر از ارزش آن تراکنش) را بابت تأمین توان پردازشی بپردازد و این در حالیست که با تأمین چنین توان پردازشی عظیمی، استخراج بلاکهای جدید و دریافت پاداش شبکه به ازای هر بلاک، برای او سود بسیار بیشتری خواهد داشت و در عین حال به حفظ امنیت شبکه نیز کمک خواهد کرد.
با توضیحات گفته شده، برای انجام هرگونه تغییر، تقلب و سانسور در شبکه بلاک چین، تنها یک حالت را متصور هستیم: حمله ۵۱ درصدی. حمله ۵۱ درصدی (یا به طور دقیقتر بیش از ۵۰ درصد) زمانی اتفاق میافتد که فرد خرابکار موفق شود اکثریت توان پردازشی شبکه را با خود همراه کرده و آنها را قانع کند تا زنجیره خرابکارانه او را به عنوان زنجیره مرجع ادامه دهند. چنین امری نیز بسیار بعید به نظر میرسد؛ چرا که خرد جمعی همواره به حرکت در مسیر صحیح تمایل داشته و برای جلب رضایت اکثریت شبکه به همکاری در اقدام خرابکارانه نیز، به انگیزهای بسیار بیشتر از مشوقهای طبیعی شبکه نیاز است. ضمن اینکه انجام حمله ۵۱ درصدی، با ریسک از دست رفتن اعتبار کل شبکه و بی ارزش شدن تمامی داراییها همراه است. علاوه بر این، تعداد نودهای شبکه هر روز در حال افزایش بوده و توزیع توان پردازشی در استخرهای استخراج نیز، همواره قابل تغییر است که همه این موارد به امنیت بیشتر شبکه منجر خواهد شد.
در نهایت، مادامی که بیشتر توان پردازشی موجود در شبکه در اختیار استخراج کنندگان خوشنیت و درستکار باشد، زنجیرهای که توسط آنها تولید میشود طولانیتر و خدشهناپذیرتر شده و در نتیجه در رقابت با زنجیرههایی که توسط افراد خرابکار ایجاد میشود، پیروز شده و به عنوان زنجیره مرجع انتخاب میشود. حال میتوان با اطمینان گفت که طولانی ترین زنجیره، واقعی ترین روایت را از تاریخچه تراکنش ها ارائه میدهد.
اکنون با درک تمامی اجزای بلاک چین و نحوه کارکرد آنها، میتوان به آخرین سوال مطرح شده نیز پاسخ داد؛ اینکه چرا ساتوشی ناکاموتو، انقدر بر پارامتر سختی شبکه تاکید داشت و اساساً اصرار او برای برای ثابت نگهداشتن زمان ساخت بلاک (بر روی ۱۰ دقیقه) از کجا نشأت میگیرد؟
پاسخ ساده است؛ ساتوشی، همزمانی تصادفی ساخت بلاکها را از قبل پیشبینی کرده و برای کاهش هدررفت توان پردازشی شبکه، این فاصله ده دقیقهای میان ساخت بلاکها را تعیین کرده بود. به عنوان مثال، اگر فرضاً میانگین فاصله زمانی ساخت بلاکها ۱ دقیقه بود، میزان استخراج بلاکهای همزمان، به طور نمایی رشد میکرد و چنین اقدامی باعث اختلال بیشتر (re_Orgهای پی در پی) در شبکه میشد. ضمن اینکه ساتوشی میدانست که طبق قانون مور، پیشرفتهای سختافزاری هیچگاه متوقف نشده و توان پردازشی کامپیوترها روز به روز افزایش خواهد یافت که در این صورت، لزوم به کارگیری پارامتر سختی شبکه، بیش از پیش احساس میشد.
البته حق دارید اگر بگویید، این فاصله زمانی ۱۰ دقیقهای، باعث کاهش مقیاسپذیری بیت کوین، و مانعی برای پذیرش عمومی آن شده است. اما طبق پستهایی که ساتوشی ناکاموتو در زمان حضورش در فاروم بیت کوین تاک (Bitcoin talk) منتشر میکرد، میتوان فهمید که معماری مورد نظر او برای آینده بیتکوین، شامل بلاکهایی به مراتب بزرگتر (حتی با ظرفیتی از مرتبه گیگا بایت) بوده است. یعنی مادامی که میزان تراکنشهای شبکه رو به افزایش است، سایز بلاکها نیز افزایش یافته و در صورت لزوم نامحدود (بسته به تعداد تراکنشها) باشد. در چنین شرایطی (با درنظر داشتن پهنای باند اینترنت در زمان اختراع بیت کوین)، زمان لازم برای انتقال دادهها به تمامی نودهای شبکه، ساتوشی را برا آن داشت که حفظ این فاصله زمانی ۱۰ دقیقهای را جدی شمرده و مکانیزم تغییر سختی شبکه را برای کنترل آن تعبیه کند.
همچنین علت واضح دیگری که میتوان برای فاصله ۱۰ دقیقه ای ساخت بلاک ها متصور شد، کنترل عرضه بیت کوین های جدید و جلوگیری از بیارزش شدن آنهاست. همانطور که از پیش میدانیم، تعداد بیت کوین های قابل عرضه، با محدودیت ۲۱ میلیون تایی روبروست؛ بنابراین نرخ عرضه بیت کوینهای جدید و نرخ افزایش تعداد بیت کوینهای در گردش، از اهمیت بسیار بالایی برخوردار است (برخلاف پول فیات که محدودیت عرضه نداشته و از این جهت، آهنگ عرضه آن در شرایط گوناگون، کاملاً بسته به تصمیم دولتها و بانک های مرکزیست). پس با این نگرش، میتوان دریافت که ساتوشی ناکاموتو، با بکارگیری مکانیزم تغییر سختی و همچنین با استفاده از مکانیزم هاوینگ (نصف شدن پاداش شبکه به صورت چهار سال یک بار) در پی کنترل عرضه بیت کوین، و جلوگیری از تورم این دارایی بود.
بخش سیزدهم: انواع بلاک چین
برای دسته بندی بلاک چین ها آنها را از دو جنبه مورد بررسی قرار میدهیم:
- از منظر توانایی مشاهده اطلاعات و تراکنشها توسط عموم مردم
- از منظر توانایی اعتبار سنجی تراکنشها و ثبت اطلاعات
بلاک چین ها از نظر توانایی مشاهده اطلاعات و تراکنشها به چهار دسته تقسیم میگردند:
- عمومی (Public)
- خصوصی (Private)
- کنسرسیومی یا فدرال (Consortium)
- هیبرید (Hibrid)
همچنین بلاک چین ها از نظر توانایی تایید یا رد تراکنشها و ثبت اطلاعات به دو دسته زیر تقسیم میگردند:
- انحصاری یا مجوز محور (permissioned)
- غیر انحصاری یا بدون نیاز به مجوز دسترسی (permissionless)
ابتدا دسته بندی نوع اول را توضیح میدهیم؛ یعنی از نظر توانایی مشاهده اطلاعات و تراکنشها توسط مردم:
بلاک چین های عمومی
هر آن چه تا به اینجای مقاله خواندید، مربوط به ویژگیهای بلاک چین های عمومی بود. بنابراین طبق همه تعاریف ذکر شده تا به این جا، بلاک چین های عمومی بلاک چین های غیرمتمرکزی هستند که هیچ شخص، گروه و یا سازمان خاصی بر روی آنها نظارت و کنترلی نداشته و هر کسی میتواند عضو شبکه آنها شود و به مشاهده تراکنشها و اطلاعات بپردازد. اطلاعاتی که هر یک از اعضا به این زنجیره اضافه میکنند به صورت آنلاین اعتبار سنجی و تایید شده و روی این بلاکها ثبت می شوند. همه این بلاکها از طریق رمزنگاری به یکدیگر متصل میباشند و اطلاعات دارای ثبت زمانی هستند. بنابرین امکان تغییر اطلاعات به هیچ وجه وجود نداشته و میتوان گفت که امنیت در این نوع بلاک چین کاملا تضمین شده است.
از آن جایی که در این نوع بلاک چین ها ثبت اطلاعات مستلزم تایید تعداد کثیری از اعضاست، سرعت انجام تراکنش در آنها به نسبت بلاک چین های خصوصی پایینتر است. به اعتقاد برخی، بلاک چین های عمومی تجسم مفهوم واقعی و اولیه بلاک چین ها هستند. توزیع شدگی و غیرمتمرکز بودن واقعی، تغییر ناپذیری و غیر قابل سانسور بودن، امنیت فوق العاده بالا و ناشناسی اعضا از جمله ویژگیهایی هستند که قدرت و محبوبیت بسیار زیادی به این بلاک چین ها بخشیده است. بیت کوین و اتریوم (که به ترتیب اولین و دومین رمز ارز پر ارزش جهان هستند) و بسیاری از رمز ارز های دیگر، بر پایه بلاک چین عمومی کار میکنند.
بلاک چین های خصوصی
بلاک چین های خصوصی نیز مانند بلاک چین های عمومی دفتر کلهای توزیع شدهای هستند که طبق الگوریتم اجماع یا همان توافق جمعی کار می کنند؛ با این تفاوت که در این نوع بلاک چین ها ویژگی غیرمتمرکز بودن به معنای واقعی وجود نداشته و عموم مردم امکان مشاهده اطلاعات ثبت شده در این بلاک چین ها را ندارند. در واقع تفاوت اصلی این بلاک چین ها با بلاک چین های عمومی در سطح دسترسی و اعضاست. اعضای بلاک چین های خصوصی از پیش تعیین شده می باشند و ثبت دادهها در این بلاک چین ها، نیاز به تایید همین اعضای از پیش تعیین شده دارد.
همچنین تراکنش ها و اطلاعات به ثبت رسیده فقط برای همین اعضای مشخص قابل رویت میباشد. هر شخص جدیدی که قصد عضو شدن در این نوع بلاک چین را دارد باید یک تقاضای همکاری به شبکه بفرستد و این تقاضا باید توسط مؤسس بلاک چین و یا توسط قوانین خاصی که از قبل توسط همان موسسین در شبکه اعمال شده تایید شود. بلاک چین های خصوصی ویژگی اصلی و اساسی بلاک چین ها که همان «غیرمتمرکز بودن» است را دارا نیستند. دسترسی به اطلاعات در آنها توسط گروه خاصی از اعضا کنترل میشود و همینطور امنیت آنها از بلاک چین های عمومی به وضوح پایینتر است (بطور کلی هر چه تعداد نودهای اعتبارسنج یک بلاک چین بیشتر باشد به همان نسبت امنیت آن بلاک چین نیز بالاتر است زیرا اطلاعات باید به تایید تعداد بیشتری از اعضا برسد و امکان هک شدن آن نیز کمتر است).
به نظر بعضی از کارشناسان، بلاک چین های خصوصی اصلا بلاک چین محسوب نمیشوند؛ چرا که حتی از مفاهیم پایهای و اساسی بلاک چین نیز پیروی نمیکنند. به نظر این افراد، این بلاک چین ها در واقع فقط پایگاههای اطلاعاتی متمرکزی هستند که از تکنولوژی دفتر کل توزیع شده بهره میبرند و مناسب سازمانها و شرکتهایی هستند که میخواهند در عین اطمینان از محرمانگی اطلاعات و عدم دخالت یا مشارکت اعضای خارجی، از سیستم دفتر کل توزیع شده استفاده کنند. مزیت این نوع بلاک چین ها نسبت به انواع عمومی آنها، سرعت بالاتر ثبت اطلاعات و عدم نیاز به زمان و انرژی فراوان برای به ثبت رسیدن آنهاست.
بلاک چین های کنسرسیومی یا فدرال
بطور خیلی خلاصه، وقتی که چند نهاد یا سازمان مختلف به جهت پیشبرد اهداف مشترک و برای به اشتراکگذاری اطلاعات و دادهها از بلاک چین استفاده کنند، به آن بلاک چین کنسرسیومی یا فدرال میگوییم. بلاک چین های کنسرسیومی کارایی گستردهای دارند و میتوانند برای اهداف متعددی از جمله اتصال چند شرکت یا سازمان کوچک و محلی تا اتصال نهادها و قوههای اصلی یک کشور، به منظور پیشبرد اهدافی از جنس اهداف حکومتی، دولتی، سیاستگذاری، تصمیم گیریهای اجتماعی و یا بطور کلی امور کشورداری مورد استفاده قرار گیرند.
بلاک چین کنسرسیومی یا فدرال یک نوع بلاک چین نیمه متمرکز است و همه ویژگیهای آن دقیقا شبیه بلاک چین های خصوصیست، با این تفاوت که در این نوع بلاک چین ، اعضای از پیش تعیین شدهای که اجازه مشاهده و کنترل اطلاعات را دارند، رؤسا یا افراد رده بالای یک شرکت یا سازمان خاص نیستند؛ بلکه شامل تمامی مدیران و مسئولین فعال در همگی این سازمانها هستند. در این نوع بلاک چین نیز مانند بلاک چین های خصوصی، عموم مردم حق دسترسی به اطلاعات را نداشته و سیستم بلاک چین توسط نهادها اداره میشود؛ ولی اطلاعات مردم میتواند برای تصمیم گیریهای آینده در زنجیره بلاک چین ذخیره شود. این نوع بلاک چین میتواند برای اهداف متعددی از جمله ثبت اطلاعات مالی مردم، اهداف مربوط به بهداشت و سلامت و اطلاعات بیماری ها، بیمه، مدیریت منابع انرژی، تکنولوژی، منابع انسانی و … استفاه شود.
بلاک چین های کنسرسیومی با قابلیت اتصال نهادهای مختلف یک کشور، امکان بزرگی را در اختیار دولتها قرار دادهاند؛ چرا که خیلی از نهادهایی که کارشان به نحوی به یکدیگر مرتبط بوده و یا میتوانند از اطلاعات یکدیگر برای پیشبرد اهداف خود کمک بگیرند، توسط بلاک چین های کنسرسیومی به این امکان دسترسی یافتهاند.
بلاک چین های هیبرید
همانطور که از اسمشان پیداست، بلاک چین های هیبرید در حقیقت ترکیبی از بلاک چین های عمومی و خصوصی میباشند. توسعه دهندگان این نوع بلاک چین ها تلاششان بر این بوده تا با ترکیب کردن ویژگیهای بلاک چین های عمومی و خصوصی، از مزایای هر دو (برای کسب و کار خاص خود) استفاده کرده و معایب را به حداقل برسانند. عملکرد بلاک چین های هیبرید از بسیاری جهات شبیه بلاک چین های خصوصی است. مانند بلاک چین های خصوصی ، در این نوع بلاک چین ها نیز امکان دسترسی برای عموم مردم وجود ندارد و فعالیت در آن ها مستلزم اجازه مؤسسین بلاک چین و اعضای از پیش تعیین شده میباشد.
تیم از پیش تعیین شده این نوع بلاک چین ها این امکان را دارند که در مورد نمایش یا عدم نمایش تراکنش ها تصمیم گیری کنند؛ اما نکته قابل توجه اینجاست که تمامی اطلاعات ثبت شده در این بلاک چین ها غیر قابل تغییر بوده و در صورت لزوم میتوان آنها را علنی کرد. بنابراین نقطه شباهت بلاک چین های هیبرید با بلاک چین های عمومی، در سیستم غیر قابل تغییر آنهاست. وقتی که تراکنشی در بلاک چین های هیبرید به ثبت برسد امکان تغییر و اصلاح آن به هیچ وجه وجود نخواهد داشت و مالکین بلاک چین فقط میتوانند در مورد نمایش یا مخفی نگه داشتن آن در یک بازه زمانی خاص تصمیمگیری کنند.
پس میتوانیم اینطور نتیجه گیری کنیم که از منظر دسترسی و اعضا، بلاک چین های هیبرید مانند انواع خصوصی از توزیعشدگی کمی برخوردارند، نسبت به بلاک چین های خصوصی دارای امنیت بالاتری هستند و از نظر سرعت ثبت اطلاعات و مقیاس پذیری مشکل بلاک چین های عمومی را ندارند.
حال بلاک چین را از دیدگاه دوم مورد بررسی قرار میدهیم؛ یعنی از منظر توانایی اعتبارسنجی و ثبت تراکنش ها:
بلاک چین های انحصاری (مجوز محور) و غیر انحصاری (بدون نیاز به مجوز دسترسی)
وقتی صحبت از انواع بلاک چین ها و دسته بندی آنهاست، معمولاً تنها تعریف موجود و یا تعریف متداولتر همان دسته بندی چهارگانه ذکر شده در بالاست. اما لازم به ذکر است که بلاک چین ها را از یک منظر دیگر نیز میتوان مورد بررسی و جداسازی قرار داد و آن «توانایی ثبت داده و اعتبار سنجی تراکنشها» است. بلاک چین های مجوز محور (permissioned) یا انحصاری، بلاک چین هایی هستند که برای ثبت اطلاعات در آنها احتیاج به نوعی مجوز داریم؛ در حالی که در بلاک چین های بدون نیاز به مجوز دسترسی (permissionless) یا غیر انحصاری، فرد در صورت تمایل به راحتی و بدون احتیاج به کسب مجوز خاصی توانایی ثبت اطلاعات را پیدا خواهد کرد.
در بلاک چین های عمومی شناخته شدهای مثل بیت کوین یا اتریوم هیچ محدودیت دسترسی خاصی وجود نداشته و هر فردی میتواند به راحتی به شبکه بلاک چین آنها پیوسته و شروع به تایید یا رد تراکنش ها و ساخت بلاک نماید. بنابراین بر طبق این تعریف، بیت کوین و اتریوم و بسیاری از بلاک چین های عمومی دیگر، بدون نیاز به مجوز دسترسی یا permissionless میباشند. اما این نکته را هم در نظر داشته باشید که در در میان بلاک چین های عمومی، انواع عمومی مجوز محور نیز وجود دارند. به زبان سادهتر، در این بلاک چین ها امکان مشاهده همه تراکنشها وجود دارد؛ اما امکان اعتبار سنجی تراکنشها و یا ثبت اطلاعات برای عموم مردم میسر نخواهد بود. برای درک بهتر این موضوع میتوانید کاربرد بلاک چین در زنجیره تأمین را در نظر بگیرید.
یکی از مشکلاتی که در صنایع گوناگون وجود دارد، عدم شفافیت در زنجیره تأمین این صنایع است. به عنوان مثال، مصرف کنندگان نهایی هیچگاه از کیفیت و چگونگی مراحل ساخت محصول و مواد اولیه آن مطلع نخواهند شد؛ بلکه همه مصرف کنندگان ناگزیرند به اطلاعاتی اعتماد کنند که (درست یا غلط) بر روی محصول نهایی درج شده است. برای رفع این مشکل، میتوان از فناوری بلاک چین مدد گرفت. به این صورت که اطلاعات و دادههای مربوط به تمامی مراحل تولید محصول (همچون تأمین مواد اولیه، عملیات حمل و نقل، عملیات مربوط به کارخانه، بسته بندی و توزیع نهایی محصول)، بر روی یک پایگاه داده امن و تغییر ناپذیر ثبت میشوند و در پایان، تمامی این اطلاعات در بارکدی روی محصول ذخیره شده و امکان دسترسی به اطلاعات را برای مشتریان نهایی به ارمغان میآورند.
وقتی که شما اقدام به خرید یک محصول مینمایید، با اسکن بارکد روی محصول، میتوانید تمامی اطلاعات مربوط به فرآیند طی شده در تولید آن محصول را مشاهده نمایید؛ اما این امکان برای شما وجود نخواهد داشت که در تأیید یا ثبت اطلاعات در این شبکه مشارکت داشته باشید. این شرایط میتواند مثال سادهای از نحوه عملکرد بلاک چین های عمومی مجوزمحور باشد.
در دنیای تخصصی بلاک چین و رمز ارز ها، ریپل (XRP) مثال نام آشنایی از بلاک چین های عمومی مجوز محور است. در دفتر کل ریپل یا همان XRP ledger تعدادی اعتبارسنج یا نود وجود دارند که عملیات تایید و رد تراکنشها را انجام میدهند. این اعتبار سنجها عموماً اشخاص و یا سازمانهایی هستند که از دید عموم مردم معتبر و قابل اطمینان محسوب میشوند. هر شخص برای انجام تراکنش در این شبکه میتواند تعدادی از اعتبار سنجهایی که بیشتر قابل اطمینان میداند را انتخاب کرده و لیستی را برای خود با عنوان لیست اعتبار سنجهای منحصر بفرد (Unique Node List) تهیه کند. در نهایت برای این که تراکنشی به ثبت برسد ۸۰ درصد اعتبار سنجهای شبکه باید آن را تایید کنند. طبق این تعریف، واضح است که دفتر کل ریپل از نوع مجوز محور یا permissioned است؛ چرا که هر شخصی به خودی خود نمیتواند به یک اعتبار سنج تبدیل شود. اما این دفتر کل را عمومی می دانیم به این دلیل که همه افراد جامعه در صورت تمایل میتوانند تمامی تراکنشهایی که در شبکه ریپل انجام میشوند را در این سایت به صورت آنلاین و لحظه به لحظه مشاهده کنند.
میتوان گفت تمامی بلاک چین هایی که ما امروزه آنها را بعنوان بلاک چین های خصوصی میشناسیم نیز از نوع مجوز محور هستند؛ چرا که در این بلاک چین ها عموم مردم همانطور که توانایی مشاهده تراکنشها و اطلاعات ثبت شده را ندارند، امکانی برای تصمیمگیری در مورد تایید یا عدم تایید یک تراکنش و یا ثبت و ویرایش و حذف اطلاعات را نیز نخواهند داشت. اگر بخواهیم مثالی فرضی از بلاک چین های خصوصی و در عین حال بدون نیاز به مجوز دسترسی در ذهن داشتهباشیم، استفاده از بلاک چین برای رأی گیری مثال خوبی خواهد بود.
همانطور که میدانیم امروزه کاربرد بلاک چین دیگر محدود به تراکنشهای مالی نیست؛ بلکه از آن به عنوان عاملی برای تحول سیستمهای ثبت و مدیریت دادهها یاد میشود. یکی از کاربردهایی که بسیاری از افراد برای بلاک چین متصورند، استفاده از آن برای رأی گیری میباشد. اگر روزی این اتفاق به وقوع بپیوندد، این بلاک چین از نوع خصوصی و بدون نیاز به مجوز دسترسی خواهد بود؛ چرا که هر شخص به تنهایی و بدون نیاز به کسب مجوز خاصی، اجازه ثبت نوعی اطلاعات بر روی آن را خواهد داشت (رأی دادن)، اما قادر نخواهد بود که اطلاعات کلی ثبت شده بر روی آن را مشاهده کند (شمارش آرا).
کدام یک از انواع بلاک چین بر سایرین برتری دارد؟
تا به این جا انواع بلاک چین را از دو منظر توانایی مشاهده اطلاعات و توانایی ثبت و ویرایش اطلاعات مورد بررسی قرار دادیم و مزایا و معایب هر یک از آنها را به طور خلاصه بیان کردیم. اما نکتهای که وجود دارد این است که در نهایت هیچ یک از این بلاک چین ها بر دیگری برتری نداشته و هر یک کاربرد خاص خود را دارند. برای مثال همانطور که در بالا نیز ذکر شد بلاک چین های عمومی (و مشخصا بدون نیاز به مجوز) ظهور حقیقی مفهوم اولیه بلاک چینها هستند؛ چرا که در این نوع بلاک چین ها به همه اشخاص جامعه به یک اندازه اجازه دسترسی به اطلاعات و همینطور حق تصمیم گیری در مورد اعتبارسنجی تراکنشها و ثبت و ویرایش اطلاعات داده میشود؛ ویژگیهایی مانند ناشناس بودن و غیرمتمرکز بودن در آنها به طور کامل حفظ میشود و تعداد بالای اعتبارسنجهایی که باید ثبت هر تراکنش یا اطلاعات جدیدی بر روی زنجیره را تایید کنند، امنیت آنها را تا حد زیادی تضمین میکند. اما باید بدانیم که این بلاک چین ها معمولاً در محیطهای سازمانی موفق عمل نمیکنند.
از آن جایی که این بلاک چین ها به هر کسی اجازه دسترسی به اطلاعات شبکه و ویرایش آنها را میدهند، استفاده از آنها برای نگهداری اطلاعات حساس و محرمانه توصیه نمیشود. بلاک چین های عمومی و بدون نیاز به مجوز معمولاً برای انجام تراکنشهایی استفاده میشوند که فرآیند انجام آنها از نظر فنی و تکنیکی پیچیده نیست، و این کار به شکل ناشناس و غیرمتمرکز انجام میشود. از سوی دیگر، از آنجایی که این بلاک چین های غیر انحصاری اجازه دسترسی به اطلاعات را به صورت عمومی در اختیار همگان قرار میدهند، ویژگی های فنی مخصوصی برای جلوگیری از فعالیتهای کلاهبردارانه و حفظ امنیت تراکنشهای کاربران در آنها لازم است. همه اینها سرعت تعامل کاربران با این بلاک چین ها را کاهش داده و آن را به فرآیند پر هزینهای (همچون ماینینگ در اجماع گواه اثبات کار، یا سهام گذاری در اجماع مبتنی بر اثبات سهام) تبدیل میکند. بنابراین میتوان اینطور نتیجه گیری کرد که بلاک چین های بدون نیاز به مجوز دسترسی برای انجام کارهای سادهتری مانند نقل و انتقال پول یا سایر داراییهای دیجیتال مناسبند، اما برای انجام همین کارهای ساده باید پروسه پیچیدهتری را طی کنند.
بر عکس بلاک چین های غیر انحصاری و بدون نیاز به مجوز، بلاک چین های مجوز محور از بسیاری جهات برای استفاده های شرکتی مناسبند. دلیل این ادعا این است که این بلاک چین ها یک محیط کامپیوتری به اشتراک گذاشته شده را تولید میکنند؛ با قوانینی که طوری برنامهریزی شدهاند تا از هرگونه دستکاری یا تغییر جلوگیری کنند. همین ویژگی راه حل بسیاری از مشکلاتیست که افراد در دنیای اقتصاد دیجیتالی با آنها روبهرو هستند. نقدی که برخی افراد بر ساختار غیر شفاف و اعتماد محور این نوع بلاک چین ها وارد میکنند، کاملاً پذیرفته شده و قابل قبول است؛ اما نکته اینجاست که بلاک چین های مجوز محور، اغلب در محیطها یا سازمانهایی به کار گرفته میشوند که در آنها اساساً مشکل اعتماد وجود ندارد. بنابراین اینگونه سازمانها استراتژیهای بلاک چینی خود را به گونهای تنظیم میکنند که تنها نیازهای خاص خود را از این فناوری تأمین کنند.
جمعبندی
در این مقاله، ابتدا با ماهیت وجودی بلاک چین آشنا شده و دریافتیم که بلاک چین، ابزاری برای یکپارچه سازی و هماهنگی سیستم های توزیع شده و همتا به همتاست. سپس به مرور سیر تاریخی فناوری اطلاعات و پیشرفتهای عصر دیجیتال پرداختیم تا نقایص سیستمهای سنتی متمرکز و لزوم استفاده از بلاک چین در ذخیرهسازی و مدیریت دادهها را درک نماییم. سپس به مرور مفاهیم پایهای همچون تمرکزگرایی و تمرکززدایی، توزیع شدگی، دفترکل توزیع شده، رمزنگاری و هش پرداختیم تا با تسلط بر ادبیات مفهومی بلاک چین، بتوانیم تعاریف دقیقتری را برای توصیف آن ارائه دهیم. با تمرکز بر روی شبکه بیت کوین، به عنوان اولین پیاده سازی موفق بلاک چین در حوزه مالی و اقتصادی، تلاش کردیم تا تمامی اجزاء و نحوه کارکرد هریک از بخشهای این سیستم را در تعامل با سایر بخشها توضیح دهیم؛ و در نهایت انواع بلاک چین ها را بررسی و با یکدیگر مقایسه نمودیم. امیدواریم که مطالعه این مقاله برایتان مفید باشد.
منابع:
- Pelzl, J., & Paar, C. (2009). Understanding Cryptography, A Textbook for Students and Practitioners. Springer.
- Gilder, G. (2018). Life After Google: The Fall of Big Data and the Rise of the Blockchain Economy. Gateway Editions.
- Drescher, D. (2017). Blockchain Basics: A Non-Technical Introduction in 25 Steps. Apress
- Nakamoto, S. (2008). Bitcoin: A Peer-to-Peer Electronic Cash System.
- https://b2n.ir/022541
- https://b2n.ir/394579
- https://b2n.ir/801642
- https://b2n.ir/809918