پیاده سازی چند بیت کوین خطرناک است – مجله بیت کوین
این یک سرمقاله نظری است توسط بیل اسکورزبی، صاحب یک کسب و کار کوچک مبتنی بر بیت کوین و نویسنده چندین راهنما برای نگهداری از بیت کوین.
اشکالاتی که اخیراً باعث عدم هماهنگی بسیاری از گرههای LND با بلاک چین بیت کوین شده است، احتمالاً به دلیل اجرای جایگزین ایجاد شده است.
شاید برای شما این سوال پیش بیاید که “چه کسی در دنیا از چیزی غیر از بیت کوین Core استفاده می کند؟” شاید نمی دانستید که پیاده سازی های دیگری از بیت کوین وجود دارد. شاید مطمئن نیستید که اجرای متفاوت به چه معناست.
بیت کوین Core به عنوان نرم افزاری که ساتوشی ناکاموتو در C++ نوشت و در جهان منتشر کرد آغاز شد. با نسخه های جدید منتهی به امروز به روز شده است. یک پیادهسازی جایگزین نرمافزاری است که همان کار بیت کوین کور را انجام میدهد – قوانین اجماع یکسانی را اجرا میکند – اما بهطور متفاوت نوشته میشود، اغلب به زبان برنامهنویسی متفاوت.
چگونه یک پیاده سازی جایگزین گره ها را در شبکه لایتنینگ شکست؟
یکی از اصلیترین نسخههای گره شبکه لایتنینگ (LND) به پیادهسازی جایگزین بیتکوین به نام btcd متکی است. هنگامی که یک توسعه دهنده یک تراکنش مولتی سیگ بسیار بزرگ ایجاد کرد، btcd آن را معتبر نمی دانست زیرا حاوی داده های شاهد بیش از حد بود. سایر پیادهسازیهای بیتکوین – از همه مهمتر Bitcoin Core – چنین محدودیتی برای دادههای شاهد تراکنش Taproot نداشتند و بنابراین تراکنش و بلوکی که حاوی آن بود را معتبر میپذیرفتند.
نتیجه این بود که ماینرها مدام بلوکهای جدیدی را روی زنجیره اضافه میکردند، زیرا از btcd استفاده نمیکردند و طبق قوانین آنها هیچ مشکلی وجود نداشت، اما گرههای LND Lightning نمیتوانستند هیچ یک از این بلوکهای جدید را تشخیص دهند زیرا در بالای بلوک حاوی آن یک تراکنش را نامعتبر می دانستند.
وقتی این باگ دوباره در 1 نوامبر اتفاق افتاد، فقط گره های LND نبودند که تحت تأثیر قرار گرفتند. برخی از نمونههای electrs (پیادهسازی سرور پشتیبان برای Electrum Wallet) نیز نتوانستند با بقیه زنجیره به توافق برسند. در حالی که گرههای LND به دلیل مشکل مشابه در btcd از توافق خارج شدند، این یک پیادهسازی بیتکوین بود که در Rust نوشته شده بود که باعث شد گرههای الکتریکی از جمله برخی از سرورهای بسیار قابل مشاهده عقب بمانند. توسط mempool.space اجرا می شود.
محدودیت در اندازه داده های شاهد وجود دارد برای جلوگیری از حملات DoSو همچنین بخشی از بیت کوین Core است (اگرچه Core محدودیت بیشتری برای تراکنش های Taproot دارد). به نظر میرسد که دو پیادهسازی دیگر که از همگامی خارج شدهاند، دارای کدی بودند حد کوچکتر را حفظ کرد.
تفاوت های بسیار کوچک در پیاده سازی ها می تواند منجر به عدم توافق شود.
اجرای چندگانه بیت کوین خطرناک است
ساتوشی ایده اجرای چندگانه بیت کوین را دوست نداشت. من معتقد نیستم که اجرای دوم و سازگار بیت کوین ایده خوبی باشد. دلیلی که او بیان کرد این بود: «بسیاری از طراحی بستگی به این دارد که همه گرهها نتایج کاملاً یکسانی را دریافت کنند که اجرای دوم تهدیدی برای شبکه خواهد بود».
تهدید؟ چه چیز بزرگی است؟
احتمالاً شنیده اید که زنجیره ای که بیشترین اثبات کار را دارد، زنجیره واقعی است. هنگامی که دو ماینر مختلف به طور همزمان یک بلوک را پیدا میکنند، زنجیره از هم جدا میشود و سایر ماینرها شروع به ساختن روی هر بلوکی میکنند که ابتدا درباره آن میشنوند.
به محض اینکه یک بلوک جدید به یک طرف تقسیم اضافه می شود، اکثر گره ها و ماینرها آن را به عنوان زنجیره واقعی جدید می پذیرند و طرف دیگر تقسیم را رها می کنند. این بلوکها به عنوان بلوکهای قدیمی شناخته میشوند، اگرچه برخی از مردم آنها را بلوکهای یتیم مینامند.
از آنجایی که میانگین زمان بین بلاک ها در بیت کوین 10 دقیقه است، به احتمال زیاد کل شبکه در مورد این بلاک جدید قبل از اضافه شدن یک بلاک به بخش بازنده تقسیم، و زنجیره ای که بیشترین کار را انجام داده است، برنده خواهد شد.
«گرهها از زنجیره معتبر با بیشترین کار پیروی میکنند… کلمه کلیدی در اینجا معتبر است. اگر گره بلوکی را دریافت کند که آن را نامعتبر تشخیص دهد، مهم نیست که چقدر کار روی آن بلوک انجام شود، گره آن زنجیره را نمی پذیرد. – اندرو چاو
کلمه کلیدی “معتبر” است. این تهدید زمانی ظاهر می شود که یک ماینر بلوکی را پیدا کند که برخی دیگر از ماینرها و گره ها فکر می کنند معتبر نیست. ماینرهایی که فکر می کنند معتبر است، سعی می کنند بلوک های جدیدی را روی آن زنجیره بسازند. ماینرهایی که فکر میکنند معتبر نیست، سعی میکنند آخرین بلوک معتبری را که میدانند بسازند. نتیجه: دو زنجیره و هیچ راهی برای دانستن اینکه کدام درست است.
در دنیا چطور ممکن است چنین اتفاقی بیفتد؟
خوب، همانطور که در مورد باگ اخیر با گرههای LND دیدیم، اگر اشکالی در یکی از پیادهسازی بیتکوین وجود داشته باشد که در سایر پیادهسازیها وجود ندارد، میتواند منجر به عدم اجماع در مورد معتبر بودن یا نبودن یک بلوک شود.
بیت کوین مکانیسمی برای رفع این مشکل ندارد. جامعه خارج از پروتکل باید تصمیم بگیرد که چه اتفاقی می افتد. خیلی ناخوشایند به نظر می رسد.
به قدری که پیتر تاد، توسعهدهنده بیتکوین، گفته است که سایر پیادهسازیها باید با باگ برای اشکال بیتکوین Core مطابقت داشته باشند.
شما می روید: پیاده سازی های متعدد خطرناک هستند!
سایر پیاده سازی های بیت کوین چیست و چرا وجود دارند؟
اول از همه، اکثر افراد بیت کوین Core را اجرا می کنند.
Luke Dashjr حدود 43000 گره را می بیند که 98٪ آنها بیت کوین Core را اجرا می کنند و چیزی به نام Coin Dance نزدیک به 15000 گره را می بیند که 96٪ از آنها Bitcoin Core را اجرا می کنند. بنابراین، در حال حاضر، به نظر میرسد افراد بسیار کمی از پیادهسازیهای جایگزین استفاده میکنند.
با این وجود، پروژههای فعالی وجود دارند که در تلاش برای ساخت و نگهداری پایگاههای کد دیگری هستند که پروتکل بیتکوین را پیادهسازی میکنند. آنها عبارتند از:
جیمسون لوپ یک صفحه عالی با لیست جامع تر و پیوندهایی به تمام پیاده سازی های دیگر دارد.
همه این پروژه ها توسعه دهندگان بسیار با استعدادی دارند که روی آنها کار می کنند و هر کدام بیش از چند سال است که وجود داشته اند. چرا برای چیزی که چنین مشکلی به نظر می رسد تلاش زیادی می کنید؟
بیت کوین بدون مجوز است. هر کسی می تواند زنجیره را دانلود کند. هر کسی می تواند با شبکه تعامل داشته باشد. و هیچ کس نمی تواند شما را از کدنویسی یا اجرای یک پیاده سازی جایگزین باز دارد.
با این حال، به وضوح برخی از افراد مسئول ایجاد تغییرات در مخزن بیت کوین هستند و روند انتخاب آنها غیررسمی به نظر می رسد. در حالی که فرآیند پیشنهاد بهبود بیت کوین (BIP) برای پیشنهاد تغییرات در بیت کوین Core وجود دارد، این فرآیند نیز بسیار غیررسمی است.
هیچ کدام از اینها مشکل مستقیم نیست. همانطور که مارتی بنت اشاره می کند، اجماع خشن می تواند یک نقطه قوت باشد. اگر روند تغییر بیت کوین دشوار و نامشخص باشد، به این معنی است که تغییرات به طور کامل بررسی خواهند شد.
گام بعدی اجماع تقریبی، داشتن بیش از یک اجرای عمومی است.
عدم اجرای چندگانه ممکن است خطرناک تر باشد
شکی نیست که در حال حاضر کار بسیار دشواری است که یکی از افرادی باشید که به بیت کوین Core دسترسی دارند. در دنیایی که بیت کوین به عنوان یک ابزار پولی نقش اصلی را ایفا می کند، این کار بسیار دشوارتر خواهد شد. گروه کوچکی از توسعه دهندگان می توانند به یک هدف بسیار ارزشمند تبدیل شوند. حداقل، توجه آنها به منظور لابی کردن برای گنجاندن یا حذف های مختلف در نسخه بعدی نرم افزار جلب خواهد شد.
به صنعت لابی گری که در حال حاضر در سیاست وجود دارد فکر کنید. چرا چنین چیزی در اطراف افرادی که به تنها اجرای پروتکل بیت کوین دسترسی دارند، ایجاد نمی شود؟
مانند سیاستمداران در حال حاضر، آنها به قدرت دسترسی دارند. به این ترتیب، مردم آنها را مورد هدف قرار خواهند داد، با این تفاوت که این توسعه دهندگان قدرت یک دولت برای دفاع از آنها را ندارند. چه نوع زندگی قرار است باشد؟ چه کسی داوطلبانه آن را انتخاب می کند؟
در پایان، سیستم مالی جهانی وزنه بسیار سنگینی است که باید بر دوش گروه کوچکی از افرادی که به یک مخزن GitHub دسترسی دارند، تکیه کند. شاید با سیستم مالی جهانی که ما در تلاشیم تا از جایی که آینده پولی مردم به تصمیمات چند بانک مرکزی وابسته است فاصله بگیریم، چندان متفاوت نیست.
پیاده سازی های متعدد برای نجات!
وجود و استفاده گسترده از پیاده سازی های متعدد در شبکه بیت کوین می تواند این فشارها را با دشوارتر کردن تغییر پروتکل بیت کوین برای یک عامل مخرب کاهش دهد.
اگر مشارکت کنندگان در شبکه بیت کوین به طور مساوی بین پیاده سازی های مختلف توزیع شوند، فضای بیشتری برای ظهور ایده های خوب وجود دارد. پیشنهاد تغییرات در بیت کوین یا رد آنها بسیار غیرمتمرکزتر است اگر همه در یک اردو انجام نشود.
واضح است که استفاده از پیاده سازی های مختلف بیت کوین خطر تقسیم زنجیره را افزایش می دهد. یک شکاف زنجیره فاجعه بار – که در آن بخش قابل توجهی از گره ها و ماینرها به طور تصادفی جدا شدند – برای بیت کوین و قطعاً قیمت آن خوب نیست. اما طبیعت بدون مجوز بیت کوین را تهدید نمی کند.
یک محیط توسعه متمرکز که در آن همه فقط بر اساس بیت کوین Core میسازند، میتواند عدم مجوز را تهدید کند. مکالمه در مورد این موضوع به جای تمرکز بر روی مشکلاتی که ممکن است توسط اجرای جایگزین ایجاد شود، باید به خطرات ناشی از تکیه شدید به بیت کوین Core توجه کند.
یک مقاله عالی و قدیمی در مورد این بحث توسط آرون ون ویردام وجود دارد. همچنین می توانید یک موضوع جدیدتر و آموزنده در مورد آن بخوانید.
این یک پست مهمان توسط بیل اسکورزبی است. نظرات بیان شده کاملاً متعلق به خود آنها است و لزوماً نظرات BTC Inc یا مجله Bitcoin را منعکس نمی کند.