proof of work یا الگوریتم اثبات کار در بلاکچین چیست؟

فهرست محتوا
الگوریتم اثبات کار (Proof of Work) مکانیسمی برای جلوگیری از هزینه های مضاعف است. اکثر ارزهای دیجیتال اصلی از این به عنوان الگوریتم اجماع خود استفاده می کنند. این همان چیزی است که ما آن را روشی برای تامین امنیت دفتر کل ارزهای دیجیتال می نامیم.
Proof of Work اولین الگوریتم اجماع یا اثبات بود که ظاهر شد و تا به امروز همچنان الگوریتم غالب باقی مانده است. این فناوری توسط ساتوشی ناکاموتو در وایت پیپر بیت کوین در سال 2008 معرفی شد، اما خود این فناوری مدت ها قبل از آن تصور شده بود.
HashCash Adam Back نمونه اولیه الگوریتم Proof of Work در روزهای قبل از ارز دیجیتال است. با الزام فرستنده ها به انجام مقدار کمی محاسبات قبل از ارسال ایمیل، گیرنده ها می توانند اسپم را کاهش دهند. این محاسبه تقریباً برای یک فرستنده قانونی هیچ هزینه ای ندارد، اما به سرعت برای کسی که به صورت انبوه ایمیل ارسال می کند، جمع می شود.
هزینه مضاعف زمانی اتفاق می افتد که همان وجوه بیش از یک بار خرج شود. این اصطلاح تقریباً به طور انحصاری در زمینه پول دیجیتال استفاده میشود، در نهایت، شما برای دوبار خرج کردن پول نقد فیزیکی یکسان با مشکل مواجه خواهید شد.
وقتی امروز پول یک قهوه را پرداخت می کنید، پول نقد را به صندوقدار تحویل می دهید که احتمالاً آن را در یک ثبت نام قفل می کند. شما نمی توانید به کافی شاپ روبروی خیابان بروید و با همان قبض برای قهوه دیگری پرداخت کنید.
در طرح های نقدی دیجیتال، این امکان وجود دارد که بتوانید. مطمئناً قبلاً یک فایل رایانه را کپی کرده اید، فقط آن را کپی و جایگذاری کنید. می توانید همان فایل را برای ده، بیست، پنجاه نفر ایمیل کنید. از آنجایی که پول دیجیتال فقط داده است، باید از کپی کردن و خرج کردن واحدهای مشابه در مکان های مختلف جلوگیری کنید. در غیر این صورت، ارز شما در کوتاه ترین زمان ممکن سقوط می کند.
چرا اثبات کار ضروری است؟
اگر راهنمای ما برای فناوری بلاک چین را خوانده باشید، میدانید که کاربران تراکنشها را به شبکه پخش میکنند. با این حال، آن تراکنشها بلافاصله معتبر تلقی نمیشوند. این تنها زمانی اتفاق می افتد که آنها به بلاک چین اضافه شوند.
بلاک چین یک پایگاه داده بزرگ است که هر کاربر می تواند آن را ببیند، بنابراین آنها می توانند بررسی کنند که آیا قبلاً بودجه خرج شده است یا خیر. آن را اینگونه تصور کنید: شما و سه دوستتان یک دفترچه یادداشت دارید. هر زمان که یکی از شما میخواهد هر واحدی را که استفاده میکنید انتقال دهد، آن را یادداشت میکنید، آلیس به باب پنج واحد پرداخت میکند، باب به کارول دو واحد پرداخت میکند و غیره.
پیچیدگی دیگری در اینجا وجود دارد،ذهر بار که معامله ای انجام می دهید، به تراکنشی که وجوه از آنجا آمده است اشاره می کنید. بنابراین، اگر باب با دو واحد به کارول پرداخت می کرد، ورودی در واقع به شکل زیر خواهد بود: باب دو واحد از معامله قبلی با آلیس را به کارول پرداخت می کند.
اکنون، ما راهی برای ردیابی واحدها داریم. اگر باب سعی کند با استفاده از همان واحدهایی که به کارول فرستاده تراکنش دیگری انجام دهد، همه فوراً متوجه خواهند شد. گروه اجازه نمی دهد تراکنش به دفترچه یادداشت اضافه شود.
اکنون، این ممکن است در یک گروه کوچک به خوبی کار کند. همه یکدیگر را می شناسند، بنابراین احتمالاً در مورد اینکه کدام یک از دوستان باید تراکنش ها را به دفترچه یادداشت اضافه کنند، توافق خواهند کرد. اگر یک گروه 10000 نفری شرکت کننده بخواهیم چه؟ ایده دفترچه یادداشت به خوبی مقیاس بندی نمی شود، زیرا هیچ کس نمی خواهد به یک غریبه برای مدیریت آن اعتماد کند.
اینجاست که Proof of Work وارد می شود. تضمین می کند که کاربران پولی را خرج نمی کنند که حق خرج کردن آن را ندارند. با استفاده از ترکیبی از تئوری بازی و رمزنگاری، یک الگوریتم PoW هر کسی را قادر میسازد تا بلاک چین را مطابق با قوانین سیستم بهروزرسانی کند.
PoW چگونه کار می کند؟
دفترچه یادداشت بالا ما بلاک چین است. اما ما تراکنشها را یکی یکی اضافه نمیکنیم، در عوض، آنها را به بلوکها تبدیل میکنیم. ما تراکنش ها را به شبکه اعلام می کنیم، سپس کاربرانی که یک بلوک ایجاد می کنند، آنها را در یک بلوک کاندید قرار می دهند. تراکنشها تنها زمانی معتبر تلقی میشوند که بلوک نامزد آنها به یک بلوک تأیید شده تبدیل شود، به این معنی که به بلاک چین اضافه شده باشد.
با این حال، اضافه کردن یک بلوک ارزان نیست. اثبات کار مستلزم آن است که یک ماینر (کاربر ایجاد کننده بلوک) از برخی منابع خود برای این امتیاز استفاده کند. این منبع قدرت محاسباتی است که برای هش کردن داده های بلوک تا زمانی که راه حلی برای یک معما پیدا شود استفاده می شود.
هش کردن داده های بلوک به این معنی است که شما آن را از طریق یک تابع هش برای ایجاد هش بلوک عبور می دهید. هش بلاک مانند یک «اثر انگشت» عمل میکند، این یک هویت برای دادههای ورودی شما است و برای هر بلوک منحصر به فرد است.
معکوس کردن هش بلوک برای دریافت داده های ورودی عملاً غیرممکن است. با این حال، دانستن یک ورودی، برای شما بی اهمیت است که تأیید کنید هش درست است. شما فقط باید ورودی را از طریق تابع ارسال کنید و بررسی کنید که آیا خروجی یکسان است یا خیر.
در Proof of Work، باید داده هایی را ارائه دهید که هش آنها با شرایط خاصی مطابقت دارد. اما شما نمی دانید چگونه به آنجا برسید. تنها گزینه شما این است که داده های خود را از طریق یک تابع هش ارسال کنید و بررسی کنید که آیا با شرایط مطابقت دارد یا خیر. اگر اینطور نیست، باید اطلاعات خود را کمی تغییر دهید تا هش متفاوتی به دست آورید. تغییر حتی یک کاراکتر در دادههای شما نتیجهای کاملاً متفاوت خواهد داشت، بنابراین هیچ راهی برای پیشبینی خروجی وجود ندارد.

در نتیجه، اگر می خواهید یک بلوک ایجاد کنید، یک بازی حدس زدن انجام می دهید. شما معمولاً اطلاعات مربوط به تمام تراکنشهایی را که میخواهید اضافه کنید و برخی دادههای مهم دیگر را میگیرید، سپس همه را با هم هش میکنید. اما از آنجایی که مجموعه داده شما تغییر نمی کند، باید اطلاعاتی را اضافه کنید که متغیر باشد. در غیر این صورت، شما همیشه همان هش را به عنوان خروجی دریافت خواهید کرد.
این داده متغیر همان چیزی است که ما آن را nonce می نامیم. این عددی است که با هر تلاشی آن را تغییر میدهید، بنابراین هر بار هش متفاوتی دریافت میکنید. و این همان چیزی است که ما به آن ماینینگ می گوییم.
به طور خلاصه، ماینینگ فرآیند جمعآوری دادههای بلاک چین و هش کردن آن به همراه یک nonce است تا زمانی که هش خاصی را پیدا کنید. اگر هش پیدا کنید که شرایط تعیین شده توسط پروتکل را برآورده کند، حق پخش بلوک جدید را به شبکه دارید. در این مرحله، سایر شرکتکنندگان شبکه، بلاکچینهای خود را بهروزرسانی میکنند تا بلاک جدید را در بر گیرند.
برای ارزهای دیجیتال اصلی امروزه، شرایط فوق العاده چالش برانگیز است. هرچه نرخ هش در شبکه بیشتر باشد، یافتن هش معتبر دشوارتر است. این کار برای اطمینان از اینکه بلوک ها خیلی سریع پیدا نمی شوند انجام می شود.
همانطور که می توانید تصور کنید، تلاش برای حدس زدن مقادیر زیادی هش می تواند روی رایانه شما گران تمام شود. شما چرخه های محاسباتی و برق را هدر می دهید. اما اگر هش معتبری پیدا کنید، این پروتکل به شما ارز دیجیتال را پاداش می دهد.
بیایید آنچه را که تا کنون می دانیم خلاصه کنیم:
- برای شما گران است که استخراج کنید.
- اگر بلوک معتبری تولید کنید به شما پاداش داده می شود.
- با دانستن یک ورودی، کاربر میتواند به راحتی هش آن را بررسی کند. کاربران غیر ماینینگ میتوانند اعتبار یک بلوک را بدون صرف توان محاسباتی زیاد تأیید کنند.
تا کنون خیلی خوب. اما اگر بخواهید تقلب کنید چه؟ چه چیزی شما را از قرار دادن یکسری تراکنش های تقلبی در بلوک و تولید یک هش معتبر باز می دارد؟
اینجاست که رمزنگاری کلید عمومی وارد می شود. ما در این مقاله به عمق آن نمی پردازیم، اما بررسی کنید رمزنگاری کلید عمومی چیست؟ برای یک نگاه جامع به آن به طور خلاصه، ما از برخی ترفندهای رمزنگاری دقیق استفاده میکنیم که به هر کاربری اجازه میدهد تا بررسی کند که آیا شخصی حق دارد وجوهی را که میخواهد خرج کند، جابجا کند یا خیر.
وقتی تراکنش ایجاد می کنید، آن را امضا می کنید. هر کسی در شبکه می تواند امضای شما را با کلید عمومی شما مقایسه کند و بررسی کند که آیا آنها مطابقت دارند یا خیر. آنها همچنین بررسی میکنند که آیا واقعاً میتوانید وجوه خود را خرج کنید و مجموع ورودیهای شما از مجموع خروجیهای شما بیشتر است (یعنی اینکه بیشتر از چیزی که دارید خرج نمیکنید).
هر بلوکی که شامل تراکنش نامعتبر باشد به طور خودکار توسط شبکه رد می شود. حتی تلاش برای تقلب برای شما گران است. شما منابع خود را بدون هیچ پاداشی هدر خواهید داد. زیبایی اثبات کار در اینجا نهفته است: تقلب را گران می کند، اما صادقانه عمل کردن را سودمند می کند. هر ماینر منطقی به دنبال بازگشت سرمایه خواهد بود، بنابراین می توان از آنها انتظار داشت که به گونه ای رفتار کنند که درآمد را تضمین کند.
اثبات کار در مقابل اثبات سهام
الگوریتمهای اجماع زیادی وجود دارد، اما یکی از مورد انتظارترین الگوریتمهای اثبات سهام (PoS) است. این مفهوم به سال 2011 برمی گردد و در برخی از پروتکل های کوچکتر پیاده سازی شده است. اما هنوز در هیچ یک از بلاک چین های بزرگ شاهد پذیرش آن نبوده است. در سیستمهای Proof of Stake، ماینرها با اعتبارسنجی جایگزین میشوند.
هیچ ماینینگی در کار نیست و مسابقه ای برای حدس زدن هش وجود ندارد. در عوض، کاربران بهطور تصادفی انتخاب میشوند – اگر انتخاب شوند، باید بلوکی را پیشنهاد کنند (یا «جعل» کنند. اگر بلوک معتبر باشد، پاداشی متشکل از کارمزد تراکنشهای بلوک دریافت خواهند کرد.

اگرچه هر کاربری را نمی توان انتخاب کرد، پروتکل آنها را بر اساس تعدادی از عوامل انتخاب می کند. برای واجد شرایط بودن، شرکت کنندگان باید یک سهام را قفل کنند، که مقدار از پیش تعیین شده ارز بومی بلاک چین است. این سهام مانند وثیقه عمل می کند:
همانطور که متهمان مبلغ زیادی پول می دهند تا آنها را از غیبت از محاکمه بازدارند، اعتبار دهندگان یک سهام را قفل می کنند تا از تقلب جلوگیری کنند. اگر آنها غیر صادقانه عمل کنند، سهام آنها (یا بخشی از آن) گرفته می شود.
Proof of Stake نسبت به Proof of Work مزایایی دارد. قابل توجه ترین آنها ردپای کربن کوچکتر است، از آنجایی که نیازی به مزارع ماینینگ پرقدرت در PoS وجود ندارد، برق مصرفی تنها کسری از برق مصرفی در PoW است.
گفته می شود، هیچ چیزی نزدیک به سابقه PoW نیست. اگرچه میتوان آن را بیهوده تلقی کرد، استخراج تنها الگوریتم اجماع است که خود را در مقیاس ثابت کرده است. در بیش از یک دهه، تراکنش به ارزش تریلیون دلار را تضمین کرده است. برای اینکه با اطمینان بگوییم که آیا PoS میتواند با امنیت آن رقابت کند، شرط بندی باید به درستی در طبیعت آزمایش شود.
جمع بندی
الگوریتم اثبات کار راه حل اصلی برای مشکل دوبار خرج کردن بود و ثابت شده است که قابل اعتماد و ایمن است. بیت کوین ثابت کرد که ما به نهادهای متمرکز برای جلوگیری از دوبار خرج کردن وجوه مشابه نیاز نداریم. با استفاده هوشمندانه از رمزنگاری، توابع هش و تئوری بازی، شرکت کنندگان در یک محیط غیرمتمرکز می توانند در مورد وضعیت یک پایگاه داده مالی به توافق برسند.

در صورتی که تجربه خاصی در خصوص برنامهنویسی ندارید میتوانید از دورههای رایگان سایت ما “فرازمان“، استفاده کنید. همچنین اگر به دورههای پیشرفتهتری در این خصوص نیاز داشته باشید، ما با آموزش های حرفه ای که در سایتمان قرار دادیم می توانید به سطح دلخواهتان با تلاش و پشتکار برسید.
نقشه راه
راهنما آکادمی فرازمان
برای یادگیری برنامه نویسی بلاکچین…
در این باره بیشتر بخوانید
دیدگاهتان را بنویسید