
یکی از مشکلاتی که شبکههای بلاکچینی همواره با آن دستوپنجه نرم میکنند، مقیاسپذیری است. هر کدام از شبکهها بهدنبال راهی برای حل این مساله هستند. در میان این شبکهها، بیت کوین بهعنوان قدیمیترین بلاکچین کریپتویی، بیش از یک دهه است که با حفظ ساختار سنتی خود به فعالیتش ادامه میدهد و بعضا توسعهدهندگان آن بهدنبال راهی برای بهبود وضعیت این شبکه هستند. یکی از روشهایی که دولوپرهای بیت کوین یافتهاند، سگویت (Segwit) است.سگویت یا Segregated Witness بهعنوان راهکاری نویدبخش برای مقیاسپذیری بیت کوین در نظر گرفته میشود، اما آیا سگویت راهکاری مطمئن برای بهبود و ارتقای مقیاسپذیری بلاکچین بیت کوین به شمار میآید؟ آیا میتوان سگویت را در سایر شبکههای بلاکچین به کار گرفت؟ در این مقاله به بررسی دقیقتر سگویت و نحوه عملکرد آن خواهیم پرداخت.
سگویت چیست؟
سگویت یک بهروزرسانی در شبکه بیت کوین است که نحوه ذخیرهسازی اطلاعات و دادهها را تغییر میدهد. ایده سگویت در ابتدا توسط یکی از توسعهدهندگان به اسم پیتر ویول (Pieter Wiulle) در کنفرانس مقیاسپذیری بیت کوین در ماه دسامبر ۲۰۱۵ مطرح شد. سگویت بعد از ۲ سال و در تاریخ ۱۰ می ۲۰۱۷ (۲۰ اردیبهشت ۱۳۹۶) ابتدا روی شبکه لایت کوین پیادهسازی و سپس در تاریخ ۲۳ آگوست ۲۰۱۷ (۱ شهریور ۱۳۹۶) روی شبکه بیت کوین فعال شد.
بسیاری از افراد سگویت را راهکاری برای مشکل مقیاسپذیری شبکه بیت کوین میدانند. حداکثر اندازه بلاک در پروتکل اصلی ۱ مگابایت است. به همین دلیل تعداد تراکنشهایی که شبکه بیت کوین میتواند در هر ثانیه پردازش کند، تقریبا به ۷ تراکنش محدود شده است. این موضوع باعث میشود، رشد بالقوه شبکه بیت کوین متوقف و از تبدیل شدن به یک سیستم پرداخت با حجم تراکنشهای زیاد جلوگیری شود.
به زبان ساده، سگویت یک بهروزرسانی است که باعث میشود، اندازه تراکنشها در شبکه بیت کوین سبکتر شود.
اگرچه بهروزرسانی سگویت تعداد تراکنشهای موجود در هر بلاک را افزایش داده است، اما هدف اولیه آن برطرف کردن یک باگ در کد بیت کوین به اسم انعطافپذیری تراکنش (Transaction Malleability) بوده است. این نقص به افراد امکان میداد، جزییات کوچکی را تغییر دهند که منجر به تغییر آیدی تراکنش میشد و در عین حال محتوای تراکنش را بدون تغییر باقی میگذاشت. اگرچه این موضوع برای بیت کوین یک مشکل مهم به حساب نمیآمد، اما از توسعه ویژگیهای پیچیدهتر نظیر پروتکلهای لایه دوم یا قراردادهای هوشمند جلوگیری میکرد.
همانطور که از اسم سگویت مشخص است (کلمه Segregate به معنای جداسازی یا تفکیک و Witnesses به معنای شاهدان يا همان امضاهای تراکنشها هستند)، سگویت با حذف اطلاعات مربوط به امضا و ذخیرهسازی آن خارج از بلاک تراکنش مبنا، انعطافپذیرتری تراکنش را اصلاح میکند. بدین ترتیب میتوان امضاها و اسکریپتها را بدون تغییر آیدی تراکنش تغییر داد.
نحوه عملکرد سگویت چگونه است؟
پاسخ به سوال «سگویت چیست؟» ممکن است توجه بسیاری از افراد تازهوارد را به سمت عملکرد سگویت جلب کند. هدف اصلی سگویت بر بهبود راندمان شبکههای بلاکچینی معطوف شده است. به عبارت سادهتر، سگویت با تفکیک یک تراکنش به دو بخش مجزا، به کاهش بار تراکنشها در هر بلاک کمک میکند و باعث رشد کارآمدتر تعداد تراکنشها در هر بلاک خواهد شد.
موضوع دیگری که در عملکرد سگویت مطرح است، اثرگذاری آن بر سرعت انجام تراکنش است. برای شفافسازی این موضوع باید نحوه عملکرد سگویت را دقیقتر بررسی کنیم. بخش اول تراکنش شامل آدرس کیف پول ارسالکننده و دریافتکننده است و بخش دوم تراکنش شامل امضاهای تراکنش یا اطلاعات شاهد میشود. سگویت به حذف اطلاعات شاهد از بلاک اصلی کمک میکند و در نتیجه به کاهش کارآمد اندازه تراکنش منجر میشود. بدین ترتیب، تراکنش فضای کمتری اشغال میکند و سرعت انجام تراکنش در هر بلاک تضمین میشود. نکته مهم دیگر در عملکرد سگویت به اصلاح هشهای تراکنش مربوط است. این موضوع حول مشکلات مرتبط با انعطافپذیری تراکنش میچرخد.
سگویت چگونه مشکل انعطافپذیری تراکنش را برطرف میکند؟
بررسی و شناخت کامل نحوه عملکرد سگویت بدون بررسی انعطافپذیری تراکنش امکانپذیر نیست. مساله انعطافپذیری تراکنش در بیت کوین و سایر شبکههای بلاکچین شامل اصلاح کد بیت کوین به منظور تغییر اطلاعات شاهد قبل از تایید تراکنشها است.
انعطافپذیری تراکنش چیست؟
فرض کنید که جان باید ۱۰ بیت کوین به استیون پرداخت کند. حال، استیون میخواهد جان را فریب دهد تا ۲۰ بیت کوین پرداخت کند و اطلاعات شاهد مربوط به تراکنش جان را قبل از تایید تغییر دهد؛ در نتیجه، آیدی تراکنش بدون هیچگونه تغییر در تراکنش تغییر میکند. استیون ۱۰ بیت کوین دریافت میکند و پس از آنکه شبکه تراکنش اصلاحشده را تایید کرد، تراکنش اصلی را لغو میکند.
هنگامی که استیون به جان میگوید که ۱۰ بیت کوین را دریافت نکرده است، جان متوجه میشود که تراکنش اصلی انجام نشده و برگشته است. جان بدون آنکه از این حقه باخبر باشد، مجددا ۱۰ بیت کوین دیگر با کارمزد تراکنش بیشتر به استیون ارسال میکند. نکته جالب این است که هیچکس در شبکه نمیتواند متوجه این کلاهبرداری شود.
حل مشکل انعطافپذیری تراکنش توسط سگویت
روشی که سگویت پیاده کرده است و اطلاعات شاهد را تفکیک میکند، برجستهترین نکته حل مشکل انعطافپذیری تراکنش است. سگویت میتواند اطلاعات شاهد را از بلاک جدا کند و نگذارد اطلاعات تراکنش را تغییر داد. بهروزرسانی سگویت یک زنجیره جانبی جداگانه و خارج از شبکه بلاکچین اصلی برای ذخیرهسازی اطلاعات شاهد ایجاد میکند. بدین ترتیب، کلاهبردارانی همانند استیون دیگر نمیتوانند آیدی تراکنشها را تغییر دهند.
نکته مهم دیگر درباره حل مشکل انعطافپذیری تراکنش توسط سگویت، پشتیبانی از نسخههای قبلی (Backward Compatibility) است. نودهایی که با پروتکل سگویت بهروزرسانی شدهاند، همچنان میتوانند با نودهایی که بهروزرسانی نشدهاند همکاری کنند. به چنین بهروزرسانیهایی، سافت فورک (Soft Fork) گفته میشود. از طرف دیگر، هاردفورکها از نسخههای قبلی پشتیبانی نمیکنند و این موضوع ممکن است به تفکیک شبکههای بلاکچین منجر شود؛ بنابراین، سگویت راهکاری برای ثبت و ذخیرهسازی اطلاعات شاهد در بلاکچین اصلی در اختیار دارد. دستورالعملهای دقیق نحوه استفاده از سگویت نشان میدهند که سگویت به رمزگذاری تمام اطلاعات شاهد در زنجیره جانبی میپردازد، در حالی که کد اصلی و مبنا را در بلاکچین اصلی ذخیره میکند.
مزیت سگویت در زمینه مقیاسپذیری
بزرگترین مزیت سگویت، بهبود مقیاسپذیری است. سگویت بدون شک میتواند مسائل مرتبط با انعطافپذیری تراکنش را برطرف کند. مزایای سگویت در زمینه مقیاسپذیری نشان میدهد که این پروتکل میتواند به بخش جداییناپذیر آینده عرصه بلاکچین تبدیل شود.
مقیاسپذیری اساسا به قابلیت شبکهها برای پردازش تعداد زیادی تراکنش مربوط میشود، بدون آنکه سرعت این پردازشها کاهش یابد. در مورد شبکههای مقیاسپذیر، سرعت پردازش تراکنش با افزایش اندازه شبکه بیشتر میشود. البته در برخی مواقع شاهد بودهایم که سرعت شبکههای بلاکچینی با رشد آنها کاهش پیدا کرده است.
مشکل مقیاسپذیری در عرصه رمزارزها اساسا از پردازش تراکنشها از طریق اجماع بهوجود آمده است. بیش از نیمی از نودهای شبکه بیت کوین باید قبل از افزودن تراکنش به بلاکچین، اعتبار و صحت آن تراکنش را بررسی و تایید کنند. با افزایش تعداد نودهای شبکه، زمان مورد نیاز برای دستیابی به اجماع نیز افزایش مییابد.
در واقع، اطلاعات مربوط امضا یا اطلاعات شاهد تقریبا ۶۵٪ از بلاکهای شبکه بیت کوین را اشغال کردهاند و سگویت مشکل ذخیرهسازی اطلاعات شاهد در بلاکچین اصلی را برطرف میکند. به کمک سگویت، بلاکهای بیت کوین میتوانند فضای اضافهای برای اطلاعات تراکنش در اختیار داشته باشند. سگویت به شبکه کمک میکند تا بدون تغییر اندازه کلی بلاکچین بیت کوین، قابلیت پردازش آن را بهبود دهد.
نقاط ضعف سگویت
مزایای قابل توجه پروتکل سگویت ممکن است باعث شود که از نقاط ضعف آن غافل شویم. هرچند آشنایی با این نقاط ضعف برای استفاده از قابلیتهای سگویت ضروری است. نکته اول این است که بسیاری از نودها از سگویت استفاده نمیکنند و سرعت تراکنشهای سگویت در شبکه بیت کوین کمتر از سایر شبکهها است. علاوه بر این، سگویت به تفکیک جامعه بیت کوین منجر شده است.
نحوه استفاده از سگویت
بسیاری از افراد مشتاقند تا بیشتر با سگویت یا شبکههای تحت پشتیبانی آن آشنا شوند. یکی از بهترین نمونههای استفاده از سگویت، شبکه لایتنینگ است که راهکاری کارآمد برای مشکل شبکه بیت کوین است. در واقع میتوان از شبکه لایتنینگ برای انجام ریزپرداختها (Micropayment) استفاده کرد. برای آشنایی بیشتر با نحوه استفاده از سگویت در شبکه لایتنینگ، مجددا به مثال جان و استیون برمیگردیم.
جان برای استیون کار میکند و هر روز یک بیت کوین دریافت میکند. جان و استیون بدون پردازش تراکنشها در شبکه اصلی بلاکچین، یک کانال پرداخت خصوصی ایجاد کردهاند و از طریق آن استیون میتواند بهطور مستقیم به جان بیت کوین ارسال کند. ارزش این ریزپرداختها تقریبا یک بیت کوین در هر روز است و باید امضای جان و استیون را به همراه داشته باشد؛ بنابراین، به آسانی میتوان این ریزپرداختها را به عنوان تراکنشهای چندامضایی دستهبندی کرد. پس از ۵ روز که کار جان به اتمام میرسد، او مجموعا ۵ بیت کوین دریافت میکند. جان و استیون میتوانند کانال پرداخت را ببندند و تراکنش مذکور در شبکه به عنوان یک تراکنش به ارزش ۵ بیت کوین قابل مشاهده خواهد بود.
چنین کانالهای پرداخت که بر اساس اصول سگویت هستند، میتوانند به ایجاد شبکه لایتنینگ کمک کنند. شبکه لایتنینگ شامل چندین ریزپرداخت است که خارج از شبکه بلاکچین اصلی انجام میشوند. مهمترین نکته این است که تراکنشها تنها زمانی به بلاکچین اصلی افزوده میشوند که کاربران کانالهای پرداخت را ببندند.
سگویت 2X
سگویت به عنوان سافت فورک برای بهبود مقیاسپذیری و برطرف کردن مشکل انعطافپذیری تراکنش ایجاد و پیادهسازی شده است. سگویت همچنین از نسخههای قبلی پروتکلها نیز پشتیبانی میکند؛ در نتیجه، نودهایی که هنوز بهروزرسانی نشدهاند، برای استفاده از سگویت با هیچگونه مشکلی مواجه نمیشوند. از طرف دیگر، توسعهدهندگان هاردفورک دیگری به اسم سگویت 2X (یا S2X) برای سگویت پیشنهاد دادهاند.
مهمترین تفاوت بین سگویت و سگویت 2X به اصلاحاتی در بستهبندی (Batching) تراکنشها و افزایش اندازه بلاک مربوط میشود. البته باید به این نکته نیز اشاره کرد که اندازه بیشتر بلاک ممکن است بار بیشتری روی ماینرها و نودها اعمال کند؛ زیرا حجم اطلاعات بیشتر خواهد شد.
نکته مهم دیگر در خصوص سگویت مربوط به پشتیبانی از جامعه بیت کوین است. از طرف دیگر، در پروپوزال سگویت 2X تغییرات بسیار مهمی در قوانین نظارتی بیت کوین پیشنهاد شده است. در آخر، توسعهدهندگان در خصوص پذیرش و پیادهسازی سگویت 2X به اجماع نرسیدند و این پروپوزال به حالت تعلیق درآمد.
سگویت بومی و سگویت تو در تو
موضوع مهم دیگری که در خصوص سگویت باید بررسی شود، معرفی سگویت بومی (Native SegWit) و سگویت تو در تو (Nested SegWit) است. سگویت بومی که به عنوان bech32 نیز شناخته میشود در واقع نسخه بهروزرسانیشده سگویت تودرتو است. سگویت در فرمت bech32 سرعت تراکنش بهبودیافته، کارمزد کمتر و مکانیسمهای بسیار بهتری در زمینه شناسایی خطا ارائه میدهد.
تمام آدرسهای bech32 با حروف کوچک نوشته میشوند. این موضوع به بهبود خوانش آدرسها کمک میکند. این نکته نیز قابل ذکر است که تمام تراکنشهای بلاکچین بین کیف پولهای غیر سگویت، سگویت بومی و سگویت تودرتو کاملا از یکدیگر پشتیبانی میکنند. از طرف دیگر، ممکن است تمام صرافیها و کیف پولهای کریپتو از سگویت پشتیبانی نکنند؛بنابراین بهتر است در مواردی خاص، سرمایه خود را مستقیما به آدرسهای سگویت انتقال ندهید.
سگویت بومی چیست؟
به عبارت ساده، میتوان سگویت بومی را به عنوان نسخه بهروزرسانیشده سگویت در نظر گرفت. سگویت بومی آخرین مرحله در تکامل فرمت آدرسها است. مهمترین نکته در مورد سگویت بومی این است که این پروتکل میتواند در مقایسه با فرمتهای قبلی، کارآمدی و راندمان بهتر را تضمین کند.
مقایسه سگویت و سگویت بومی
پس از بررسی سگویت و سگویت بومی، اکنون نوبت به مقایسه این دو مورد رسیده است. به منظور مقایسه این دو نوع از آدرسهای بیت کوین، باید عوامل مختلفی را در نظر گرفت. در ادامه به بررسی این عوامل میپردازیم.
۱. فرمت
اولین موردی که باعث تفاوت سگویت و سگویت بومی میشود، فرمت آنها است. آدرسهای سگویت با عدد ۳ آغاز میشوند و از تابع اسکریپت P2SH استفاده میکنند. به علاوه، این فرمت همچنین با استفاده از استاندارد رمزنگاری P2WPKH در P2SH، میتواند پردازش تراکنشهای غیر سگویت را امکانپذیر سازد.
از طرف دیگر، به آدرسهای سگویت بومی، آدرسهای bech32 نیز گفته میشود که تفاوت قابل توجهی با آدرسهای P2 دارد. فرمت آدرسهای سگویت بومی با bc1 شروع میشود.
۲. پشتیبانی از کیف پول
نکته مهم دیگر در مقایسه سگویت و سگویت بومی به پشتیبانی از کیف پول مربوط است. نکته جالب این است که این دو فرمت از ارسال و دریافت بیت کوین به یکدیگر پشتیبانی میکنند. از طرف دیگر، بررسی این موضوع از اهمیت ویژهای برخوردار است که آیا ارائهدهنده کیف پول مدنظر ما از تمام فرمتها پشتیبانی میکند یا خیر.
۳. کارمزد تراکنشها
مهمترین تفاوت بین سگویت و سگویت بومی، کارمزد تراکنشها است. در این زمینه، تراکنشهایی که شامل آدرس سگویت هستند، قطعا عملکرد بهتری نسبت به آدرسهای قدیمی دارند. هرچند، هزینه تراکنشها در سگویت بومی کمتر است؛ زیرا دارای اندازه بلاکهای بزرگتر و کارمزد کمتری نسبت به سایر فرمتها است.
۳. بازده و کارایی
برای مقایسه سگویت و سگویت بومی میتوان کارایی آنها را مقایسه کرد. آدرسهای سگویت راندمان بهتری نسبت به فرمتهای قدیمی دارند. در آدرسهای سگویت شاهد تفکیک امضای موجود در تراکنش از اطلاعات تراکنش هستیم. در نتیجه، کاربران آدرسهای سگویت کارمزد کمتری نسبت به کاربران آدرسهای قدیمی پرداخت میکنند.
به علاوه، تراکنشهایی که شامل آدرسهای سگویت هستند با توجه به اندازه بیشتر تمام بلاکها، عملکرد سریعتری ارائه میدهند. در آدرسهای سگویت نسبت به آدرسهای قدیمی یا لگسی (Legacy)، بلاکها میتوانند تراکنشهای بیشتری ذخیرهسازی کنند. از طرف دیگر، سگویت بومی اندازه بلاک بهبودیافته و بیشتری در اختیار دارد. در نتیجه، راندمان بهتری نسبت به سگویت ارائه میدهد.
۴. امنیت
جداسازی امضا از اطلاعات تراکنش در سگویت، فرصت خوبی برای بهبود و ارتقای امنیت به ارمغان آورده است. با توجه به جداسازی امضاها، دستکاری امضای تراکنشها برای هکرها دشوارتر خواهد شد. در سگویت بومی شاهد بهبود امنیت نسبت به سگویت هستیم.
سگویت بهتر است یا سگویت بومی؟
مقایسه سگویت و سگویت بومی به ما نشان میدهد که سگویت بومی در موارد مختلف برنده میدان است. اگرچه سگویت نشان داده که یک فرمت بهتر نسبت به فرمتهای قدیمی است، اما فرمت سگویت بومی دارای بهبودها و ارتقاهای نویدبخش است. در فرمت سگویت بومی با تراکنشهای سریعتر و کارمزد کمتر در هر تراکنش مواجه هستیم. همچنین در این فرمت، با توجه به آدرسهای bech32 مزایای بهبود مقیاسپذیری را در اختیار داریم. به علاوه، سگویت بومی ویژگی شناسایی خطای بهتری ارائه میدهد. همچنین، از آنجایی که آدرسهای سگویت بومی با حروف کوچک نوشته میشوند، دارای خوانش بهتری هستند.
چه کیف پولهایی از سگویت پشتیبانی میکنند؟
برای آنکه کاربران شبکه بیت کوین بتوانند از تراکنشهای سگویت استفاده کنند، باید کیف پولی در اختیار داشته باشند که از سگویت پشتیبانی کند. این کیف پولها به کاربران آدرسهای قدیمی و آدرسهای سگویت این امکان را میدهد که بهراحتی تراکنش داشته باشند. از میان کیف پولهایی که از سگویت بیت کوین پشتیبانی میکنند، میتوان به موارد زیر اشاره کرد:
- ۱- لجر: لجر تولیدکننده کیف پولهای سختافزاری است که از طیف وسیعی از رمزارزها پشتیبانی میکند. این کیف پول بدون بهخطر انداختن امنیت کاربران، از تمام ویژگیهای لازم برای بهکارگیری سگویت بیت کوین پشتیبانی میکند.
- ۲- ترزور: ترزور یکی دیگر از انواع کیفپولهای سختافزاری است که در محصولات خود از سگویت پشتیبانی میکند.
- ۳- بیت کوین کور (BitcoinCore): بیت کوین کور کیف پول پیشنهادی و مرجع تیم توسعهدهنده بیت کوین است. این کیف پول از نسخه ۰.۱۳.۱ به بعد از سگویت پشتیبانی میکند.
- ۴- بیت کوین آرموری (Bitcoin Armory): این کیف پول با زبان برنامهنویسی پایتون نوشته شده است و از سگویت پشتیبانی میکند. بیت کوین آرموری برای سیستم عاملهای ویندوز، لینوکس و Mac OS X عرضه شده است.
- ۵- الکتروم (Electrum): این کیف پول روی سیستمعاملهای اندروید، ویندوز، لینوکس و Mac OS X قابل اجراست. الکتروم متن باز است و از سگویت پشتیبانی میکند و همچنین به کاربران اجازه میدهد، خودشان کارمزد تراکنشها را تعیین کنند.
- ۶- گرین بیتز (Green Bits): یکی دیگر از کیف پولهایی که از سگویت پشتیبانی میکند و برای سیستم عاملهای اندروید و iOS عرضه شده است، گرین بیتز نام دارد. کاربران میتوانند از طریق افزونه مرورگر کروم یا از طریق وب از گرین بیتز استفاده کنند.
- ۷- سامورایی (Samurai): کیف پول سامورایی یک پروژه در حال توسعه است، اما از سگویت پشتیبانی میکند. سامورایی پروژهای است که بر حریم خصوصی و ناشناس بودن تمرکز دارد.
- ۸- کوینومی (Coinomi): کوینومی یک کیف پول با پشتیبانی از چندین رمزارز و همچنین پشتیبانی از سگویت برای بیت کوین و لایت کوین است.
پرسش و پاسخ متداول(FAQ)
- سگویت به زبان ساده چیست؟
سگویت یک بهروزرسانی در بیت کوین است که باعث انعطافپذیری تراکنشها و مقیاسپذیرتر شدن بلاکچین بیت کوین میشود. آپدیت سگویت اطلاعات مربوط به امضای تراکنشها را بهصورت جداگانه در بلاکها ذخیره میکند و باعث کاهش حجم تراکنشها میشود.
- چه کیف پولهایی از سگویت پشتیبانی میکنند؟
کیف پولهای لجر، ترزور، بیت کوین کور، بیت کوین آرموری، الکتروم، سامورایی، گرین بیتزو کوینومی از سگویت بیت کوین پشتیبانی میکنند.
نتیجهگیری
اگر بخواهیم پاسخ کوتاهی به پرسش «سگویت چیست؟» بدهیم، باید آن را بهعنوان یک بهروزرسانی برای برطرف کردن مشکل انعطافپذیری تراکنشها و راهکاری جامع برای مشکل مقیاسپذیری شبکههای بلاکچین در نظر بگیریم. عملکرد سگویت اساسا مربوط به تفکیک اطلاعات تراکنش و اطلاعات شاهد (امضای تراکنش) است و بدین ترتیب، فرصت کمی برای تغییر آیدی تراکنش به وجود میآید. در این مقاله ضمن توضیح درباره چیستی سگویت، درباره نحوه عملکرد، مزایا، معایب و کیف پولهایی که از سگویت پشتیبانی میکنند، صحبت کردیم. نظر خود را درباره سگویت با ما درمیان بگذارید.