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

مقدمه

برای تایید شدن هر تراکنشی که در سیستم بیت کوین انجام می شود، ده دقیقه زمان لازم است. هر چه زمان تایید شدن تراکنش کاربر کمتر باشد، مطلوبتر است. در هر بلوک تراکنش به اندازه 1MB از تراکنش های مختلف قرار می گیرد. درصورتیکه در این 1MB تعداد بیشتری تراکنش قرار گیرد، در نتیجه در هر ده دقیقه تعداد بیشتری تراکنش تایید می شود و به همان نسبت سرعت عمل افزایش خواهد یافت. با توجه به این موضوع پروپوزال سگویت ( Proposal Segwit ) مطرح می شود.

هر تراکنش بیت کوینی شامل سه قسمت است: فرستنده، گیرنده و امضای دیجیتالی که تایید می کند فرستنده حق هزینه کردن بیت کوین ها را دارد. از امضا با عنوان “شاهد” یا “witness” نیز یاد می شود.

“شاهد جدا شده” یا “Segregated witness” که به طور مختصر segwit نامیده می شود، به نرم افزار تولید کننده تراکنش اجازه جدا کردن قسمت “شاهد” یا “witness” را از بقیه اطلاعات یک تراکش می دهد (این قسمت خارج از ساختار بلوک های مرسوم فعلی قرار می گیرد). segwit باعث کمتر شدن سایز هر تراکنش بیت کوینی و افزایش کارآیی هر بلوک تا 60% (و حتی بیشتر) می شود.

این روش دارای دو مزیت می باشد:

  1. حذف انعطاف پذیری مضر یا حذف malleability: segwit به نرم افزارهای دریافت کننده تراکنش (اعم از نرم افزارهای قدیمی یا به روز شده) اجازه می دهد تا بدون رجوع به شاهد، بتوانند شناسه یا identifier (txid) را برای تراکنش های استفاده کننده از segwit محاسبه کنند.
  2. افزایش ظرفیت: خارج کردن شاهد از ساختار بلوک های مرسوم فعلی (اما همچنان وجود آن در داخل بلوک هایی با ساختار جدید) بدان معناست که بلوک های مدل جدید می توانند اطلاعات تراکنشی بیشتری نسبت به بلوک های فعلی نگهداری کنند، پس میتوان گفت در این حالت تعداد تراکنش هایی که می تواند در یک بلوک جای بگیرد و در نتیجه مورد تایید واقع شود افزایش می یابد.

نکته قابل توجه در رابطه با segwit آن است که برای اجرایی شدن آن نیازی به قبول جمعی تمام شبکه بیت کوین نیست، پس هیچ اجباری برای بروزرسانی هیچ کاربری وجود ندارد، هرچند که این کار مزیت هایی را بهمراه دارد که در ادامه به آنها اشاره خواهد شد. از این موضوع با عنوان Soft-fork یاد می شود که برخلاف hard-fork، حتی اگر برخی از کاربران نرم افزار خود را بروز نکرده باشند Segwit می تواند به عملکرد خود ادامه دهد.

تست شدن Segwit

با ورود segwit قسمت های مختلفی از شبکه بیت کوین تغییر پیدا می کند، از جمله مهم ترین آنها قوانین اجماع یا همان consensus rules مربوط به دفتر کل بیت کوین (Bitcoin ledger) است که تمام نودها ( یا گره ها) آن را پذیرفته اند. اگر نودها از توافق و قبول دفتر کل سر باز زنند تراکنش های بیت کوینی جدید نا امن خواهند شد. در نتیجه توسعه دهندگان باید مراقب ایجاد تغییراتی از این دست باشند و قبل از هر چیز  آزمایش های وسیعی را روی هرگونه تغییرات  پیشنهادی انجام دهند.

همچنین از جمله تغییرات حائز اهمیت تغییراتی است که در کد شبکه داد و ستد شخص به شخص (یا همتا به همتا) اعمال می شود، این شبکه برای باز پخش کردن و هدایت بلوک ها و تراکنش استفاده می شود.

از آنجایی که تراکنش ها و بلوک های segwit متفاوت از تراکنش ها و بلوک های امروزی طراحی شده اند، باید مطمئن بود که با پیاده سازی در شبکه امکان بازپخش کردن و هدایت داده های segwit به نودهای segwit و همچنین داده های مدل قدیمی به نودهای قدیمی وجود دارد.

در نهایت این تغییرات که بر قوانین اجماع و همینطور کد شبکه تراکنش شخص به شخص اعمال می شود، شامل 1486 خط کد اضافه یا ویرایش شده می باشد. همچنین پچ segwit (segwit patch) شامل 3338 خط  کد بیشتر است که در تست های ادغامی به تضمین کارآیی segwit  در برنامه اصلی هسته بیت کوین (Bitcoin Core program) کمک می کند.

توسعه دهندگان با بیش از 3000 خط کد به آزمایش گسترده segwit طی یکسال گذشته پرداخته اند. در نهایت باید گفت که توسعه دهندگان هسته بیت کوین بر این باور بودند که دیگر زمان استفاده از segwit فرا رسیده است.

بلوک های فشرده

Segwit  به کسانی که کار استخراج بیت کوین را انجام می دهند اجازه می دهد تا اطلاعات تراکنشی بیشتری را (نسبت به گذشته) در بلوک هایی که می سازند قرار دهند.

این امر موجب افزایش نیاز فول نودها (که داده ها را بازپخش می کنند) به پهنای باند بیشتری می شود. همچنین باعث افزایش فاصله زمانی مابین انتشار بلوک جدید تا دریافت آن توسط نودها می گردد(به طور معمول هرچه مقدار داده بیشتر باشد، برای پخش شدن آن در شبکه، زمان بیشتری صرف می شود). برای کم کردن این عوارض جانبی، توسعه دهندگان هسته اصلی بیت کوین برنامه ریزی کرده اند که “هدایت کننده بلوک فشرده” یا همان “compact block relay” را برای هسته بیت کوین ورژن 0.13 و بالاتر در اختیار استفاده کنندگان قرار دهند.

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

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

از همه مهمتر، هدایت کننده بلوک فشرده کمک می کند تا فشار حداکثری (پیک) روی پهنای باند کاهش یابد. در حال حاضر کل یک بلوک جدید باید بطور یکجا دانلود شود. همانطور که می دانیم حجم هر بلوک حدود 1 مگابایت است، که با توسعه segwit این حجم به 2 مگابایت یا حتی بیشتر افزایش پیدا می کند. این میزان استفاده از پهنای باند روی کارایی سایر خدماتی که کاربر در حال استفاده از آنهاست (مثل استریم کردن ویدئو یا بازی) تاثیر منفی خواهد داشت (به جز کاربران با ارتباط سرعت بالا). با کمک بلوک های فشرده، کاربر می تواند تراکنش های یک بلوک را بصورت استریم دریافت کند و سپس هر بلوک را (به وسیله توضیح کوتاهی درباره آن بلوک) بازسازی کند، این امر سبب کاهش آسیب های ناشی از نوسانات پهنای باند که بسیاری از کاربران با آن مواجه هستند، می شود.

در نهایت، با کاهش میزان داده ای که باید ارسال شود تا انتشار یک بلوک جدید اطلاع رسانی شود، هدایت کننده بلوک فشرده به سرعت انتشار بهتری برای بلوک دست پیدا می کند. هدایت کننده بلوک فشرده از این موضوع برای دو منظور استفاده می کند: حالت “پهنای باند کند” که برای کاهش پهنای باند بهینه شده است (هرچند در بسیاری از موارد سرعت را افزایش می دهد) و حالت “پهنای باند سریع” که بطور قابل توجهی سرعت را افزایش می دهد و همچنین کاهش پیک استفاده از پهنای باند را مدیریت می کند (برای این کار به طور میانگین تنها به 20 کیلوبایت بیشتر نسبت به حالت اول نیاز دارد).

حالت پهنای باند سریع برای استخراج کنندگان پیش بینی شده است. چرا که آنها به دریافت بلوک ها در سریعترین حالت ممکن نیاز دارند (مخصوصا زمانی که روش های دیگر غیر شخص-به-شخص از کار افتاده باشد). اما کاربرانی با پهنای باند بیشتر نیز می توانند این حالت را فعال کنند تا به وسیله آن بلوک ها را با سرعت بیشتری به سمت استخراج کنندگان هدایت کنند. این امر همچنین سبب جلوگیری از حمله های قطع شدن سرویس (denial-of-service) می شود.

Segwit چه تاثیری بر شما خواهد داشت

استخراج کنندگانی که تصمیم می گیرند از segwit استفاده کنند باید آمادگی خود برای استفاده از آن را با Upgrade کردن فول نودهایشان به segwit تضمین کنند. در نهایت درصورت تمایل، می توانند سیگنال معرفی امکان استفاده از segwit را ارسال نمایند.

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

کاربران کیف پول هسته بیت کوین می توانند از نودهای موجود استفاده کنند. حتی اگر به روزرسانی هم بشود، هیچ تغییری دیده نخواهد شد مگر تغییراتی که در بالا به آنها اشاره گردید.

کاربران سایر کیف پول ها نیز می توانند از کیف پول فعلی خود استفاده کنند. به کاربران کیف پول های سبک وزن پیشنهاد می شود که بعد از دریافت مقدار معتنابهی از پول، برای دریافت چند تاییدیه صبر کنند، اما با segwit دیگر نیازی به صبر کردن نیست.

زمانی که کیف پول خود را به ورژن جدید به روزرسانی کنید، خواهید دید که میزان هزینه تراکنش (فی) بعد از هر تراکنش کمتر خواهد بود چرا که شاهد، خارج از تراکنش قرار دارد، در نتیجه اندازه تراکنش کمتر از حالت قبل محاسبه خواهد شد.



دیدگاه هایی که در این مقاله ارائه شده اند، متعلق به نویسنده می باشند و لزوماً مربوط به Coiniran نمی باشد و نباید به آن نسبت داده شود.



 Source & Image via BitcoinCoreSpicepay 

9 Comments

پاسخ دهید

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