سگویت چیست؟
در سال ۲۰۱۷، بیتکوین با مشکلی مواجه شد که در شرف فروپاشی جامعه بود. شبکه شاید میتوانست ۳ تراکنش در ثانیه را مدیریت کند. کارمزدها به شدت افزایش یافته بودند. بلاکها پر شده بودند. و هر کسی ایده متفاوتی برای حل آن داشت.
راهحلی که برنده شد، SegWit بود، مخفف Segregated Witness. این راهحل توسط پیتر وویل، یکی از توسعهدهندگان اصلی Bitcoin Core، پیشنهاد شد و نحوه ساختار هر تراکنش بیتکوین را تغییر داد. نه یک تغییر کوچک. یک بازنگری اساسی در نحوه قرارگیری دادهها در داخل یک بلوک. هشت سال بعد، حدود ۹۶٪ از کل تراکنشهای بیتکوین از آدرسهای SegWit استفاده میکنند. اگر در چند سال گذشته بیتکوین خریده یا ارسال کردهاید، تقریباً مطمئناً بدون اینکه بدانید از آن استفاده کردهاید.
مشکل واقعی چه بود؟
بگذارید تصویر سال ۲۰۱۶ را برای شما ترسیم کنم.
بیتکوین محدودیت ۱ مگابایتی برای هر بلوک داشت. ساتوشی این محدودیت را در سال ۲۰۱۰ برای جلوگیری از حملات اسپم اعمال کرد و هیچکس آن را لغو نکرد. بلوکها هر ۱۰ دقیقه یا بیشتر استخراج میشوند. با ۱ مگابایت برای هر بلوک، این یعنی شاید ۱۶۵۰ تراکنش در هر بلوک. اعداد را اجرا کنید و حدود ۲-۳ تراکنش در ثانیه برای کل شبکه بیتکوین خواهید داشت. کل سیاره لولهای به این نازکی را به اشتراک میگذارد.
ضمناً، ویزا در هر ثانیه ۶۵۰۰۰ تراکنش انجام میدهد. پس بله. مشکل همین است.
تا اواخر سال ۲۰۱۶، هر بلاک به دیوار ۱ مگابایتی برخورد میکرد. وقتی دیگر جایی باقی نمیماند، کاربران بیتکوین شروع به پیشنهاد دادن کارمزد تراکنشها به یکدیگر میکنند و سعی میکنند ماینرها را رشوه دهند تا تراکنش آنها را اول انتخاب کنند. کارمزدها سر به فلک کشیدند. ارسال ۱۰ دلار بیتکوین میتوانست ۱۵ دلار کارمزد برای شما داشته باشد. این اصلاً منطقی نبود.
و بعد مشکل عجیبتری وجود داشت. انعطافپذیری تراکنش. سعی میکنم این را ساده نگه دارم. وقتی بیتکوین ارسال میکنید، شبکه برای آن تراکنش یک شناسه ایجاد میکند. قبل از SegWit، آن شناسه از کل تراکنش، شامل امضاها، ساخته میشد. نکته؟ کسی میتواند تراکنش تأیید نشده شما را بگیرد، با رمزگذاری امضا (که از نظر فنی معتبر نگه میدارد) دستکاری کند و در نهایت با یک شناسه متفاوت برای دقیقاً همان پرداخت مواجه شود. همان فرستنده. همان گیرنده. همان مبلغ. شماره شناسه متفاوت.
چرا باید اهمیت بدهید؟ چون Mt. Gox، صرافی که در سال ۲۰۱۴، ۸۴۰،۰۰۰ بیتکوین را از دست داد، دقیقاً از طریق همین باگ مورد سوءاستفاده قرار گرفت. و مهمتر از آن، هر سیستم لایه دومی که بر روی بیتکوین ساخته شده باشد (مانند کانالهای پرداخت) باید تراکنشها را با شناسههایشان ارجاع دهد. اگر این شناسهها بتوانند تغییر کنند، کل ماجرا از هم میپاشد.
بیت کوین همزمان با دو مشکل مواجه بود: بلاکهای خیلی کوچک و شناسههای تراکنش غیرقابل اعتماد. سگویت (SegWit) هر دو را با یک ضربه حل کرد.
نحوه کار SegWit (بدون مدرک علوم کامپیوتر)
یک تراکنش بیتکوین را مانند یک چک در نظر بگیرید. بخشی وجود دارد که میگوید چه کسی به چه کسی و چه مقدار پول پرداخت میکند. سپس امضای شما در پایین آن وجود دارد که قانونی بودن آن را اثبات میکند. قبل از SegWit، هر دو بخش در یک حباب قرار میگرفتند و همه اینها در برابر محدودیت اندازه بلوک ۱ مگابایتی محاسبه میشد.
چیزی که پیتر وویل را آزار میداد این بود: دادههای امضا تقریباً ۶۵٪ از هر تراکنش را مصرف میکردند. بیشتر هر بلوک، آنچه اتفاق افتاده را ثبت نمیکرد. بلکه مدرکی را ثبت میکرد که نشان میداد کسی گفته همه چیز خوب است. این کار بیفایده به نظر میرسید.
ایده او: امضاها را بیرون بکشید. آنها را در بخش مخصوص خودشان به نام «شاهد» قرار دهید. دادههای تراکنش در بلوک اصلی باقی میمانند. دادههای شاهد جداگانه ذخیره میشوند. همچنان توسط هر گره در شبکه بررسی میشوند. فقط وقتی محاسبه میکنید که یک بلوک چقدر پر است، وزن یکسانی ندارند.
در عمل چه اتفاقی افتاد؟ بلاکها از حدود ۱۶۵۰ تراکنش به تقریباً ۲۷۰۰ تراکنش رسیدند. بیتکوین از ۲-۳ تراکنش در ثانیه به حدود ۷-۱۰ تراکنش در ثانیه رسید. هنوز هم در مقایسه با ویزا خندهدار است. اما برای شبکهای که در موفقیت خودش غرق شده بود، این [افزایش تراکنش] فضای نفسگیری بود.

وزن بلوک: محاسبات جدید
اینجاست که قضیه هوشمندانه میشود. حرکت بدیهی این بود که محدودیت ۱ مگابایت را به ۲ مگابایت تغییر دهند. اما این یک هارد فورک میشد. تک تک گرههای شبکه بیتکوین باید بهروزرسانی شوند، در غیر این صورت از زنجیره خارج میشوند. هارد فورکها کثیف هستند. مردم عقب میمانند.
پیتر وویل (Pieter Wuille) ایده هوشمندانهتری ارائه داد. سگویت (SegWit) به جای اندازهگیری بلاکها بر اساس بایتهای خام، از «وزن بلاک» استفاده میکند. دادههای تراکنشهای معمولی به عنوان ۴ واحد وزنی در هر بایت محاسبه میشوند. دادههای شاهد (Witness data) فقط ۱ واحد وزنی در هر بایت محاسبه میشوند. سقف مجاز در مجموع ۴ میلیون واحد وزنی است.
این در عمل به چه معناست؟ یک بلوک بدون داده شاهد، مانند همیشه، حداکثر ۱ مگابایت حجم دارد. گرههای قدیمی چیز عجیبی نمیبینند. یک بلوک پر از تراکنشهای SegWit میتواند از نظر تئوری به نزدیک ۴ مگابایت برسد. در دنیای واقعی، بیشتر بلوکها حدود ۱.۵ تا ۲ مگابایت حجم دارند.
زیبایی این ماجرا این بود: سگویت (SegWit) به عنوان یک سافت فورک عرضه شد. گرههایی که هرگز ارتقا نیافتند، به کار خود ادامه دادند. آنها فقط نمیتوانستند دادههای شاهد (wit data) را در بخش جدید ببینند. بلاکچین بیتکوین تقسیم نشد. هیچ «بیتکوین قدیمی» و «بیتکوین جدید» وجود نداشت. یک زنجیره، یک شبکه، با سازگاری معکوس. همین به تنهایی یک برد مهندسی بود که به اندازه کافی مورد توجه قرار نگرفت.
| قبل از سگویت | بعد از سگویت |
|---|---|
| اندازه بلوک: حداکثر ۱ مگابایت | وزن بلوک: حداکثر ۴ میلیون واحد وزنی |
| حدود ۱۶۵۰ تراکنش در هر بلوک | تقریباً ۲۷۰۰ تراکنش در هر بلوک |
| ۲-۳ تراکنش در ثانیه | ۷-۱۰ تراکنش در ثانیه |
| دادههای امضا درون بلوک | دادههای امضا در فیلد شاهد جداگانه |
| شناسههای تراکنش شامل امضاها میشوند | شناسههای تراکنش فقط بر اساس دادههای اصلی |
اصلاح انعطافپذیری تراکنش
مردم دائماً در مورد مسئله اندازه بلوک صحبت میکنند. انصافاً، این مشکل، پرسروصداترین مشکل بود. اما من فکر میکنم اصلاح انعطافپذیری تراکنشها، بخش مهمتری بود و اکثر افراد خارج از حلقه توسعهدهندگان، به ندرت از آن اطلاع دارند.
خب، قضیه از این قرار است. قبل از SegWit، وقتی کیف پول بیتکوین شما یک تراکنش ایجاد میکرد، شناسه تراکنش (که TXID نامیده میشود) از روی تمام اجزای تراکنش محاسبه میشد. از جمله امضا. و قسمت عجیب ماجرا اینجاست: امضاهای دیجیتال را میتوان در بیش از یک قالب معتبر بیان کرد. همان امضا، همان مدرک مالکیت، اما با توالی بایت کمی متفاوت.
این یعنی کسی میتوانست تراکنش تایید نشده شما را بگیرد، امضا را به روشی متفاوت اما به همان اندازه معتبر، دوباره رمزگذاری کند و آن را پخش کند. شبکه نسخه اصلاحشده را تایید میکرد. همان فرستنده، همان گیرنده، همان مبلغ. اما با یک TXID کاملاً متفاوت.
میدانم. مبهم به نظر میرسد. اما خیلی مهم بود. تصور کنید سیستمی میسازید که در آن مرحله B به شناسه مرحله A ارجاع میدهد. اگر کسی بتواند شناسه مرحله A را پس از ارسال و قبل از تأیید تغییر دهد، مرحله B از کار میافتد. کل زنجیره منطق شما از هم میپاشد.
سگویت (SegWit) این مشکل را با محاسبه TXID فقط از بخشهای غیرشاهد (non-wit) حل کرد. امضا اکنون در فیلد شاهد (witt) و جدا از شناسه (ID) قرار میگیرد. هیچکس نمیتواند آن را دستکاری کند. شناسه تراکنش یک بار برای همیشه قفل شده است.
سگویت و شبکه لایتنینگ
به همین دلیل است که اصلاح انعطافپذیری اهمیت پیدا کرد. شبکه لایتنینگ روشی است که بیت کوین قصد دارد میلیونها پرداخت را در ثانیه مدیریت کند. من و شما یک کانال پرداخت باز میکنیم. ما بیت کوین را بین خودمان و خارج از بلاکچین اصلی ارسال و دریافت میکنیم. وقتی کارمان تمام شد، فقط مانده نهایی خالص روی زنجیره تسویه میشود. یک تراکنش روی بلاکچین بیت کوین به جای صدها تراکنش.
لایتنینگ با ساختن زنجیرههایی از تراکنشها که با شناسههایشان به یکدیگر ارجاع میدهند، کار میکند. اگر کسی بتواند در میانه جریان، شناسه را تغییر دهد، تراکنش بازپرداختی که از شما محافظت میکند، نامعتبر میشود. ممکن است پول خود را از دست بدهید. کل مفهوم کانال پرداخت به پایدار بودن شناسهها بستگی دارد.
سگویت (SegWit) آنها را پایدار کرد. کاملاً بینقص. بدون آن راهحل، پیادهسازی لایتنینگ بسیار پرخطر میبود. و بدون لایتنینگ، بیتکوین برای همیشه در سرعت ۷ تا ۱۰ تراکنش در ثانیه گیر کرده است. این یک شبکه پرداخت نیست. این یک لایه تسویه حساب برای نهنگها است.
من اینطور به آن نگاه میکنم: SegWit فقط یک ارتقا نبود. بلکه سنگ بنای آن بود. Taproot در سال ۲۰۲۱، شبکه لایتنینگ، حتی کتیبههای Ordinals در سال ۲۰۲۳. هیچکدام از اینها بدون تغییرات ساختاری ایجاد شده در آگوست ۲۰۱۷ اتفاق نمیافتند.
قالبهای آدرس: قدیمی، پیچیده و بومی SegWit
آیا تا به حال متوجه شدهاید که برخی از آدرسهای بیتکوین با "1"، برخی با "3" و برخی با "bc1" شروع میشوند؟ این همان بهروزرسانی SegWit است که در کیف پول شما نمایش داده میشود.
آدرسهایی که با "1" شروع میشوند، آدرسهای قدیمی هستند. فرمت قدیمی دارند. از SegWit پشتیبانی نمیکنند. شما بیشترین کارمزد را پرداخت میکنید. اگر کیف پول شما هنوز این آدرسها را به شما میدهد، نرمافزار خود را بهروزرسانی کنید.
آدرسهایی که با عدد "3" شروع میشوند، سگویت (SegWit) هستند. تراکنش بیتکوین به صورت داخلی از سگویت استفاده میکند، اما طوری پیچیده شده است که کیف پولهای قدیمی که چیزی در مورد سگویت نشنیدهاند، همچنان میتوانند بیتکوین را به آن ارسال کنند. ارزانتر از نسخه قدیمی است، اما ارزانترین گزینه نیست.
آدرسهایی که با "bc1q" شروع میشوند، SegWit بومی هستند که Bech32 نیز نامیده میشود. این ویژگی خوبی است. کمترین کارمزد. بهترین بررسی خطا (قالب آدرس، غلطهای املایی را بهتر تشخیص میدهد). و این چیزی است که 96٪ از تراکنشهای امروزی از آن استفاده میکنند.
همچنین ممکن است آدرسهای "bc1p" را ببینید. اینها Taproot هستند، یک ارتقاء جدیدتر از سال 2021 که بر پایه SegWit ساخته شده است. موضوع متفاوت است، اما ارزش دانستن دارد که آنها وجود دارند.
| نوع آدرس | شروع میشود با | سطح هزینه | سگویت؟ |
|---|---|---|---|
| میراث (P2PKH) | ۱ | بالاترین | خیر |
| سگویت پیچیدهشده (P2SH) | ۳ | متوسط | بله (پیچیده شده) |
| سگویت بومی (Bech32) | bc1q | کمترین | بله (بومی) |
| تپروت (Bech32m) | bc1p | کمترین | بله + تاپ روت |
واقعاً چقدر در هزینهها صرفهجویی میکنید؟
این چیزی است که دوستان غیر فنی من واقعاً میخواهند بدانند. چقدر ارزانتر؟
Unchained اعداد را بررسی کرد. یک تراکنش استاندارد SegWit با امضای تکی در مقایسه با تراکنشهای قدیمی، حدود ۵۳٪ در هزینهها صرفهجویی میکند. اگر از تنظیمات چندامضایی ۲ از ۳ (که در سیستم نگهداری رایج است) استفاده کنید، حدود ۶۴٪ صرفهجویی میکنید. این خطای گرد کردن نیست. در یک روز شلوغ که کاربران قدیمی ۳۰ دلار برای هر تراکنش پرداخت میکنند، با SegWit بومی کمتر از ۱۵ دلار پرداخت میکنید.
چرا؟ دوباره محاسبه وزن بلاک. دادههای شاهد به جای ۱ بایت مجازی، ۰.۲۵ بایت مجازی محسوب میشوند. تراکنش شما فضای کمتری در بلاک اشغال میکند. ماینرها هزینه کمتری برای آن دریافت میکنند. خیلی ساده است.
اگر کیف پول بیتکوین شما هنوز آدرسهایی میدهد که با "1" شروع میشوند، در هر ارسال پول خود را دور میریزید. به SegWit بومی تغییر دهید. پنج دقیقه کار. کوینبیس، لجر، ترزور، بلووالت، اسپارو، همه از آن پشتیبانی میکنند. هیچ نکته منفی وجود ندارد.

بحث: چرا SegWit تقریباً هرگز اتفاق نیفتاد؟
این بخش واقعاً جالبتر از خود فناوری است. SegWit قبل از راهاندازی تقریباً از بین رفت.
این مبارزه در ظاهر ساده بود. یک گروه، «مسدودکنندگان بزرگ»، میخواستند محدودیت اندازه بلوک را از ۱ مگابایت به ۸ مگابایت یا بالاتر افزایش دهند. فضای بیشتر، تراکنشهای بیشتر. راه حل سرراست. بیتمین، بزرگترین ماینر بیت کوین در کره زمین، به شدت از این گروه حمایت میکرد. برخی افراد بیتمین را به مخالفت با SegWit متهم میکردند زیرا ASICBOOST را از بین میبرد، یک ترفند مخفی که در تراشههای ماینینگ آنها تعبیه شده بود و به آنها مزیت سرعت نسبت به رقبا میداد. بیتمین این را انکار کرد. دنیای کریپتو حرف آنها را باور نکرد.
اردوگاه دیگر عمدتاً توسعهدهندگان بیتکوین کور و افرادی بودند که نودهای کامل را در خانه اداره میکردند. استدلال آنها این بود: اگر بلاکها را ۸ برابر بزرگتر کنید، برای اجرای یک نود به ۸ برابر پهنای باند، فضای ذخیرهسازی و قدرت پردازش بیشتر نیاز خواهید داشت. چند سال بعد، فقط مراکز داده و مزارع استخراج میتوانند از عهده اعتبارسنجی بلاک چین بیتکوین برآیند. تمرکززدایی بیسروصدا از بین میرود.
من این موضوع را به صورت زنده دنبال میکردم و واقعاً احساس میکردم که بیتکوین ممکن است از این بحث جان سالم به در نبرد. مردم در توییتر، ردیت و کنفرانسها سر هم داد میزدند. حتی یک جلسه غیرعلنی در نیویورک ("توافق نیویورک") برگزار شد که در آن تعدادی از شرکتها سعی کردند معاملهای را برای ترکیب SegWit با افزایش اندازه بلوک در آینده انجام دهند. آن معامله نیز از هم پاشید.
آنچه واقعاً اتفاق افتاد: SegWit در اول آگوست ۲۰۱۷ به عنوان یک سافت فورک فعال شده توسط کاربر فعال شد. ماینرهای بیت کوین که با آن مخالف بودند، همان روز از آن جدا شدند و بیت کوین کش (BCH) را ایجاد کردند. BCH با بلوکهای ۸ مگابایتی (که اکنون ۳۲ مگابایت است) و بدون SegWit عرضه شد. این ارز هنوز هم وجود دارد. با کسری از قیمت بیت کوین معامله میشود.
اول آگوست توسط برخی «روز استقلال بیت کوین» نامیده میشود. نکتهی قابل توجه این بود که اپراتورهای گره، نه شرکتهای استخراج، حرف آخر را در مورد قوانین بیت کوین میزنند. این سابقه بیش از هر خط کد در خودِ ارتقاء SegWit اهمیت دارد.
پذیرش سگویت (SegWit) در حال حاضر
بحث تمام شد. ۹۶٪ از تراکنشهای بیتکوین از سال ۲۰۲۵ از SegWit استفاده میکنند. هر کیف پول اصلی از آن پشتیبانی میکند. هر صرافی از آن پشتیبانی میکند. اگر هنوز از آدرسهای قدیمی استفاده میکنید، تنها توضیح این است که نرمافزاری را که سالهاست بهروزرسانی نکردهاید.
ارتقاء SegWit همچنین راه را برای هر آنچه که پس از آن آمد، باز کرد. Taproot در نوامبر 2021 عرضه شد و امضاهای Schnorr را به ساختار SegWit اضافه کرد. Ordinals در سال 2023 ظاهر شدند و شروع به پر کردن فضای دادههای شاهد که SegWit ایجاد کرده بود، با فرمت JPEG کردند. مردم در مورد مورد آخر احساسات متفاوتی دارند، اما نکته همچنان پابرجاست: SegWit این فضا را ایجاد کرد و توسعهدهندگان آن را پر کردند.
بنابراین آیا سگویت (SegWit) شخصاً برای شما مهم است؟ اگر اصلاً از بیتکوین استفاده میکنید، بله. تنظیمات کیف پول خود را باز کنید و قالب آدرس خود را بررسی کنید. اگر با "bc1q" شروع میشود، مشکلی نیست. اگر با "1" شروع میشود، باید همین امروز تغییر دهید. کارمزد کمتر، تأیید سریعتر در هنگام ازدحام و دسترسی کامل به پرداختهای لایتنینگ.
شما هرگز به طور روزمره به SegWit فکر نخواهید کرد. این لوله کشی زیر کف است. اما اگر کسی آن را در سال ۲۰۱۷ نصب نکرده بود، کل خانه تا الان دچار آبگرفتگی شده بود.