این مقاله بخش آخر از یک سری چهار بخشی به نام تراکنش بلاک چین است.
سایر بخش ها:
بخش اول تراکنش بلاک چین
بخش دوم تراکنش بلاک چین
بخش چهارم تراکنش بلاک چین
ماینرها همه تراکنشهای مطلوب خود را انتخاب کرده و آنها را در قسمت بدنه بلوک مینویسند. سپس هش بلوک قبل و اطلاعات ثابت مشخص دیگر را نیز در هدر بلوک وارد میکنند و تنها هش بلوک فعلی و نانس باقی میمانند. نانس یک عدد است که همانطور که از معنای آن بر میآید واجد معنای خاصی نیست. ماینر سپس از اطلاعات بلوک هش را ساخته و آن را با سختی شبکه مقایسه میکند.
سختی یک هدف تعیین شده از سوی شبکه است که در تمامی شبکه ثابت است، همه از آن مطلعند و در بلاک چین بیت کوین هر ۲۰۱۶ بلوک تغییر میکند. این تغییر به این صورت است که هر ۲۰۱۶ بلوک، شبکه یک میانگینگیری بر روی زمان نوشته شدن بلوکها انجام میدهد. اگر این زمان میانگین از ۱۰ دقیقه بیشتر باشد سختی شبکه کم شده و اگر این زمان متوسط کمتر از ۱۰ دقیقه باشد سختی افزایش مییابد. هدف از طراحی این مکانیسم آن است که همیشه فاصله زمانی بین نوشته شدن بلوکها به طور دینامیک تغییر کند تا مطمئن باشیم با تغییرات توان پردازش کلی موجود در شبکه که صرف نوشتن بلوکها میشوند، همواره فاصله زمانی بین دو بلوک متوالی از تاخیر شبکه یا Latency بالاتر بماند.
همانطور که گفته شد، پس از اینکه ماینر هش بلوک را ساخت، آن را با سختی مقایسه میکند. سختی یک هدف در اختیار شبکه میگذارد که اعلام میکند هش بلوک همواره باید از عدد خاصی که توسط سختی تعیین میشود کوچکتر باشد. اگر بخواهیم مساله را سادهتر بیان کنیم مثلا هدف اعلام میکند که ابتدای هش بلوک باید با هشت عدد صفر شروع شود. ماینر با مقایسه هش بلوک و هدف تعیین میکند که به هدف نائل شده است یا خیر و اگر موفق نشده باشد نانس را که یک عدد بدون معنا است تغییر میدهد و دوباره هش را محاسبه میکند. ماینر آن قدر این عمل را تکرار میکند تا موفق شود بلوکی بسازد که شرط تعیین شده توسط سختی را ارضا کند (یا از ساخته شدن آن بلوک توسط ماینر دیگر مطلع شود). زمانی که ماینر به هدف نائل شد بلوک ساخته شده را با امضای دیجیتال خودش برای سایر نودهای شبکه یا ماینرها ارسال کرده و به این وسیله بقیه را مطلع میکند. نودهای دیگر با دریافت این بلوک محتویات آن و مهمتر از همه هش بلوک را کنترل کرده و بعد از اینکه با یک محاسبه ساده متوجه شدند که هش متعلق به همین محتواست، اطلاعات نوشته شده در هدر و بدنه صحیح است و بلوک توسط همان ماینر ارسال شده است و هش بلوک شرط سختی را ارضا کرده است، اطلاعات بلوک را به عنوان بلوک بعدی بلاک چین در نسخه دفتر کل خود مینویسند و از تلاش برای ساخت آن بلوک دست کشیده و مشغول حل مساله بلوک بعدی میشوند. واضح است که در اینجا انگیزه ماینرها از تلاش برای ساخت هر چه سریعتر بلوک و اعلام آن به بقیه ماینرها دریافت جایزه بلوک نوشته شده در کوین بیس است.
اما همانطور که گفته شد، نوشته شدن یک بلوک در یک یا چند دفتر کل کفایت نمیکند. ممکن است تقریبا همزمان با نوشته شدن بلوک توسط ماینر m، ماینر n نیز موفق به ساخت بلوک شود و آن را به بعضی از ماینرها اعلام کند، به این حالت اصطلاحا فورک شدن یا شاخه شدن (منشعب شدن) بلاک چین میگوییم. در این شرایط آن بلوکی معتبر است که بیش از ۵۰ درصد نودهای شبکه صحت آن را تایید کنند. به این فرآیند اصطلاحا اجماع میگوییم. طبیعی است که با گذشت زمان ماینرها مجبورند بر روی یک شاخه توافق کنند، زیرا اصرار ماینرهای شاخه اقلیت به ضرر خود آنهاست چون آنها تعداد کمتر هستند و بلوکهایی که توسط ایشان نگاشته شده است و بر روی بلوکهای قبل قرار میگیرد هیچ یک به دلیل عدم تطابق هش معتبر نیستند. پس اگر ماینری در شاخه اقلیت بتواند بلوکی هم بسازد، چون بیش از نیمی از شبکه نمیتوانند بلوک وی را مورد قبول قرار دهند او نمیتواند دارایی حاصل از این جایزه را هزینه کند و بنابراین برنده هیچ مسابقه نگاشت بلوکی نشده است. بنابراین در مورد سافت فورک طبیعتا ماینرها از یک شاخه طرفداری خواهند کرد که اکثریت را در اختیار دارد و بلندترین شاخه نیز هست.
هر چه بلوکهای بیشتری بر روی یک بلوک خاص ساخته شوند امکان تغییر در این بلوک کمتر و کمتر خواهد شد. به عبارت دیگر هر چه یک بلوک عمیقتر در بلاک چین دفن شده باشد، کمتر احتمال تغییر آن وجود دارد، زیرا اگر کسی این بلوک را تغییر دهد، این تغییر در هش آن منعکس خواهد شد که در هدر بلوک بعدی نیز نوشته شده است و به این ترتیب لازم است هش بلوک بعدی نیز دوباره محاسبه شود و با سختی در تطابق باشد و این روند تا آخرین بلوک بلاک چین ادامه پیدا کند که هزینه پردازشی، و به طبع مالی، هنگفتی خواهد داشت و علاوه بر آن این کار باید حداقل بر روی نیمی از نودهای شبکه اجرا شود که به هر خرابکار یک هزینه سرسامآور تحمیل میکند. روی دیگر این سکه آن است که برای اینکه از قطعی شدن یک تراکنش در بلاک چین مطمئن شویم لازم است مدتی صبر کنیم تا اولا بر روی یک بلوک نوشته شود و سپس اگر مبلغ تراکنش بالاست مدتی نیز صبر کنیم که تعدادی بلوک بر روی این بلوک ساخته شوند تا مطمئن شویم در شاخه غالب قرار گرفتهایم. این تعداد بسته به مبلغ تراکنش از یک تا ۶ بلوک است که نزدیک به یک ساعت طول میکشد که البته برای تراکنشهای بین مرزی در مقایسه با سیستم سوئیفت بسیار عالی است ولی برای تراکنشهای درون یک کشور چندان مناسب به نظر نمیآید. علاوه بر آن این فاصله زمانی به اضافه محدودیت حجم بلوکها باعث میشوند نرخ انجام تراکنشها در بلاک چین تبدیل به یک معضل شود که در اغلب موارد با سیستمهای سنتی مانند ویزا قابل رقابت نباشند.
این یک روش عمومی است که در آن یک انتقال وجه از حسابی به حساب دیگر در بلاک چین بیت کوین اجرا میشود. نکات مهم در این روش عدم وجود یک سیستم مرکزی، در اختیار قرار دادن کنترل حساب به مشتری، تامین هزینه ماینرها توسط شبکه، تعیین کارمزد توسط مشتریان و الگوریتم اجماع است.
آخرین نکته مهم در اینجا آن است که الگوریتم مورد استفاده برای اجماع در شبکه بلاک چین بیت کوین یک روش اثبات کار است که در آن مساله عمومی ژنرالهای بیزانسی به این صورت حل میشود که ما با اجرای یک مسابقه که جنبه شانس و احتمالاتی بسیار بالایی دارد به یکی از ژنرالها قدرتی را تفویض میکنیم تا به موجب آن تصمیمگیری برای کل شبکه را انجام دهد و همه از وی پیروی میکنند. اگر بخواهیم مطمئن شویم که این ژنرال خائن نیست و یا ژنرال دیگری موفق به حل همزمان این مساله نشده است همه ژنرالها صبر میکنند تا از اینکه آنها نیز به این ژنرال اعتماد دارند باخبر شوند و سپس همگی با هم به سوی حمله یا عقبنشینی حرکت میکنند.