بابک | 2017.02.12

شبکه بیت کوین و استخراج آن

شبکه بیت کوین

شبکه بیت کوین یک شبکه پرداخت نظیر به نظیر است که در پروتکل رمزنگاری اجرا می‌شود. کاربران بیت کوین‌ را ــ واحدهای ارزی ــ به‌وسیله ارسال پیام‌های دیجیتال امضاشده به شبکه با استفاده از نرم‌افزار کف پول بیت کوین دریافت و ارسال می‌کنند. معامله‌هاا در یک پایگاه داده‌ای عمومی همسان توزیعی که به آن بلاک چین می‌گویند ثبت می‌شود این کار از طریق سیستم اثبات کار که بهه آن “ماینینگ ” می‌گویند انجام می‌شود. پروتکل در سال 2008 طراحی شد و در سال 2009 به‌عنوان نرم‌افزاری متن باز (open source) انتشار یافت.” ساتوشی ناکاموتو” نام یا نام مستعار سازنده یا گروه سازنده این برنامه است.

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

معاملات

یک بیت کوین شامل معاملات انتقالی دیجیتال پی‌درپی است که با تولید بیت کوین به‌عنوان یک بلاک جایزه آغاز می‌شود. مالک بیت کوین می‌تواند آن را انتقال دهد به این صورت که با استفاده از یک معامله بیت کوینی بیشتر شبیه به پشت‌نویسی یک چک‌بانکی معمولی آن را دیجیتالی امضا کرده و به مالک بعدی انتقال می‌دهد. دریافت‌کننده وجه می‌تواند معاملات پیشین را بررسی کند تا زنجیره مالکیت را مورد ارزیابی قرار دهد. برخلاف پشت‌نویس چک‌های معمولی، معاملات بیت کوین برگشت‌ناپذیرند که ریسک تقلب در استرداد را حذف می‌کند. بااینکه این امکان وجود دارد که هر بیت کوین را جداگانه موردبررسی قرارداد، جالب نیست که برای هر بیت کوین در معامله یک معامله مجزا را درخواست کرد. بنابراین معاملات شامل چندین ورودی و خروجی خواهند بود و به بیت کوین‌ها این امکان داده می‌شود که تقسیم‌شده یا باهم ترکیب شوند. معاملات رایج یا یک ورودی واحد از یک معامله بزرگ پیشین خواهند داشت یا شامل ورودی‌های چندگانه متشکل از مقادیر اندک خواهند بود و یک یا دو خروجی خواهند داشت: یکی برای پرداخت و دیگری برای برگشت به فرستنده اگر وجود داشته باشد. مابه‌التفاوت بین مقادیر ورودی و خروجی کل به‌عنوان هزینه معامله به ماینر ها داده می‌شود.

ماینینگ (استخراج)

به‌منظور تشکیل یک سرور برچسب زمانی توزیعی به‌عنوان یک شبکه نظیر به نظیر بیت کوین از یک سیستم اثبات کار استفاده می‌کند. کار در این سیستم همان چیزی است که به آن بیت کوین ماینیگ یا استخراج بیت کوین می‌گویند. امضا به‌جای اینکه عمداًً و از روی آگاهی فراهم‌شده باشد، کشف میشود. این فرایند شدت مصرف انرژی را بالا میبرد. الکتریسیته 900% از هزینه‌هایی اجرایی برای ماینرها را مصرف می‌کند. یک پایگاه داده‌ای در چین اعلام کرد که تنها برای ماینیگ بیت کوین 135 MWW نیرو موردنیاز است. نوآوری کلیدی ساتوشی ناکاموتو قانون الزام اثبات کار برای ارائه امضای بلاک چین بود. فرایند ماینیگ شامل شناسایی یک بلاک زمانی که دو بار با SHA_256 هش می‌شود، است که عددی به شما می‌دهد که کوچک‌تر از هدف سختی استخراج (difficulty) داده‌شده است. درحالی‌که افزایش کار متوسط موردنیاز موجب افزایش سختی استخراج می‌شود، یک هش را می‌توان با اجرای یک دور واحد از SHA – 256 دوبل مورد ارزیابی قرارداد.

برای شبکه برچسب زمانی (timestamp) بیت کوین یک “اثبات کار ” معتبر پیداشده است، که به‌وسیله افزایش تصاعدی رمزنگاری نانس تا زمان پیدا شدن ارزشی که بلاک-هش تعداد موردنیاز زیرو-بیت‌های پیشرو را فراهم کند. زمانی که هش یک نتیجه معتبر را تولید کرد بلاک بدون انجام مجدد کار، تغییری نخواهد کرد. همان‌طور که بلاک‌های بعدی زنجیره‌وار در پی آن می‌آیند کار تغییر بلاک شامل انجام مجدد کار برای هش بلاک جایگزین خواهد بود.

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

برای جبران افزایش سرعت سخت‌افزار و نیز سرمایه‌های متعدد جاری در نقاط اتصال باگذشت زمان، هر دو هفته دشواری یافتن یک هش معتبر به‌سختی تنظیم می‌شود. اگر بلاک‌ها خیلی با سرعت تولیدشده باشند دشواری افزایش می‌یابد و به هش های بیشتری برای ساختن یک بلاک و تولید بیت کوین‌های جدید نیاز خواهد بود.

سختی استخراج  Difficulty

استخراج بیت کوین یک کار رقابتی است. یک مسابقه تمام اعیار در فناوری‌های هشینگ متعدد مشاهده می‌شود که از آن برای ماینینگ بیت کوین استفاده‌شده است: CPU های اصلی،GPU های آخرین‌مدل که در بسیاری از بازی‌های کامپیوتری رایج هستند، FPGA ها و ASIC ها تماماً استفاده‌شده‌اند، که هریک ذز بازه زمانی مختلف به کار گرفته شده اند و با بالا رفتن سختی استخراج و کاهش سوددهی به ترتیب از میدان خارج شده‌اند. هم‌اکنون ASIC های مخصوص بیت کوین در دسترس هستند. ازآنجایی‌که ماینینگ بیت کوین‌ها دشوار شده است شرکت‌های سازنده سخت‌افزاری‌های کامپیوتری با افزایش فروش محصولات آخرین‌مدل و رده‌بالا روبه‌رو شده‌اند. توان پردازش ماینرها اغلب باهم یکی شده یا ” مخلوط” (Pooled) شده‌اند تا اختلاف در درآمد ماینرها را کاهش دهند حداقل درآمدی را برای ماینر تضمین کند. دستگاههای استخراج (Individual mining rigs) فردی باید مدت‌زمان طولانی را منتظر بمانند تا یتوانند یک بلاک از معاملات را به تأیید برسانند و پرداختی دریافت کنند. در یک گروه (Pool) هرزمانی که یک سرور شرکت‌کننده یک بلاک را حل می‌کند جایزه دریافتی بین همه گروه تقسیم میشود و تمامی ماینرهای شرکت‌کننده پرداختی دریافت می‌کند. این میزان از پرداخت به مقدار کاری که هر ماینر در حل آن بلاک مشارکت داشته بستگی دارد. (میزان هش ریتی که هر ماینر به اشتراک میگذارد.)

پایگاه‌ها داده‌ای مرکزی شبکه بیت کوین ترجیح می‌دهند که اطلاعات اندک را نگه‌دارند که در سرتاسر جهان گسترده شده‌اند و بیشتر تمایل دارند که به شکل خوشه دربیایند و هم‌چنین الکتریسیته ارزان نیز در دسترس داشته باشند.

فرایند

مروری مختصر بر فرایند ماینیگ در شبکه بیت کوین به شرح زیر است:

  1. معاملات جدید در تمامی نقاط اتصال (nodes) پخش می‌شوند.
  2. هر نقطهٔ اتصال ماینری معاملات جدید را در یک بلاک جمع‌آوری می‌کند.
  3. هر نقطه اتصال ماینری بر روی یک کد اثبات کار برای بلاکش کار می‌کند.
  4. زمانی که یک نقطه اتصال (nodes) اثبات کار را پیدا می‌کند، بلاک را در تمامی نقاط اتصال پخش می‌کند.
  5. نقاط اتصال دریافت‌کننده معاملات را اعتبار سنجی می‌کنند فقط آن‌هایی را می‌پذیرد و نگه می‌دارد که معتبر باشند.
  6. نقاط اتصال پذیرش خود را با حرکت به سمت بلاک بعدی اعلام می‌کنند، و با هش بلاک پذیرفته‌شده وارد عمل می‌شوند.

بیت کوین‌های ماین شده

آن‌طور که مرسوم است اولین معامله در یک بلاک یک معامله خاص است که بیت کوین‌های جدیدی را تولید می‌کند که مالکش سازنده بلاک است و به آن پاداش بلاک (Block Reward) میگویند. چنین چیزی مشوق ماینرها است تا شبکه ر ا حمایت کنند و راهی را فراهم می‌کند تا بیت کوین‌های جدید را وارد چرخه کند. پاداش برای ماینینگ در هر 210000 بلاک نصف می‌شود. با 50 بیت کوین در سال 2009 شروع شد در اواخر سال 2012 به 25 بیت کوین کاهش یافت و در سال 2016 به 12.5 رسید. این فرایند نصف شدن تا 64 دفعه ادامه می‌یابد قبل از این‌که ساخت بیت کوین جدید متوقف شود.

تأیید پرداخت در شبکه بیت کوین

هر ماینر می‌تواند انتخاب کند که چه معاملاتی شامل یک بلاک می‌شوند یا از آن مستثنی هستند. شمار زیاد معاملات در یک بلاک برابر با توان پردازشی بیشتر برای حل آن بلاک نیست. به‌محض دریافت یک معامله جدید در یک نقطه اتصال باید اعتبار سنجی شود: به‌ویژه این‌که به بررسی این موضوع بپردازد که هیچ‌کدام از معامله‌های ورودی قبلاً خرج نشده باشند. به‌منظور نیل به این هدف نقطه اتصال نیازمند دسترسی به بلاک چین (که شامل تمام تراکنش های قبلی میباشد) است. هر کاربری که به شبکه موجود در منطقه یا سرویس دهنده محلی خود اعتماد ندارد میتواند یک کپی کامل از بلاک چین بیت کوین را نگه دارد به‌نحوی‌که بتوان هر ورودی را تأیید کند.

همان‌طور که در صورت‌جلسه (whitepaper) ناکاموتو آمده است، احتمال تأیید هر پرداخت در شبکه بیت کوین بدون اجرای کامل نقطه اتصال شبکه یا همان فول نود شبکه وجود دارد (تأیید پرداخت تسهیل شده simplified payment verification) به اختصار SPV . کاربر تنها نیازمند یک کپی از بلاک اصلی طولانی‌ترین زنجیره است که از طریق جستجو در نقاط اتصال شبکه در دسترس هستند تا زمانی که معلوم شود که طولانی‌ترین زنجیر اتخاذشده است. سپس شاخه Merkle را گرفته معامله را به بلاک متصل کنید. اتصال معامله به یکجایی در زنجیره نشان‌دهنده آن است که یک نقطه اتصال در شبکه آن را پذیرفته است و بلاک‌های که به افزوده می‌شوند موجب تأیید بیشتر می‌شوند.