نحوه ثبت تراکنش در بلاکچین
شاید شما به عنوان یک فرستنده یا دریافت کننده ارز دیجیتال، ممکن است با مراحل ثبت تراکنش در بلاکچین آشنا نباشید و این فرایند را به آسانی در کیف پول خود انجام دهید. ولی باید بدانید که انجام این فرایند به همان سادگی که میبینید، نیست و در پشت پرده آن، ماینرهای زیادی در حال فعالیت برای اضافه کردن بلاک خود به بلاکچین هستند. آنها ابتدا باید تراکنش شما را در بلاک خود قرار دهند و سپس، آن بلاک را به بلاکچین اضافه کنند.
شاید بهتر باشد، قبل از آشنایی با این فرایند، مقاله بلاک چین چیست؟ را مطالعه کرده و با ساختار آن آشنا شوید.
مراحل ثبت تراکنش در بلاکچین
آیا تا به حال به این موضوع فکر کردهاید که یک تراکنش چگونه تایید و به بلاکچین اضافه میشود؟ فرآیند استخراج در بلاکچین به چه شکلی انجام میشود؟ این فرایند تا حدودی پیچیده است و برای درک بهتر، ما آن را به هفت مرحله ساده تقسیم کردیم تا به صورت قدم به قدم با این فرایند آشنا شوید. این مراحل یک آموزش ثبت تراکنش در بلاکچین است.
مرحله اول: ثبت تراکنش
در قدم اول ثبت تراکنش در بلاکچین، شما باید به کیف پول ارز دیجیتال خود مراجعه کرده و برای ارسال توکنها اقدام کنید. برای این کار کافی است که توکن مورد نظر را انتخاب کرده، تعداد آن را مشخص کنید. سپس، لینک کیف پول مقصد یا QR کد آن را وارد کرده و در نهایت، گزینه Send را بزنید تا تراکنش انجام شود.
مرحله دوم: انتظار برای پردازش
این مرحله مربوط به انتظار برای پردازش یا تایید تراکنش ثبت شده است. پس از ارسال توکن موردنظر از طریق کیف پول ارز دیجیتال، تراکنش شما در حالت انتظار در شبکه باقی میماند تا یک ماینر آن را تایید کند. تا زمانی که این تراکنش توسط یک ماینر پردازش شود، در استخرهای کوچک محلی با نام استخر تراکنشهای تایید نشده نگهداری میشوند. همه تراکنشهای تایید نشده در یک استخر بزرگ نگهداری نمیشوند. چندین استخر کوچک محلی وجود دارد که تراکنشهای تایید نشده با تقسیم بندی مشخصی، داخل آنها جمع آوری میشوند.
مرحله سوم: ساخت بلاک توسط ماینرها
در مرحله سوم از ثبت تراکنش در بلاکچین، پس از گذشت مدت زمان کوتاهی، یکی از ماینرها در شبکه، تراکنش شما را انتخاب کرده و آن را به بلاک خود اضافه میکند. در برخی از شرایط، ماینرها به نودها (Nodes) نیز شناخته میشوند. هر ماینر برای خودش یک بلاک جداگانه دارد و این بلاکها، مجموعهای از تراکنشهای تایید نشده و برخی از ابردادهها هستند. البته، این تراکنشهای تایید نشده که به بلاک یک ماینر اضافه میشود، در آینده تایید و پردازش آنها انجام میشود. نکتهای که وجود دارد، این است که ماینرها میتوانند تراکنشهای مشابهی را به بلاک خود اضافه کنند و از این بابت، محدودیتی وجود ندارد.
اجازه دهید با یک مثال ساده، این مرحله را برای شما قابل درک کنیم. تصویر کنید که یک تراکنش به نام X وارد شبکه شده و دو ماینر A و B میخواهند آن را به بلاک خود اضافه کنند. هر دو آنها میتوانند این تراکنش را به بلاک خود اضافه کنند ولی باید به اندازه بلاک و تاریخچه بلاکچین آن توکن هم دقت داشته باشند. مثلا، بلاکچین بیت کوین (BTC) حداکثر یک مگابایت ظرفیت برای هر بلاک خود درنظر گرفته است. پس، قبل از انتخاب آن تراکنش توسط هر ماینر، باید به حجم تراکنش و ظرفیت بلاکچین آن توکن دقت داشته باشند.
تاریخچه بلاکچین مربوط به موجودی کیف پول فرستنده است که اگر با وجوه کافی در کیف پول باشد، تراکنش، معتبر شناخته میشود و در نهایت، در بلاک موردنظر قرار میگیرد. اگر بخواهید که تراکنش شما با سرعت بیشتری پردازش شود، میتوانید مقدار بیشتری پاداش ماینینگ پرداخت کنید تا ماینرها، تراکنش شما را در اولویت قرار دهند. تراکنشهایی که در اولویت قرار میگیرند، سریعا توسط ماینرها انتخاب و بلاکشان اضافه میشود.
مرحله چهارم: حل مسئله هر بلاک
زمانی که تراکنشها توسط ماینرها به بلاکهایشان اضافه میشود، در نهایت، آنها یک بلاک با مجموعه تراکنشهایی در دست دارند. آنها باید پس از کامل شدن یک بلاک، آن را بلاکچین اضافه کرده و در واقع، فرایند ثبت تراکنش در بلاکچین را تکمیل کنند. پس از اضافه کردن بلاکها به بلاکچین موردنظر، نودهای هر بلاکچین میتوانند تراکنشهای بلاک را ثبت کنند. نکته مهم در این مرحله، نحوه اضافه کردن یک بلاک به بلاکچین است. برای این کار، ماینرها نیاز به یک امضا یا در واقع، حل یک مسئله ریاضی پیچیده دارند.
مسئله ریاضی موجود برای هر بلاک، با دیگری متفاوت است و هر یک از آنها، سختی یکسانی دارد. حال ماینرها باید تمرکز خود را بر روی حل این مسئله ریاضی بگذارند که شامل توان محاسباتی بالا و مقدار بالایی برق میشود. شما میتوانید برای آشنایی کلی با این مسئله، آن را در ماشین حساب اجرا کنید و در نهایت، درجه سختی آن را بالا ببرید. چرا که این مسئله باید در سیستمهای کامپیوتری بسیار قوی حل شود و به قدرت محاسباتی بالایی نیاز دارد. در واقع، این یک آشنایی کوچک با فرایند استخراج ارز دیجیتال است. در ادامه به نحوه عملکرد دقیق این مسئله ریاضی و نقش آن در ثبت تراکنش در بلاکچین میپردازیم.
نحوه استخراج هشینگ (Hashing) بر اساس الگوریتم اجماع اثبات کار (POW)
این مسئله ریاضی که هر ماینر در هنگام اضافه کردن بلاک خود به بلاکچین یا ثبت تراکنش در بلاکچین به آن برمیخورد، در واقع پیدا کردن یک خروجی هش (Hash) است. این هشها مربوط به دادههای موجود در هر بلاک ماینر است که شامل مقدار مشخصی صفر میشود. اجازه دهید تا به شیوهای سادهتر، هشینگ را برای شما توضیح دهیم.
تابع هش یک مسئله ریاضی است که حل آن باید توسط یک فرد ماهر و آشنا با محاسبات ریاضی انجام شود. هر چند که پس از یافتن پاسخ این تابع هش، جواب شما به سادگی تایید میشود و به مرحله بعدی از ثبت تراکنش در بلاکچین وارد میشوید.
در واقع، یک تابع هش به یک رشته ورودی که شامل اعداد و حروف میشود، میگویند. این رشته ورودی به رشتههای ۳۲ رقمی جدید از همان حروف و اعداد متصل میشود که شما باید از میان آنها، رشته ۳۲ رقمی خروجی را پیدا کنید. اگر هر عدد یا حرف این رشته ورودی تغییر کند، به همان اندازه، خروجی هش نیز تغییر میکند. در غیر این صورت، ورودی هش، یک خروجی هش مشخصی دارد.
حالا این ورودی هش را یک بلاک در نظر بگیرید که یک خروجی هش نیز دارد و ماینر باید آن را حل کند. یکی از قانونهای بلاکچین بیت کوین مربوط به خروجی هش میشود که طبق آن، خروجی هش به دست آمده باید مقدار مشخصی از صفر شود. در غیر این صورت، آن خروجی هش یا امضای به دست آمده برای ثبت تراکنش در بلاکچین درست نیست. حالا، به نظر شما اگر خروجی هش به دست آمده با تعداد مشخصی از صفر شروع نشود، ماینر باید چه کاری انجام دهد؟
در این شرایط، ماینرها معمولا بخشی از دادههای بلاک خودشان که به نام Nonce است را به طور مکرر تغییر میدهند. با تغییر این بخش از بلاک، تقریبا ترکیب دادهها تغییر میکند و با تغییر ترکیب دادهها، امضای آن یا همان خروجی هش نیز تغییر پیدا میکند. بنابراین، هر باری که ماینرها بخش Nonce بلاک را تغییر میدهند، بلاک یک امضا یا خروجی تصادفی جدیدی را تولید میکند. در نتیجه، پاسخ ماینر به مسئله هش جدید نیز تغییر پیدا میکند و به پاسخ درست، نزدیکتر میشود. ماینرها، این فرایند را به طور نامحدود بر روی بلاک خود تکرار میکنند تا به نتیجه درست برسند و ثبت تراکنش در بلاکچین را انجام دهند.
نکات مهم درباره هشینگ
تعداد صفرهای یک خروجی هش درست، به میزان سختی یک بلاکچین بستگی دارد. به عنوان مثال، بلاکچین بیت کوین از امنیت بالایی برخوردار است، به همین دلیل سختی خروجی هش آن نیز بیشتر است. هر چه سختی هش بالاتر باشد، مراحل حل کردن آن نیز سختتر میشود. از این رو، بسیاری از ماینرها، مسئلههای پیچیده با درجه سختی بالا را برای آخر میگذارند.
ماینرها برای حل این مسائل ریاضی به قدرت محاسباتی بسیار بالایی نیاز دارند. مثلا برخی از Nonceهای ایجاد شده ممکن است بسیار سخت باشند و زمان و قدرت محاسباتی بالایی نیاز داشته باشند. همچنین، هر چه قدرت هش یک بلاکچین بالاتر باشد، دشواری مسئله ریاضی آن نیز بیشتر میشود و به همان اندازه، برق بیشتری هم برای حل آن مسئله مصرف میشود. در نهایت، پس از آن ثبت تراکنش در بلاکچین صورت میگیرد.
مرحله پنجم: پیدا کردن پاسخ درست مسئله
هر زمان که یک ماینر پاسخ درست به مسئله ریاضی یا در واقع، امضای درست برای بلاک خودش را پیدا کند، میتواند آن را همراه با بلاک، بین تمام ماینرهای دیگر پخش کند. پس، این مسئله که کدام ماینر اول از همه امضای درست را پیدا کند، در ثبت تراکنش در بلاکچین مهم است.
مرحله ششم: اجماع اثبات کار
در این مرحله، امضای موردنظر به دست تمام ماینرها رسیده است و آنها باید مشروعیت آن امضا را تایید کنند. برای این کار، آنها امضا را به هش تبدیل میکنند و خروجی آن را مورد بررسی قرار میدهند. چرا که باید تعداد درستی از صفرهای مدنظر بلاکچین را داشته باشد. اگر از این نظر هم امضا درست باشد، همه ماینرها آن را تایید میکنند تا بلاک به بلاکچین اضافه شود. در واقع، آنها برای اضافه شدن بلاک یا ثبت تراکنش در بلاکچین به یک اجماع میرسند. از این رو، به این الگوریتم، الگوریتم اجماع اثبات کار (POW) گفته میشود.
پس از این فرایند، بلاک موردنظر به بلاکچین اضافه شده و آن بلاک بین تمام نودها پخش میشود. نودها این بلاک را در دادههای تراکنش خود ذخیره میکنند.
مرحله هفتم: تایید بلاک ذخیره شده در بلاکچین
پس از اینکه یک بلاک در بلاک چین قرار میگیرد، ممکن است بلاکهای دیگری هم به آن اضافه شود. از این رو، هر بلاک دیگری که پس از بلاک موردنظر به بلاکچین اضافه شود، یک مهر تایید برای آن بلاک به حساب میآید.
به عنوان مثال، اگر تراکنش شما در بلاک ۲۰۷ قرار داشته باشد و به طور کلی، بلاکچین دارای ۲۵۰ بلاک باشد؛ یعنی شما برای تراکنش خود ۴۳ تاییدیه دارید. این تاییدیهها نشان از امنیت هر چه بیشتر تراکنش شما را دارند و همچنین، به معنی این است که تراکنش شما ۴۳ بار مورد بررسی قرار گرفته و ۴۳ بار توسط بلاکچین تایید شده است. چرا که هر بار که یک ثبت تراکنش در بلاکچین اتفاق میافتد، بلاکهای قبل از آن نیز مورد بررسی قرار میگیرند. در نتیجه، باید بگوییم که هر چه تراکنش شما تاییدیههای بیشتری داشته باشد، درصد حمله مهاجمان به آن تراکنش نیز کمتر میشود.
پس از ثبت تراکنش در بلاکچین، ماینرها باید به مرحله سوم بازگردند و مجددا یک بلاک جدید را برای خود بسازند. این روند به صورت دائم در حال انجام است و تا بی نهایت میتواند یک بلاکچین، ظرفیت برای بلاک جدید داشته باشد.
چرا ماینرها باید برای خود بلاک جدید بسازند؟
به دو دلیل ماینرها نمیتوانند بر روی بلاکی قبلا روی آن کار کردند، کار کنند و باید یک بلاک جدید برای خود بسازند. دلیل اول برای اینکار این است که احتمالا آن بلاک دارای تراکنشهایی است که در چند بلاک دیگر هم قرار دارد. همانطور که گفتیم، یک تراکنش میتواند در بلاکهای مختلف ماینرها قرار بگیرد. پس یک ماینر، تنها یک بار میتواند روی حل مشکل بلاک خودش کار کند. اگر ناموفق باشد، باید صبر کند تا دیگر ماینرها آن را حل کنند و خودش باید به سراغ ساخت یک بلاک جدید برود.
دلیل دوم مربوط به انتقال خروجی هش آخرین بلاک اضافه شده به بلاکچین، به ابرداده است. یعنی، زمانی که یک ماینر خروجی هش درست را پیدا میکند و به دیگر ماینرها میفرستد؛ پس از تایید همه ماینرها، آن خروجی هش به ابرداده اضافه میشود. از این رو، اگر یک ماینر روی استخراج یک بلاک قبلی کار کند، ماینرهای دیگر به این موضوع پی میبرند. در نتیجه، آن بلاک را رد میکنند. زیرا، عدم انطباق خروجی هش با آخرین بلاک در بلاکچین، از روی ابردادهها مشخص میشود.
گام قبلی (۱۶/۲۷) گام بعدی