اثبات کار (Proof Of Work)

اثبات کار (Proof Of Work)

اثبات کار (Proof Of Work) داده ای است که ایجاد آن سخت (زمان و هزینه بر) است ولی تایید آن برای دیگران ساده است و این کار یک سری از نیاز ها را برطرف می کند. ساخت اثبات در فرآیندی تصادفی با احتمال پایین انجام می شود بنابراین به طور متوسط در این کار کلی خطا و موارد موقتی به وجود می آید تا یک اثبات کار تایید شده ساخته شود. ارز دیجیتالی بیت کوین از سیستم اثبات کار Hashcash استفاده می کند.

یکی از کاربرد ها برای استفاده از این ایده از Hashcash به عنوان روشی برای جلوگیری از ایمیل های اسپم یا هرزنامه ها استفاده می کند که در محتوای هر ایمیل اثبات کار (شامل آدرس گیرنده) درخواست می کند. ایمیل های سالم و بدون مشکل می توانند کار را برای ساخت اثبات به سادگی انجام دهند(برای یک ایمیل کار زیادی نیاز نیست) ولی ایمیل دهندگان اسپم در حجم گسترده با ساخت اثبات های مورد نیاز با مشکل مواجه خواهند شد (که نیاز به منابع محاسباتی عظیم دارد).

اثبات های کتر Hashcash در ساخت بلاک بیت کوین مورد استفاده قرار می گیرد. به منظور این که یک بلاک توسط اعضای شبکه مورد قبول واقع شود، ماینر ها باید اثبات کار را که تمام داده های بلاک را پوشش می دهد، تکمیل کنند. سختی این کار به این منظور تعیین شده است تا نرخ ساخت بلاک ها توسط شبکه را به هر یک در ده دقیقه محدود کند. به دلیل احتمال پایین در ساخت موفقیت آمیز، این که کدام کامپیوتر مشغول در شبکه می تواند بلاک بعدی را بسازد، را غیر قابل پیش بینی می کند.

برای این که یک بلاک تایید شود باید هشی با مقدار کمتر یا برابر با هش هدف ساخته شود. به این معناست که هر بلاک نشانگر این است که کاری که انجام شده باعث ساخت آن بلاک شده است. هر بلاک شامل هش بلاک قبلی می شود که در این صورت هر بلاک دارای زنجیره ای از بلاک هاست که با یکدیگر مقدار کار زیادی را شامل می شوند. تغییر یک بلاک (که فقط در صورتی امکان پذیر است که یک بلاک جدید با مقادیر قبلی ساخته شود) نیازمند این است که تمام جانشین هایش دوباره ساخته شوند و کار هایی را که شامل می شوند را دوباره انجام دهند. این کار باعث حفاظت از زنجیره بلاک ها در برابر نفوذ و دستکاری می شود.

رایج ترین نمای مورد استفاده در اثبات کار بر پایه رمزنگاری SHA-256 است و به عنوان بخشی از بیت کوین معرفی شد. دیگر الگوریتم های هش که برای اثبات کار استفاده می شوند شامل Blake-256, CryptoNight, HEFTY1, Quark, SHA-3, scrypt-jane, scrypt-n, Scrypt و ترکیبی از آن ها هستند.

فرض کنیم رشته اصلی که قرار است روی آن کار کنیم Hello, world! است. هدف ما این است که بازه ای از هش های SHA-256 پیدا کنیم که با 000 آغاز شود. این رشته را با افزودن مقدار عددی به پایان که آن را Nounce می گویند، تغییر می و هر بار آن را افزایش می دهیم. پیدا کردن یک تطابق برای Hello, world! مستلزم این است که 4251 بار تلاش کنیم ( اما برای داشتن 0 در 4 رقم اول اتفاق می افتد).

“Hello, world!0” => 1312af178c253f84028d480a6adc1e25e81caa44c749ec81976192e2ec934c64
“Hello, world!1” => e9afc424b79e4f6ab42d99c81156d3a17228d6e1eef4139be78e948a9332a7d8
“Hello, world!2” => ae37343a357a8297591625e7134cbea22f5928be8ca2a32aa475cf05fd4266b7

“Hello, world!4248” => 6e110d98b388e77e9c6f042ac6b497cec46660deef75a55ebc7cfdf65cc0b965
“Hello, world!4249” => c004190b822f1669cac8dc37e761cb73652e7832fb814565702245cf26ebb9e6
“Hello, world!4250” => 0000c3af42fc31103f1fdc0151fa747ff87349a4714df7cc52ea464e12dcd4e9

4251 هش در یک کامپیوتر امروزی کار خیلی زیادی نیست (بیشتر کامپیوتر ها می توانند حداقل حدود 4 میلیون هش در ثانیه را بدست بیاورند). بیت کوین به صورت خودکار سختی کار را تغییر می دهد (و بنابراین مقدار کار مورد نیاز برای ساخت یک بلاک را نیز فرق می کند) تا نرخ ساخت بلاک در 4251 بماند.

امتیاز شما به این نوشته چقدر است؟

برای آگاهی از آخرین نوشته ها، خبر ها و تحلیل های کوتاه به کانال تلگرام پی98 بپیوندید.

0 0 رای ها
رأی دهی به مقاله
guest
5 نظرات
تازه‌ترین
قدیمی ترین بیشترین واکنش نشان داده شده(آرا)
بازخورد (Feedback) های اینلاین
View all comments