We are apologize for the inconvenience but you need to download
more modern browser in order to be able to browse our page
آذر ۱۳, ۱۳۹۶
  • Blockchain

    Simply Complicated!

راهنمای بلاک چین، زنجیره بلوکی یا ‌Blockchain چیست؟

نوشته‌ی Mohit Mamoria
اگر زیر یک تخته‌سنگ پنهان نشده باشید، مطمئنم که حتما نام بیت‌کوین و بلاک‌چین به گوشتان خورده است. بالاخره اینها یکی از داغ‌ترین موضوعات این‌روزها و کلیدواژه‌های سال هستند. حتی کسانی که هیچ‌گاه یک رمزپول را ماین نکرده‌اند یا نمی‌دانند که چطور کار می‌کند هم درباره‌ی آن حرف می‌زنند.

خیلی از دوستان غیرفنی من وقتی صحبت از فهمیدن چنین تکنولوژی‌هایی می‌شود به طور کلی خود را می‌بازند و هفته‌ها به من التماس می‌کنند که برایشان توضیح دهم! هزاران کاربر معمولی اینترنت هم هستند که احساس مشابهی دارند.

به عنوان یکی از اولین ماین‌کنندگان بیت‌کوین، وظیفه‌ی خود دانستم که این مطلب را به زبان کاملا ساده بنویسم تا هر کسی بتواند داغ‌ترین موضوع روز تکنولوژی را بفهمد.

بلاک‌چین: اصلا چرا ما به چیزی اینچنین پیچیده نیاز داریم؟

  •     «برای هر مسئله‌ی پیچیده‌ای یک پاسخ وجود دارد که روشن، ساده و اشتباه است.»
    اچ. ال. منکن

بر خلاف بیشتر مطلب‌ها در خصوص بیت‌کوین و بلاک‌چین که اغلب سریعا با تلاش برای توضیح بلاک‌چین شروع می‌شوند، من می‌خواهم ابتدا مشکلی را که آن حل می‌کند توضیح دهم.

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

شما، آدم خوبه‌ی ماجرا، پاسخ می‌دهید: «همین الان برات می‌فرستم» و تلفن را قطع می‌کنید.

0002

سپس شما با مدیر حساب خود در بانک تماس می‌گیرید و به اون می‌گویید: «لطفا ۱۰۰۰ دلار از حساب من به حساب جو منتقل کنید.»

مدیر حساب شما پاسخ می‌دهد:‌«بله، آقا.»

او لیست حساب و کتاب را باز می‌کند، موجودی حساب شما را چک می‌کند که ببیند آیا پول کافی برای انتقال ۱۰۰۰ دلار به جو دارید. به خاطر اینکه شما آدم پولداری هستید، کلی پول برای بذل و بخشش دارید، پس او یک مقدار در لیست به صورت زیر وارد می‌کند:

0003
لیست تراکنش‌ها

  •     نکته: برای اینکه همه چیز را ساده نگه داریم از صحبت در مورد کامپیوتر خودداری می‌کنیم

شما با جو تماس می‌گیرید و به اون می‌گویید:‌ «پول را به حسابت منتقل کردم. دفعه‌ی بعدی که به بانک بروی می‌تونی ۱۰۰۰ دلاری را که من منتقل کردم برداشت کنی.»

0004

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

این دقیقا مشکل سیستم‌های فعلی است.

  •     «برای برقراری اعتماد بین خودمان، ما وابسته به اشخاص ثالث هستیم.»

برای سالها، ما برای اعتماد به یکدیگر وابسته به این واسطه‌ها بوده‌ایم. شاید بپرسید مشکل وابستگی به آنها چیست؟

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

  •     چه می‌شود اگر یکی از لیست‌های که تراکنش‌ها در آن ثبت شده است آتش بگیرد؟
  •     چه می‌شود اگر مدیر حساب شما اشتباها به جای ۱۰۰۰ دلار مبلغ ۱۵۰۰ دلار را بنویسد؟
  •     چه می‌شود اگر این کار را عمدا انجام دهد؟
  •     «برای سالها ما همه‌ی تخم‌مرغ‌های خود را در این سبد قرار داده‌ایم، سبد شخص دیگر.»

آیا می‌شود سیستمی وجود داشته باشد که ما هنوز بتوانیم بدون نیاز به بانک پول منتقل کنیم؟

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

یک لحظه به این فکر کنید که انتقال پول به چه معنی است؟ فقط یک رکورد در یک لیست. پس سوال بهتر این است:

  •     «آیا راهی هست که یک لیست را بین خودمان داشته باشیم به جای اینکه دیگری آن را برای ما انجام دهد؟»

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

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

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

خوب، چطور کار می‌کند؟!

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

  •     «ممکن است منطقی باشد که در زمان محبوب شدن بیت‌کوین تعدادی از آن بگیریم. وقتی تعداد کافی از افراد، اینطوری فکر کنند، آنگاه به یک امپراطوری خودساخته تبدیل خواهد شد.»
  •     – ساتوشی ناکاموتو، ۲۰۰۹

چند نفر کافی است؟ حداقل سه نفر. اما برای مثال ما، فرض می‌کنیم ۱۰ نفر می‌خواهند از شر بانک‌ها و سایر اشخاص ثالث که تراکنش‌ها را مدیریت می‌کنند خلاص شوند. به محض توافق جمعی، آنها جزئیات حساب‌های یکدیگر را برای همیشه خواهند داشت بدون اینکه از هویت یکدیگر باخبر باشند.

0005

۱. یک پوشه‌ی خالی

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

۲. وقتی یک تراکنش رخ می‌دهد

سپس، هر شخص در این شبکه با یک برگه‌ی سفید و خودکاری در دستش می‌نشید. همه آماده‌ی نوشتن تراکنش‌هایی هستند که در این سیستم رخ می‌دهد.

حالا، اگر فرد شماره‌ی ۲ بخواهد ۱۰ دلار به فرد شماره‌ی ۹ بفرستند.

برای انجام تراکنش، فرد شماره‌ ۲ فریاد می‌زند و به همه می‌گوید: «من می‌خواهم ۱۰ دلار به فرد شماره‌ی ۹ منتقل کنم، لطفا همه این را در صفحات خود ثبت کنید.»

0006

همه چک می‌کنند که آیا فرد شماره‌ی ۲ موجودی کافی برای انتاقل ۱۰ دلار به فرد شماره‌ی ۹ دارد. اگر داشته باشد، همه یک یادداشت ثبت تراکنش در برگه‌های خود درج می‌کنند.

0007
اولین تراکنش در برگه

اینجا تراکنش خاتمه‌یافته تلقی می‌شود.

۳. تراکنش‌ها ادامه پیدا می‌کنند

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

این کار ادامه پیدا می‌کند تا وقتی جای خالی روی این برگه برای هیچ‌کس نماند. فرض کنید که هر برگه گنجایش ثبت ۱۰ تراکنش را داشته باشد، به محض ثبت تراکنش دهم، جای خالی برای هیچ‌کس باقی نخواهد ماند.

0008
وقتی صفحه پر می‌شود

زمان آن است که این برگه را در پوشه گذاشته و برگه‌ی جدیدی برای تکرار فرآیند از گام شماره‌ی ۲ که بالاتر ذکر شد بیرون بکشیم.

۴. گذاشتن برگه در پوشه

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

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

  •     «این کار همان «ماین کردن» صفحه برای امن کردن آن است، اما برای حفظ سادگی، فعلا آن را همان مهر و موم کردن می‌نامیم.»
  •      پیش از این، اشخاص ثالث و واسطه‌ها، به ما این اطمینان را می‌دادند که هر آنچه در لیست آنها ثبت می‌شود هرگز تغییر نخواهد کرد. در یک سیستم توزیع شده و غیر متمرکز مانند سیستم ما در عوض، این مهر و موم، اطمینان را به وجود می‌آورد.

جالب شد! خوب چه کسی برگه را مهر و موم می‌کند؟

قبل از اینکه یاد بگیریم چطور می‌تواینم برگه را مهر و موم کنیم، لازم است بدانیم که به صورت کلی، مهر و موم چطور کار می‌کند. و به عنوان یک پیش نیاز لازم است در مورد چیزی بیاموزیم که من دوست دارم آن را اینگونه بنامم…

دستگاه جادویی

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

  •     «این دستگاه، تابع هش (Hash Function) نامیده می‌شود اما حس و حال زیادی فنی بودن نیست! پس فعلا آن را همان دستگاه جادویی می‌نامیم!»

0009
دستگاه جادویی (همان تابع هش)

فرض کنید شما عدد ۴ را از سمت چپ با داخل می‌فرستید، می‌بینیم که از آن طرف کلمه‌ی ‘dcbea’ بیرون می‌اید.

چطور این دستگاه عدد ۴ را به این کلمه تبدیل کرد؟ هیچ کس نمی‌داند. علاوه‌ بر این، این یک فرآیند برگشت‌ناپذیر است. یعنی با دادن کلمه‌ی ‘dcbea’ امکان ندارد که بفهمیم چه چیزی از سمت چپ به دستگاه داده شده است. اما هر بار که شما عدد ۴ را به دستگاه بدهید، همیشه مقدار یکسان یعنی ‘dcbea’ را بر خواهد گرداند.

0010
در واقع hash(4) = dcbea

بیایید با ارسال یک عدد متفاوت امتحان کنیم. مثلا عدد ۲۶ خوب است؟

0011
شد hash(26) = 94c8e

این بار مقدار ’94c8e’ را دریافت کردیم. جالب شد! پس مقادیر می‌توانند شامل عدد هم باشند.

حالا اگر از شما این سوال را بپرسم:

  •      می‌توانید به من بگویید که چه مقداری را باید از سمت چپ بفرستم تا دستگاه مقداری را در سمت راست تولید کند که با سه صفر در ابتدا شروع شود؟ برای مثال، 000ab یا 00098 یا 000fa یا هر چیزی بین اینها.»

0012
پیش‌بینی مقدار ورودی

یک لحظه به سوال فکر کنید.

ثبلا به شما گفته‌ام که دستگاه ویژگی دارد که ما می‌توانیم مقداری را محاسبه کنیم که باید از سمت چپ بفرستیم تا مقدار مورد انتظارمان را در سمت راست بدهد. با چنین دستگاهی چطور می‌توان به سوالی که من پرسیدم پاسخ داد؟

من یک روش در ذهن دارم. چرا هر عدد موجود در دنیا را یکی یکی امتحان نکنیم تا به کلمه‌ای برسیم که با سه صفر در ابتدا شروع شود؟

0013
امتحان کردن همه‌ چیز برای محاسبه‌ی وروردی

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

0014

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

پاسخ به این سوال چقدر سخت است اگر من به شما عددی، مثلا ۷۲۵۳۳ را بدهم و از شما بپرسم، «آیا این عدد، وقتی به دستگاه داده شود، کلمه‌ای را تولید خواهد کرد که با سه صفر در ابتدا شروع شود؟»

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

مهم‌ترین ویژگی چنین دستگاه‌هایی این است که با داشتن یک خروجی، محاسبه کردن ورودی بسیار سخت است، اما با داشتن ورودی و خروجی خیلی ساده است که بررسی کنیم آیا این ورودی آن خروجی را می‌دهد یا نه.

ما این ویژگی دستگاه جادویی (یا تابع هش) را در ادامه‌ی این مطلب به خاطر خواهیم داشت:

  •      «با داشتن یک خروجی، محاسبه‌ی ورودی بسیار سخت است، اما با داشتن ورودی و خروجی، بررسی اینکه آن ورودی آن خروجی را می‌دهد خیلی ساده است.»

چطور از چنین دستگاه‌هایی برای مهر و موم کردن یک برگه استفاده کنیم؟

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

فرض کنید من به شما دو جعبه می‌دهم. اولین جعبه حاوی عدد ۲۰۸۹۳ است. سپس از شما می‌پرسم، «آیا می‌توانید عددی را پیدا کنید که اگر به عدد در جعبه اضافه شود و سپس به دستگاه داده شود، به ما یک کلمه بدهد که با سه صفر در ابتدا شروع شود؟»

0015

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

پس از چندین هزار تلاش، ما به عددی، مثلا ۲۱۱۹۱، می‌رسیم که وقتی به ۲۰۸۹۳ اضافه کنیم (۲۱۱۹۱ + ۲۰۸۹۳ = ۴۲۰۸۴) و به دستگاه بدهیم کلمه‌ای با مشخصات مورد نظر به ما می‌دهد.

 0016

در این مثال، عدد ۲۱۱۹۱ مهر و موم عدد ۲۰۸۹۳ است. فرض کنید یک برگه داریم که عدد ۲۰۸۹۳ روی آن نوشته است. برای مهر و موم کردن برگه (که کسی نتواند محتوای آن را تغییر دهد) ما یک نشان با مقدار ۲۱۱۹۱ روی آن می‌گذاریم. به محض اینکه عدد مهر و موم (در اینجا ۲۱۱۹۱) روی برگه قرار گیرد، برگه مهر و موم شده است.

0017
عدد مهر و موم

  •     عدد مهر و موم «اثبات کار» یا Proof of Work نامیده می‌شود که بدین معنی است که این عدد اثبات این است که تلاش‌هایی برای محاسبه‌ی آن صورت گرفته است. ما برای منظور خودمان آن را همان «عدد مهر و موم» می‌نامیم.

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

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

در نهایت، مهر و موم کردن صفحه

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

0018

  •     نکته: من جمله‌ی «کلمه‌ای که با سه صفر شروع شود» را فقط به عنوان مثال استفاده کردم. این نشان می‌دهد که توابع هش کردن چطور کار می‌کنند. در دنیای واقعی چالش‌ها بسیار پیچیده‌تر از این هستند.

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

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

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

0019

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

اما اگر برای یک نفر، مثلا نفر شماره‌ی ۷، عدد مهر و موم اعلام شده، مقدار خروجی مورد نظر را تولید نکند چه؟ چنین حالت‌هایی معمولا پیش نمی‌آید. دلایل احتمالی به این شرح هستند:

  •     ممکن است آن شخص برخی تراکنش‌هایی که در شبکه اعلام شده را درست نشنیده باشد
  •     ممکن است او برخی تراکنش‌هایی که در شبکه اعلام شده را اشتباه نوشته باشد
  •     ممکن است اون تلاش کرده باشد که تقلب کند یا زمان نوشتن تراکنش‌ها صادق نبوده باشد، چه به نفع خودش و چه به نفع شخص دیگری در شبکه

فارغ ازاینکه دلیل چه می‌تواند باشد، نفر شماره‌ی ۷ تنها یک انتخاب دارد – کنار گذاشتن برگه‌ی خود و کپی کردن از برگه‌ی شخص دیگری که بتواند آن را در پوشه قرار دهد. تا زمانی که این شخص برگه را در پوشه قرار ندهد نمی‌تواند به نوشتن تراکنش‌های بشتر ادامه دهد، که باعث می‌شود ممنوعیت وی از بودن در شبکه می‌شود.

  •     «هر چه که عدد مهر و موم مورد توافق اکثریت باشد، درست‌ترین عدد مهر و موم می‌شود.»

خوب چرا هر کسی منابع خود را صرف محاسبه‌‌ای کند وقتی می‌داند که شخص دیگری آن را محاسبه و اعلام خواهد کرد؟ چرا راحت ننشینیم و منتظر اعلام آن نشویم؟

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

به سادگی مجسم کنید، اگر فرد شماره‌ی ۵ عدد مهر و موم صفحه را محاسبه کند، او مقداری پول مجانی، مثلا ۱ دلار، ; که از آسمان می‌آید جایزه می‌گیرد. به عبارت دیگر، موجودی حساب شخص شماره‌ی ۵ به میزان ۱ دلار افزایش می‌یابد بدون اینکه از موجودی شخص دیگری چیزی کم شود.

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

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

  •     جایزه‌ها باعث می‌شود تا همه روی شبکه به کار کردن ادامه دهند.

به محض اینکه همه صفحه‌های خود را در پوشه‌ها قرار دهند، یک صفحه‌ی خالی بیرون می‌آورند و کل فرایند را از ابتدا تکرار می‌کنند و این کار برای همیشه ادامه می‌یابد.

  •     «یک برگه را یک بلاک تراکنش و پوشه را زنجیره‌ی صفحات (بلاک‌ها) در نظر بگیرید و آن را به زنجیره‌ی بلاک تبدیل کنید.»

خوب،‌ دوستان من، بلاک‌چین اینطوری کار می‌کند.

فقط یک نکته‌ی کوچک باقی‌ مانده است که هنوز به شما نگفته‌ام.

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

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

جلوگیری از ویرایش اعداد مهر و موم

به خاطر بیاورید که به شما گفتم من دو جعبه به شما داده بودم – یکی حاوی عدد ۲۰۸۹۳ و دیگری یک جعبه خالی برای محاسبه توسط شما؟ در واقعیت، برای محاسبه‌ی عدد مهر و موم در بلاک‌چین، به جای دو جعبه، سه جعبه وجود دارد، دو تای آن پر شده و یکی باید محاسبه شود.

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

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

0020

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

اگر یک نفر از بین ده نفر که در ابتدا فرض کردیم، تلاش به تقلب و ویرایش محتوای بلاک‌چین (پوشه‌ی حاوی برگه‌های محتوی فهرست تراکنش‌ها) کند، اون باید صفحات متعددی را تنظیم کرده و اعداد مهر و موم جدیدی را برای تمامی آن صفحات محاسبه کنید. ما می‌دانیم که محاسبه‌ی اعداد مهر و موم چقدر سخت است. بنابراین، یک شخص متقلب در یک شبکه نمی‌تواند بر ۹ شخص صادق غلبه کند.

چیزی که اتفاق می‌افتد این است؛ شخص متقلب تلاش می‌کند یک زنجیره‌ی دیگر در شبکه بسازد اما آن زنجیره هرگز قادر به هماهنگی با زنجیره‌ی درست نخواهد بود، دلیل این موضوع ساده است، تلاش‌ها و سرعت آن یک نفر نمی‌تواند بر تلاش‌ها و سرعت ۹ نفر غلبه کند. لذا تضمین می‌شود که بلندترین زنجیره در شبکه یک زنجیره‌ی سالم است.

0021
بلندترین زنجیره، یک زنجیره‌ی سالم است

وقتی به شما گفتم که یک شخص متقلب نمی‌تواند بر ۹ شخص صادق غلبه کند، زنگی در گوشتان صدا نکرد؟

اگر یه جای یک نفر، ۶ نفر متقلب باشند چه؟!

در این حالت، پروتکل با صورت به زمین خواهد خورد! چیزی که از آن به عنوان «حمله‌ی ۵۱٪» نام برده می‌شود. اگر اکثریت اعضای یک شبکه تصمیم بگیرند که غیرصادق باشند و نسبت به بقیه‌ی شبکه تقلب کنند، پروتکل در هدف خود شکست خواهد خورد.

و این تنها دلیل آسیب‌پذیری است که بلاک‌چین ممکن است روزی فرو بریزد. بد نیست بدانید که احتمال وقوع این مسئله بسیار بعید است، اما ما باید تمامی نقاط آسیب‌پذیری سیستم را بشناسیم. این سیستم بر پایه‌ی این فرض بنا شده است که اکثریت افراد همیشه صادق هستند.

دوستان من، این همه چیز در مورد بلاک‌چین است!

 

منبع Hacker Noon
ترجمه ویرگول

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

شما می‌توانید از این دستورات HTML استفاده کنید: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Top
LOADING CONTENT
Copyright by Ali2k.com