ساختار یک بلاک در بلاکچین – جلسه نهم (+ویدئو)

0 1,699

یک بلاک بلاکچین از چه اجزایی تشکیل شده است؟

همانطور که احتمالا می­‌دانید بلاک‌­ها، اجزای سازنده بلاکچین هستند. اولین سوال این است: داخل هر بلاک دقیقا چه چیزی هست؟ هدف اولیه یک بلاک ثبت تراکنش‌هاست. اکنون با یک مثال ساده از بلاک قصد داریم فهرست تراکنش‌هایی را که شامل این بلاک هستند به شما نشان دهیم.

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

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

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

هر بلاک شامل یک برچسب زمانی (Timestamp)، یک عدد عجیب و غریب به اسم نانس (Nonce) و هش بلاک قبلی می‌باشد. علاوه بر این برخی اطلاعات دیگر نیز در بلاک وجود دارد که فعلاً از جزئیات آن چشم­‌پوشی می‌کنیم.

مفهوم اعتبار (Validity) یک بلاک در بلاکچین چیست؟

اکنون می­‌خواهیم در مورد یکی از مهم­ترین مفاهیم بلاکچین یعنی اعتبار (validity) صحبت کنیم. اما این دقیقا چه معنایی دارد؟ بلاک معتبر، ویژگی خاصی دارد که در ادامه آن را دقیقا توضیح می‌­دهیم. این ویژگی به گونه­‌ای تعریف می‌­شود که بلاک­‌های معتبر در اقلیت بوده و اکثریت با بلاک­‌های نامعتبر است. به عبارت دیگر اگر شما بلاکی ایجاد کنید، به احتمال زیاد این بلاک نامعتبر است. پیدا کردن بلاک‌های معتبر در انبوه بلاک­‌های نامعتبر کار سختی است که به آن استخراج (Mining)  گفته می­‌شود و توسط استخراج کننده (Miner) ها انجام می‌شود.

 

مفهوم مکانیزم اثبات کار (proof-of-work) و ارتباط آن با درجه سختی

سختی استخراج قابل تنظیم است و با درجه سختی (Difficulty) مشخص می­‌شود. درجه سختی، اساساً یک تنظیمات قراردادی است که میزان سختی ایجاد بلاک معتبر جدید را مشخص می­‌کند. در حقیقت، تمام ارزش­‌ها از مفهوم درجه سختی حاصل می­‌شوند. اگر هر کسی بتواند بلاکی را ایجاد کند و آن را در زنجیره قرار دهد دیگر ارزشی وجود نخواهد داشت و شبکه­‌ها در خصوص اینکه کدام بلاک‌­ها در زنجیره قرار گیرند موافقتی نخواهند کرد. ایجاد یک بلاک به این معنی است که شما باید مقداری کار انجام داده باشید. این مفهومِ اثبات انجام کار (Proof-of-Work) است. با یافتن یک بلاک معتبر، شما اثبات می­‌کنید کار مورد نظر انجام شده است. همانطور که گفتیم درجه سختی قابل تنظیم (قابل تغییر) است تا بلاک‌ها در فواصل زمانی منظمی ایجاد شوند. حالا اجازه دهید ویژگی خاص یک بلاک معتبر را دقیقا تعریف کنیم. یک بلاک تنها در صورتی معتبر شناخته می‌­شود که مقدار هش کل بلاک از یک عدد آستانه مشخص کمتر باشد. این آستانه توسط درجه سختی، تعیین می‌­شود. ما یک بلاک را برداشته و مقدار هش تمام محتویات آن را محاسبه می­‌کنیم. با این کار یک امضای منحصر به فرد برای آن بلاک به دست می­‌آوریم. اگر هر یک از داده­‌های آن بلاک را تغییر دهید قطعا مقدار هش آن هم تغییر خواهد کرد، درست همانگونه که در دروس گذشته توضیح دادیم.

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

برای افزایش درجه سختی، مقدار حد آستانه را کوچکتر انتخاب می­‌کنند. از آنجا که هش­‌ها، اعدادی تصادفی هستند، یافتن مقادیر کوچکتر برای آنها، دشوارتر است. این کار شبیه پرتاب تاس است. تصور کنید هر رقم هش مثل پرتاب یک تاس ۱۶-سطحی است، برای رسیدن به سه صفر متوالی که مورد نیاز ماست شما باید سه مرتبه این تاس ۱۶-سطحی را پرتاب کنید و هدف این است که فقط به ۰۰۰ دست پیدا کنید. بنابراین، برای رسیدن به حالت ۰۰۰ باید تاس را در حدود ۴۰۰۰  (یا ۱۶۳)  مرتبه پرتاب کنید.

اما در بلا‌ک‌­ها، ما تاس پرتاب نمی‌­کنیم و فقط می‌­توانیم داد‌ه‌ها را تغییر داده و نتیجه هش را مشاهده کنیم که آیا معتبر است یا خیر؟ این کار را تا رسیدن به یک هش معتبر باید تکرار کنیم. اما چه نوع داده­‌ای در بلاک­‌ها قابل تغییر هستند؟ بلاک­‌ها شامل داده­‌های منتج از تراکنش­‌ها هستند و بنابراین ما اجازه نداریم آنها را تغییر دهیم. نقش فیلد نانس، دقیقاً در همین جا مشخص می‌­شود! نانس یک تکه از داده است که ماینرها می‌­توانند آن را تغییر دهند. ماینرها مادامی که خروجی هش بلاک از آستانه درجه سختی تعیین شده کمتر نباشد، دائما نانس را تغییر داده و هش را محاسبه می­‌کنند. سرانجام، هنگامی که نانسی را پیدا کنند که موجب کمتر شدن هش بلاک از مقدار آستانه درجه سختی گردد به این معنا است که بلاک مذکور، معتبر می‌­باشد. اکنون ماینر، این بلاک معتبر را روی شبکه به صورت همه‌پخشی (Broadcasting) منتشر کرده و بابت تلاشی که انجام داده است پاداش (Fee) دریافت می­‌کند.

واضح است که این روند کاملا مبتنی بر شانس و اقبال است. ماینرها بارها و بارها نانس را تغییر داده و دوباره هش را محاسبه می‌­کنند و امیدوار هستند که موفق به یافتن یک مقدار هش شوند که کمتر از عدد آستانه باشد. در مثال مورد نظر ما، باید هشی را بیابیم که با سه صفر شروع شود. در حال حاضر در بلاکچین بیت­کوین، ماینرها باید هشی با ۱۹ صفر آغازین بیابند. احتمال این کار به انداره پرتاب یک تاس۱۶ -سطحی و رسیدن به ۱۹ صفر بوده و بسیار اندک است. عملیات ماین کردن یک بلاک معتبر، بسیار دشوار است و اگر رایانه‌­ای را ۲۴ ساعته در حالت اجرا قرار دهید باید انتظار داشته باشید که پس از گذشت ۴۰ سال، موفق به یافتن بلاک معتبر شوید!

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

 

پاداش (Fee) یافتن بلاک معتبر در مکانیزم توافق اثبات کار چقدر است؟

ذکر این نکته ضروری است که پاداش یافتن بلاک می­‌تواند قابل توجه باشد. در حال حاضر پاداشی که برای یافتن بلاک جدید در بیت­‌کوین در نظر گرفته شده است ۱۲/۵ بیت­‌کوین است که هم اکنون (در فوریه سال ۲۰۱۹) حدود ۵۰۰۰۰ دلار ارزش دارد! جای تعجب نیست که رقابت بر سر این موضوع بسیار زیاد است. هنگامی که سایر گره­‌های شبکه یک بلاک جدید را دریافت کنند، به راحتی با محاسبه هش آن بلاک و بررسی اینکه آیا این مقدار، کمتر از حد آستانه درجه سختی هست یا خیر، می‌­توانند اعتبار آن را تائید یا رد کنند. اگر مقدار مذکور از حد آستانه کمتر باشد، بلاک به زنجیره اضافه شده و آنها کار خود را برای یافتن بلاک بعدی آغاز می‌­کنند. بدیهی است بلاک بعدی، هش بلاک قبلی را در داده­‌های خود قرار می­‌دهد و اینگونه پیوستگی پیوندی بلاکچین تضمین می­‌گردد. در مورد این پیوستگی یا زنجیره­‌سازی از بلاک­‌ها در ادامه بیشتر توضیح خواهیم داد.

ممکن است شما دوست داشته باشید

ارسال یک پاسخ

آدرس ایمیل شما منتشر نخواهد شد.