سگویت (Segwit) یک بهروزرسانی بسیار مهم در پروتکل بیت کوین بود که ظرفیت این شبکه را در سال ۲۰۱۷ به میزان قابل توجهی افزایش داد. هنگامی که یک بلاکچین یا ارز دیجیتال نیاز به بهروزرسانی یا بهبود دارد، باید تغییراتی در پروتکل آن ایجاد شود و این اتفاق برای بیت کوین نیز به واسطه آپدیت Segwit رخ داد. در این مقاله از ایران بروکر، قصد داریم هر آنچه را که باید در مورد بهروزرسانی سگویت بدانید توضیح دهیم؛ اینکه سگویت چیست؟ چگونه کار میکند و چه تاثیراتی روی شبکه بیت کوین دارد؟ همراه ما باشید.
سگویت چیست؟
همانطور که در بخش مقدمه گفتیم، سگویت یک بروزرسانی در کدهای بلاکچین بیت کوین است. هدف اصلی آپدیت سگویت بهبود ظرفیت پردازش تراکنش این بلاک چین است. سگویت با تفکیک یک تراکنش به دو بخش، وزن تراکنشها را کاهش داده و تعداد تراکنشهایی را که میتوان در یک بلوک گنجاند را افزایش میدهد.

بخش اول یک تراکنش شامل «آدرس کیف پول فرستنده و گیرنده» و بخش دوم «امضای تراکنش» است که حاوی «داده های شاهد» (witness data) میباشد. سگویت دادههای شاهد را از بلوک اصلی حذف کرده و با این کار حجم اطلاعات تراکنش را به طور قابل توجهی کاهش می دهد. در نتیجه تراکنشها فضای کمتری را اشغال میکنند و میتوان تراکنشهای بیشتری را در هر بلوک جا داد؛ امری که در نهایت ظرفیت شبکه بیتکوین را تا حد زیادی افزایش میدهد و در بلندمدت تاثیر مثبتی روی قیمت بیت کوین دارد.
علاوه بر این، سگویت یک نقص در پروتکل بیت کوین را برطرف کرد که به کاربران اجازه میداد هش تراکنش ها (شناسه تراکنش) را تغییر دهند. تغییر تنها یک کاراکتر در یک امضای دیجیتال منجر به تولید یک هش کاملاً جدید میشود.
از آنجایی که در سگویت، بخش امضای (Signature) تراکنش از «دادههای تراکنش» جدا میشود، دیگر امکان تغییر شناسه تراکنش وجود ندارد. در نتیجه، سگویت مشکل چکشخواری تراکنش (Transaction malleability) را در بلاکچین بیت کوین حل میکند.

شما میتوانید برای مقایسه قیمت بیت کوین و مقایسه کارمزد بیت کوین به وبسایت ایران بروکر مراجعه کنید.
چکش خواری تراکنش بیت کوین به چه معناست؟
برای اینکه ویژگی چکش خواری یا اصلاحپذیری تراکنش های بیت کوین را درک کنید، بهتر است با کارکرد تراکنشها در این شبکه آشنا شوید.
در ادامه دو مثال خواهیم زد تا به شما نشان دهیم که تراکنشهای بیتکوین چگونه کار میکنند. اولی تراکنش عادی بیت کوین است. دومی تراکنشی است که در آن یک کاربر از قابلیت «چکشخواری تراکنش» برای سرقت بیت کوین از کاربری دیگر استفاده میکند.
تراکنش عادی بیت کوین
فرض کنید لوسی میخواهد ۱۰ بیت کوین (BTC) به دوستش جود ارسال کند. برای انجام این کار، لوسی و جود به دو نوع اطلاعات نیاز دارند:
- آدرس عمومی
- کلید خصوصی
آدرس عمومی مانند یک آدرس ایمیل بیت کوین است. آدرس عمومی مکانی دیجیتالی است که لوسی بیت کوین را به آن ارسال می کند. جود یک آدرس عمومی برای دریافت بیت کوین دارد. آدرس های عمومی توسط کل شبکه قابل مشاهده است.

اگر آدرسهای عمومی را آدرسهای ایمیل در نظر بگیریم، کلیدهای خصوصی همان رمز عبور هستند. آنها ثابت میکنند که آدرس های عمومی (و در نتیجه خود بیت کوین) متعلق به لوسی و جود است. فقط لوسی میتواند کلید خصوصی لوسی را ببیند و فقط جود می تواند کلید خصوصی خودش را ببیند.
حال لوسی چگونه ۱۰ BTC را به جود ارسال میکند؟
۱. لوسی درخواست خود را به شبکه مخابره میکند
این درخواست شامل آدرس عمومی جود، مبلغ ارسال شده (10 BTC) و کارمزد تراکنش ماینرها است. همچنین حاوی امضای کلید خصوصی لوسی است که از آن برای اثبات اینکه ۱۰ بیت کوین را در حساب خود دارد، استفاده میکند. به این اطلاعات امضای تراکنش یا داده های شاهد (witness data) میگویند.
۲. ماینرها تراکنش را پردازش میکنند
آنها اطلاعات لوسی را با اطلاعات جود کنار هم قرار میدهند و آن را هش میکنند. این یعنی آنها اطلاعات را به یک خط کد کامپیوتری تبدیل میکنند. این کد هش تراکنش یا شناسه تراکنش (Transaction ID) نامیده میشود.
۳. صفهای تراکنش، در انتظار پردازش
اگر لوسی کارمزد تراکنش پایینی را پرداخت کرده باشد، ممکن است برای مدت طولانی در صف بماند! مثل سفارش غذا در رستوران است. اگر به گارسون انعام ندهید، ممکن است زمان زیادی طول بکشد تا غذای شما برسد! لوسی میتواند با ارسال مجدد تراکنش با کارمزد بالاتر، روند را تسریع کند. اکنون شناسه تراکنش به شناسه تراکنش سایر کاربران اضافه شده و دوباره رمزگذاری میشود. این روند تا رسیدن به سقف 1 مگابایت اطلاعات تراکنش و تشکیل بلاک ادامه مییابد.
۴. تایید بلوک
بلاک مورد نظر به شبکه مخابره شده و اگر بیش از نیمی از گره ها موافق باشند که اطلاعات موجود در آن معتبر است، میتوان آن را تأیید و به زنجیره (بلاکچین) اضافه کرد. در آخر جود ۱۰ BTC از لوسی دریافت میکند.
بیشتر تراکنش های بیت کوین به این صورت است. در مرحله بعد، به شما نشان خواهیم داد که چکش خواری یا اصلاحپذیری تراکنش چه تاثیری بر شبکه میگذارد و سپس خواهیم دید که سگویت چگونه آن را برطرف میکند؟
چکش خواری تراکنش چگونه عمل میکند؟
در اینجا به شما نشان خواهیم داد که جود چگونه میتواند از چکشخواری تراکنش سواستفاده کند تا لوسی را فریب دهد تا به جای ۱۰ بیت کوین، ۲۰ بیت کوین به او ارسال نماید.
ویژگی اصلاحپذیری یا چکش خواری تراکنش (Transaction Malleability) به جود امکان میدهد تا دادههای شاهد لوسی را قبل از تایید تراکنش تغییر دهد. او شناسه تراکنش (TXID) را بدون تغییر خود تراکنش (ارسال ۱۰ BTC از لوسی به جود) تغییر میدهد.
هنگامی که این تراکنش تغییر یافته توسط شبکه تایید شد، تراکنش اصلی لغو میشود. اکنون جود با لوسی تماس میگیرد تا شکایت کند که ۱۰ بیت کوین را دریافت نکرده است، در حالی که واقعا اینطور نیست!
لوسی چک میکند و میبیند که تراکنش اصلی انجام نشده است. سپس کارمزد تراکنش بالاتری را پرداخت کرده و دوباره تراکنش را ارسال میکند. این تراکنش جدید توسط شبکه پردازش میشود و سپس جود 10 بیت کوین دیگر دریافت میکند!
لوسی، ماینرها و بقیه گرههای شبکه هیچ راهی برای آگاهی از این کلاهبرداری ندارند. هنگامی که تراکنش ها تایید و به بلاک چین اضافه شد، نمیتوان آنها را تغییر داد یا حذف کرد.
حال، SegWit چیست و چه کاری برای حل مشکل اصلاحپذیری تراکنش انجام میدهد؟
حل ویژگی چکش خواری تراکنش توسط Segwit
سگویت یک بروزرسانی (Patch) است که توسط پیتر ویل (Pieter Wuille) برای جلوگیری از تغییرپذیری تراکنش طراحی شده است. روش کار آن بسیار ساده است. برای جلوگیری از سواستفاده از «داده های شاهد» برای تغییر شناسه تراکنش (TXID)، ویل پیشنهاد حذف آنها را از تراکنش داد!

نام کامل SegWit این است: «Segregated witness»، یعنی شاهد جدا شده. سگرگیت (Segregate) در زبان انگلیسی به معنای حذف یا جدا کردن است، بنابراین سگویت به معنای حذف داده ها (دادههای شاهد) میباشد.
با جدا شدن این دادهها، یک زنجیره فرعی (جانبی) ایجاد شده و «دادههای شاهد» در خارج از زنجیره اصلی ذخیره میشوند. این امر از تغییر شناسه تراکنش توسط کاربران شبکه جلوگیری میکند!

نکته هوشمندانه در مورد سگویت این است که “Backward Compatible” است، یعنی با زنجیره قبلی سازگار است. این یعنی گره هایی که با پروتکل SegWit Bitcoin به روز می شوند همچنان می توانند با گره هایی که به روز نشده اند کار کنند. این نوع به روز رسانی سافت فورک (Soft fork) نامیده می شود. بهروز رسانیهایی که با بلاکچین قبلی سازگار نیستند، هارد فورک (Hard forks) نامیده میشود. هارد فورک ها می توانند بلاکچینها را به دوبخش تقسیم کنند و منجر به ایجاد رمزارزهای جدید شوند.
پیتر ویل می خواست سگویت “Backward Compatible” باشد و به همین خاطر یک سافت فورک را پیشنهاد داد. برای انجام این کار، او باید آن را به گونهای طراحی میکرد که «دادههای شاهد» همچنان روی بلاک چین اصلی ثبت شود. راه حلی که او پیدا کرد رمزگذاری تمام داده های شاهد یک بلوک در زنجیره فرعی و ذخیره این root code در بلاک چین اصلی بود. این آپدیت به بلاکچین بیت کوین اجازه داد تا چکشخواری یا اصلاحپذیری تراکنشها را بدون نیاز به هارد فورک برطرف کند.
اکنون میدانیم که بروزرسانی سگویت چگونه از اصلاحپذیری تراکنش ها جلوگیری میکند، اما داستان سگویت به همین جا ختم نمی شود. سگویت شبکه بیت کوین را به گونه ای تحت تاثیر قرار داده که پیتر ویل (Pieter Wuille) هنگام ساختنش حتی به آن فکر هم نمیکرد!
در ادامه به مشکل مقیاسپذیری بلاکچین بیت کوین و شبکه لایتنینگ (Lightning Network) میپردازیم که کاملا به سگویت مرتبط است.
مقیاس پذیری سگویتی چیست؟
ابتدا بیایید ببینیم که مقیاس پذیری چیست. مقیاس پذیری (Scalability) توانایی یک شبکه در پردازش حجم عظیمی از تراکنش ها بدون کاهش سرعت است. اگر یک شبکه مقیاس پذیر یا قابل گسترش باشد، می تواند تراکنش ها را به همان سرعت یا حتی سریعتر پردازش کند. متأسفانه، اکثر رمزارزها، تراکنشها را با سرعت کمتری پردازش میکنند.
تقریبا هر رمزارزی (از جمله بیت کوین) با مشکل مقیاس پذیری مواجه است زیرا تراکنش ها به واسطه اجماع بین اعضای شبکه پردازش میشوند. بیش از نیمی از گرهها در شبکه بیتکوین باید قبل از اضافه شدن به بلاک چین، توافق کنند که تراکنش معتبر است. هر چه تعداد گره ها در شبکه بیشتر باشد، مدت زمان بیشتری برای رسیدن به توافق یا اجماع نیاز خواهد بود.
توسعهدهندگان بیتکوین مدتهاست که درباره راههای مختلف برای افزایش مقایسه این شبکه بحث میکنند. با افزایش محبوبیت این شبکه نیز این مشکل حادتر میشود، بنابراین زمان برای یافتن راهحل در حال سپری شدن است.
هنگامی که پیتر ویل پروتکل سگویت را ایجاد کرد، به طور تصادفی مقیاس پذیری شبکه را نیز بهبود بخشید! پیش از این سافت فورک، «داده های شاهد» ۶۵ درصد از هر بلاک بیت کوین را به خود اختصاص میدادند. اکنون با حذف داده های شاهد، بلاک های بیت کوین فضای بیشتری برای ذخیره اطلاعات تراکنش دارند.
اکنون هر بلاک دارای یک وزن بلاک (block weight) مشخص است که حداکثر ۴ مگابایت است. وزن یک بلوک ترکیبی از ۱ مگابایت اطلاعات ذخیره شده در بلاک چین اصلی و داده های شاهد ذخیره شده در یک زنجیره جانبی است. دادههای جدا شده به شبکه اجازه می دهد تا تراکنش های بیشتری را بدون تغییر اندازه کلی بلاک چین پردازش کند.
بنابراین، اگر کسی از شما بپرسد «مقیاس پذیری سگویتی چیست؟»، می توانید به آنها بگویید که این روشی برای پردازش تراکنش های بیشتر در شبکه بیت کوین است که با حذف دادههای شاهد از تراکنشها بدون تأثیر بر اندازه بلاک چین، شبکه را سبکتر میکند.
در بخش بعد، در مورد یکی دیگر از تحولات هیجانانگیزی که سگویت بسترساز آن بود صحبت کنیم؛ شبکه لایتنینگ!
شبکه لایتنینگ
شبکه لایتنینگ راه حل دیگری برای مشکل مقیاس پذیری بیت کوین است که بدون شاهد جدا شده (segregated witness) کار نخواهد کرد. این شبکه به کاربران امکان میدهد تا کانال های پرداخت را برای انجام تراکنشهای خرد ایجاد کنند. بیایید از مثالی که در بالا زدیم دوباره استفاده کنیم:

جود برای لوسی کار میکند و روزانه 1 BTC از او (به عنوان حقوق) دریافت میکند. لوسی و جود به جای پردازش تراکنش در بلاکچین اصلی، یک کانال پرداخت خصوصی راهاندازی کردند که در آن لوسی میتواند بیتکوین را مستقیماً به جود ارسال کند.. هر پرداخت خرد باید توسط لوسی و جود امضا شود. به همین دلیل به آن تراکنشهای چند امضایی یا مولتی سیگ (multi-signature) نیز میگویند.
جود ده روز برای لوسی کار میکند. در پایان این ده روز، لوسی و جود کانال پرداخت را می بندند. در این مرحله، تمام پرداختهای خرد در قالب یک تراکنش ۱۰ بیتکوینی به شبکه مخابره میشود.
کانالهای پرداخت پایه و اساس شبکه لایتنینگ محسوب میشوند که دور از بلاک چین اصلی انجام میشود. تراکنش ها تنها زمانی به بلاک چین اصلی اضافه میشوند که کاربران کانال پرداخت را ببندند. حال، سگویت چه نقشی در این فرآیند دارند؟
پرداخت های خرد یا میکروپیمنتها (Micropayments) ، تراکنش های تایید نشده ای هستند که تنها زمانی تایید می شوند که کانال پرداخت بسته شود و کل موجودی تراکنش ها توسط شبکه پردازش شود. بدون قابلیت سگویت ، کاربران می توانستند شناسه تراکنش ها را (در تراکنش های چند امضایی) با سواستفاده از ویژگی چکشخواری تراکنش تغییر دهند که این منجر به هرج و مرج در سیستم میشد.
SegWit 2X چیست؟
توسعه دهندگان پس از آپدیت سگویت، هارد فورک دیگری را برای پیاده سازی آن پیشنهاد کردند که SegWit 2X یا S2X نامیده میشود. درSegWit 2X، تغییرات مشهودی در دسته بندی تراکنش ها (Transaction Batching) و همچنین افزایش اندازه بلاک ایجاد میشود. با این حال، باید به این نکته توجه کرد که اندازه بلوک بزرگتر به دلیل حجم بالای اطلاعات، بار سنگین تری را بر ماینرها و گرههای شبکه تحمیل میکند.

گفتنی است، پیادهسازی SegWit 2X نیازمند تغییراتی اساسی در قوانین حاکمیتی بیت کوین بود. در نهایت، توسعه دهندگان هرگز در مورد اجرای آن به توافق نرسیدند و این آپدیت به حالت تعلیق درآمد.
Nested SegWit و Native SegWit
Native SegWit که به آن bech32 نیز گفته میشود، اساساً یک نسخه ارتقا یافته از پروتکل Nested SegWit است. در فرمت bech32، سگویت سرعت تراکنش بیشتر، کارمزد کمتر و مکانیسم های تشخیص خطای قویتری دارد.
علاوه بر این، تمام آدرسهای bech32 با حروف کوچک هستند که خوانایی آنها را بهبود میبخشد. توجه به این نکته مهم است که کیف پول های سگویتی، غیر سگویتی و نستد سگویتی کاملاً با یکدیگر سازگار هستند. از سوی دیگر، ممکن است تمام صرافیها و والتها از تراکنشهای سگویتی پشتیبانی نکنند.

معایب آپدیت سگویت
مزایای چشمگیر بروزرسانی سگویت می تواند قطعا معایب آن را تحت الشعاع قرار میدهد. با این حال، بر نیست با چالشهای آن نیز آشنا شوید. اول از همه، بسیاری از گره ها از SegWit استفاده نمی کنند و تراکنش های سگویتی در شبکه بیت کوین به سرعت سایر شبکه ها نیست. علاوه بر این، بسیاری از کارشناسان همچنین ادعا می کنند که ارتقای سگویت به طور تصادفی مشکل مقیاس پذیری را حل کرده است. علاوه بر این، این سافت فورک منجر به دودستگی در بین کامیونیتی بیت کوین شده است.
جمع بندی
سگویت که به عنوان یک بهروزرسانی پروتکل برای حل مشکل چکشخواری تراکنشهای بیت کوین طراحی شد، توانست مشکل مقیاس پذیری این بلاک چین را نیز تا حدی زیادی حل کند. این آپدیت با جدا کردن «دادههای شاهد» از دادههای تراکنش عملا امکان تغییر شناسههای تراکنش (TXID) را از بین میبرد. اکنون میدانیم سگویت چیست، چگونه کار می کند و چه تاثیرات بزرگی روی شبکه بیت کوین داشته است. نظر شما در مورد این بروزرسانی چیست؟ آیا تا به حال با کیف پول سگویت بیت کوین تراکنش انجام دادهاید؟
سوالات متداول
سگویت چیست؟
سگویت (SegWit) یک بروزرسانی در پروتکل بیت کوین است که در آگوست ۲۰۱۷ پیاده سازی شد. این اپدیت امضای تراکنش (داده های شاهد) را از خود داده تراکنش جدا کرده و در نتیجه به بهبود مقیاس پذیری و کاهش هزینههای تراکنش کمک میکند.
سگویت چگونه مقیاس پذیری بیت کوین را بهبود میبخشد؟
با جدا کردن داده های امضا از داده های تراکنش، SegWit به طور موثر محدودیت اندازه بلوک را بدون تغییر اندازه واقعی بلوک افزایش میدهد. این اجازه میدهد تا تراکنشهای بیشتری در هر بلوک گنجانده شود، در نتیجه توان عملیاتی کلی بلاکچین بیت کوین را بهبود میبخشد و به کاهش ترافیک در زمان پیک شبکه کمک میکند.
مزایای استفاده از سگویت برای کاربران چیست؟
کاربرانی که از سگویت استفاده میکنند میتوانند به دلیل افزایش ظرفیت بلاک، زمان تراکنش سریعتر و ویژگیهای امنیتی پیشرفته، از هزینههای تراکنش کمتر بهره ببرند. علاوه بر این، SegWit به کاهش مسائل مربوط به چکشخواری تراکنشها کمک میکند، که میتواند عملکرد راهحلهای لایه دو مانند شبکه لایتنینگ را بهبود بخشد.
آیا همه کیف پول ها و صرافی ها از سگویت پشتیبانی می کنند؟
خیر، همه کیف پولها و صرافیها از این سافت فورک پشتیبانی نمیکنند.
آیا هنوز هم میتوان از بیت کوین غیر سگویتی استفاده کرد؟
بله، شما همچنان میتوانید بدون استفاده از سگویت از بیت کوین استفاده کنید. با این حال، عدم استفاده از آن ممکن است منجر به پرداخت کارمزد بیشتر و کندتر شدن زمان تراکنشها شود، بهویژه در زمانهایی که ازدحام شبکه زیاد است.
آیا SegWit یک بروزرسانی دائمی در شبکه بیت کوین است؟
بله، سگویت یک آپگرید دائمی است که در پروتکل بیت کوین ادغام شده است. با این حال، پذیرش آن توسط کاربران، کیف پولها و صرافیها متفاوت است، بنابراین در حالی که این فناوری وجود دارد، ممکن است تا زمانی که بخش بزرگتری از شبکه آن را قبول نکنند، مزایای آن به طور کامل محقق نشود.
نظرات کاربران