مطمئنم بیت کوین و بلاک چین به گوشتون خورده. بالاخره یکی از موضوعات محبوب این روز هاست. حتی کسانی که یک رمزارز را استخراج نکرده اند یا هنوز انرا درک نمیکنند, در مورد ان حرف میزنند. من بیشتر دوستان غیر کامپیوتری دارم تا کامپیوتری. اونها برای هفته ها پدر من را درآوردند تا این اصطلاحات نامفهوم را برایشان توضیح دهم! میدانم که هزاران نفر دیگر هم همچین حسی را دارند. در نتیجه وقت ان رسیده که چیزی بنویسم که به کمک ان همه تکه گم شده خود را پیدا کنند -- هدف این پست همین است.
'برای هر مسئله پیچیده ای جوابی شفاف, ساده , و اشتباه وجود دارد' -- H.L.Mencken
برعکس اکثر مقاله ها, به جای اینکه اول آنرا تعریف کنیم, میخواهیم ببینیم بلاکچین چه مشکلاتی را حل میکند .
فرض کنید دوستتان joe برای تعطیلات به مسافرت رفته و پول کم اورده. به شما زنگ میزنه و میگه "سلام داداش. یکم پول داری به من قرض بدی؟"
ما هم که ساده میگیم " باشه joe جان . الان کارت به کارت میکنم"
بعد به مسئول امور مشتریان در بانک تان زنگ میزنید و میگویید که هزار دلار به حساب joe کارت به کارت کند.
اونم میگه " چشم قربان"
بعد میره حساب شما رو بررسی میکنه که ایا هزار دلار موجودی دارید یا نه. از انجا که شما ادم پولداری هستید مشکلی نیست. بعد چیزی مثل این را در دفتر, ثبت میکند:
برای سادگی فرض کنید این کار ها بدون کامپیوتر انجام میشود.
بعد به joe زنگ میزنیم و میگیم" هزار دلار برات فرستادم. دفعه بعد که بری بانک میتونی ازش برداشت کنی "
الان چه اتفاقی افتاد؟ شما و joe هر دو به بانک اعتماد کردید که پول شما را مدیریت کند. در واقع هیچ انتقال فیزیکی اسکناسی در کار نیست. تمام چیزی که نیاز دارید یک حساب در بانک است. به بیان دقیق تر, حسابی که نه شما و نه جمشید روی ان کنترلی ندارید.
این مشکل سیستم کنونی است.
سال هاست که برای اینکه به یکدیگر اعتماد کنیم به یک میانجی وابسته هستیم.
ممکن است بپرسید:"مشکل وابسته بودن به انها چیست؟"
مشکل این است که تعداد آن یک است. اگر در جامعه هرج و مرج شود, تنها چیزی که لازمه این است که یک فرد/سازمان خراب بشه.عمدی یا ناخواسته.
ایا یک سیستم میتواند وجود داشته باشد که در ان بدون نیاز به بانک بتوان پول منتقل کرد؟
جواب این است که باید بیشتر تمرکز کنیم و یک سوال دقیق تر از خودمان بپرسیم(بالاخره سوال های بهتر به جواب های بهتر منجر میشوند)
چند ثانیه فکر کنید. معنی انتقال پول چیست؟ فقط یک تراکنش که د دفتر ثبت شده است. سوال بهتر این است:
ایا راهی هست که بین خودمان یک دفتر داشته باشیم به جای اینکه یک نفر دیگر این کار را برای ما انجام دهد.
حالا این سوالی است که ارزش پاسخ دادن دارد. و همانطور که احتمالا حدس زده اید بلاک چین جواب این سوال است.
روشی برای اینکه یک دفتر بین خودمان داشته باشیم, به جای اینکه به یک نفر دیگربرای این کار وابسته باشیم.
هنوز با من هستید؟ خوبه. حالا که در ذهنتان سوال هایی ایجاد شده , یاد میگیریم که این دفتر همگانی چطور کار میکند.
این روش نیازمند تعداد کافی از افرادی است که نمیخواهند به یک شخص ثالث وابسته باشند. بعد این گروه میتوانند یک دفتر را بین خود نگه دارند.
منطقی به نظر میرسد که در صورتی که این کار ادامه پیدا کند مقداری بیت کوین به دست اورید. اگر تعداد کافی از میردم مثل هم فکر کنند این به یک پیشگویی اجتناب ناپذیر تبدیل خواهد شد. ساتوشی ناکوموتو
چقدر کافی است؟ حداقل سه تا. برای مثال, فرض میکنیم که ده نفر وجود دارند که میخواهند بانک ها یا هر شخص ثالثی را ترک کنند. طی یک توافق متقابل, انها همیشه از حساب های یکدیگر اطلاع دارند __ بدون دانستن هویت انها
۱. یک پوشه خالی
برای شروع همه یک پوشه خالی همراه خود دارند. همینطور که پیش میرویم همه این ده نفر شروع به اضافه کردن صفحاتی به پوشه خود میکنند. و این مجموعه صفحات یک دفتر را تشکیل میدهند که معاملات را ثبت میکند.
۲.وقتی یک معامله میشود.
در این شبکه همه با یک برگه کاغذ و خودکار در دست نشسته اند. همه اماده هستند که هر تبادلی در سیستم رخ میدهد را یادداشت کنند
حالا اگر #2 بخواهد ده دلار به #10 ارسال کند.
برای انجام تبادل, #2 داد میزنه و به همه میگه:"من میخوام ده دلار به #9 بفرستم. پس لطفا همه ان را یادداشت کنید"
همه چک میکنند که ایا #2 موجودی کافی ( ده دلار) برای انتقال به #9دارد یا نه. اگر داشت, همه این انتقال را روی کاغد هایشان مینویسند.
انتقال تکمیل شد!
۳. مبادلات ادامه پیدا میکند
با گذشت زمان, بقیه هم به انتقال پول به دیگران نیاز پیدا میکنند. هروقت بخواهند یک انتقال انجام دهند, انرا به بقیه اعلام میکنند.به محض اینکه یک نفر این اعلان(ها) را بشنود, انرا روی کاغذ مینویسد.
این روند ادامه دارد تا وقتی که کاغذ همه پر شود. فرض کنید هر صفحه برای ده تبادل فضا داشته باشد. دقیقا بعد از دهمین تبادل کاغذ همه پر میشود.
حالا وقت ان است که کاغذ را در پوشه بگذاریم و یک برگه دیگر برداریم و مراحل ۱و ۲ را تکرار کنیم.
۴. کنار گذاشتن برگه
قبل از اینکه برگه را در پوشه بگذاریم, باید انرا با یک شناسه منحصر به فرد که همه انرا قبول دارند پلمپ کنیم. با پلمپ کردن آن, مطمئن میشویم که بعد از اینکه انرا در پوشه قرار دادیم کسی نمیتواند تغییری در ان ایجاد کند __ نه امروز نه فردا نه حتی یک سال دیگر. وقتی رفت توی پوشه تا ابد در پوشه باقی می ماند __ مهر و موم شده. به علاوه, اگر همه به پلمپ اعتماد داشته باشند, به محتوای برگه هم اعتماد دارند. و این پلمپ کردن برگه رمز این روش است.
قبل از اینکه بدانیم چطور می توانیم برگه را پلمپ کنیم ، به طور کلی خواهیم دانست که این مهر و موم چگونه کار می کند. و پیش شرط لازم ، یادگیری در مورد چیزی است که دوست دارم آنرا صدا کنم ...
یک ماشین را تصور کنید که با دیوار های ضخیم احاطه شده است. اگر یک جعبه که حاوی یک چیز است را از چپ وارد ماشین کنیم, یک جعبه که حاوی یک چیز دیگر است را تف میکند!
اسم این ماشین Hash Function است ولی ما خیلی نمیخوایم تخصصی باشیم. پس با همون ماشین جادویی ادامه میدیم.
فرض کنید عدد ۴ رو از چپ وارد ماشین جادویی میکنیم, متوجه میشیم که کلمه ‘ dcbea’ رو تف کرد!
چطور عدد ۴ روبه این عبارت تبدیل کرد؟ کسی نمیدونه. به علاوه, این یک فرایند برگشت ناپذیر است. اگر کلمه ‘dcbea’ را به عنوان ورودی به ان بدهیم غیر ممکنه که بفهمیم ورودی چه بوده. ولی هر وقت عدد ۴ را وارد کنیم , قطعا عبارت ‘dcbea’ خارج خواهد شد.
بیایید یک عدد دیگر به ان بدهیم. ۲۶ چطوره؟
اینبار 94c8e گرفتیم. چه جالب . پس این عبارت عدد هم میتونه داشته باشه.
اگر حالا از شما این سوال را بپرسم چطور:
آیا می توانید به من بگویید که از سمت چپ دستگاه چه باید وارد کنم به گونه ای که عبارتی را دریافت کنم که با سه صفر شروع می شود؟ به عنوان مثال ، 000ab یا 00098 یا 000fa یا هر چیزی مثل این.
چند لحظه به سوال فکر کنید.
من به شما گفتم که ویژگی ماشین این است که وقتی خروجی را به ان بدهیم نمیتوانیم بفهمیم که ورودی ان چه بوده. پس چطور میتوانیم به این سوال جواب دهیم؟
یک روش به ذهنم رسید. چطوره همه عدد های جهان را یکی یکی به دستگاه بدهیم تا وقتی که عبارت خروجی با سه صفر شروع شود.
خوشبین باشید, بعد از چندین هزار تلاش, بالاخره به خروجی مورد نظر میرسیم.
محاسبه ورودی با توجه به خروجی بسیار دشوار بود. اما در عین حال ، بررسی اینکه آیا ورودی پیش بینی شده خروجی مورد انتظار را تولید می کند ، بسیار ساده خواهد بود. یادتان باشد که دستگاه هر بار همان عبارت را برای یک عدد خاص تولید می کند.
فکر میکنید اگر یک عدد مثل 72533 را به شما بدهم جواب دادن به این سوال چقدر سخت است: آیا این عدد هنگام وارد شدن به ماشین کلمه ای را می دهد که با سه صفر شروع می شود؟
تنها کاری که باید انجام دهید این است که شماره را به دستگاه بدهید و ببینید که در سمت راست آن چه چیزی را بدست آورده اید. خودشه. مهمترین ویژگی این ماشین ها این است که - "با توجه به یک خروجی ، محاسبه ورودی بسیار دشوار است ، اما اگر ورودی و خروجی را داشته باشیم ، می توان بررسی کرد که ورودی به خروجی منجر می شود یا نه."
ما از ماشین جادویی برای تولید پلمپ برگه استفاده میکنیم.مثل همیشه با یک موقعیت خیالی شروع میکنیم.
فرض کنید دو تا جعبه به شما داده ام. اولین جعfه محتوی عدد 20893 است. بعد از شما میپرسم :ایا میتوانید عددی را حدس بزنید که وقتی با عدد درون جعبه اول جمع و وارد ماشین شود, عبارتی را تولید کند که به سه صفر شروع شود؟
این مثل موقعیت قبل است. یاد گرفتیم که تنها راه پیدا کردن همچین عددی, این است که همه اعداد جهان را آزمایش کنیم.
پس از چند هزار تلاش ، ما به عددی میرسیم ، مثلا 21191 ، که با اضافه شدن به 20893 (یعنی 21191 + 20893 = 42084) و ورود به ماشین ، عبارتی را تولید میکند که با شرایط ما هم خوانی دارد.
در چنین حالتی ، این شماره ، 21191, پلمپ شماره 20893 می شود. فرض کنید صفحه ای وجود دارد که دارای شماره 20893 است که روی آن نوشته شده است. برای پلمپ آن صفحه (یعنی هیچ کس نمی تواند محتوای آن را تغییر دهد) ، یک نشان با شناسه "21191" را روی آن قرار می دهیم. به محض اینکه شناسه پلمپ (یعنی 21191) در صفحه قرار گرفت ، صفحه مهر و موم می شود.
شناسه پلمپ "proof of work- اثبات کار" نامیده می شود ، بدین معنی که این شماره اثبات تلاش برای محاسبه آن است. برای اهداف ما "شناسه پلمپ" مناسب تر است.
اگر کسی می خواهد بررسی کند که صفحه تغییر کرده است، تمام کاری که باید انجام دهد این است که محتوای صفحه را با شناسه پلمپ جمع کند و وارد ماشین جادویی کند. اگر ماشین یک عبارت که با سه صفر شروع میشود را تولید کند محتویات دست نخورده هستند. اگر کلمه ای که ارائه می شود شرایط ما را برآورده نمی کند ، می توانیم صفحه را دور بیندازیم زیرا محتویات آن دستکاری شده است.
ما از یک مکانیزم پلمپ مشابه برای مهر و موم کردن تمام صفحات خود و در نهایت قرار دادن آنها در پوشه های مربوطه استفاده خواهیم کرد.
برای پلمپ صفحه خود که شامل تبادلات شبکه است، باید عددی را پیدا کنیم که وقتی با لیست معاملات جنع شود و وارد دستگاه شود ، عبارتی راتولید کند که با سه صفر شروع می شود.
توجه: من از عبارت "عبارت شروع شده با سه صفر " فقط به عنوان مثال استفاده كرده ام. این نشان می دهد که hashing function چگونه کار می کند. چالش های واقعی بسیار پیچیده تر از این است.
هنگامی که این شماره پس از گذر زمان و برق در دستگاه محاسبه می شود ، صفحه با آن شماره(شناسه) پلمپ می شود. اگر شخصی سعی کند محتوای صفحه را تغییر دهد ، شناسه پلمپ به هر کسی این امکان را می دهد که صحت برگه را تأیید کند.
حالا که در مورد پلمپ کردن برگه میدانیم ، به زمانی باز می گردیم که نوشتن تبادل دهم در صفحه را تمام کرده بودیم و برای نوشتن اطلاعات بیشتر به فضا نیاز داشتیم.
به محض اینکه همه برای نوشتن معاملات بیشتر از صفحه خارج شدند ،محاسبه شناسه پلمپ را شروع می میکنند تا در پوشه قرار بگیرد. همه افراد در شبکه محاسبه را انجام می دهند. اولین نفر در شبکه که شناسه پلمپ را فهمید آن را به بقیه اعلام می کند.
بلافاصله با شنیدن شناسه پلمپ ، همه تأیید می کنند که آیا خروجی مورد نظر را میدهد یانه. اگر اینطور بود، همه صفحات خود را با این شناسه پلمپ میکنند در پوشه های خود قرار می دهند.
اما اگر برای کسی ، مثلاً #7 ، شناسه پلمپ که اعلام شده بود، خروجی لازم را تولید نکند چه؟ چنین مواردی غیر عادی نیست. دلایل احتمالی این امر می تواند موارد زیر باشد:
مهم نیست که دلیل آن چیست ، #7 تنها یک انتخاب دارد - صفحه خود را دور ریخته و آن را از شخص دیگری کپی کند تا او هم بتواند آن را در پوشه قرار دهد. مگر اینکه صفحه خود را در پوشه قرار ندهد ، نمی تواند نوشتن معاملات بیشتر را ادامه دهد ، بنابراین ، شبکه او را طرد میکند.
اگر اکثریت با موافقت کنند، به شناسه پلمپ درست تبدیل می شود.
پس چرا همه افراد وقتی می دانند که شخص دیگری آن را برای آنها محاسبه و اعلام می کند ، منابع خود را برای انجام محاسبه صرف می کند؟ چرا بیکار ننشسته و منتظر اعلام نمانیم؟
سوال خوبی است. این جا است که مشوق ها وارد عمل میشوند می شوند. هر کس که بخشی از Blockchain است واجد شرایط دریافت پاداش است. اولین کسی که شناسه پلمپ را محاسبه کند, برای تلاش های خود پول مجانی پاداش می گیرد (مثلا هزینه برق و CPU صرف شده).
تصور کنید ، اگر # 5 شناسه پلمپ یک برگه را محاسبه کند ، با مقداری پول رایگان تشویق می شود ، مثلاً 1 دلار پاداش می گیرد. به عبارت دیگر ، موجودی حساب # 5 افزایش می یابد, بدون اینکه از حساب بقیه چیزی کم شود.
اینگونه بیت کوین به وجود آمد. این اولین ارزی بود که در یک Blockchain معامله شد. در عوض، برای اینکه مردم در شبکه تلاش کنند, بیت کوین اهدا میشود.
هنگامی که افراد کافی بیت کوین دارند ، ارزش آن رشد می کند و باعث می شوند افراد دیگر تمایل به بیت کوین داشته باشند. ساخت بیت کوین ارزش آن را بیشتر میکند. حتی وقتی افراد بیشتری تمایل به بیت کوین پیدا کنند باز هم ارزش ان بیشتر میشود. و به همین ترتیب.
و وقتی برگه ها را در پوشه قرار دادند, یک برگه دیگر برمیدارند و کل مراحل را دوباره تکرار میکنند.
به برگه به عنوان یک بلوک از تبادلات و به پوشه به عنوان یک زنجیره از تبادلات نگاه کنید(Blockchain == زنجیره ای از بلوک ها یا همچین چیزی)
هنوز یک چیز کوچک را به شما نگفتم.
فرض کنید ۵ صفحه در پوشه قرار دارد. همه پلمپ شده با یک شناسه پلمپ. اگر من برگه دوم را بردارم و ان را به نفع خودم تغییر دهم چه؟ شناسه پلمپ این امکان را به بقیه میدهد که صحت ان را بررسی کنند. درسته؟ اگر یک شناسه پلمپ جدید برای تبادل دستکاری شده محاسبه کنم و برگه را با شناسه جدید پلمپ کنم چه؟
برای حل این مشکل که یک نفر برگردد و یک صفحه را دستکاری کند, از جمله شناسه پلمپ, محاسبه شناسه پلمپ کمی پیچیدگی دارد.
یادتان هست که گفتم : به شما دو جعبه میدهم. یکی برای ذخیره عدد 20893 و یک جعبه خالی برای شما که محاسبه کنید؟ در حقیقت, برای محاسبه شناسه پلمپ در بلاکچین, به جای رو جعبه , سه جعبه وجود دارد. دوتا که محتوی چیزی هستند و یکی برای اینکه محاسبه شود.
و وقتی محتوا همه سه جعبه با هم جمع شدند و وارد ماشین شدند, پاسخی که از سمت راست خارج میشود باید شرط مورد نیاز را داشته باشد.
میدانیم که یک جعبه لیست تبادل ها را دارد و جعبه دیگر شناسه پلمپ . جعبه سوم محتوی خروجی ماشین جادویی برای برگه قبلی است.
با استفاده از این ترفند کوچک ، ما اطمینان حاصل کردیم که هر صفحه به صفحه قبلی خود وابسته است . بنابراین ، اگر شخصی مجبور به تغییر یک صفحه قدیمی باشد ، مجبور است محتویات و شناسه پلمپ همه صفحات را پس از آن تغییر دهد تا زنجیره سازگار باشد. اگر فردی از بین ده نفری که در ابتدا داشتیم ، سعی کند محتوای بلاکچین (پوشه حاوی صفحات دارای لیست معاملات) را دستکاری کند ، باید چندین صفحه را تنظیم کند و همچنین شناسه پلمپ جدیدی را برای همه ان صفحات محاسبه کند. ما می دانیم محاسبه شناسه پلمپ چقدر دشوار است. بنابراین ، یک فرد نامرد در شبکه نمی تواند 9 فرد صادق را مورد ضرب و شتم قرار دهد.
اتفاقی که خواهد افتاد این است که، از صفحه ای که شخص نامرد سعی در دستکاری ان دارد ،باید یک زنجیره دیگر را در شبکه ایجاد کند ، اما این زنجیره هرگز نمی تواند با زنجیره اصلی دست و پنجه نرم کند - چون تلاش و سرعت یک نفر نمی تواند با تلاش و سرعن نه نفر رقابت کند. از این رو ،اینکه طولانی ترین زنجیره در یک شبکه ، زنجیره اصلی است تضمین شده است .
در این حالت پروتکل دهنشان را سرویس خواهد کرد. و به عنوان "حمله 51٪" شناخته می شود. اگر اکثریت افراد در شبکه تصمیم بگیرند که هرج و مرج ایجاد کنند و بقیه شبکه را دستکاری کنند ، پروتکل از هدف خود ناکام می ماند.
و این تنها دلیلی است که بلاکچین فرو بپاشد. بدانید بعید است که این اتفاق بیفتد اما همه باید نقاط آسیب پذیر سیستم را بدانیم. این سیستم با فرض ساخته شده است که اکثریت جمعیت همیشه صادق هستند.
و دوستان من ، این همه چیز درباره بلاکچین است. اگر تا به حال کسی را پیدا کرده اید که احساس عقب ماندگی میکند از حالا به بعد می دانید که او را به کجا ارجاع دهید
اگر این پست را دوست داشتید انرا لایک کنید تا بقیه هم اون رو بخوانند.