استفاده از کامپیوتر قدیمی پروژه آپولو برای استخراج بیت کوین
کامپیوترهای راهنمای آپولو (AGC) بخشی از انقلاب تکنولوژی بودند که به ناسا کمک کردند برای اولینبار پای انسان روی ماه برسد. در دورهای که کامپیوترها در بهترین حالت اندازهی یک یخچال بودند، وزن یک AGC حدود ۳۲ کیلوگرم بود.
مقاله مرتبط: مفاهیم پایه ارز دیجیتال
گروهی از تاریخشناسان کامپیوتری به یکی از این کامپیوترها دست پیدا کرده و آن را دوباره راه انداخته است. کن شیریف (Ken Shirriff) یکی از اعضای تیم تصمیم گرفته پاسخ این پرسش را پیدا کند که آیا این کامپیوتر برای استخراج بیت کوین مناسب است یا خیر.
یک کامپیوتر تولیدشده در دهه ۶۰ میلادی، میلیاردها برابر سن کهکشان زمان نیاز دارد تا یک بلاک بیت کوین استخراج کند
استخراج بیت کوین یکی از مراحل اساسی در فرایند حفظ دفترکل اشتراکی (Shared Ledger) ارز دیجیتال یا بلاکچین به شمار میرود. هر کاربر برای اینکه بتواند یک بلاک به بلاکچین اضافه کند، باید مسئلهای بسیار سخت را حل کند: پیدا کردن بلاکی که تابع هش SHA-256 آن با کمترین تعداد صفر آغاز شده باشد. تابع هش یک تابع ریاضی است که حجم معمولا نامشخصی از داده را به یک عدد طبیعی تبدیل میکند. برای حل این مسئله هیچ راه آسان و روش زیرکانهی نرمافزاری وجود ندارد و تنها باید به قدرت خام سختافزاری متوسل شد. استخراجکننده با استفاده از یک نانس (nonce) تصادفی یک بلاک ایجاد میکند و مقدار هش (عدد طبیعی حاصل از تابع هش را مقدار هش یا به اختصار هش میگویند) آن را با کمک کامپیوتر محاسبه میکند. اگر هش بهدستآمده به تعداد کافی صفر نداشته باشد، استخراجکننده باید نانس را تغییر دهد و دوباره امتحان کند.
تعداد صفرهای مورد نیاز بهصورت خودکار بهگونهای تنظیم میشود که شبکه بهصورت میانگین هر ۱۰ دقیقه یک بلاک ایجاد کند. در حال حاضر هش هر بلاک برای پذیرفتهشدن در شبکه باید حداقل ۱۸ صفر (آن هم در نمایش پایهی ۱۶ اعداد یا Hex) داشته باشد؛ به بیان دیگر برای پیدا کردن یک بلاک مورد قبول شبکه، باید ۱۰ به توان ۲۲ بار تلاش کرد.
امروزه استخراجکنندگان از سختافزارهای تخصصی استفاده میکنند که میتوانند در هر ثانیه تریلیونها هش محاسبه کنند. نرمافزاری که شیریف روی AGC ناسا نصب کرده بود، از این میانگین کندتر عمل میکند. برای این سیستم محاسبهی هر هش حدود ۱۰ ثانیه زمان میبرد.
کهنه سرباز ناسا استخراجکنندهی خوبی برای بیت کوین نیست
شیریف دربارهی سرعت این سیستم مینویسد:
کامپیوتر آپولو برای این کار بسیار کند است. به نظر میرسد میلیاردها برابر سن کهکشان طول خواهد کشید تا بتواند یک بلاک بیتکوین استخراج کند.
گیزمودو زمانیکه این سیستم برای استخراج یک بلاک بیت کوین لازم دارد را یک کوینتیلیون سال (۱۰ به توان ۱۸) تخمین میزند.
در واقع، این اعداد میزان پیشرفت سختافزارهای محاسبهی کامپیوتری در ۵۰ سال اخیر را نشان میدهند. به لطف قانون مور، تراشههای امروز ترانزیستورهای بسیار بیشتری دارند و میتوانند با سرعت به مراتب بالاتری پردازش کنند. تراشههای اختصاصی با (بهاصطلاح) اِیسیکهای (ASIC) مخصوص استخراج بیتکوین میتواند با پردازش موازی تعداد بسیاری زیادی هش را بهصورت همزمان محاسبه کند.
بخش DSKY از کامپیوتر ناوبری آپولو در موزهی ملی هوا فضای آمریکا نگهداری میشود. در این پروژه از بخش دیگری استفاده شده که شیریف آن را از یک کلکسیونر دریافت کرده است.
البته شیریف باید با خصوصیتهای دیگر AGC که آن را برای استخراج بیت کوین ضعیف میکند هم کنار میآمد. برای مثال AGC از زبان ۱۵ بیتی استفاده میکند؛ درحالیکه کامپیوترهای مدرن امروزی از زبانهای ۳۲ یا ۶۴ بیتی استفاده میکند. الگوریتم هش 256 از تعداد زیادی عملیات ۳۲ بیتی تشکیل شده است. شیریف مجبور بود هر عدد صحیح ۳۲ بیتی را به سه قسمت تقسیم کند؛ یک بخش ۴ بیتی و دو بخش ۱۴ بیتی.
AGC همچنین فاقد دستورالعملهای Shift و Rotate است؛ دستورالعملهایی که در زمان محاسبهی هش SHA-256 بسیار استفاده میشوند و در کامپیوترهای مدرن بهصورت استاندارد وجود دارند. شیریف برای انجام عملیات وابسته به این دستورالعملها مجبور بود خودش زیرمجموعه بنویسد.
مشکل بزرگ دیگری که AGC با آن مواجه بود، حافظهی محدود آن است. شیریف در اینباره مینویسد:
AGC مثل بیشتر کامپیوترهای دههی ۱۹۶۰ از حافظهی مغناطیسی استفاده میکند و هر بیت را به یک حلقهی مغناطیسی فرایت تبدیل میکند. از آنجایی که حافظهی مغناطیسی اندازهی بزرگی دارد، رم AGC حدود ۴ هزار بایت است. سازوکار رسیدگی AGC به اطلاعات هم اوضاع را پیچیدهتر میکرد. در این سیستم فقط به ۲۵۶ کلمه (word) دسترسی دارید و بعد از آن باید از سازوکار نه چندان ساده و راحت «سوئیچکردن بانک مموری» استفاده کنید. مشکل اینجا است که الگوریتم هش ۲۵۶ از هشت مقدار ۳۲ بیتی هش، یک جدول پیغامی ۶۵ کلمهای و هشت کلمهی «مقدار میانی» استفاده میکند. همین سه آرایه بهتنهایی بیشتر از ۲۴۰ کلمه را اشغال میکنند و فقط ۱۶ کلمه برای سایر نیازها باقی میماند. من موفق شدم با استفاده کردن از این ۱۶ کلمه برای نیازهای متعدد، مشکل را حل کنم و همهچیز را در یک بانک مموری جای بدهم؛ هرچند وقتی یک متغیر به مکانی که پیش از آن درحال استفاده بود برخورد میکرد، مجبور میشدم زمان زیادی را صرف دیباگکردن کنم.
این اولینبار نیست که شیریف تلاش میکند با سختافزاری باستانی بیتکوین استخراج کند. چند سال پیش او تلاش کرد با یک کامپیوتر قدیمی 1401 ساخت IBM که در دههی ۶۰ میلادی تولید شده است، این کار را انجام دهد. آن دستگاه حتی از AGC هم کندتر بود و برای محاسبهی یک هش، ۸۰ ثانیه زمان صرف کرد. شیریف همچنین یک کامپیوتر Xerox Alto تولیدشده در دههی ۷۰ را هم برای استخراج بیتکوین برنامهریزی کرد. این دستگاه میتواند در ثانیه ۱.۵ هش محاسبه کند.