راهکاری برای اندازه محدود بلاک ها

«بیت کوین نامحدود» (Bitcoin Unlimited)، عنوان یکی از انشعاب های موجود در نرم افزار هسته ای بیت کوین است که در اواخر سال 2015 معرفی شد، اما در چند ماه اخیر توجه زیادی را به خود جلب کرده است. این پروژه از چند استخر جدید بیت کوین، برای قدرت هش، پشتیبانی می شود از جمله viaBTC، GBMiners و BTC.TOP. در عین حال از نظر میزان پذیرش نود‌ها نیز رو به افزایش است.

ایده اصلی پشت « Bitcoin Unlimited »،که در طرح پیشنهادی بهبود نامحدود بیت کوین 001 مطرح شده است، این است که  کاربران و استخراج کنندگان روی اندازه بلاک کنترل داشته باشند. یا شاید دقیقتر اینکه بگوییم هدف کنترل آشکارتر و مدیریت آسان تر است.

اما چگونه؟

طرح پیشنهادی

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

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

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

گزینه اول: حداکثر اندازه تولید بلاک

اولی گزینه اندازه حداکثر تولید است. این گزینه فقط برای استخراج کنندگان است و منظور کاملا روشن است: این گزینه به استخراج کنندگان اجازه می دهد که اندازه بلاک هایی که تولید کرده اند را تنظیم کنند. اندازه پیش فرض، یک مگابایت است که به طور خودکار با پروتوکول کنونی بیت کوین تفاوتی ندارد. اما اگر یک استخراج کننده بخواهد یک بلاک دو مگابایتی ایجاد کند، این به سادگی ست کردن یک سوئیچ در محیط گرافیکی کاربر « Bitcoin Unlimited» است. اگر استخراج کننده ای بخواهد حتی یک بلاک هشت مگابایتی ایجاد کند، باز هم می تواند از همین سوئیچ استفاده کند.

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

این گزینه به استخراج کنندگان کنترل کامل روی اندازه بلاک ها را می دهد. اما البته همانطور که در فوق توضیح دادیم، یک بلاک دو مگابایتی در حال حاضر توسط شبکه پذیرفته نخواهد شد.

اینجاست که دومین گزینه مطرح می شود.

گزینه دوم: اندازه اضافی بلاک

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

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

این البته مشکلی بوجود می آورد.

اگر اقلیتی از استخراج کنندگان اندازه اضافی بلاک را به یک مگابایت ست کرده باشند و اکثریت برای مثال به دو مگابایت ست کرده باشند، شبکه به دو شاخه منشعب خواهد شد. به محض اینکه کسی یک بلاک دومگابایتی استخراج کند، اقلیت استخراج کنندگان نادیده گرفته خواهند شد و در عوض به استخراج روی زنجیره با اندازه بلاک یک مگابایتی ادامه خواهند داد. با این حال، اکثریت استخراج کنندگان زنجیره را با اندازه بلاک دومگابایت خواهند پذیرفت و این زنجیره گسترش خواهد یافت.

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

برای حل این مشکل «Bitcoin unlimited»  گزینه تنظیمی سومی را معرفی می کند.

گزینه سوم: عمق اضافی پذیرش

عمق اضافی پذیرش (Excessive Acceptance Depth) اساسا  قاعده اندازه اضافی بلاک را نقض می‌کند. دقیقتر اینکه بگوییم عمق اضافی پذیرش تعداد تاییدهای اضافه شده ای که یک بلاک لازم دارد را تعیین می کند، این قبل از اینکه نودها و استخراج کنندگان آن را بپذیرند و صرف نظر از اندازه آن بلاک رخ می دهد. مقدار پیش فرض چهار است.

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

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

در نهایت، لازم است که به اختصار از sticky gate هم صحبت کنیم. اگر عمق اضافی پذیرش یک نود برای یک بلاک، به حد کفایت برسد، این نود تا 24 ساعت، بلاک های بعدی را هم با هر اندازه ای خواهد پذیرفت (یعنی حدود 144 بلاک). این تضمین می کند در حالیکه استخراج کنندگان منتظر هستند که به اندازه عمق پذیرش کافی برسند، روی زنجیره همچنان با بلاک های بزرگتر و جدید پذیرفته شده کار کنند و از بقیه شبکه عقب نمانند.

منبع

2 Comments

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *