سگویت (SegWit) چیست و چه کاربردی در شبکه بیت کوین دارد؟
افزایش تعداد کاربرها و استفاده از شبکه بیت کوین، توسعهدهندهها را مجبور کرد فکری به حال سرعت و کارمزدهای شبکه کنند. سرانجام آپدیت سگویت بیت کوین سال ۲۰۱۷ روی شبکه اصلی اجرا شد.
در سالهای ابتدایی فعالیت شبکه بیت کوین، به علت کمبودن تعداد کاربرها و تراکنشها، قدرت پردازش شبکه زیر فشار زیادی قرار نداشت. به مرور که مردم سراسر دنیا با فناوری بلاک چین و دنیای کریپتوکارنسی بیشتر آشنا شدند و همچنین به خاطر محدود بودن تعداد کل بیت کوینها، هجوم بیشتری به این شبکه آورده شد. با افزایش تعداد صرافیها و کیف پولها، تعداد آدرسهای فعال و تراکنشهای روزانه بیشتر و بیشتر شد تا جایی که توسعهدهندههای بیت کوین مجبور به ارتقای این شبکه شدند. آپدیت سگویت بیت کوین را میتوان مهمترین ارتقاء این شبکه در نظر گرفت که در سال ۲۰۱۷ روی شبکه اصلی پیادهسازی شد.
هدف از این آپدیت تغییر در نحوه ذخیره دادههای تراکنشها برای صرفهجویی در مقدار فضای بلاکها بود. پیادهسازی چنین تغییراتی در یک شبکه غیرمتمرکز کار بسیار مهم و دشواری است که خوشبختانه توسعهدهندههای بیت کوین توانستند آن را با موفقیت روی بزرگترین بلاک چین غیرمتمرکز دنیا به انجام برسانند. اگر شما هم علاقه دارید بدانید «سگویت» (SegWit) چیست و دقیقا چه عملکری دارد، تا انتهای این مطلب همراه ما باشید.
سگویت (SegWit) چیست؟
«سگویت» (SegWit) کوتاهشده عبارت Segregated Witness، یک پروتکل ارتقا شبکههای بلاک چینی است که ایده آن اولین بار در سال ۲۰۱۵ شکل گرفت. هدف سگویت کمک به حل مشکل دیرینه بلاک چینها یعنی «مقیاسپذیری» (Scalability) یا افزایش سرعت پردازش تراکنشهاست.
در این مقاله بیشتر میخواهیم در مورد آپدیت سگویت بیت کوین صحبت کنیم. میدانیم که میانگین مدت زمان ساخت بلاک در شبکه بیت کوین حدود ۱۰ دقیقه است. هر بلاک هم از مجموعهای از تراکنشها تشکیل میشود. در نتیجه، اندازه بلاکها نقش مهمی در تعیین تعداد تراکنشهای تأییدشده در هر ۱۰ دقیقه خواهد داشت. در حال حاضر در هر ثانیه، حدود ۷ تراکنش در این شبکه تأیید میشوند. یعنی «TPS» (سرعت پردازش تراکنش در ثانیه) شبکه بیت کوین حدود ۷ است.
هر تراکنش بیت کوین شامل دیتای مشخصی در قالب ورودی، خروجی، مبلغ و امضای دیجیتال است که تمام اینها مقداری از فضای درون بلاک را اشغال میکنند. توسعهدهندهها با ایده آپدیت سگویت تصمیم گرفتند که امضاهای دیجیتال را از دادههای هر تراکنش جدا کنند. عبارت Segregated به معنای تفکیک و جداسازی، به همین مسأله اشاره دارد.
کلمه Witness هم در شبکه بیت کوین به معنای امضای دیجیتال است. با خارج کردن امضای تراکنشها از درون بلاک، فضای خالی بیشتری ایجاد میشود و به این ترتیب تعداد تراکنش بیشتری را میتوان در هر بلاک ذخیره کرد که باعث افزایش TPS یا سرعت پردازشی کل شبکه میشود.
عملیات ارتقاء در شبکههای غیرمتمرکز به سادگی سیستمهای متمرکز نیست و باید درصد مشخصی از نودهای اصلی شبکه به انجام آن رأی مثبت دهند. آپدیت سگویت بعد از اینکه در سال ۲۰۱۵ توسط Pieter Wuille و همکارانش به جامعه بیت کوین معرفی شد، ۲ سال طول کشید تا سرانجام در ۲۳ آگوست ۲۰۱۷ و در قالب یک «سافت فورک» (Soft Fork) روی شبکه اصلی پیادهسازی شد.
سگویت فقط مختص بلاک چین بیت کوین نیست و پروژههای دیگری مثل لاین کوین و… هم از آن استفاده کردهاند. در حقیقت آپدیت سگویت ابتدا روی شبکه لایت کوین تست و پیادهسازی شد و پس از آن نوبت به شبکه بیت کوین رسید. این آپدیت مزایای مختلفی از جمله بهبود سرعت پردازش تراکنشها و فضای بلاکها برای شبکه به همراه دارد. سگویت همچنین یکی از مشکلات مهم بلاک چین به نام «دستکاری در تراکنش» (Transaction Malleability) را حل کرد که در ادامه بیشتر در موردش توضیح میدهیم.
مزایای سگویت
با پیادهسازی آپدیت سگویت، شبکه بیت کوین از سه جنبهی ظرفیت، سرعت پردازش و امنیت بهبود یافت. در حقیقت از سافت فورکها برای همین منظور در شبکههای غیرمتمرکز استفاده میشود تا بدون ایجاد یک زنجیره فرعی، عملکرد و راندمان شبکه ارتقا یابد. در ادامه با مزایای سگویت بیشتر آشنا میشویم.
افزایش ظرفیت شبکه
همانطور که متوجه شدیم، سگویت دادههای مربوط به امضاها را از ورودی تراکنشها جدا میکند تا فضای بیشتری در هر بلاک ایجاد شود. البته وجود امضاهای دیجیتال برای انجام تراکنشها امری الزامی است. بدون امضای دیجیتال، نمیتوان مطمئن شد که فرستنده واقعی تراکنش کدام کاربر است. ولی ذخیرهی اطلاعات مربوط به امضاها میتواند در خارج از بلاک انجام شود و سگویت نیز همین کار را میکند.
جالب است بدانید که امضاهای دیجیتال فضای بیشتری از خود تراکنشها، یعنی حدود ۶۵ درصد فضای هر بلاک را اشغال میکنند. با جداکردن این امضاها از ورودی تراکنشها، تا ۴ برابر فضای بیشتری برای تراکنشها ایجاد میشود. لازم به ذکر است که حجم هر بلاک بیت کوین به ۱ مگابایت محدود است. اما اگر در یکی از مرورگرهای بلاک چین بیت کوین مثل explorer.btc.com نگاهی به حجم بلاکها بیندازیم، حجمهای ۱.۲ مگابایت، ۱.۵ مگابایت و یا حتی ۲ مگابایت هم به چشم میخورد. به نظر شما علت این موضوع چیست؟
اگر مقاله «انواع آدرسهای بیت کوین» را مطالعه کرده باشید، میدانید که قبل از اجرای آپدیت سگویت، آدرسهای بیت کوین از نوع «لگسی» (Legacy) بودند. (همان آدرسهایی که با عدد ۱ شروع میشوند). این آدرسها طبق کد اولیه بیت کوین کار میکنند.
ساتوشی (خالق ناشناس بیت کوین) محدودیت ۱ مگابایت را برای ظرفیت هر بلاک در نظر گرفته و نودهای قدیمی که هنوز آپدیت سگویت را اجرا نکردهاند، بلاکهایی که حجمشان بیش از ۱ مگابایت باشد را تأیید نمیکنند؛ ولی نودهای آپدیتشده به سگویت، این بلاکها میشناسند و میتوانند آنها را تأیید کنند. اما چه میشود که حجم یک بلاک بیشتر میشود؟
دلیل این موضوع به تراکنشهای ارسالی از آدرسهای سگویت برمیگردد. کدنویسی بیت کوین به گونهای است که بعد از اجرای آپدیت سگویت، نودهای جدید میتوانند با حذف اطلاعات غیرضروری، اطلاعات مفید بیشتری (مثل نتیجه پردازشهای off-chain) را در بلاکها قرار دهند. به این ترتیب و روی کاغذ، حجم هر بلاک بیت کوین به کمک سگویت تا ۴ مگابایت هم میتواند رشد کند.
افزایش سرعت شبکه
سگویت با افزایش تعداد تراکنشهای هر بلاک باعث افزایش سرعت شبکه میشود. با وجود اینکه هنوز هم مدت زمان لازم برای ساخت هر بلاک، همان ۱۰ دقیقه است، تعداد تراکنشهایی که در این مدت پردازش میشوند بیشتر و در نتیجه TPS کل شبکه نیز بیشتر میشود.
افزایش سرعت تراکنشها باعث کاهش هزینه کارمزدها نیز میشود. تا قبل از آپدیت سگویت، کارمزدهای ۳۰ دلاری و بیشتر نیز در شبکه بیت کوین دیده میشد، ولی بعد از اجرای سگویت، کارمزدها به کمتر از ۱ دلار کاهش پیدا کرد. مقدار این کارمزد در زمان نگارش این مطلب حدود ۶-۷ دلار است.
حل مشکل دستکاری تراکنشها
یکی از مشکلات شبکه بیت کوین، امکان دستکاری در اطلاعات مربوط به امضای تراکنشها قبل از تأیید و قرارگرفتن آنها در زنجیره اصلی بود. در اوایل این مطلب گفتیم که این نوع دستکاری در اطلاعات تراکنشها، Malleability Transaction نامیده میشوند. در اثر چنین کاری ممکن است اطلاعات غیرمعتبر برای همیشه روی زنجیره ثبت شوند.
به کمک آپدیت سگویت، امضاهای تراکنشها دیگر بخشی از دادههای اصلی تراکنشها نیستند و به این ترتیب دیگر امکان دستکاری در دادههای تراکنشها وجود نخواهد داشت. سگویت علاوه بر حل مشکل دستکاری تراکنشها، کمک زیادی نیز به پیادهسازی پروتکلهای لایه دوم و قراردادهای هوشمند در بلاک چین میکند.
ارتباط سگویت و شبکه لایتنینگ
با حل مشکل دستکاری تراکنشها توسط پروتکل سگویت، راه برای سایر راهحلهای Scaling (یا افزایش سرعت) شبکه هموارتر شد. Scaling میتواند در لایههای مختلفی انجام شود. پروتکل سگویت یکی از راهحلهای لایه اول است. دیگر راهحلهای لایه اول میتوان به «شاردینگ» (Sharding) و «هارد فورک» (Hard Fork) اشاره کرد. برخی راهحلهای Scaling در یک لایه مجزا روی بلاک چین اصلی پیادهسازی میشوند که به آنها راهحلهای لایه دوم میگوییم و «شبکه لایتنینگ» (Lightning Network) یک نمونه از آنهاست.
شبکه لایتنینگ به عنوان یک پروتکل لایه دوم روی شبکه بیت کوین فعالیت میکند. این شبکه قادر است پردازش تراکنشهای بیت کوین را به صورت «خارج از زنجیره» (همان Off-Chain) انجام دهد. به این ترتیب تراکنشهای بیشتر در مدت زمان کوتاهتری پردازش میشوند و فقط نتیجه آنها با سازوکار مشخصی روی بلاک چین اصلی ثبت میشود.
شبکه لایتنینگ منحصرا برای بیت کوین طراحی شد اما پروژههای دیگری هم در حال کار و پیادهسازی آن روی شبکه خود هستند. اگر مایلید در این باره اطلاعات بیشتری بدست آورید، میتوانید مقاله «شبکه لایتنینگ چیست؟» را بخوانید.
سگویت چه ارتباطی با سگویت 2x دارد؟
همانطور که گفتیم، سگویت یک سافت فورک است که روی شبکه بیت کوین اجرا شده است. مزیت سافت فورکها Backward Compatible بودن آنهاست؛ به این معنی که نودهایی که آپدیت جدید را نصب نکرده باشند نیز همچنان میتوانند با نودهای جدید ارتباط برقرار کنند. سگویت سایز اصلی بلاکها یعنی همان ۱ مگابایت را تغییری نمیدهد و فقط با تکنیکهای دیگری، فضای بیشتری در بلاکها ایجاد میکند. «سگویت 2x» (SegWit 2x) راهحل دیگری برای ارتقاء شبکه بیت کوین بود که تصمیم داشت سایز اصلی بلاکها را به ۲ مگابایت افزایش دهد.
تغییر در اندازه پیشفرض بلاکها یک تغییر بنیادی محسوب میشود و پیادهسازی آن نیازمند یک هارد فورک در بلاک چین است. پس تفاوت SegWit با SegWit 2x در این است که هدف سگویت دوم علاوه بر تغییر در نحوه ذخیره تراکنشها، افزایش سایز اصلی بلاکها نیز بود. درست است که افزایش سایز بلاکها سرعت پردازش شبکه را نیز بیشتر میکند، اما پیچیدگیهای فنی و حجم پردازشی نودها نیز افزایش پیدا میکند. به همین دلیل، جامعه توسعهدهندههای بیت کوین برای پیادهسازی آن به اجماع نرسیدند و سرانجام برنامه SegWit 2x کنسل شد.
تفاوت نستد سگویت (Nested SegWit) و نیتیو سگویت (Native SegWit)
در حال حاضر دو نوع آدرس سگویت در شبکه بیت کوین وجود دارد. آدرسهای Nested SegWit به عنوان نسل اول که به آنها آدرسهای Compatibility یا P2SH نیز گفته میشود. نسل بعدی و پیشرفتهتر، Native SegWit نام دارد که به نوعی نسخه آپدیتشده سگویت است و به آنها Bech32 هم گفته میشود. تراکنشهای ارسالی از این آدرسها سرعت بیشتری داشته و مکانیزم تشخیص خطای بهتری دارند. آدرسهای Bech32 از ترکیب اعداد و حروف کوچک انگلیسی (Lowercase) تشکیل شدهاند و خوانایی بیشتری دارند.
باید به این نکته توجه داشته باشیم که تمام تراکنشها از قبیل Legacy و Nested SegWit و Nateive SegWit روی یک بلاک چین ثبت میشوند و از همه آدرسها میتوان به دیگری بیت کوین ارسال کرد. یعنی بلاک چین همه انواع تراکنشها را میشناسد و توانایی پردازش آنها را دارد؛ اما ممکن است پلتفرم برخی صرافیها یا برنامههای کیف پول، از برخی آدرسها پشتیبانی نکنند و مثلا امکان ارسال تراکنش از یک آدرس لگسی به مقصد سگویت وجود نداشته باشد. پس هنگام عملیات واریز و برداشت در این پلتفرمها باید نسبت به این نوع محدودیتها آگاه باشیم.
سخن پایانی
آپدیت سگویت بیت کوین بزرگترین پروتکل ارتقا در یک شبکه غیرمتمرکز بود که با موفقیت پیادهسازی و اجرا شد. سگویت با تفکیک امضاهای دیجیتال از ورودی تراکنشها، باعث شد تا ۶۵ درصد فضای خالی بیشتری در بلاکها به وجود آید و در نتیجه تعداد تراکنش بیشتری در هر بلاک قرار بگیرد. به این ترتیب، سرعت پردازش کلی شبکه بیت کوین بهبود یافت و کارمزد تراکنشها نیز تا حد زیادی کاسته شد.
اجرای موفق پروتکل سگویت در شبکه بیت کوین، راه توسعه راهحلهای مقیاسپذیری پروژهها را برای جامعه کریپتو هموارتر ساخت. با ترکیب سگویت و راهحلهای لایه دوم مثل شبکه لایتنینگ، بلاک چینها قادر خواهند بود حجم بیشتری از تراکنشها را پردازش کنند و کارمزدها نیز کاهش پیدا میکند.
برای دریافت مشاوره تخصصی رایگان از کارشناسان ما، اطلاعات خواسته شده رو تکمیل فرمایید.