به عنوان بیت کوین روش تصویب جریان اصلی و به رسمیت شناختن, مدل امنیتی اساسی خود, مشخص به عنوان معدن, است که تحت کانون توجه قرار داده و هر روز بیشتر و بیشتر مورد بررسی قرار.
مردم به طور فزاینده ای نگران و علاقه مند به اثرات زیست محیطی استخراج بیت کوین, امنیت و درجه عدم تمرکز از مدل اساسی, و حتی تاثیر بالقوه یک پیشرفت محاسبات کوانتومی در اینده از بیت کوین و دیگر ارز رمزنگاری.
اغلب اوقات, اثبات کار به عنوان یک "پازل رمزنگاری توصیف," اما چه که پازل است, واقعا?
به منظور درک واقعی این پرسش ها (و هر پاسخ ممکن), شما نیاز به یک درک اساسی استخراج بیت کوین خود و تکامل خود را.
این مقاله تمام اجزای فنی و بخش های متحرک اثبات کار را بررسی می کند و چگونه یکپارچه با یکدیگر هماهنگ می شوند تا بیت کوین به پلت فرم غیر متمرکز امروز تبدیل شود.
چرا معدن کار می کند: هش کردن یک طرفه رمزنگاری
بلاک چین بیت کوین اغلب به عنوان یک پایگاه داده توصیف می شود که از نظر رمزنگاری ایمن و متعاقبا تغییرناپذیر است. فناوری اساسی که این تغییرناپذیری و امنیت را تقویت می کند هش رمزنگاری است.
تابع هش رمزنگاری یک تابع ریاضی است که به زبان ساده هر ورودی را می گیرد و به یک رشته با اندازه ثابت نقشه برداری می کند.
با این وجود چهار ویژگی خاص از این توابع وجود دارد که باعث می شود برای شبکه بیت کوین بسیار ارزشمند باشد. هستند:
- قطعی — برای هر ورودی به تابع هش رمزنگاری, خروجی حاصل همیشه همان خواهد بود.
- محاسبه سریع خروجی تابع هش با توجه به هر ورودی یک فرایند نسبتا سریع است (نیازی به محاسبات سنگین ندارد)
- منحصر به فرد-هر ورودی به عملکرد باید منجر به یک خروجی کاملا تصادفی و منحصر به فرد شود (به عبارت دیگر هیچ دو ورودی منجر به خروجی یکسان نمی شود)
- برگشت ناپذیر-با توجه به خروجی یک تابع هش نمی توان ورودی اصلی را دریافت کرد
این قوانین پایه ای را فراهم می کند که استخراج بیت کوین را قادر می سازد شبکه را ایمن کند. r
به خصوص, خالق پروتکل بیت کوین, ساتوشی ناکوموتو, تصمیم به استفاده از تابع هش شا-256 به عنوان پایه ای برای استخراج بیت کوین. این یک تابع هش رمزنگاری خاص است که از نظر ریاضی ثابت شده است که ویژگی های فوق را حفظ می کند. همیشه یک عدد 256 بیتی (اساسی ترین واحد محاسبه) تولید می کند که معمولا در سیستم اعداد هگزادسیمال با 64 کاراکتر برای خوانایی انسان نشان داده می شود.
از خروجی تابع شا-256 معمولا به عنوان هش ورودی یاد می شود.
ورودی یک تابع هش منجر به یک خروجی کاملا منحصر به فرد می شود
در اینجا یک مثال از یک ورودی و خروجی تابع شا-256 است (شما می توانید این را خودتان در اینجا امتحان کنید):
جالب اینجاست که در اکثر مکان هایی که در پروتکل بیت کوین از هش کردن استفاده می شود از هش کردن مضاعف استفاده می شود. این به این معنی است که خروجی اصلی شا-256 تابع سپس حق بازگشت به تابع شا-256 به خروجی دیگری قرار داده است. در اینجا چیزی است که این روند به نظر می رسد:
هش کردن دوگانه برای محافظت در برابر حملات تولد استفاده می شود. حمله تولد سناریویی است که مهاجم با استفاده از ورودی کاملا متفاوت (به نام برخورد) قادر به تولید هش مشابه ورودی دیگر است. این سومین ویژگی منحصر به فرد بودن را می شکند. بدون این دو بلوک بیت کوین کاملا متفاوت ممکن است با همان هش نمایش داده شوند که به مهاجمان اجازه می دهد بلوک ها را به طور بالقوه تغییر دهند.
با تابع شا - 256, احتمال این حمله اتفاق می افتد بی نهایت کوچک است. اگر غیر ممکن نبود شا-256 شکسته تلقی می شد.
اما سایر توابع هش در گذشته "شکسته" شده اند. به منظور حفاظت در برابر این اتفاق می افتد به شا-256 در اینده (و به طور موثر شکستن مدل امنیتی بیت کوین) بهتر است به هش هش . این امر احتمال وقوع برخورد را به نصف کاهش می دهد و پروتکل را بسیار ایمن تر می کند.
استخراج بیت کوین در سطح بسیار بالایی سیستمی است که تمام تراکنش های بیت کوین برای ماینرهای بیت کوین ارسال می شود. ماینرها تراکنشهای یک مگابایتی را انتخاب کرده و به عنوان ورودی در تابع شا-256 قرار میدهند و سعی میکنند خروجی خاصی را که شبکه میپذیرد پیدا کنند. اولین معدنچی برای پیدا کردن این خروجی و انتشار بلوک به شبکه پاداش را به صورت هزینه های معامله و ایجاد بیت کوین جدید دریافت می کند.
بیایید همه چیز را یک قدم جلوتر ببریم و به خود بلاک چین بیت کوین بپردازیم تا ببینیم ماینرها دقیقا چه کاری برای ایمن سازی شبکه انجام می دهند.
استخراج بیت کوین: مقدمه فنی
معدن به عنوان راه حلی برای مشکل هزینه مضاعف معرفی شد. اگر من 1 بیت کوین و من ارسال به باب, و سپس سعی کنید ارسال که همان بیت کوین به الیس, شبکه تضمین می کند که تنها یک معامله پذیرفته خواهد شد. این کار را از طریق فرایند شناخته شده به نام معدن انجام می دهد.
قبل از غواصی به اطلاعات فنی, مهم است که بدانیم چرا استخراج برای ایمن سازی شبکه ضروری است. به عنوان ارز پشتوانه در حال حاضر وجود دارد, ارز ما را نگه دارید ایجاد شده است و اعتبار توسط فدرال رزرو. چرا که بیت کوین عمل تحت فرض سفت و سخت از عدم تمرکز و اجماع, هیچ قدرت مرکزی می تواند وجود داشته باشد که تایید و زمان تمبر صدور که ارز و اعتبار سنجی از هر گونه معاملات که با ارز رخ می دهد.
ساتوشی ناکاموتو تنها راه حل شناخته شده در زمان برای حل این مشکل اعتبار سنجی در یک سیستم اجماع گرا پیشنهاد شده است. عنوان در بیت کوین وایت پیپر به عنوان اثبات کار , این طرح به زیبایی توجیه می کند که معاملات توسط کسانی که مایل به صرف انرژی محاسباتی فیزیکی به اندازه کافی و زمان برای انجام این کار معتبر هستند, در حالی که به طور همزمان معرفی انگیزه ای برای القای رقابت در بازار. این رقابت امکان ظهور و رشد ارگانیک در اکوسیستم را فراهم می کند.
نگاهی به داخل یک بلوک
یک بلوک بیت کوین در درجه اول از دو جز تشکیل شده است:
1. معاملات در قالب یک درخت مرکل
کامپیوترهای استخراج به اندازه کافی تراکنش ها را جمع می کنند تا یک بلوک را پر کرده و در یک درخت مرکل قرار دهند.
درخت مرکل یک مفهوم نسبتا ساده است: معاملات در پایین درخت به عنوان برگ قرار دارند و با استفاده از تابع شا-256 هش می شوند. ترکیبی از دو معاملات برگ دوباره با استفاده از تابع شا-256 به شکل یک پدر و مادر از برگ درهم. این پدر و مادر به طور مداوم به سمت بالا در ترکیب با پدر و مادر دیگر از معاملات درهم درهم, تا زمانی که یک ریشه واحد ایجاد شده است. هش این ریشه در واقع نمایشی منحصر به فرد از معاملات زیر است.
تجسم نحوه ساخت یک درخت مرکل-برگهای پایین درخت معاملات هستند
ریشه درخت مرکل ترکیبی از هش های هر معامله در درخت است.
به یاد بیاورید که برای هر هر ورودی به یک تابع هش, خروجی کاملا منحصر به فرد است. از این رو, هنگامی که اکثر گره در شبکه دریافت یک بلوک استخراج, ریشه هش درخت مرکل به عنوان یک خلاصه غیر قابل تغییر از تمام معاملات در بلوک داده شده عمل می کند.
اگر یک بازیگر مخرب بود را امتحان کنید و تغییر محتویات یک معامله در یک بلوک, هش خود را تغییر خواهد کرد. این تغییر یک هش تا زمانی که هش ریشه تغییر کند درخت مرکل معامله پخش می شود. سپس هر گره ای می تواند به سرعت این عمل مخرب را با مقایسه ریشه درخت مرکل بلوک تغییر یافته با درخت مرکل بلوک معتبر دریافت کند.
2. هدر بلوک
هدر بلوک خلاصه ای از محتویات خود بلوک است. این شامل شش جز زیر است :
- نسخه نرم افزاری که مشتری بیت کوین در حال اجرا است
- برچسب زمان از بلوک
- ریشه درخت مرکل معاملات حاوی
- دسته بندی های کتاب قبل از
- یک لحظه
- هدف
به یاد داشته باشید که ریشه معامله درخت مرکل به عنوان یک خلاصه موثر از هر معامله در بلوک بدون نیاز به در هر معامله نگاه عمل می کند.
هش بلوک قبلی قبل از اینکه به شبکه اجازه دهد بلوک را به ترتیب زمانی به درستی قرار دهد. از اینجاست که اصطلاح بلاکچین مشتق می شود — هر بلوک به یک بلوک قبلی زنجیر می شود.
ناس و هدف چیزی است که معدن را تیک می زند. اینها مبنای حل معمای شا-256 هستند که ماینرها باید حل کنند.
لطفا توجه داشته باشید که تمام این داده ها در هدر بلوک با استفاده از نمادی به نام اندیان کوچک به 80 بایت فشرده می شوند و انتقال هدرهای بلوک بین گره ها را به یک فرایند پیش پا افتاده تبدیل می کند. برای این توضیح ما این فشرده سازی را نادیده می گیریم و فرض می کنیم داده ها در شکل اصلی خود هستند.
توضیح مشکل معدن
هدف ذخیره شده در هدر بلوک به سادگی یک مقدار عددی ذخیره شده در بیت است. در علامت گذاری پایه 10 سنتی این هدف بین 0 تا جایی در محدوده 222 درجه سانتیگراد (یک عدد 67+ رقمی) بسته به تعداد ماینرهایی که برای حل همزمان این مشکل رقابت می کنند متغیر است.
به یاد بیاورید که خروجی شا-256 فقط یک عدد است. هدف یک ماینر این است که هدر بلوک فعلی را بگیرد و یک عدد تصادفی به نام فعلی اضافه کند و هش خود را محاسبه کند. این مقدار عددی هش باید کوچکتر از مقدار هدف باشد.
این تمام چیزی است که وجود دارد. اما گفتن بسیار ساده تر از انجام کار است.
به یاد بیاورید اموال برای اولین بار از شا-256: یک ورودی به یک تابع هش همیشه در خروجی همان منجر خواهد شد. بنابراین اگر ماینر هدر بلوکی را گرفت هش کرد و فهمید که مقدار هش کمتر از هدف نیست باید ورودی را به نحوی تغییر دهند تا سعی کنند یک هش زیر مقدار هدف پیدا کنند.
اینجاست که نانسی وارد می شود.
معدنچی عددی (با شروع از 0) به نام فعلی را به هدر بلوک اضافه می کند و این مقدار را هش می کند. اگر مقدار هش کمتر از هدف نباشد, ماینر نانس را 1 افزایش می دهد, دوباره به هدر بلوک اضافه کنید, و هش که مقدار تغییر کرده است. این فرایند به طور مداوم تکرار می شود تا زمانی که یک هش کمتر از مقدار هدف پیدا شود.
یک مثال معدن
در اینجا یک تقریب تقریبی از چیزی است که اولین هدر بلوک را تشکیل می دهد:
- ریشه مرکل از معامله در بلوک پیدایش:
- اولین نسخه شناخته شده بیت کوین: 0.1.0
- مهر زمانی بلوک: 2009-01-03 18:15:05
- هدف (این نیز بالاترین هدف تا کنون خواهد بود):
- بدون هش بلوک قبلی - این اولین بلوک بود و بنابراین این یک مورد منحصر به فرد است
هدر بلوک نهایی پس از اضافه کردن اجزای خود را با هم:
داده های بلوک پیدایش (این شامل فعلا, اما اجازه می دهد وانمود کند که نمی کند), منبع: بیت کوین تاک
بیایید این هدر بزرگ و محاسبه دو هش:
هر دو هدف و هش خروجی هنگام تبدیل به پایه 10 اعداد فوق العاده بزرگی هستند (به یاد داشته باشید که بیش از 67 رقم طول دارند). به جای تلاش برای نشان دادن مقایسه این دو در اینجا, تابع پایتون زیر دسته مقایسه به جای:
درست است بازگشت اگر هش کمتر از هدف است, نادرست در غیر این صورت.
در اینجا نتیجه با هدف و بلوک هش ما است:
حالا ما مقدار هگزادسیمال بلوک اصلی را می گیریم و 1 را اضافه می کنیم. در اینجا نتیجه زیر است:
توجه کنید که چگونه رقم بسیار گذشته در حال حاضر 1, با توجه به علاوه بر این از فعلا
سپس ما همان الگوریتم هش کردن و مقایسه را در این داده های تغییر یافته اجرا می کنیم. اگر زیر هدف نیست به تکرار ادامه دهید.
هنگامی که یک هش موفق پیدا شده است, شدن فعلی استفاده می شود برای پیدا کردن این راه حل در داخل بلوک را نجات داد.
این به این معنی ساتوشی ناکوموتو از طریق این فرایند تکرار بیش از 2 میلیارد بار قبل از او در بر داشت یک هش که قابل قبول بود.
من یک پیاده سازی پایتون کوچک از این فرایند پیدایش بلوک معدن است که می تواند در گیتهاب من پیدا شده است نوشته ام.
ببینید چه مدت طول می کشد تا شما با موفقیت بلوک پیدایش را استخراج کنید!
اخطار: اکسترانونس
مقدار فعلی در یک هدر بلوک به عنوان یک عدد 32 بیتی ذخیره می شود. این به این معنی است که بالاترین تا کنون کسی قادر به دستیابی به 232 (حدود 4 میلیارد) است. پس از 4 میلیارد تکرار, فعلی خسته شده است, و اگر یک راه حل یافت نشد, کارگران معدن یک بار دیگر گیر.
راه حل این کار افزودن فیلدی به کوین بیس (محتویات تراکنش یک بلوک که به عنوان درخت مرکل ذخیره شده است) به نام بیرونی است. اندازه این اکسترانونس فقط به اندازه خود بلوک محدود می شود و بنابراین می تواند به اندازه ماینرها باشد تا زمانی که اندازه بلوک در محدوده پروتکل باشد.
اگر تمام 4 میلیارد مقادیر احتمالی نانس به اتمام برسد اکسترانونس به کوین بیس اضافه و افزایش مییابد. ریشه مرکل جدید و متعاقبا هدر بلوک جدید محاسبه می شود و نانس یک بار دیگر تکرار می شود. این روند تکرار می شود تا زمانی که هش کافی پیدا شود.
بهتر است برای جلوگیری از اضافه کردن اکسترانونس تا زمانی که فعلی خسته است, چرا که هر گونه تغییر به اکسترانونس تغییر درخت مرکل. این نیاز به محاسبات اضافی برای انتشار تغییر به سمت بالا دارد تا زمانی که ریشه جدیدی از درخت مرکل محاسبه شود.
پاداش معدنچی
یک معدنچی که با موفقیت منتشر یک بلوک سریع ترین است پاداش نام تجاری جدید بیت کوین, ایجاد شده از هوا نازک. این پاداش در حال حاضر 12.5 بیت کوین است. چقدر این بیتکوین به وجود?
هر ماینر به سادگی یک تراکنش خروجی جدید به بلوک خود اضافه می کند که 12.5 بیت کوین را قبل از شروع استخراج بلوک به خود اختصاص می دهد. پروتکل شبکه این معامله ویژه را پس از دریافت یک بلوک تازه معتبر معتبر می پذیرد. این معامله ویژه یک معامله نسل نامیده می شود.
وظیفه ماینر این است که این تراکنش را قبل از استخراج به بلوک اضافه کند. حداقل یک مورد وجود داشته است که ماینرها قبل از استخراج یک بلوک فراموش کرده اند که پاداش را به تراکنش اضافه کنند و به طور موثر 12.5 بیت کوین را از بین ببرند!
اعتبارسنجی اثبات کار
فرض کنید معدنچی ما هشی پیدا کرده است که کمتر از هدف است. تمام کاری که ماینر باید انجام دهد این است که بلوک استخراج شده را با شش اجزای اصلی در هر گره متصل منتشر کند.
این گره دریافت کننده بلوک ابتدا مجموعه تراکنش را بررسی می کند و اطمینان حاصل می کند که همه تراکنش ها معتبر هستند (به عنوان مثال تمام تراکنش ها به طور مناسب امضا شده اند و سکه ها دوبار خرج نمی شوند و/یا از هوای نازک ایجاد نمی شوند).
سپس به سادگی هدر بلوک را دوبار هش می کند و اطمینان حاصل می کند که مقدار زیر مقدار هدف شامل بلوک است. هنگامی که بلوک معتبر تلقی می شود, گره جدید ادامه خواهد داد به انتشار این بلوک در سراسر شبکه تا زمانی که هر گره دارای یک دفتر تا به روز.
همانطور که می بینید, بلوک به تازگی منتشر شده به راحتی می توانید توسط هر گره داده شده تایید شود. با این حال انتشار یک بلوک معتبر به شبکه نیاز به مقدار فوق العاده زیادی از قدرت محاسباتی (در نتیجه برق و زمان) دارد. این عدم تقارن همان چیزی است که اجازه می دهد شبکه ایمن شود در حالی که به طور همزمان به افرادی که مایل به انجام فعالیت اقتصادی در شبکه هستند اجازه می دهد تا این کار را به روشی نسبتا یکپارچه انجام دهند.
زمان بلوک و تنظیم هدف
همانطور که اولین ماینرها شروع به استخراج کردند هر کدام زمان بلوک را کنترل کردند . هر بلوک بیت کوین دارای زمان بلوک تعیین شده 10 دقیقه است. این بدان معنی است که با توجه به سطح فعلی قدرت محاسباتی ( هش ریت شبکه ) در شبکه, گره ها همیشه انتظار دارند که بلوک های تازه معتبر به طور متوسط هر 10 دقیقه تولید شوند.
به طور منطقی می توان انتظار داشت که بلوک ها در عرض 10 دقیقه تولید شوند زیرا احتمال یافتن بلوک با توجه به هش ریت شبکه مشخص است.
برای مثال بیایید ساده ترین هدفی را که تاکنون در بیت کوین وجود داشته در نظر بگیریم: بلوک جنسیس. احتمال کمتر بودن هر هش از ساده ترین هدف 1 در 232 است. این یک در بیش از چهار میلیارد است. از این رو, ما می توانیم منطقی انتظار کسی برای اجرای 232 تکرار از مشکل معدن به منظور پیدا کردن یک هش مناسب. نودهای موجود در شبکه انتظار داشتند که چهار میلیارد از این تکرارها در هر 10 دقیقه در تمام ماینرهای شبکه اجرا شود.
اگر, بیش از یک حجم نمونه بزرگ از بلوک, بلوک شروع به ظاهر می شود سریع تر از 10 دقایق, این نشانه بسیار روشن است که گره در شبکه در حال تکرار از طریق چهار میلیارد رشته هش بسیار سریع تر از است 10 دقایق. این وضعیت هر گره را وادار می کند تا هدف را متناسب با افزایش (یا کاهش) توان شبکه تنظیم کند تا اطمینان حاصل شود که بلوک ها هر 10 دقیقه تولید می شوند.
در واقع گره های موجود در شبکه زمان بلوک را در بلوک های 2016 نظارت می کنند که دقیقا به دو هفته می رسد. هر دو هفته کل زمان بلوک با زمان بلوک مورد انتظار (که 20160 دقیقه است) مقایسه می شود.
برای دستیابی به هدف جدید کافی است هدف موجود را در نسبت کل زمان واقعی بلوک در دو هفته گذشته ضرب کنید تا زمان بلوک مورد انتظار دریافت شود. با این کار هدف متناسب با میزان ورود یا خروج قدرت محاسباتی در شبکه تنظیم می شود.
فرمول محاسبه هدف جدید هر 20160 دقیقه (دو هفته) توسط هر گره بیت کوین اجرا می شود
زمان بلوک و توانایی به راحتی محاسبه احتمال پیدا کردن یک بلوک معتبر اجازه می دهد تا گره به راحتی نظارت و تعیین هش قدرت کل در شبکه و تنظیم شبکه. مهم نیست که چقدر قدرت محاسباتی به شبکه اضافه می شود یا چقدر سریع اضافه می شود, به طور متوسط زمان بلوک همیشه 10 دقیقه باقی می ماند.
نرخ هش کل فعلی در شبکه 28.27 اگزاهش در ثانیه است. یعنی هش های 28.27 در 101 ثانیه در هر ثانیه در تمام رایانه های شبکه اجرا می شوند.
به طور خلاصه
ما اکنون به طور جامع موارد زیر را پوشش داده ایم:
- چرا رمزنگاری یک راه هش کردن برای اثبات کار حیاتی است
- شکست ساخت یک بلوک بیت کوین
- روند واقعی استخراج و تکرار خود
- چگونه گره به راحتی می توانید اعتبار بلوک های دیگر
- چگونه شبکه موفق به حفظ الگوریتم و رقابت با نظارت بر زمان بلوک و تنظیم هدف می شود
اکنون باید بتوانید درک کنید و توضیح دهید که چگونه اثبات کار در واقع عمل می کند و چرا یک الگوریتم کاملا ایمن در نظر گرفته می شود که تمرکززدایی و اجماع را امکان پذیر می کند!
من در توییتر و متوسط دنبال کنید اگر شما علاقه مند در بیشتر در عمق و اطلاع رسانی نوشتن یو پی اس مانند این در اینده هستید!