تراکنش بلاک چین (بخش سوم)
در این مقاله از سری مقالات با موضوع بلاک چین به تشریح روش معمول فعلی در شبکه بانکی جهانی برای اجرای تراکنشها پرداخته و سپس با توضیح برخی از اجزای اساسی ساختمان بلاک چین تلاش خواهیم کرد به طور ساده نشان دهیم یک تراکنش در شبکه بلاک چین چه مراحلی را تا نهایی شدن طی میکند و چگونه نهایی میشود. همچنین تفاوتها این دو روش را تشریح میکنیم. مزیت اصلی این روش نگاه به بلاک چین آن است که باعث میشود بدون نیاز به تشریح تمامی جزئیات فنی، اصول اصلی و اساسی بلاک چین درک شوند. در این بررسی از بلاک چین بیت کوین به عنوان نمونه استفاده میکنیم که هم از نظر سادگی و هم شمول، بسیار گزینه مناسبی است و با درک این شبکه میتوان شبکههای دیگر را بسیار راحتتر بررسی کرد. سایر شبکهها و روشهای اجرایی و تفاوتهای آنها با بلاک چین بیت کوین در مقالاتی جداگانه مورد بحث قرار خواهند گرفت.
این مقاله بخش سوم از سری مقالات تراکنش بلاک چین می باشد. بخش های دیگر را می توانید در زیر مطالعه بفرمایید:
بخش اول تراکنش بلاک چین
بخش دوم تراکنش بلاک چین
بخش چهارم تراکنش بلاک چین
یک حساب در بلاک چین بیت کوین دارای یک کلید خصوصی و یک کلید عمومی رمزنگاری است. به این روش رمزنگاری اصطلاحا رمزنگاری غیر متقارن میگویند، زیرا بر خلاف رمزنگاری متقارن کلیدی که برای Encrypt کردن یا رمزگذاری یک پیام به کار رفته است نمیتواند برای Decrypt کردن یا رمزگشایی آن به کار رود. (میتوانید این حالت را با صندوقی که دو کلید، یکی برای قفل کردن و دیگری برای باز کردن، لازم دارد مقایسه کنید.) این دو کلید عملا یک ماهیت دارند و رفتار کاربر و قواعد شبکه هستند که باعث میشوند یکی نقش خصوصی و دیگری نقش عمومی به خود بگیرد. کلید عمومی یک عدد است که از بین جفت اعداد کلید در اختیار عموم قرار میگیرد و نقش شماره حساب در شبکه بانکی را ایفا میکند. همچنین کلید عمومی را میتوان شبیه به نام کاربری یا Username یا ID در اینترنت تصور کرد. کلید خصوصی همانند پسورد برای استفاده از این نام کاربری است. در این روش رمزنگاری صاحب کلیدها، کلید عمومی را در اختیار بقیه میگذارد تا بتوانند از آن استفاده کنند و کلید خصوصی را به صورت مخفیانه حفظ میکند. در شبکه بلاک چین بیت کوین به هر آدرس یا کلید عمومی مقداری بیت کوین منتسب است که در تمامی دفاتر کل که بر روی نودهای شبکه وجود دارند نوشته شده است، به عبارتی اگر بخواهیم آن را با بانکداری سنتی مقایسه کنیم هر نود در شبکه یک نسخه از دیتابیس بانک را در اختیار دارد که بر روی آن نوشته شده است که در هر حساب چه مقدار پول (که واحد آن را به صورت بیت کوین با تیکر BTC نام گذاری کردهایم) موجود است. هر کس کلید خصوصی را در اختیار داشته باشد مشابه این است که امضای صاحب حساب را داراست و بنابراین حق برداشت از این حساب در اختیار اوست. البته بلاک چین از قوانین KYC، شناخت مشتری، پیروی نمیکند و تنها دارا بودن کلید خصوصی به معنای آن است که فرد صاحب حساب است.
فردی که کلید خصوصی را در اختیار دارد با ارسال یک درخواست تراکنش با امضای دیجیتال خود (که بخشی از آن مرتبط به همین کلید خصوصی است) به یکی از نودها اعلام میکند که قصد دارد مقدار A بیت کوین را با کارمزد دلخواه a به آدرس بیت کوین B انتقال دهد. این نود با دریافت این درخواست با توجه به اینکه کلید عمومی صاحب حساب را در اختیار دارد ابتدا نسبت به کنترل اینکه آیا امضای دیجیتال این درخواست با کلید عمومی منطبق است اقدام میکند. اگر این مرحله به درستی اجرا شد، نود شبکه موجودی حساب را کنترل کرده و کافی بودن موجودی را تائید میکند و همچنین این درخواست را برای سایر نودهای شبکه ارسال میکند.
یک دستگاه استخراج نمونه
نودهایی که نقش نوشتن دفتر کل را بر عهده دارند، که اصطلاحا به آنها ماینر میگوییم، این تراکنش را بر حسب اینکه آیا نوشتن آن بر روی دفتر کل برای ایشان دارای منفعت کافی هست یا نه طبقهبندی میکنند. به عبارت دیگر ماینرها با مقایسه تراکنشها در نظر میگیرند که آیا مقدار کارمزد یا Transaction Fee که a باشد، برای ایشان مناسب است یا خیر. این یکی از ویژگیهای متفاوت بین بلاک چین و شبکه بانکی است که در آن یک کارمزد ثابت تعیین شده از سوی شبکه بانکی وجود دارد در حالی که در بلاک چین بیت کوین این مشتری است که تعیین میکند چه مقدار کارمزد پرداخت خواهد کرد و در عوض نودهای شبکه هم مختارند این تراکنش را بنویسند یا تصمیم بگیرند که آن را اجرایی نکنند. یکی از دلایل این امر آن است که همانطور که بعد از این خواهیم گفت، ماینرها علاوه بر دریافت کارمزد یک جایزه نوشتن بلوک هم دریافت میکنند که بسیار در مقایسه با این کارمزد (حداقل در زمان فعلی) بسیار بزرگ است و بنابراین حتی اگر همه درخواستهای تراکنش با کارمزد صفر ارسال شوند هم، فرآیند استخراج امروزه برای اغلب ماینرها سودده خواهد بود.
ماینرها سپس برای نوشتن بلوک وارد یک مسابقه میشوند. این مسابقه در مقام مقایسه شبیه یک مار است که هر ماینر تلاش میکند زودتر از این مارپیچ خارج شود. هر بلوک دارای دو قسمت اصلی است:
- هدر که شامل اطلاعات کلی بلوک مانند شماره بلوک، برچسب زمانی، هش بلوک قبل، هش بلوک فعلی، سختی شبکه و نانس میشود. (برای اطلاع بیشتر از فرآیند هشینگ اینجا کلیک کنید)
- بدنه بلوک که تمامی تراکنشها در آن قرار میگیرند.
تصویری از بخش هدر و دو تراکنش در یک بلوک نمونه بیت کوین
هش یک تابع رمزنگاری است که عملکرد آن تصویر کردن یک رشته ورودی با هر طول دلخواه به یک رشته خروجی با طول ثابت است. یعنی شما میتوانید به این تابع یک رشته دلخواه از حروف و اعداد و کاراکترها با هر تعداد کاراکتر (از یک کاراکتر تا بینهایت کاراکتر) بدهید و تابع هش به شما در عوض همیشه ۶۴ کاراکتر بر خواهد گردانید. این کاراکترها منحصر به فرد و بسیار تصادفی هستند؛ به عبارتی به طور مثال شما با داشتن هش عبارت SALA نمیتوانید هش عبارت SALAM را حدس بزنید هر چند که تنها در یک کاراکتر با هم تفاوت دارند. به عبارت دیگر، یکی از ویژگی های تابع هش این است که نمیتوان از هش عبارتی به هش عبارت دیگر رسید چراکه کوچکترین تغییر در ورودی، باعث ایجاد تغییرات زیادی در هش آن میشود. توابع متفاوت زیادی با الگوریتمهای مختلف و طولهای رشته خروجی متفاوت وجود دارند که برای مقاصد متفاوتی هم استفاده میشوند و در مقالهای جداگانه به روشهای رمزنگاری و این توابع پرداخته خواهد شد.
بدنه بلوک شامل تمامی تراکنشها میشود و اولین تراکنش هر بلوک هم که به پایه کوین یا کوین بیس معروف است، تراکنشی استثنائی است که هیچ فرستندهای ندارد و تنها گیرنده دارد. تراکنشهای معمولی دارای یک فرستنده، یک گیرنده و یک مقدار هستند در حالی که کوین بیس تراکنشی است که فرستنده ندارد و سازنده بلوک شماره حساب یا کلید عمومی خودش را به عنوان گیرنده در آن نوشته و مقدار جایزه بلوک به اضافه مجموع همهی کارمزدهای موجود در بلوک را به حساب خودش واریز میکند. در شبکه بیت کوین مقدار جایزه نوشتن بلوک در ابتدا ۵۰ بیت کوین بود که تقریبا هر چهار سال یک بار نصف میشود. این جایزه در حال حاضر ۱۲.۵ بیت کوین است و در سال ۲۰۲۰ به ۶.۲۵ بیت کوین تقلیل مییابد. مقدار مجموع کارمزدها نیز در شرایط فعلی معمولا بسیار کمتر از این و کمتر از نیم بیت کوین است.