تراکنش بلاک چین (بخش دوم)
در این مقاله از سری مقالات با موضوع بلاک چین به تشریح روش معمول فعلی در شبکه بانکی جهانی برای اجرای تراکنش ها پرداخته و سپس با توضیح برخی از اجزای اساسی ساختمان بلاک چین تلاش خواهیم کرد به طور ساده نشان دهیم یک تراکنش در شبکه بلاک چین چه مراحلی را تا نهایی شدن طی میکند و چگونه نهایی میشود. همچنین تفاوتها این دو روش را تشریح میکنیم. مزیت اصلی این روش نگاه به بلاک چین آن است که باعث میشود بدون نیاز به تشریح تمامی جزئیات فنی، اصول اصلی و اساسی بلاک چین درک شوند. در این بررسی از بلاک چین بیت کوین به عنوان نمونه استفاده میکنیم که هم از نظر سادگی و هم شمول، بسیار گزینه مناسبی است و با درک این شبکه میتوان شبکههای دیگر را بسیار راحتتر بررسی کرد. سایر شبکهها و روشهای اجرایی و تفاوتهای آنها با بلاک چین بیت کوین در مقالاتی جداگانه مورد بحث قرار خواهند گرفت.
این مقاله دومین بخش از سری چهار بخشی تراکنش بلاک چین می باشد. سایر بخش ها عبارتند از:
بخش اول تراکنش بلاک چین
بخش سوم تراکنش بلاک چین
بخش چهارم تراکنش بلاک چین
آنچه که در تمامی این حالات مهم است این است که نیاز به یک یا چند واسطه برای انتقال وجه ضروری به نظر میرسد که علاوه بر طولانی کردن پروسه رسیدگی، چون این واسطهها خود دارای هزینهها و منافعی در سیستم هستند به طور ناخواسته کارمزدهای تراکنش افزایش مییابد. اما پرسش اساسی آن است که نقش واسطهها چیست و چرا آنها قابل حذف نیستند؟ آیا واقعا نیاز به واسطهها وجود دارد؟ آیا بانکها مسئول نگهداری اطلاعات حسابهای مشتریان هستند؟
نقش اولیه بانک نگهداری موجودی مشتریان است و همچنین به جهت اینکه تراز مالی بانک بر هم نخورد لازم است که بانک به هر فرد همانقدر که اعتبار یا موجودی دارد پرداخت انجام دهد که خود از یک مفهوم اقتصادی مهمتر و دست بالاتر سرچشمه میگیرد که همان تناسب مقدار پول در گردش و کالا و خدمات موجود است که به مفهوم تورم منتهی میشود. به عبارت دیگر هیچ فردی نباید بتواند یک مقدار ارز را دو یا چند بار خرج کند با بیشتر از آنچه پول در اختیار دارد خرج کند این عملی است که در اصطلاح به آن Double Spending یا خرج مجدد میگویند و بانکها به طور ضمنی موظفند به عنوان یک نهاد مرکزی از این عمل جلوگیری کنند. در سیستم سنتی یک ارز را نمیتوان دو بار هزینه کرد زیرا فرم فیزیکی دارد، یعنی شما نمیتوانید یک اسکناس را به دو نفر بدهید اما وقتی قرار باشد همانطور که در بالا گفته شد اعتبارهای حساب هزینه شوند، امکان Double Spending فراهم میشود.
فرض کنید یک فرد مانند A قصد دارد یک حمله Double Spending اجرا کند. او به دو شعبه مختلف یک بانک درخواست انتقال پول را ارسال میکند از آنجا که این دو شعبه با یکدیگر فاصله دارند نمیتوانند بلافاصله از اینکه این درخواست به هر دو آنها ارسال شده مطلع شوند و بنابراین اگر قرار بود هر شعبه راسا اقدام به کسر از حساب این فرد کند و پول را به B پرداخت کند، B دو برابر پول کسر شده از حساب A را دریافت میکرد. اما در عمل هر دو شعبه پیام کسر از حساب را به یک واحد مرکزی میفرستند که در آنجا مشخص میشود A اعتبار کافی برای اجرای هر دو تراکنش را ندارد و A در انجام این حمله شکست خواهد خورد.
اما در یک شبکه بلاک چینی چطور؟ بلاک چین یک شبکه غیرمتمرکز و توزیع شده است. به عبارت دیگر یک واحد مرکزی که کنترل همه حسابها و مسئولیت اجرای عملیاتها را بر عهده داشته باشد وجود ندارد و نودهای شبکه در همه نقاط دنیا پخش شدهاند که هر یک نسخهای از دفتر کل را در اختیار دارند. در این حالت فاصله زمانی انتقال پیامها و تاخیر آنها، Latency، بسیار افزایش مییابد و بنابراین A که قصد انجام یک حمله Double Spending را دارد به دو نود که از هم فاصله دارند پیامی را برای کسر از حسابش مخابره میکند. اگر هر دو نود از قدرت کم کردن اعتبار حساب A برخوردار باشند (که همینگونه است) بدون وجود یک مکانیزم اجماع مناسب، A به راحتی میتواند یک حمله Double Spending را به اجرا بگذارد.
روش مورد استفاده در بلاک چین بیت کوین برای اجرای یک تراکنش
همانطور که در بخش قبل اشاره شد، مساله اساسی در یک شبکه توزیع شده جلوگیری از Double Spending است. این مساله آنقدر مهم است که با وجود اینکه ایده ایجاد یک رمز ارز از دهه نود میلادی وجود داشت ولی همه تلاشها برای محقق ساختن آن با شکست مواجه شد. به عنوان مثال نیک زابو تلاش کرد با مطرح کردن ایده بیت گلد ساخت اولین رمز ارز را عملی کند. اما به دلیل کامل نبودن این ساختار نتوانست آن را عملی کند و ایراد اساسی آن نیز همان حمله Double Spending است، زیرا در دنیای دیجیتال تولید مجدد یک داده به آسانی کپی و پیست کردن است.
همانطور که پیشتر گفته شد اولین ساختار کامل برای یک رمز ارز را مدیون ساتوشی ناکاموتو هستیم. بلاک چین ترکیبی از سه ویژگی است که در هماهنگی با یکدیگر یک ساختمان جدید پایگاه داده ساخته است:
- توزیع شدگی
- الگوریتمهای رمزنگاری
- الگوریتم اجماع
توزیع شدگی ویژگی اولی است که ایجاد شده تا یک شبکه غیرمتمرکز و بدون نیاز به واسطه را ممکن کند. علاوه بر این، توزیع شدن پایگاه داده یا دفتر کل یک ویژگی امنیتی در اختیار ما میگذارد که به موجب آن هک و اجرای حملات خرابکارانه در شبکه بسیار پرهزینه خواهد شد، زیرا تعداد زیادی از نودهای شبکه باید مورد حمله قرار بگیرند تا بتوان شبکه را دچار اختلال کرد. این ویژگی به نوعی پایهایترین قابلیت است که هدف از ساخت بلاک چین رسیدن به این ویژگی بوده است ولی بدون دو ویژگی دیگر این قابلیت فاقد کارایی است.
ویژگی دوم استفاده از هش کردن دادههای موجود بر روی دفتر کل و پیوند آنها با یکدیگر از طریق قرار دادن هش یک رکورد در رکورد بعدی است. این ویژگی باعث میشود کسی نتواند بدون تغییر در تمام ساختار دفتر کل یک رکورد خاص را تغییر دهد یا آن را حذف کند. این ویژگی همان قابلیتی است که باعث میشود بلاک چین اصطلاحا غیرقابل دستکاری یا Immutable باشد.
ویژگی سوم ساخت یک راه حل برای حل مشکل BFT یا تحمل خطای بیزانسی است که در مقاله قبل اشاره شد و یک مقاله هم در آینده به آن اختصاص خواهد یافت. صورت خلاصه این مساله این است که چه مقدار از خطا در یک تصمیمگیری یا رایگیری در مورد یک شبکه دارای Latency مشخص که هیچگونه ساختار مبتنی بر اعتمادی در آن موجود نیست و همه دادهها ممکن است مختل بوده یا نودها خیانتکار باشند، مجاز است. یا به عبارت دیگر چه کسری از نودهای موجود در شبکه میتوانند خیانتکار باشند ولی همچنان شبکه پایدار باقی بماند. برای حل این مساله از الگوریتمهای اجماع استفاده میکنیم که اولین نمونه آنها اثبات کار است که به نوعی مساله BFT را با دور زدن این مشکل و سد حل میکند تا صحت یک تراکنش موجود در بلوک را تایید کند. اصولا همانگونه که اشاره شد الگوریتم اجماع ویژگی است که مجبور بودهایم در بلاک چین در نظر بگیریم زیرا یک شبکه توزیع شده در اختیار داشتهایم.
از این قسمت قصد داریم تا نحوه اجرای یک تراکنش در بلاک چین را بررسی کنیم و تفاوتهای آن با آنچه در قسمت قبل در شبکه بانکی وجود داشت را مشخص کنیم. همانطور که گفته شد تراکنشها در بلاک چین به صورت همتا به همتا یا P2P انجام میشوند و مانند شبکه بانکی یک مرکز تائید تراکنش یا حسابهای واسطه وجود ندارند بنابراین درک نحوه اجرای تراکنشها در بلاک چین مهم است. علاوه بر آن بررسی مسیر تراکنش امکان یک درک کلی از نحوه کارکرد بلاک چین را در اختیار ما میگذارد. برای این منظور ما شبکه بیت کوین که یک بلاک چین ابتدایی است را به عنوان نمونه در نظر میگیریم و سایر الگوریتمهای اجماع هر یک در مقالهای جدا مورد بررسی قرار میگیرند. الگوریتمهای اجماع مورد استفاده را میتوان تا بیش از ۳۰ مورد شمرد اما جالبترین آنها الگوریتمهای اجماع اثبات کار، اثبات سهام و توابع آن، روش مورد استفاده در شبکه استلار و روشهای مورد استفاده در DAG ها یا گرافهای جهتدار بدون حلقه هستند که به مرور مورد بحث قرار خواهند گرفت.