در اکتبر سال 2008 فردی با نام مستعار ساتوشی ناکوموتو مقالهای منتشر کرد با عنوان: «بیتکوین: یک سیستم پرداخت الکترونیکی همتا-به-همتا». او در این مقاله میگفت: ما میتوانیم یک شبکه مالی و بانکی غیرمتمرکز بسازیم که قائم به فرد یا سازمان نباشد. چند ماه پس از انتشار مقاله، شبکه بیتکوین را راهاندازی کرد و سورسکد آن را در اختیار عموم قرار داد.
این برای اولین بار بود که فردی ایده ساخت یک شبکه بانکی غیرمتمرکز را مطرح میکرد زیرا تا قبل از آن تصور ساخت چنین شبکهای به خاطر چالشها و مسائل پیچیدهای که داشت، ناممکن به نظر میرسید. برای درک بهتر این چالشها و مسائل بهتر است ابتدا با معماری یک سیستم بانکی متمرکز آشنا شویم.
اگر فرض کنیم که بانک یک موجود زنده است و نفس میکشد، میبایست «دفترکل» را قلب آن در نظر بگیریم. دفترکل در واقع مکانیزمی است که تمامی تراکنشها ورودی را پردازش، ثبت و نگهداری میکند. مثلاً فرض کنید که میخواهید با کارت بانکیتان یک کالا را از فروشگاهی خریداری کنید وقتی که واریز را انجام میدهید اطلاعات شما برای بانک فرستاد میشود و پس از احراز هویت در دفترکل بانک بررسی میشود که آیا مبلغ کافی در حساب شما موجود است؛ اگر بلی، سپس دو رکورد در دفترکل ایجاد میشود که اولین رکورد نشان دهنده کسر موجودی از حساب شما و دومین رکورد افزایش موجودی حساب فروشنده است. پس متوجه شدیم که دفترکل نقش کلیدی و مهمی را در یک سیستم بانکداری بازی میکند و نگهداری از آن امری حیاتی و واجب برای بانک است. امروزه دفترکل در دیتابیسهای مدرن نرمافزاری نگهداری میشود که معمولاً در دیتاسنترهای تحت نظارت بانک مرکزی خدمات خود را ارائه میدهند.
اما داشتن یک سیستم بانکداری غیرمتمرکز به این راحتیها نیست و از جهات بسیاری چالشبرانگیز است. معمولاً در یک شبکه غیرمتمرکز چندین هزار نود (سرورها، کامپیوترهای شخصی، موبایل و ...) وجود دارد که با استفاده از اینترنت و یک پروتکل مشترک به هم متصل میشوند. در این شبکه هیچ دیتابیس یا نود مرکزی وجود ندارد چون اگر این طور باشد غیرمتمرکز بودن آن زیر سوال خواهد رفت.
ساتوشی ناکوموتو هم از ابتدا قصد داشت شبکه بیت کوین را بهگونهای طراحی کند که نه تنها ساختار فیزیکی آن غیرمتمرکز باشد بلکه مدیریت و نگهداریش هم بدین گونه باشد. ولی او برای پیادهسازی ایدهاش با چندین چالش روبرو بود که مهمترین آنها را در این مقاله بررسی میکنیم.
اولین چالش، مفهوم پول بود. احتیاج به گفتن نیست که اصلیترین هدف هر شبکه بانکی و مالی انتقال یا نگهداری پول است. اما پول از کجا میآید! آیا غیر از این است که همیشه پول توسط دولتها و بانکهای مرکزی صادر میشود که خودشان از ساختاری متمرکز هستند. آیا میتوانیم از پولهای موجود (دلار، یورو و ...) در یک شبکه مالی غیرمتمرکز استفاده کنیم. در صورت استفاده آیا دوباره به همان ساختار متمرکز بر نگشته ایم!
چالش بعدی که در طراحی این نوع شبکهها روبرو هستیم این است که چگونه یک دیتابیس غیرمتمرکز پیادهسازی کنیم که نقش دفترکل را در سیستم بانکداری ما بر عهده بگیرد. و اینکه چه افراد یا گروههایی میتوانند تراکنشها را پردازش، ثبت و نگهداری کنند به نحوی که خصوصیت غیرمتمرکز بودن آن زیر سوال نرود.
ساتوشی ناکوموتو برای حل این چالشها یک تکنولوژی جدید را معرفی کرد که به «بلاکچین» معروف است. در ادامه با بررسی معماری و ساختمان بلاکچین میتوانیم جواب عمیقتر و بهتری به چالشهای مطرح شده، بدهیم.
در اصل بلاکچین (به فارسی زنجیرهبلوکی) یک دیتابیس توزیعشده غیرمتمرکز است که تمامی نودهای شبکه میتوانند یک نسخه از آن را داشته باشند. اصلیترین تفاوت بین دیتابیسهای عادی و بلاکچین نحوه ذخیرهسازی داده است. یک بلاکچین دستهای از دادهها را (مثلاً چند تراکنش) در قالب «بلوک» ذخیره میکند. هر بلوک ظرفیت محدودی را برای ذخیرهسازی دارد و زمانی که پُر شود، بسته میشود و به بلوک قبل از خود متصل میشود.
هدف بلاکچین این است که بتوانیم اطلاعات را در ساختاری غیرمتمرکز به شیوهای ذخیره کنیم که تغییرناپذیر باشد. بنابراین، بلاکچین بنای را ایجاد میکند که بتوانیم یک دفترکل توزیعشده تغییرناپذیر داشته باشیم که امکان تغییر و حذف تراکنشها در آن وجود نداشته باشد. برای همین هم است که به بلاکچین «دفترکل توزیعشده» هم میگویند.
از آنجایی که معماری بلاکچین غیرمتمرکز است و همانطور که قبلاً گفتیم هیچ نود خاص یا یک سرور مرکزی وجود ندارد که بلوک را ایجاد کند، بنابراین هر بلوک میبایست توسط یکی از نودها، که علاقهمند به این کار است، ساخته شود. این نودها را اصطلاحاً «ماینر» مینامیم و به کاری که انجام میدهند اصطلاحاً «ماینینگ» میگوییم.
یک قانون در بلاکچین است که میگوید: هر چه تعداد ماینر بیشتری وجود داشته باشد، جنبه غیرمتمرکز بودن شبکه قویتر میشود. بنابراین شبکه سعی دارد نودهای بیشتری را برای ماینر شدن ترغیب کند و همچنین انگیزه کافی را برای آنها به وجود آورد تا بلوکها را به درستی بسازند و شبکه را مختل نکنند. بدین منظور شبکه برای سازنده بلوک یا ماینر «پاداش» در نظر گرفته است. پاداش در واقع واحدی است که قرار است نقش پول را در شبکه مالی بیت کوین بازی کند. هر وقت ماینری پاداشش را برای ساخت بلوک بگیرد آن لحظه خلق پول در شبکه است. ارزش این پول توسط مردم و بر اساس اعتمادی که به شبکه دارند تعیین می شود. به عنوان نمونه، اگر قیمت بیت کوین در سال اول ظهورش فقط چند دلار بود اما 12 سال بعد قیمتش به 70 هزار دلار رسید. همچنین بدانیم که پاداش در بلاکچین محدود است و هر 4 سال یک بار در پروسهی هاوینگ نصف می شود.
منطقاً از آنجایی که تعداد زیادی ماینر، به خاطر پاداش، علاقهمند به ساخت بلوک هستند و تنها یکی از آنها شناس این کار را دارد میبایست بهگونهای و با یک مکانیزم عادلانه یکی از آنها را برای ساخت بلوک انتخاب کنیم. یک راهحل این است که میتوانیم رقابتی بینشان برگزار کنیم و در این رقابت ماینری که، بر اساس قوانین، زودتر برنده شود میتواند بلوک را بسازد. بیت کوین برای برگزاری این رقابت (ماینینگ) از روش «اثباتکار» استفاده می کند.
به زبان ساده «اثباتکار» رقابتی است که ماینرها می بایست، برای ماینینگ، در آن شرکت کنند. ماینرها با اجرای یک الگوریتم مشخص و با تغییر در پارامترهای ورودی آن، تعداد زیادی هش (عدد تصادفی) تولید میکنند تا درنهایت یک هشی پیدا کنند که از یک حد آستانه (سختی شبکه) مقدارش کمتر باشد و هر ماینری که زودتر به این هش دست پیدا کند برنده خواهد شد. برا ملوستر شدن فرض کنید که داریم چند تاس را با هم میریزیم و شرط برنده شدن این است که مجموع اعداد روی تاس از یک عدد که از ابتدا تعیین کردیم کوچکتر باشد. مطمئناً فرد یا افرادی که بتوانند تعداد بار بیشتر تاس بریزند شانس برنده شدنشان بیشتر است. در ماینینگ به روش اثبات کار هم همینطور است. هر نودی که سختافزار و قدرت محاسبات بالاتری برای تولید هش داشته باشد شانسش از بقیه بیشتر خواهد بود.
درنهایت ماینر برنده برای تکمیل کارش پارامترهایی مربوط به ماینینگ را در هدر بلوک قرار میدهد و بلوک جدید را در سراسر شبکه منتشر کند تا هر نود با بررسی صحت و درستی آن، مطمئن شود که تقلبی صورت نگرفته است. هر بلوک بعد از اطمینان از درستی کار ماینر آن بلاک را به زنجیره بلاکچین خود اضافه میکند و سریعا به سراغ بلوک بعدی می رود که شانسش را دوباره امتحان کند. این کار نودها برای تایید بلوک نوعی رائ گیری است. درواقع هر نود با بررسی بلوک و انجام دوباره ماینینگ با پارامترهای ماینر نهایتاً می تواند رأی به تائید یا عدم تائید آن دهد و اگر فقط 50 درصد نودهای شبکه، بلوک ماینر را قبول کنند به این معنی است که ماینر کارش را به درست انجام داده است و میتواند از پاداشش استفاده کند. به این مکانیزم رائ گیری در بلاکچین اصطلاحاً «اجماع» میگویند.
تا اینجا متوجه شدیم که بیتکوین با استفاده از فناوری بلاکچین، ایده ماینینگ و دادن پاداش به ماینر دو چالش اصلی شبکه بانکی خود را حل کند بدون اینکه نیاز باشد خصوصیت غیرمتمرکز بودن شبکه به خطر بیفتد. اما در مورد اینکه بلاکچین در دنیای نرمافزاری چگونه پیاده سازی شده و عملیات ماینینگ بهطور واقعی و الگوریتمی چگونه کار میکند و یا اینکه پاداش در چه شکلی به ماینر تعلق میگیرید، صبحت نکردیم. در مقاله بعدی به طور مفصل در مورد این مباحث به همراه بررسی واقعی ساخت یک بلوک در بلاکچین بیت کوین صحبت خواهیم کرد.