بلاگ نبض
سگویت (SegWit) فرآیندی است که با حذف اطلاعات امضا از تراکنش های بیت کوین، اندازه بلاک در بلاک چین را افزایش می دهد. هنگامی که بخش های خاصی از تراکنش حذف می شوند، ظرفیت خالی شده تراکنش های بیشتری را به چین (زنجیره) اضافه می کند.
مفهوم سگویت چیست؟
کلمه Segregate به معنای جداسازی و تفکیک و witnesses به معنای شاهدان، همان امضاهای تراکنش ها هستند. بنابراین Segregated Witness یا کوتاه آن SegWit به معنای جداسازی امضاهای تراکنش ها است. مفهوم سگویت توسط توسعه دهنده بیت کوین، پیتر ویل ایجاد و معرفی شده است. بلاک چین بیت کوین متشکل از هزاران سیستم توزیع شده در سراسر یک شبکه همتا به همتا (peer-to-peer) است. به هرکدام از این سیستم ها گره (نود) می گویند. این گره ها مدیریت تراکنش های بیت کوین را بر عهده دارند. تمام تراکنش های ایجاد شده در بیت کوین در سیستم این گره ها کپی می شود. این ویژگی تقریبا هک کردن یا خرابی تراکنش ها را غیر ممکن می سازد.
اطلاعات تراکنشی که در سراسر گره ها به اشتراک گذاشته می شود شامل دو جزء است: ورودی و خروجی. ممکن است چندین ورودی و خروجی در یک تراکنش موجود باشد. خروجی، آدرس های عمومی گیرنده و ورودی، آدرس های عمومی فرستنده است. فرستنده به منظور ارسال هزینه و پول نیاز به آدرس عمومی طرف مقابل دارد. اکثر فضای تراکنش شامل یک امضا است که بخشی از ورودی است و تایید می کند که فرستنده پول مورد نیاز برای پرداخت را در اختیار دارد. بنابراین بیت کوین در هر تراکنش، از ورودی به خروجی حرکت می کند. پس از اینکه هرکدام از گره ها صحت تراکنش را تایید کردند، آن تراکنش وارد بلاک می شود و بلاک جدید به ادامه زنجیره بر روی تمام سیستم ها ذخیره می شود. سگویت توسط تیم باتجربه آن توسعه یافته است. بیت کوین کور (Bitcoin Core) در حال حاضر محبوب ترین کلاینت مرجع بیت کوین است که توسط اکثر کسب و کارهای حاضر در این صنعت مورد استفاده قرار می گیرد.
این به روزرسانی در اصل با هدف حل و برطرف کردن انعطاف پذیری تراکنش ها که یکی از نقاط ضعف شناخته شده نرم افزار بیت کوین است، توسعه یافته است. اگرچه این نقطه ضعف آنچنان به کاربران آسیب نمی رساند، اما چندین بار مورد سوء استفاده قرار گرفته است. این موضوع باعث شده است که نیاز به اصلاح آن مورد توجه قرار گیرد. البته سگویت طیف گسترد ه ای از مزایای دیگری نیز ارائه می دهد و تاکنون تمرکز و توجه آن از اصلاح انعطاف پذیری تراکنش ها، به سمت برطرف کردن مشکل مقیاس پذیری بیت کوین تغییر کرده است.
راهکار سگویت برای حل مشکل مقیاس پذیری بیت کوین چیست؟
سگویت حجم بلاک بیت کوین را افزایش می دهد و پیاده سازی راهکارهای لایه دوم را برای بهبود بیشتر امکان پذیر می سازد. مسئله کنونی مقیاس پذیری بیت کوین اساسا از کم و ناکافی بودن حجم بلاک به وجود می آید. فناوری بلاک چین از بلاک های متوالی تراکنش ها ایجاد شده است. بلاک چین، دفتر کلی از تمام تراکنش هایی است که تاکنون در شبکه انجام شده اند و نقش خون جاری در رگهای ارز دیجیتال را ایفا می کند. مشکل اینجاست که در حال حاضر، حجم بلاک ها دارای سقف مشخص شده است و تنها تغییرات یک مگابایتی امکان پذیر هستند. این حجم برای صدها تراکنشی که در هر دقیقه کاربران در صدد ارسال آنها هستند، کافی نیست. در نتیجه بسیاری از کاربران باید منتظر بمانند تا تراکنش های آنها تایید شود که بعضی اوقات ساعت ها و حتی روزها طول می کشد. با رشد شبکه، میزان تراکنش ها نیز افزایش می یابد؛ در حالی که حجم بلاک ها ثابت می ماند. این موضوع بدان معنا است که وخامت این مشکل بیشتر می شود.
سگویت برای این مشکل دو راهکار دارد:
- راهکار اول این است که سگویت، افزایش آنی حجم بلاک ها به 4 مگابایت را امکان پذیر می سازد. یک نکته در این خصوص وجود دارد: 4 مگابایت، حداکثر حجم بلاک مورد نظر سگویت است اما حجم واقعی بلاک به شرایط شبکه بستگی خواهد داشت. متخصصان پیش بینی کرده اند که پس از فعالسازی سگویت، حجم بلاک ها بین 2 الی 2.1 مگابایت خواهد بود.
- راهکار دوم نیز این است که سگویت با برطرف کردن مسأله انعطاف پذیری تراکنش ها، مشکل جزئی بیت کوین را از بین می برد اما یک مانع بزرگ در خصوص پیاده سازی راهکارهای لایه دوم بر بستر بیت کوین ایجاد می شود. یکی از این راهکارها، شبکه لایتنینگ است. انتظار می رود که شبکه لایتنینگ به منظور افزایش سرعت پردازش تراکنش ها، آنها را به خارج از بلاک چین انتقال دهد و در نتیجه، افزایش چشمگیری در ظرفیت شبکه را امکان پذیر سازد.
مخالفت های اصلی در مقابل سگویت چه مواردی هستند؟
مخالفت ها در برابر سگویت را می توان به 3 گروه تقسیم کرد: موارد سیاسی، فنی و ایدئولوژیک.
بعضی از افراد اذعان کرده اند که سگویت در شرایط فعلی خود نمی تواند به وعده های خود عمل کرده و مشکلات را حل کند. یکی از بحث های اصلی این است که افزایش حجم بلاک توسط به روزرسانی مورد نظر به میزانی نیست که پاسخگوی افزایش تقاضا و نیازهای روزافزون تعداد کاربران بیت کوین باشد. به نظر می رسد که اکثر متخصصان در خصوص توانایی فنی بسیار خوب توسعه دهندگان سگویت و هم چنین انسجام و ثبات این فناوری موافق باشند. هرچند برای افرادی که برنامه نویس نیستند، تقریبا غیرممکن است که صحت صحبت های مخالفان و موافقان سگویت را ارزیابی کنند. این نکته که بحث مورد نظر صرفا از لحاظ فنی نیست و جوانب سیاسی نیز در آن دخیل هستند، باعث پیچیده تر شدن شرایط می شود. تعداد زیادی از افرادی که بر روی سگویت در حال کار هستند، توسط شرکتی به اسم بلاک استریم (Blockstream) استخدام شده اند که محصول اصلی این شرکت، راهکارهای زنجیره های جانبی است. بعضی از افراد حاضر در جامعه بیت کوین مدعی اند که سگویت باعث ایجاد شدن تعارض منافع می شود؛ زیرا توسعه دهندگان تشویق می شوند که مانع از افزایش حجم بلاک ها شوند تا تقاضا برای راهکارهای زنجیره های جانبی نظیر شبکه لایتنینگ به طور کاذبی افزایش یابد. مدرک مستدل و موثقی برای این ادعا وجود ندارد، اما بخش بزرگی از جامعه به این نکته معتقد اند و در نتیجه مخالف سگویت هستند.
بحث اصلی ایدئولوژیک در خصوص مخالفت با این به روزرسانی این است که سگویت، مقیاس پذیری را همراه با حفظ سطح مناسبی از غیرمتمرکزسازی شبکه بیت کوین ارائه نمی دهد. همانطور که گفته شده است، سگویت مشکلات بلندمدت ظرفیت ناکافی تراکنش بیت کوین را فقط تا جایی برطرف می کند که پیاده سازی راهکارهای زنجیره جانبی لایه دوم نظیر شبکه لایتنینگ، امکان پذیر شود. مشکلی که بعضی از افراد معتقدند در این خصوص وجود دارد، نحوه کار زنجیره های جانبی است. زنجیره های جانبی برای اینکه به بلاک چین به شدت متراکم و شلوغ متکی نباشند، کوین ها را به سیستم لایه دوم انتقال می دهند. در آنجا، تمام تراکنش ها توسط شخص ثالث مورد اعتماد و بدون آنکه به سراسر شبکه مخابره شوند، پردازش می شوند. این امر منابع و زمان بسیار زیادی را صرفه جویی می کند. اما نهاد شخص ثالث مسئول و مورد اعتماد دقیقا همان چیزی است که بیت کوین در صدد حذف آن از سیستم پولی است. برای بعضی از افراد، چنین شرایطی به هیچ وجه قابل قبول نیست و فرقی ندارد که شخص ثالث مورد نظر در راهکارهایی نظیر شبکه لایتنینگ یا سایر راهکارها، دارای قدرت اندکی است.
چه کسانی از سگویت پشتیبانی می کنند؟
طیف گسترده ای از افراد و شرکت ها سگویت را تایید کرده اند. بیش از 100 شرکت برتر این صنعت در خصوص پشتیبانی و حمایت از سگویت دارای برنامه های مشخص هستند، بر روی سگویت کار می کنند و یا آن را در کسب و کار خود پیاده سازی کرده اند. به علاوه، بسیاری از افراد برجسته نیز که به دلیل اقدامات خود در جامعه بیت کوین شناخته شده هستند، پشتیبانی خود از سگویت را در توییتر و سایر شبکه های اجتماعی اعلام کرده اند. از بین این افراد می توان به آندریاس آنتونوپولوس (Andreas Antonopoulos)، سامسون ماو (Samson Mow)، چارلی لی (Charlie Lee) و سایر افراد اشاره کرد.
آیا SegWit جنبه های منفی نیز دارد؟
سگویت با بیت کوین و اصول اساسی آن همراه شده است، بنابراین نقاط قوت و نقاط ضعف آن بستگی به فردی دارد که آن را مشاهده می کند و دیدگاه ها در این زمینه متفاوت هستند. توانایی SegWit برای دادن وزن بیشتر به بلاک ها (همان تراکم تراکنش) متکی بر این ایده است که تعدادی از داده های بلاک چینی دور از زنجیره اولیه نگه داشته خواهد شد که این در عوض به عنوان نوعی ارجاع یا شاخص مورد استفاده قرار می گیرد. بعضی بر این باورند که تخلیه داده ها از بلاک چین تقریبا با شکست مواجه می شود و این امر مانند این است که اقرار کنیم بلاک چین به تنهایی نمی تواند عملکرد داشته باشد. از این منظر، سگویت (SegWit) خود نقطه ضعفی است که دامن بیت کوین را فرا گرفته است و به همین خاطر بود که قسمتی از جامعه بیت کوین به بلاک چین جدیدی هارد فورک ایجاد کردند و بیت کوین کش را در سال 2017 ایجاد نمودند. بیت کوین کش اساسا بیت کوین باقی مانده از دوران قبل از SegWit است و استراتژی مقیاس پذیری آن در واقع افزایش اندازه بلاک و حفظ همه داده ها بر روی زنجیره است. این یک استراتژی غیر متمرکز و در تقابل با گروه بیت کوین کور است که SegWit را به عنوان توده ای در بالای یک بلاک چین چند لایه می بیند. ایده های بیشماری در این فضا وجود دارد که منجر به ظهور بیت کوین، بیت کوین کش و یا رویه های جدید می شود. سگویت (SegWit) در واقع اقدامی است که اکثریت گروه توسعه دهنده بزرگ ترین ارز دیجیتال جهان معتقد به درستی آن هستند.
سگویت 2 (SegWit2x) چیست؟
سگویت 2 مرحله بعدی به روزرسانی بیت کوین است. سگویت 2 بخش دوم توافقنامه نیویورک است که در تاریخ 23 می 2017 حاصل شده است. این به روزرسانی به معنای افزایش حجم بلاک بیت کوین به 2 مگابایت است. سگویت بعضی از اشتباهات را اصلاح و پیش زمینه ای برای بهبودهای بعدی فراهم کرده است. با این حال مشکل بلاک های کم حجم را حل نکرده است. در گذشته، یک مگابایت برای پاسخگویی به نیاز کاربران کافی بود اما امروزه حجم اطلاعات و داده ها بسیار زیاد است. این موضوع تأثیر به سزایی بر سرعت تایید تراکنش ها و نرخ کارمزدها دارد. چه کسی کارمزدهای زیاد و زمان انتظار طولانی برای تایید بلاک را دوست دارد؟
چه کسانی از سگویت 2 پشتیبانی می کنند و چه کسانی مخالف آن هستند؟
بسیاری از نودها و استخرهای ماینینگ علیرغم آنکه بخشی از توافقنامه نیویورک هستند، نظر خود را تغییر داده اند. شش ماه قبل اکثر شرکت کنندگان در خصوص هاردفورک موافقت کرده بودند. اما با گذشت زمان، شرکت های بیشتری نظیر ترزور (Trezor)، بیترکس (Bittrex) و سایر شرکت ها از پذیرش سگویت 2 امتناع کردند. این شرکت ها نگران احتمال وقوع حمله های اجرای مجدد (Replay Attack) و آینده نامطمئن هر دو زنجیره بودند. در جامعه بیت کوین در خصوص این مسئله اتحاد وجود ندارد و به همین دلیل است که شرکت های بسیار زیادی نمی خواهند ریسک کنند. نیک زابو (Nick Szabo) متخصص قراردادهای هوشمند و رمزنگار شناخته شده جهانی نیز نظر مساعدی درباره این به روزرسانی ندارد.
ایدهی سگویت(SegWit)، نخستین مرتبه توسط پیتر ویل در کنفرانس مقیاسپذیری بیتکوین(Scaling Bitcoin Conference) در سال ۲۰۱۵ مطرح گشت. ویل توسعهدهندهی بیتکوین و بنیانگذار شرکت Blockstream است که در حوزهی امنیت دیجیتال برای خدمات مالی فعالیت میکند.
پیشنهاد سگویت برای رفع مشکل تغییرپذیری تراکنشها
ویل سگویت را به صورت یک وصله(در توسعهی نرمافزاری بستههای رفع آسیب پذیری، وصله(Patch) نامیده میشوند) برای رفع مشکل تغییرپذیری تراکنشها(Transaction Malleability) در پروتکل بیتکوین پیشنهاد کرد.
تغییرپذیری تراکنشها روشی است که در آن مهاجم اطلاعات تراکنش را پیش از دریافت تاییدیه و قرار گرفتن در بلاک دستکاری میکند.
فرض کنید جولی قصد دارد در یک معامله ۱۰ بیتکوین به لوسی ارسال کند، تغییرپذیری تراکنشها، امکان تغییر Witness Data(امضاء کلید خصوصی که اثبات میکند جولی ۱۰ بیتکوین برای ارسال در اختیار دارد) تراکنش را پیش از تایید تراکنش درشبکه برای لوسی ایجاد میکند. تغییر شناسهی تراکنش(Transaction ID) بدون تغییر خود تراکنش موجب میگردد همچنان ۱۰ بیتکوین از جولی به لوسی ارسال شود. هنگامی که تراکنش جایگزین در شبکه تایید شود، تراکنش اصلی را کنسل میکند. در این مرحله مهاجم(لوسی) با جولی تماس گرفته و اظهار میکند ۱۰ بیتکوین را دریافت نکرده است(در صورتی که واقعا دریافت کرده است). جولی با بررسی متوجه خواهد شد تراکنش اصلی ارسال نشده و تراکنش را با کارمزد بیشتری ارسال میکند. تراکنش جدید توسط شبکه پردازش شده و لوسی ۱۰ بیتکوین بیشتر دریافت میکند.
جولی، ماینرها و شبکهی بلاکچین راهی برای کشف این موضوع در اختیار ندارند و هنگامی که تراکنش در شبکه تایید میشود، قابل تغییر و یا حذف نیست.
ویل برای حل مشکل تغییرپذیری تراکنشها، SegWit را پیشنهاد کرد. در حقیقت وی با ارائهی این وصله پیشنهاد کرد که برای توقف استفاده از Witness Data به منظور تغییر شناسهی تراکنشها توسط مهاجم، آن را از تراکنش حذف کنیم.
معنی سگویت
SegWit با عبارت کامل Segregated Witness نوشته میشود که در آن Segregate به معنای حذف و یا جداسازی است، بنابراین SegWit به معنای حذف Witness Data است.
در حقیقت سگویت یک زنجیرهی جانبی برای ذخیرهسازی Witness Data خارج از بلاکچین اصلی ایجاد میکند. این عمل از تغییر شناسهی تراکنش توسط مهاجم جلوگیری میکند.
سگویت همچنین بهطور هوشمندانه با نسخههای پیشین خود سازگار است. یعنی گرههایی که با پروتکل سگویت بیتکوین بهروزرسانی شدهاند، میتوانند همراه با گرههایی که بروزرسانی نشدهاند در شبکه فعالیت کنند. این نوع بروزرسانی فورک نرم(Soft Fork) نامیده میشود، بروزرسانیهایی که با نسخهی پیشین خود سازگار نیستند فورک سخت(Hard Fork) نامیده میشوند. فورکهای سخت میتوانند شبکه را تقسیم کرده و موجب تولد رمزارزهای جدید شوند.
ویل سگویت را طوری طراحی کرد که با نسخههای پیشین خود سازگار باشد، به همین دلیل مجبور گردید Witness Data را همچنان در بلاکچین اصلی ذخیره کند. وی به عنوان راه حل تمامی Witness Dataها را در زنجیرهی جانبی سگویت رمزگذاری و سپس این کد را در بلاکچین اصلی ذخیرهسازی کرد.
پیشنهاد سگویت بحث گستردهای را در جامعهی بیتکوین ایجاد کرد و پیادهسازی آن دو سال بهطول انجامید. سرانجام سگویت در ۲۳ آگوست ۲۰۱۷ به پروتکل بیتکوین اعمال گردید. همان وصله در ۱۰ می ۲۰۱۷ در پروتکل لایتکوین نیز اعمال شد.
سگویت مشکل تغییرپذیری تراکنشها را مرتفع ساخت و ایجاد برخی بهبودها را در پروتکل بیتکوین امکانپذیر کرد. با این وجود انتقادات بسیاری وجود داشت و تمامی کاربران شبکهی بیتکوین از تغییرات استقبال نکردند. برخی از اعضای جامعهی بیتکوین با سگویت مخالفت کرده و رمزارزهای رقیب خود را ایجاد کردند.
افزایش مقیاسپذیری شبکه بیتکوین
مقیاسپذیری(Scalability)، به صورت توانایی پردازش حجم بالایی از تراکنشها بدون کاهش سرعت تراکنشها توصیف میشود. شبکهی مقیاسپذیر با گسترش ابعاد میتواند تراکنشها را سریعتر پردازش کند. متاسفانه اغلب رمزارزها با افزایش تعداد کاربران تراکنشها را آهستهتر پردازش میکنند.
به دلیل پردازش تراکنشها با اجماع(بیش از نیمی از گرههای شبکهی بیتکوین پیش از اضافه شدن تراکنش به بلاکچین باید آن را تایید کنند)، رمزارزها دارای مشکل مقیاسپذیری هستند. با افزایش تعداد گرهها، زمان دستیابی به توافق یا اجماع افزایش مییابد.
ویل با پیشنهاد سگویت بهطور تصادفی مقیاسپذیری شبکه را بهبود بخشید. از آنجایی که Witness Data، ۶۵ درصد از فضای هر بلاک بیتکوین را استفاده میکرد. حذف Witness Data فضای بیشتری را برای جای دادن تراکنشها در هر بلاک ایجاد کرد.