الگوریتم اثبات کار (PoW) در بلاک چین و ارز دیجیتال بیت کوین چیست؟
اثبات کار احتمالا شناخته شده ترین پایه ی بلاک چین است. ممکن است درباره ی استخراج کردن» شنیده باشید. منتقدان زیادی گفته اند که مصرف برق آن به شدت زیاد است ولی بیایید نگاهی بیندازیم تا ببینیم به چه معناست. ما از قبل آموختیم که هر بلوک بلاک چین
باید اعتبارسنجی شود تا اجماع ایجاد شود. روش استخراج مبتنی بر اثبات کاریعنی استخراج کننده کارهای رمزگذاری را حل می کند و پاداشی برای حل آنها از طرف پروتکل دریافت می کنداین وظایف محاسبات پیچیده ای هستند که با آزمایش راه حل های مختلف آدرس دهی می شوند. با حل کردن محاسبات، استخراج کننده تأیید می کند تراکنشی که روی بلوک ذخیره شده بود، دقیق انجام شده است. معمولا کار استخراج یا همان معادلات ریاضی آرام آرام سخت تر و سخت تر می شود. پاداشها در هر بلاک، از هررمزارز تا دیگری بسیار متفاوت است.
در سال ۲۰۰۹ هنگامی که بیت کوین شکل گرفت، هر استخراج کننده پنجاه BTC در هر بلوک به دست می آورد ولی هر ۲۱۰۰۰۰ سکه، پاداشی نصفه داشت. این تقریبا هر چهار سال یکبار اتفاق می افتد. در حال حاضر (۲۰۱۸)، هر استخراج کننده ۱۲. ۵ btc در هر بلوک دریافت می کند).
ممکن است این سؤال برایتان پیش آید اگر تمام سکه های یک رمزارز استخراج شدند، چه اتفاقی می افتد؟ استخراج کننده ها می توانند با کارمزدها پاداش داده شوند که با کاهش پاداش های استخراج در BTC ممکن است افزایش یابند. استخراج کردن تنها راهی است که سکه های جدید بتوانند وارد یک شبکه شوند. بیشتر رمزارزهای معروف مانند بیت کوین، لیت کوین، زدکش، سیاکوین و غیره از الگوریتمهای اثبات کار استفاده می کنند. از این روش به شدت انتقاد می شود؛ چراکه حل کردن وظایف برای اعتبارسنجی یک بلوک نه تنها زمان بر است بلکه انرژی برق زیادی مصرف می کند که باعث می شود بسیار گران شوند. این یکی از دلایلی است که چرا بیشتر کارت گرافیک های خوب ASUS یا NVIDIA فروخته شده اند چون استخراج کننده ها به آنها نیاز دارند.برای ساده تر کردن آن، می توانیم تولید کل بیت کوین به خروجی کل طلا را مقایسه کنیم و ببینیم چند بشکه نفت برای هرکدام مصرف می شود. بیت کوین (برق را به نفت تبدیل می کند) ۶۰۶ میلیون بشکه نفت در سال مصرف می کند (تخمین سال ۲۰۱۷)، درحالی که برای تولید تمام طلاها در سال ۲۰۱۷، ۱۲۳۰۲ میلیون بشکه نفت مصرف شده است. در حال حاضر، به دلیل دشواری فزاینده و هزینه های گزاف برق، استخراج رمزارزهای مشهور، دیگر برای بیشتر افراد حقیقی سودی ندارد (وقتی تصمیم بگیرید سکه های کوچک بازاری را استخراج کنید، هنوز هم می تواند مفید باشد. همچنین به همین دلیل است که مزرعه های استخراج»(۴۳) زیادی در ایسلند یا هر جای دیگری که برق در آن ارزان باشد، وجود دارند.الگوریتم اثبات کار (Proof of Work) که عموما به صورت خلاصه با PoW شناخته میشود، مکانیزمی برای جلوگیری از دابل اسپندینگ (Double Spending) یا همان دو بار خرج کردن در بلاک چین است. اکثر رمز ارزهای بزرگ از این الگوریتم اجماع استفاده میکنند. این الگو در واقع روشی برای تامین امنیت دفتر کل یک ارز دیجیتال است.
تمرکز زدایی بخش کلیدی در چشم انداز اولیه ارزهای دیجیتال بود. برای دستیابی به آن، باید به دنبال راهی برای تایید تراکنشها بدون دخالت موسسات مالی بود. اولین راه حل برای این چالش اثبات کار نام داشت. اثبات کار (PoW) شکلی از افزودن بلاکهای جدید حاوی تراکنش به بلاک چین یک کریپتوکارنسی است که به عنوان اولین روش برای اعتبارسنجی تراکنشهای بلاک چین، نقش مهمی در تاریخچه رمز ارزها ایفا کرده است.
مفهوم اولیه الگوریتم اثبات کار در سال 1993 به منظور جلوگیری از حملات به سرویسهای اینترنتی ارائه شد اما هیچگاه کاربردی نشد. در سال 2009، بیت کوین شکل جدیدی از اثبات کار را برای استفاده به عنوان الگوریتم اجماع (Consensus Algorithm) معرفی کرد. افراد فعال در شبکه با استفاده از الگوریتم اثبات کار (PoW) بلاک حاوی تراکنشهای تایید شده Bitcoin را میسازند و بدین ترتیب شبکه بلاک چین بیت کوین شکل میگیرد.
اثبات کار مکانیزمی است که به شبکهای غیر متمرکز اجازه میدهد تا به اجماع و توافق برسند. این کار باعث میشود تا کاربران نتوانند کوینهای خود را دو بار خرج کنند و تضمین میکند که شبکه برای هجوم یا دستکاری بسیار مقاوم است.
از ارزهای دیجیتال مهمی که از اثبات کار استفاده میکنند، میتوان به بیت کوین (BTC)، اولین رمز ارز جهان که در سال 2009 راه اندازی شد و مفهوم اثبات کار در ارزهای دیجیتال را معرفی کرد اشاره کرد. لایت کوین (LTC) نیز در سال 2011 بر اساس کد بیت کوین به وجود آمد و مدعی شد که سرعت انجام تراکنشها را بهبود بخشیده است. در میان میم کوینهای محبوبی که از PoW استفاده میکنند نیز دوج کوین (DOGE) را می توان نام برد.
تعریف الگوریتم اجماع اثبات کار
برای سهولت فهم موضوع، اینطور در نظر بگیرید که در الگوریتم اجماع اثبات کار (PoW)، ماینرها با یکدیگر بر سر حل معماهای پیچیده محاسباتی به رقابت میپردازند. این معماها به سختی حل میشوند، اما بلافاصله پس از حل شدن امکان تایید شدن آن توسط دیگران وجود دارد. بنابراین زمانی که یک ماینر پاسخ این یک معما که در واقع هش یک بلاک است را پیدا میکند، آن بلاک را به شبکه ارسال مینماید. سایر ماینرها این پاسخ را تایید میکند و بلاک مذکور طی مدت کوتاهی تایید میشود.
در الگوریتم اجماع اثبات کار (PoW)، برای ایجاد یک بلاک در بلاک چین، باید یک بازی انجام دهید! بازی حدس زدن! فرض کنید تابعی وجود دارد (مثلا تابعی که بیت کوین استفاده میکند SHA-256 نام دارد)، که جواب یا ویژگیهای خاص جواب مورد قبولی که با آن بدست آورده میشود، توسط پروتکل مشخص شده است.
شما باید برای رسیدن به آن جواب، متغیرهای تابع را تغییر داده و با آزمون و خطا، بهترین ترکیب را برای دستیابی به متغیر درست بدست آورید. در الگوریتم PoW؛ فرمول به دست آوردن هش باید به صورتی باشد که تغییر حتی یک کاراکتر در دادههای شما نتیجهای کاملا متفاوت تولید کند و بنابراین هیچ راهی برای پیش بینی خروجی وجود نداشته باشد. مثلا در الگوریتم اجماع بیت کوین با استفاده از تابع SHA-256، همیشه هشهایی با 64 کاراکتر تولید میشود که تغییر حتی یک ورودی، کل هش را تغییر میدهد.
هر بلاک حاوی اطلاعات مربوط به تمام تراکنشهایی است که در آن قرار گرفته که ترکیب آن دادهها با هم یک هش ثابت (فرض کنید A) را تولید میکند. از آنجایی که A همیشه ثابت است، برای تولید هش و دستیابی به محدوده جواب مورد قبول (فرض کنید Y محدوده جواب و یا پاسخی با شرایط و ویژگیهای خاصی است که سیستم آن را قبول دارد)، باید اطلاعات اضافی را با این دادهها به عنوان متغیر تصادفی ترکیب کنید. این داده متغیر همان چیزی است که ما آن را نانس (nonce) مینامیم، عددی که هر بار آن را تغییر میدهید، یک پاسخ متفاوت از تابع یا هش متفاوتی دریافت میکنید. در واقع با ترکیب کردن نانسهای متفاوت با A، هر بار هش متفاوتی تولید میکنید تا تصادفا به جواب مورد نظر در محدوده Y برسید و با اعلام آن به شبکه، در ماینینگ به روش اثبات کار، شانس خود را برای به اصطلاح بستن و استخراج یک بلاک در زنجیره امتحان کنید.
خلاصه کلام این است که در الگوریتم PoW شما با به دست آوردن نانس مورد نظر، در فرآیند استخراج یا ماینینگ شرکت کرده و به شبکه اثبات میکنید که وقت و انرژی لازم را صرف کرده و مستحق پاداش هستید.
در این روش، ماینینگ فرآیند جمعآوری دادههای بلاک چین و هش کردن آن به همراه یک nonce است تا زمانی که هش خاصی را پیدا کنید و حق اضافه کردن بلاک جدیدی را به مجموعه بلاک چین داشته باشید. در نظر بگیرید که هرچه هش ریت شبکه بیشتر باشد، یافتن هش معتبر و استخراج بلاک دشوارتر است. همه این کارها برای اطمینان از این است که بلاکها خیلی سریع پیدا نشوند و همانطور که میتوانید تصور کنید، تلاش برای حدس زدن مقادیر زیادی هش میتواند چقدر هزینه و انرژیبر باشد. الگوریتم اثبات کار مثلا در مورد بیت کوین به صورت افزودن یک بلاک جدید در هر 10 دقیقه است. برای انجام این کار، خود سیستم سختی استخراج بیت کوین را بسته به سرعتی که ماینرها بلاکها را اضافه میکنند، تنظیم میکند. اگر استخراج خیلی سریع انجام شود، محاسبات هش سختتر میشود و اگر خیلی کند پیش برود، رسیدن به هش مورد نظر راحتتر است.
اگر نرخ هش کافی و دستگاه ماینری با قدرت مناسب در اختیار داشته باشید و هش معتبر را پیدا کنید، طبق پروتکل به شما با ارز دیجیتال پاداش داده میشود. به طور خلاصه، برنده باید آخرین بلاک تراکنشها را به بلاک چین اضافه کند و پاداش را در قالب کوینهای تازه و کارمزد تراکنشها دریافت کند. در نظر بگیرید که مثلا در بیت کوین حداکثر عرضه ثابت 21 میلیون کوین است، اما پس از استخراج همه آنها، ماینرها با دریافت کارمزد تراکنش در ازای خدمات خود به کارشان ادامه خواهند داد.
از آنجایی که ماینرها به صورت غیر متمرکز کار می کنند، چند بلاک معتبر میتوانند همزمان استخراج شوند. این پروسه یک فورک موقت ایجاد میکند و باعث میشود زنجیره به اصطلاح یک سر نداشته باشد و شاخه شاخه شود. اما در نهایت، با گذشت زمان، آن شاخهای مورد قبول است که طولانیتر باشد. روش پذیرش شاخه معتبر در بلاک چینها مختلف با هم متفاوت است؛ مثلا در زنجیره اصلی اتریوم گفته میشود کمی بیش از یک دقیقه (زمان لازم برای استخراج 6 بلاک) برای حصول اطمینان از تایید تراکنش خود صبر کنید. این بدان معناست که تراکنش مورد نظر باید در بلاکی در زنجیره طولانیتر بوده تا پذیرفته و تایید شده باشد. در غیر این صورت تراکنش تایید نشده و به اصطلاح به مم پول ماینرها برای قرار دادنش در بلاک جدید باز می گردد.
بیایید آنچه را که تا کنون درمورد الگوریتم اثبات کار میدانیم را خلاصه کنیم:
برای استخراج کردن به روش الگوریتم PoW باید از توان محاسباتی دستگاه ماینر استفاده کنید. اگر یک بلاک معتبر در زنجیره تولید کنید، به شما به صورت رمز ارز بومی آن بلاک چین خاص پاداش داده میشود. یک شبکه مبتنی بر بلاک چین توسط تعداد بسیاری گره (Node) نگهداری میشود و فقط برخی از این گرهها تحت عنوان ماینر شناخته میشوند و مسئول اضافه کردن بلاکهای جدید به شبکه هستند. با ارایه نانس توسط یک ماینر، هر کاربر میتواند به راحتی آن را با دادههای بلاک ترکیب کرده و هش آن را بررسی کند. در اصل محاسبه و جاگذاری یک نانس خاص برای کاربران غیر ماینر نیز ممکن است و آنها میتوانند اعتبار یک بلوک را بدون صرف توان محاسباتی زیادی تأیید کنند. پروتکل اثبات کار ماینرها را ملزم میکند تا برای یافتن nonce یک بلاک، در رقابت شدیدی از آزمون و خطا شرکت کنند و فقط بلاکهایی با نانس معتبر میتوانند به زنجیره اضافه شوند. سوالی که پیش میآید این است که اگر بخواهید در فرآیند الگوریتم اجماع اثبات کار تقلب کنید، چه چیزی شما را از تولید یک هش معتبر در ازای قرار دادن یکسری تراکنشهای تقلبی در بلاک باز میدارد؟ در ادامه به پاسخی که الگوریتم اجماع اثبات کار برای این مشکل دارد نگاهی میاندازیم.
نقطه شروع الگوریتم اثبات کار
اثبات کار اولین الگوریتم اجماعی بود که منتشر شد و تا به امروز، الگوی غالب مکانیزمهای اجماع باقی مانده است. این الگوریتم توسط ساتوشی ناکاموتو در وایت پیپر بیت کوین در سال 2008 معرفی شد، اما خود این فناوری بسیار قبلتر از آن وجود داشته است. ارز دیجیتال بیت کوین طی چند سال اخیر توسط جوامع جهانی شناخته شد و قیمت بیت کوین در این دوره افزایشهای قابل توجهی را تجربه کرد. بسیاری از افراد بزرگ و مطرح دنیا بعد از مشاهده روند کنونی، بخشی از سرمایه خودشان را صرف خرید بیت کوین کردهاند.
الگوریتم هش کش (HashCash) آدام بک (Adam Back) یکی از اولین نمونههای الگوی اثبات کار در روزهای پیش از تولد رمز ارزهاست. این الگو از طریق ملزم کردن فرستنده به انجام مقداری کار محاسباتی پیش از ارسال یک ایمیل، به گیرنده در کاهش دریافت اسپمها کمک میکند. این محاسبات برای یک فرستنده مشروع تقریبا هیچ هزینهای در بر ندارد، اما برای فردی که بهطور دسته جمعی ایمیل ارسال میکند، گران خواهد بود.
نحوه عملکرد الگوریتم اثبات کار
دفترچه یادداشت ما در اینجا حکم بلاک چین را دارد. اما ما تراکنشها را تک تک اضافه نمیکنیم، بلکه ترکیبی از آنها را در بلاکها قرار میدهیم. با معرفی تراکنشها به شبکه، کاربران ایجادکننده بلوک، آنها را در بلاک کاندید خود قرار میدهند. این تراکنشها نیز تنها پس از تایید بلوک مربوطه یعنی اضافه شدن به بلاک چین، معتبر تلقی خواهند شد.
با این وجود، اضافه کردن بلاکها هم ارزان نیست. الگوریتم اثبات کار، ماینرها (کاربران سازنده بلوک) را به استفاده از منابع خودشان ملزم میکند. این منابع همان قدرت محاسباتی هستند که برای هش کردن دادههای بلاک تا زمان پیدا کردن راهحل مناسب، استفاده میشوند.
هش کردن دادههای بلاک یعنی وارد کردن آن دادهها به داخل یک تابع هشینگ (Hashing Function) برای تولید هش بلوک. حالا این هش بلاک مانند یک «اثر انگشت» کار میکند؛ هویتی برای دادههای ورودی و برای هر بلوک منحصربهفرد است.
از نظر فنی، معکوس کردن هش بلاک و گرفتن دادههای ورودی غیر ممکن است. البته دانستن ورودی هم برای تایید درست بودن هش اهمیتی ندارد. فقط کافی است ورودیها را از طریق تابع ثبت کرده و خروجی مشابه را بررسی کنید.
در الگوریتم اثبات کار، باید دادههایی را تهیه کنید که هش آنها با شرایط خاص مطابقت داشته باشد. و البته نحوه رسیدن به آن هش مد نظر را هم نمیدانید. تنها گزینه شما، وارد کردن دادهها درون یک تابع هشینگ و بررسی مطابقت خروجیها با شرایط است. اگر درست نبود، باید با تغییر جزئی دادهها، هش متفاوتی را بهدست آورید. تغییر حتی یک کاراکتر در دادهها هم نتیجه کاملا متفاوتی ایجاد خواهد کرد، بنابراین هیچ راهی برای پیشبینی خروجی وجود ندارد.
در نتیجه، برای تولید یک بلاک، بازی حدس زدن انجام میدهید. کار شما این است که اطلاعات مربوط به تمام تراکنشهایی که مایل به اضافه کردن هستید و یک سری داده مهم دیگر را گرفته و هش آنها را تولید میکنید. اما از آنجایی که مجموعه داده شما تغییر نمیکند، باید داده متغیری را هم اضافه کنید. در غیر این صورت، همیشه یک هش ثابت را دریافت خواهید کرد. به این داده متغیر، نانس (Nonce) گفته میشود. نانس یک عدد است که در هر تلاش آن را تغییر میدهید تا هر بار هش متفاوتی تولید کنید. این همان کاری است که به آن ماینینگ میگویند.
بنابراین به طور خلاصه، الگوریتم اثبات کار در فرآیند استخراج، یعنی جمع کردن دادههای بلاک چین و هش کردن آن توسط یک نانس تا زمان پیدا کردن یک هش خاص. با پیدا کردن یک هش مطابق شرایط تعیینشده توسط پروتکل، حق پخش آن بلوک جدید به شبکه را پیدا خواهید کرد. در آن زمان، دیگر مشترکان شبکه نیز بلاک چین خود را برای اضافه کردن بلوک جدید آپدیت میکنند.
برای رمز ارزهای بزرگ امروز، شرایط استفاده از اثبات کار بسیار چالشبرانگیز است. هرچه هش ریت شبکه بالاتر باشد، پیدا کردن هش معتبر نیز سختتر خواهد بود. این افزایش سختی برای جلوگیری از افزایش سرعت پیدا شدن بلاکهاست. همانطور که احتمالا تصور میکنید، تلاش برای حدس زدن تعداد زیادی هش، برای کامپیوترتان هزینهبر خواهد بود. گویی در حال هدر دادن برق و چرخههای محاسباتی هستید. اما پروتکل هم در ازای پیدا کردن هش متعبر به شما پاداش میدهد.
پس تا اینجا یاد گرفتیم که:
ماین کردن هزینه بر است. در صورت تولید بلاک معتبر پاداش میگیرید. یک کاربر با دانستن ورودی به راحتی قادر به بررسی هش آن است. کاربران غیر ماینر نیز میتوانند بدون خرج کردن مقدار زیادی قدرت محاسباتی، اعتبار یک بلاک را تایید کنند. اما اگر تقلب کنید چه میشود؟ چه چیزی شما را از قرار دادن تراکنشهای تقبلی در بلاک و تولید هش معتبر برحذر میدارد؟
اینجاست که رمزنگاری کلید عمومی وارد میشود. در این مطلب این مبحث را خیلی عمیق بررسی نمیکنیم، اما خواندن مقاله «کلید عمومی و خصوصی چه مفهوم و تفاوتی در بلاک چین و ارز دیجیتال دارند؟» خالی از لطف نیست. به طور خلاصه، با استفاده از چندین ترفند رمزنگاری، میتوانیم حق انتقال وجوهی که فردی قصد خرج کردن آن را دارد، بررسی کنیم.
در زمان ساخت یک تراکنش، آن را امضا میکنید. هر کسی در شبکه نیز قادر به مقایسه و بررسی تطابق امضای شما با کلید عمومی است. افراد حتی حق خرج کردن وجوه و بزرگتر بودن ورودی از خروجی شما را هم بررسی میکنند (تا مثلا بیشتر از آنچه دارید خرج نکرده باشید).
هر بلاکِ دارایِ یک تراکنش نامعتبر به صورت خودکار توسط شبکه رد میشود. بنابراین، حتی تلاش برای تقلب هم بسیار هزینهبر است. در واقع بدون دریافت هیچ پاداشی منابعتان را به هدر دادهاید. بنابراین، زیبایی الگوریتم اثبات کار در این نهفته است که «تقلب کردن را هزینهبر، اما فعالیت صادقانه را سودآور» میکند. هر ماینر عاقلی هم بهدنبال بازگشت سرمایه (ROI) است، بنابراین رفتار تضمینکننده درآمد هم از آنها انتظار میرود.
مثالی از نحوه کار الگوی اثبات کار اتریوم تراکنشهای اتریوم درون بلاکها پردازش میشوند. هر بلاک دارای موارد زیر است:
سختی بلاک: مثلا 3,324,092,183,262,715 میکسهش: مثلا 0x44bca881b07a6a09f83b130798072441705d9a665c5ac8bdf2f39a3cdf3bee29 نانس: مثلا 0xd3ee432b4fb3d26b این دادههای بلاک مستقیما با خود اثبات کار در ارتباط هستند.
PoW چیست ؟
الگوریتم اجماع ابزاری برای توافق کاربران بر سر اطلاعات مشترک است. برای پاسخ به سوال PoW چیست به بررسی سوال بیت کوین چگونه کار می کند میپردازیم. بلاک چین بیت کوین در واقع یک دفتر کل توزیع شده و اشتراکی است که تاریخچهی تمام تراکنشهای بیت کوین را در خود دارد. تمام کاربران شبکه بیت کوین یک نسخه از دفتر کل را در اختیار دارند و همین مساله باعث افزایش امنیت آن میشود.
از آن جایی که در شبکه بیت کوین هیچ نهاد متمرکزی برای بررسی صحت اطلاعات و بهروزرسانی دفتر کل وجود ندارد، کاربران نیاز دارند که با استفاده از یک الگوریتم کامپیوتری به اجماع برسند و همگی اطلاعات یکسانی را به شبکه اضافه کنند. PoW یا اثبات کار الگوریتم استفاده شده در شبکه بیت کوین است که شرایطی را برای ماینرهای شبکه تعیین میکند تا بتوانند بدون اعتماد به یکدیگر اطلاعات درست و یکسانی را به بلاک چین اضافه کنند.
در الگوریتم PoW برای جلوگیری از اسپم شبکه و همچنین فعالیت درستکارانه نودهای شبکه، کاربران در یک فرآیند رقابتی شرکت میکنند که لازمه آن داشتن دستگاه محاسباتی قوی و مصرف انرژی بالا است. این شرایط باعث تحمیل هزینه بالا به کاربران غیردرستکار میشود و عملا همه آنها را از چرخه فعالیت خارج میکند. علاوه بر این، در طی فرآیند رقابتی، اطلاعات مشترکی که باید به شبکه اضافه شود توسط همه اعضا تایید و به شبکه اضافه میشود.
در واقع الگوریتم اثبات کار شرایطی را تعیین میکند که در آن ماینرها بتوانند اطلاعات جدید را تأیید کنند. ماینرها با استفاده از این الگوریتم، بلاک جدیدی را وارد بلاک چین میکنند. این اتفاق در بیت کوین حدوداً هر ده دقیقه یک بار رخ میدهد. الگوریتم اثبات کار اولین الگوریتم اجماعی بود که به وجود آمد و تا به امروز همچنان الگوریتمی قابل اطمینان باقی مانده است.
این فناوری نخستین بار در سال 1386 (2008 میلادی) توسط «ساتوشی ناکاموتو» (Satoshi Nakamoto) در وایتپیپر بیت کوین معرفی شد، اما ایدهی آن از مدتها قبل برای جلوگیری از سیستمهای اینترنتی شکل گرفته بود. «هش کش» (HashCash) یکی از مثالهای معروف استفاده از این الگوریتم قبل از معرفی مفهوم کریپتوکارنسی است.
دابل اسپندینگ در PoW چیست ؟
در بخش قبل فهمیدیم که PoW چیست و چه کاربردی در بیت کوین و سایر رمز ارزها دارد. یکی از اصلیترین دلایل ایجاد الگوریتمهای اجماع جلوگیری از خرج مضاعف ارزهای دیجیتال است. سوالی که در این رابطه وجود دارد این است که دابل اسپندینگ چیست و چه کاربردی در PoW دارد. منظور از خرج مضاعف این است که یک اسکناس، بیش از یک بار خرج شود. وجود این ویژگی در یک سیستم پرداخت، سیستم را غیرقابل استفاده میکند.
اصطلاح دابل اسپندینگ تقریباً به صورت انحصاری در زمینهی ارز دیجیتال استفاده میشود، زیرا خرج کردن پول فیزیکی بیش از یک بار در عمل غیر ممکن است. تصور کنید که میخواهید یک قهوه خریداری کنید. شما برای خرید قهوه، پول نقد را به صندوقدار تحویل میدهید و او پول را در صندوق کافیشاپ قرار میدهد. حال دیگر نمیتوانید به کافیشاپ آن سوی خیابان بروید و با همان پول، یک قهوهی دیگر بخرید.
در فضای ارزهای دیجیتال هر ارز به عنوان یک داده در بلاک چین ثبت میشود. اگر کاربری با استفاده از ارز دیجیتال یک قهوه خریداری کنید این خرید به عنوان یک تراکنش در بلاک چین ثبت میشود و دارایی اختصاص داده شده به حساب کاربر کم و حساب فروشنده افزایش مییابد. در سیستمهای کامپیوتری میتوان با کپی کردن دادهها یا ایجاد تراکنشهای تکراری یک ارز را چندین بار استفاده کرد. بنابراین، یک سیستم پرداخت دیجیتال زمانی قابل استفاده است که بتواند از خرج مضاعف داراییها جلوگیری کند.
در سیستمهای دیجیتال متمرکز مثل اینترنت بانک، نهاد ناظر اطلاعات حساب تمام کاربران را دارد و زمانی که کاربر یک تراکنش در شبکه ثبت میکند، نهاد ناظر اطلاعات را بررسی میکند و در صورت درست بودن تراکنش را ثبت میکند. در بلاک چین کاربران با استفاده از کیف پول ارز دیجیتال خود تراکنشهای مورد نظر را به شبکه ارسال میکنند اما هیچ نهاد ناظری برای تشخیص درست بودن اطلاعات تراکنشها وجود ندارد.
الگوریتم اجماع به طور کلی و PoW به طور خاص روشی برای تشخیص درست بودن اطلاعات تراکنشها در شبکههای غیرمتمرکز و جلوگیری از دابل اسپندینگ است. در صورتی که الگوریتم اجماع تعریف شده درست کار نکند طولی نخواهد کشید که آن ارز دیجیتال سقوط کرده و از بین میرود. الگوریتم PoW در طی این سالها در ساختار بسیاری از بلاک چینها استفاده شده و توانایی آن در جلوگیری از خرج مضاعف به اثبات رسیده است.
ضرورت وجود PoW چیست ؟
در بخشهای قبلی فهمیدیم که PoW چیست و دابل اسپندینگ در ارتباط با آن چه مفهومی دارد. اگر با فناوری بلاک چین آشنا باشید، میدانید که کاربران با استفاده از کیف پول ارز دیجیتال تراکنشهای مورد نظر خود را به شبکه ارسال میکنند اما، این تراکنشها بلافاصله معتبر تلقی نمیشوند. یک تراکنش زمانی در بلاک چین ثبت و نهایی میشود که در یک بلاک قرار بگیرد و صحت اطلاعات تراکنشهای موجود در بلاک توسط اکثریت کاربران تایید شود.
بلاک چین یک پایگاه دادهی بزرگ است که همهی کاربرها یک نسخه از آن را در اختیار دارند. بنابراین با بررسی اطلاعات موجود در دفتر کل و مقایسه آن با اطلاعات ثبت شده در تراکنش جدید میتوان امکانپذیری آن را بررسی کرد. فرض کنید شما و سه نفر از دوستانتان یک دفترچه یادداشت دارید. هر گاه یکی از شما بخواهد پولی را انتقالی دهد، آن را در دفتر یادداشت میکنید؛ «علی به امیر پنج تومان میدهد، امیر به سارا دو تومان میدهد و غیره.»
تراکنشهای جدید در این سیستم با اشاره به تراکنشهای قبلی انجام میشوند. بنابراین، هر بار که معامله جدیدی ایجاد میشود، به تراکنشی که وجوه از آن آمده است اشاره میشود. به عنوان مثال، اگر امیر به سارا دو تومان پول انتقال دهد، نوشتهی مربوط به آن در دفترچه به صورت «امیر به سارا دو تومان از معاملهی قبلی خود با علی پرداخت میکند» ثبت میشود. این روش ثبت، راهی برای ردیابی جریان پول در اختیار ما قرار میدهد. اگر امیر سعی کند با همان پولهایی که به سارا داده، تراکنش دیگری انجام دهد، همه فوراً متوجه خواهند شد و گروه اجازه نخواهند داد که این تراکنش به دفترچه یادداشت اضافه شود.
این روش ممکن است در یک گروه کوچک به خوبی جواب دهد. افراد همه یکدیگر را میشناسند، بنابراین احتمالاً در مورد این که کدام افراد باید تراکنشها را به دفترچه وارد کنند توافق دارند. اما اگر همین روش را برای یک گروه 10,000 نفری از افراد پیش بگیریم، چه اتفاقی خواهد افتاد؟ ایدهی دفترچه یادداشت در این موقعیت چندان مناسب به نظر نمیرسد، زیرا هیچکس نمیخواهد به یک غریبه برای مدیریت دفترچه اعتماد کند.
الگوریتم اثبات کار در چنین شرایطی به کمک ما میآید. این الگوریتم اطمینان حاصل میکند که کاربران پولهای موچود را دوبار خرج نکنند. الگوریتم اثبات کار با استفاده از ترکیبی از مفاهیم تئوری بازیها و علوم رمزنگاری، به همهی افراد امکان میدهد تا بلاک چین را طبق قوانین آن سیستم، بهروزرسانی کنند.
الگوریتم اثبات کار چگونه کار میکند؟
بلاک چین دفتر ثبت اطلاعات تراکنشهای کاربران است. به کاربران شبکه بلاک چین «نود» (Node) گفته میشود. نودها بر اساس وظیفهای که در شبکه برعهده دارند به دستههای مختلفی تقسیم میشوند. «لایت نودها» مصرفکنندگان نهایی شبکههای بلاک چینی هستند که حساب کاربری خود را با استفاده از انواع کیف پول ارز دیجیتال در بلاک چین ایجاد میکنند و از آن برای ثبت تراکنشها بهره میگیرند.
دسته دوم کاربران بلاک چین «فول نودها» (Full Nodes) هستد که به نوعی متصدیان بلاک چین هستتند. فول نودها اطلاعات کل تراکنشهای بلاک چین را در اختیار دارند و با استفاده از این اطلاعات میتوانند اطلاعات تراکنشها را تایید کنند. دستهای از فول نودها که ببا استفاده از الگوریتم اجماع اطلاعات صحیح را به شبکه اضافه میکنند «ماینر» (Miner) نامیده میشوند. الگوریتم PoW توسط ماینرها اجرا شود. برای اینکه PoW اجرایی شود مراحل مختلفی طی میشود
امنیت در الگوریتم PoW
ترفندهای رمزنگاری دقیقی در بلاک چین بکار گرفته میشوند که به هر کاربری اجازه میدهد بررسی کند که آیا شخصی حق دارد دارایی دیجیتالی را که میخواهد خرج یا جابجا کند یا خیر. در روش کریپتو گرافی یا رمزنگاری، وقتی تراکنشی ایجاد میشود، آن را امضا میکنید. هر کسی در شبکه میتواند امضای شما را با کلید عمومی شما مقایسه کند و بررسی کند که آیا آنها با هم مطابقت دارند یا خیر. آنها همچنین قادرند بررسی کنند که آیا واقعاً میتوانید وجوه خود را خرج کنید و مجموع ورودیهای شما از مجموع خروجیهای شما بیشتر نباشد. هر بلوکی که شامل تراکنش نامعتبری باشد به طور خودکار توسط شبکه رد میشود. در نظر بگیرید حتی تلاش برای تقلب کردن هم گران و مستلزم مصرف انرژی زیاد است.
از زیباییهای الگوریتم PoW این است که تقلب در آن گران تمام میشود، در حالی که صادقانه عمل کردن آن را سودآور میکند. هر ماینر که بخواهد منطقی عمل کند و به دنبال بازگشت سرمایه باشد، به گونهای رفتار میکند که درآمدش را تضمین کند.
از سویی دیگر هم هدف اثبات کار، گسترش زنجیره است. طولانیترین زنجیره بهعنوان معتبرترین زنجیره پذیرفته میشود، زیرا بیشترین کار محاسباتی را انجام داده است. تقلب در این روش تقریبا غیرممکن است و دلیلش این است که یک ماینر مخرب باید همیشه نانس بلاک را سریعتر از دیگران پیدا کرده و آن را به اصطلاح ماین کند. برای ایجاد پیوسته بلاکهای مخرب و دستکاری شده و در عین حال معتبر، به بیش از 51 درصد از قدرت استخراج شبکه نیاز است تا بتوان دیگران را شکست داد. این عمل به حمله 51 درصد معروف است و برای اینکه این مقدار “کار” انجام شود، به قدرت محاسباتی زیادی نیاز است، در حالی که انرژی صرف شده حتی ممکن است بیشتر از دستاوردهای یک حمله باشد.
اثبات کار الگوریتم زیربنایی است که سختی و قوانین را برای کاری که ماینرها انجام میدهند تعیین میکند. استخراج کردن در این روش یعنی «کار» یا تلاش برای اضافه کردن بلاکهای معتبر به زنجیره. هرچه نرخ کار کردن بیشتر باشد (یا به اصطلاح هش ریت شبکه بزرگتر باشد)، شبکه مطمئنتر و مستحکمتر است. با این حال انتقادات عمده از اثبات کار، مقدار انرژی مورد نیاز برای ایمن نگه داشتن شبکه است.
اثبات کار، مکانیزم اجماع انتخابی برای ارزهای دیجیتال اولیه بود که به روشی امن و غیر متمرکز برای پردازش تراکنشها نیاز داشتند. اگرچه پس از آن اثبات سهام به عنوان جایگزینی با مصرف انرژی کمتر معرفی شده است، PoW هنوز توسط بسیاری از رمز ارزهای مهم و اصلی استفاده میشود.
نقطه شروع الگوریتم اثبات کار
اثبات کار اولین الگوریتم اجماعی بود که منتشر شد و تا به امروز، الگوی غالب مکانیزمهای اجماع باقی مانده است. این الگوریتم توسط ساتوشی ناکاموتو در وایت پیپر بیت کوین در سال 2008 معرفی شد، اما خود این فناوری بسیار قبلتر از آن وجود داشته است. ارز دیجیتال بیت کوین طی چند سال اخیر توسط جوامع جهانی شناخته شد و قیمت بیت کوین در این دوره افزایشهای قابل توجهی را تجربه کرد. بسیاری از افراد بزرگ و مطرح دنیا بعد از مشاهده روند کنونی، بخشی از سرمایه خودشان را صرف خرید بیت کوین کردهاند.
الگوریتم هش کش (HashCash) آدام بک (Adam Back) یکی از اولین نمونههای الگوی اثبات کار در روزهای پیش از تولد رمز ارزهاست. این الگو از طریق ملزم کردن فرستنده به انجام مقداری کار محاسباتی پیش از ارسال یک ایمیل، به گیرنده در کاهش دریافت اسپمها کمک میکند. این محاسبات برای یک فرستنده مشروع تقریبا هیچ هزینهای در بر ندارد، اما برای فردی که بهطور دسته جمعی ایمیل ارسال میکند، گران خواهد بود.
نحوه عملکرد الگوریتم اثبات کار
دفترچه یادداشت ما در اینجا حکم بلاک چین را دارد. اما ما تراکنشها را تک تک اضافه نمیکنیم، بلکه ترکیبی از آنها را در بلاکها قرار میدهیم. با معرفی تراکنشها به شبکه، کاربران ایجادکننده بلوک، آنها را در بلاک کاندید خود قرار میدهند. این تراکنشها نیز تنها پس از تایید بلوک مربوطه یعنی اضافه شدن به بلاک چین، معتبر تلقی خواهند شد.
با این وجود، اضافه کردن بلاکها هم ارزان نیست. الگوریتم اثبات کار، ماینرها (کاربران سازنده بلوک) را به استفاده از منابع خودشان ملزم میکند. این منابع همان قدرت محاسباتی هستند که برای هش کردن دادههای بلاک تا زمان پیدا کردن راهحل مناسب، استفاده میشوند.
هش کردن دادههای بلاک یعنی وارد کردن آن دادهها به داخل یک تابع هشینگ (Hashing Function) برای تولید هش بلوک. حالا این هش بلاک مانند یک «اثر انگشت» کار میکند؛ هویتی برای دادههای ورودی و برای هر بلوک منحصربهفرد است.
از نظر فنی، معکوس کردن هش بلاک و گرفتن دادههای ورودی غیر ممکن است. البته دانستن ورودی هم برای تایید درست بودن هش اهمیتی ندارد. فقط کافی است ورودیها را از طریق تابع ثبت کرده و خروجی مشابه را بررسی کنید.
در الگوریتم اثبات کار، باید دادههایی را تهیه کنید که هش آنها با شرایط خاص مطابقت داشته باشد. و البته نحوه رسیدن به آن هش مد نظر را هم نمیدانید. تنها گزینه شما، وارد کردن دادهها درون یک تابع هشینگ و بررسی مطابقت خروجیها با شرایط است. اگر درست نبود، باید با تغییر جزئی دادهها، هش متفاوتی را بهدست آورید. تغییر حتی یک کاراکتر در دادهها هم نتیجه کاملا متفاوتی ایجاد خواهد کرد، بنابراین هیچ راهی برای پیشبینی خروجی وجود ندارد.
در نتیجه، برای تولید یک بلاک، بازی حدس زدن انجام میدهید. کار شما این است که اطلاعات مربوط به تمام تراکنشهایی که مایل به اضافه کردن هستید و یک سری داده مهم دیگر را گرفته و هش آنها را تولید میکنید. اما از آنجایی که مجموعه داده شما تغییر نمیکند، باید داده متغیری را هم اضافه کنید. در غیر این صورت، همیشه یک هش ثابت را دریافت خواهید کرد. به این داده متغیر، نانس (Nonce) گفته میشود. نانس یک عدد است که در هر تلاش آن را تغییر میدهید تا هر بار هش متفاوتی تولید کنید. این همان کاری است که به آن ماینینگ میگویند.
الگوریتم اثبات کار، راهحل اصلی مقابله با مشکل دابل اسپندینگ بوده و امنیت و قابلیت اطمینان خود را ثابت کرده است. بیت کوین ثابت کرد که برای جلوگیری از دو بار خرج شدن وجوه، به یک مقام متمرکز نیازی نیست. با استفاده هوشمندانه از رمزنگاری، تابع هش و نظریه بازی، مشترکان یک محیط غیر متمرکز قادر به توافق بر سر وضعیت یک مجموعه داده مالی خواهند بود.
ثبت دیدگاه
0دیدگاه
دیدگاهی ثبت نشده است.
اولین نفری باشید که دیدگاهتان ثبت میشود.