ایران اکسچنج

سگویت (SegWit) چیست؟ نحوه کار، انواع آدرس و نقش آن در بیت کوین

سگویت (SegWit) چیست؟ نحوه کار، انواع آدرس و نقش آن در بیت کوین

فائزه سوری
زمان تقریبی مطالعه: 7 دقیقه
فهرست عناوین

سگویت یا Segregated Witness یکی از مهم‌ترین ارتقاهای فنی بیت‌کوین است که ساختار ثبت بخشی از داده‌های تراکنش را تغییر داد. هدف اصلی آن فقط «کم کردن حجم امضا» نبود؛ SegWit با تعریف ساختار Witness، تغییر روش محاسبه وزن بلاک و اصلاح نحوه محاسبه شناسه برخی تراکنش‌ها، هم ظرفیت مؤثر بلاک را افزایش داد و هم یکی از موانع مهم توسعه راهکارهایی مانند شبکه لایتنینگ را کاهش داد.

SegWit به‌صورت یک سافت‌فورک در شبکه بیت‌کوین فعال شد و قوانین آن در مجموعه‌ای از Bitcoin Improvement Proposalها، به‌ویژه BIP141، BIP143 و BIP144 تعریف شده است. در این مقاله تمرکز فقط روی سازوکار فنی SegWit، تفاوت آدرس‌های Legacy و SegWit، مفهوم Block Weight، Transaction Malleability و ارتباط آن با لایتنینگ و Taproot است؛ بنابراین موضوعاتی مثل تحلیل قیمت یا پیش‌بینی بازار از بحث فنی سگویت جدا نگه داشته می‌شوند.

تراکنش‌ها در بلاکچین بیت کوین

سگویت چیست؟

SegWit مخفف Segregated Witness است. در ساختار بیت کوین، Witness به داده‌هایی گفته می‌شود که برای اثبات مجاز بودن خرج‌کردن یک خروجی لازم‌اند؛ از جمله امضاها و داده‌های مربوط به Script. SegWit این داده‌ها را در یک ساختار جداگانه قرار می‌دهد و نحوه تعهد آن‌ها در بلاک و نحوه محاسبه ظرفیت را تغییر می‌دهد.

BIP141، مشخصات اصلی Segregated Witness، توضیح می‌دهد که Witness در ساختاری جدا از Transaction Merkle Tree قرار می‌گیرد و از طریق Coinbase Transaction به بلاک متعهد می‌شود. این طراحی باعث شد ارتقا بتواند به‌صورت Soft Fork اجرا شود؛ یعنی نودهای قدیمی بدون شناخت کامل Witness همچنان بتوانند زنجیره را دنبال کنند، هرچند اعتبارسنجی کامل قواعد جدید به نرم‌افزار ارتقایافته نیاز دارد.

برای درک جایگاه SegWit در معماری کلی بیت‌کوین، آشنایی با مفهوم بلاکچین چیست؟ و نقش تراکنش، بلاک و نود مفید است.

اهمیت سگویت

سگویت چرا ایجاد شد؟

دو مسئله در طراحی اولیه بیت‌کوین نقش مهمی در شکل‌گیری SegWit داشتند: محدودیت ظرفیت بلاک و مشکل Transaction Malleability. با افزایش استفاده از شبکه، فضای محدود بلاک به یک منبع رقابتی تبدیل شد و تراکنش‌ها برای ورود به بلاک بر اساس شرایط ممپول و نرخ کارمزد رقابت می‌کردند. در کنار آن، امکان تغییر برخی داده‌های امضا بدون تغییر اثر اقتصادی تراکنش می‌توانست TXID تراکنش تأییدنشده را تغییر دهد.

SegWit این دو موضوع را با یک تغییر ساختاری پاسخ داد: داده Witness از بخش Legacy Serialization جدا شد و وزن آن در محاسبه ظرفیت با ضریب متفاوتی در نظر گرفته شد. در نتیجه، تراکنش‌های SegWit برای الگوهای خرج مشابه معمولاً Virtual Size کمتری نسبت به تراکنش‌های Legacy دارند و می‌توان تعداد بیشتری تراکنش را در محدوده وزن مجاز بلاک جای داد.

این موضوع با مفهوم عمومی مقیاس پذیری بلاکچین مرتبط است، اما SegWit به‌تنهایی مشکل مقیاس‌پذیری بیت‌کوین را «حل کامل» نکرد. این ارتقا ظرفیت مؤثر را بیشتر کرد و زیرساخت بهتری برای راهکارهای لایه دوم ایجاد کرد.

SegWit چگونه کار می‌کند؟

برای فهم عملکرد SegWit باید میان دو بخش تفاوت قائل شد: اثر اقتصادی تراکنش و داده لازم برای اثبات اعتبار خرج. تراکنش همچنان ورودی‌ها و خروجی‌ها را تعریف می‌کند، اما در تراکنش‌های SegWit داده Witness در Serialization جداگانه‌ای قرار می‌گیرد.

در مدل جدید، نودهای ارتقایافته Witness را دریافت و اعتبارسنجی می‌کنند. نودهای قدیمی که قواعد SegWit را نمی‌شناسند، بخشی از ساختار جدید را به شکل سازگار با Soft Fork می‌بینند. جزئیات انتقال Witness میان Peerها نیز در BIP144 تعریف شده است.

یکی از نتایج مهم این طراحی آن است که شناسه سنتی تراکنش یا TXID برای تراکنش‌های SegWit بر اساس Serialization بدون Witness محاسبه می‌شود، در حالی که شناسه دیگری به نام WTXID می‌تواند ساختار شامل Witness را نمایندگی کند. این جداسازی در کاهش مشکل تغییرپذیری ناخواسته TXID نقش اساسی دارد.

کارایی سگویت چیست ؟

Transaction Malleability چیست و SegWit چه چیزی را اصلاح کرد؟

در نسخه‌های قدیمی بیت‌کوین، بعضی اجزای داده امضا می‌توانستند بدون تغییر مقصدها یا مقادیر تراکنش به شکلی بازنویسی شوند که شناسه تراکنش تغییر کند. مسئله اصلی این نبود که فرد بتواند بیت‌کوین را به مقصد دیگری منتقل کند؛ مشکل این بود که تراکنش از نظر اقتصادی همان تراکنش باقی می‌ماند اما TXID آن ممکن بود پیش از تأیید تغییر کند.

این ویژگی برای سامانه‌هایی که می‌خواستند تراکنش‌های بعدی را بر اساس TXID یک تراکنش هنوز تأییدنشده بسازند، دردسرساز بود. SegWit داده Witness را از محاسبه TXID سنتی خارج کرد و به این ترتیب یکی از مهم‌ترین انواع Third-party Transaction Malleability را برای تراکنش‌های SegWit برطرف کرد.

نباید این موضوع را با «جلوگیری کامل از هر نوع تغییر تراکنش» یا «دو بار خرج شدن خودکار» یکی دانست. Double Spend و Transaction Malleability دو مسئله متفاوت‌اند و قواعد اجماع بیت‌کوین برای هرکدام نقش جداگانه‌ای دارند.

Block Weight در SegWit چیست؟ آیا سقف بلاک ۴ مگابایت شد؟

یکی از خطاهای رایج این است که گفته شود SegWit «اندازه بلاک بیت‌کوین را از ۱ مگابایت به ۴ مگابایت افزایش داد». تعریف دقیق‌تر این است که SegWit مفهوم Block Weight را معرفی کرد و سقف وزن بلاک را روی ۴ میلیون Weight Unit قرار داد.

طبق BIP141، وزن بلاک از ترکیب اندازه بخش بدون Witness و اندازه کل داده به دست می‌آید. داده Base وزن بیشتری نسبت به Witness دارد. نتیجه این طراحی آن است که حداکثر اندازه بایتی بلاک یک عدد ثابت و ساده مانند ۱ یا ۴ مگابایت نیست؛ اندازه واقعی به ترکیب تراکنش‌های داخل بلاک و میزان Witness آن‌ها بستگی دارد.

برای کاربران، مفهوم مهم‌تر Virtual Size یا vBytes است. نرخ کارمزد معمولاً بر اساس sat/vB بیان می‌شود، بنابراین تراکنشی که برای همان نوع پرداخت vBytes کمتری داشته باشد می‌تواند با نرخ کارمزد یکسان، هزینه کل پایین‌تری داشته باشد. این به معنی تضمین کارمزد ارزان در همه زمان‌ها نیست؛ شرایط ممپول و نرخ کارمزد انتخاب‌شده همچنان تعیین‌کننده‌اند.

در بلاکچین بیت کوین سگویت چیست

آیا SegWit تراکنش بیت‌کوین را سریع‌تر می‌کند؟

SegWit زمان تولید بلاک بیت‌کوین را از چند دقیقه به چند ثانیه کاهش نمی‌دهد. پروتکل بیت‌کوین همچنان طوری تنظیم می‌شود که فاصله متوسط تولید بلاک در بلندمدت حدود ۱۰ دقیقه باشد. یک تراکنش ممکن است سریع وارد ممپول شود، اما زمان قرار گرفتن آن در بلاک به نرخ کارمزد، وضعیت ممپول، سیاست ماینرها و ظرفیت بلاک بستگی دارد.

افزایش ظرفیت مؤثر می‌تواند در شرایط مشابه فشار روی فضای بلاک را کاهش دهد، اما نمی‌توان گفت هر تراکنش SegWit الزاماً سریع‌تر از هر تراکنش Legacy تأیید می‌شود. اولویت ورود به بلاک به عوامل دیگری نیز وابسته است.

همچنین اصطلاح «۶ تأیید» به معنی تأیید یک تراکنش توسط شش ماینر مشخص نیست. وقتی تراکنش وارد یک بلاک می‌شود یک Confirmation دارد و هر بلاک معتبر بعدی عمق آن را بیشتر می‌کند. عدد مورد نیاز برای پذیرش نهایی یک سیاست ریسک است و بسته به سرویس، مبلغ و شرایط می‌تواند متفاوت باشد.

چالش‌های پیش روی بیت کوین

SegWit چه ارتباطی با شبکه لایتنینگ دارد؟

یکی از مهم‌ترین آثار SegWit فراهم کردن زیرساخت قابل‌اعتمادتر برای ساخت پروتکل‌های لایه دوم بود. شبکه لایتنینگ برای ایجاد و به‌روزرسانی Payment Channelها از زنجیره‌ای از تراکنش‌ها استفاده می‌کند. تغییرپذیری TXID تراکنش‌های تأییدنشده می‌توانست طراحی چنین ساختارهایی را پیچیده و پرریسک کند.

با کاهش این مشکل، اجرای شبکه لایتنینگ بیت‌کوین عملی‌تر شد. با این حال SegWit و Lightning یک فناوری واحد نیستند: SegWit یک تغییر در قواعد و ساختار تراکنش لایه پایه است، در حالی که Lightning یک شبکه پرداخت لایه دوم مبتنی بر کانال‌های پرداخت است.

سگویت بومی

BIP143 چه تغییری در امضای تراکنش ایجاد کرد؟

SegWit فقط محل Witness را تغییر نداد. BIP143 الگوریتم جدیدی برای محاسبه Digest امضا در Witness Version 0 تعریف کرد. این تغییر چند مزیت فنی داشت؛ از جمله وارد کردن مقدار UTXO خرج‌شده در داده امضاشونده و بهبود کارایی محاسباتی برای بعضی تراکنش‌های بزرگ.

این بخش بیشتر برای کیف پول‌ها، سخت‌افزارهای امضاکننده و توسعه‌دهندگان اهمیت دارد. برای کاربر عادی، نتیجه عملی آن این است که Native SegWit فقط یک «ظاهر جدید آدرس» نیست؛ بخشی از مجموعه قواعد جدید برای ساخت و اعتبارسنجی تراکنش است.

تفاوت Legacy، Nested SegWit و Native SegWit چیست؟

نوعشروع رایج آدرسنمونه Script/Outputرابطه با SegWit
Legacy1...P2PKHساختار قدیمی؛ Native SegWit نیست
Nested SegWit3...P2SH-P2WPKH / P2SH-P2WSHWitness داخل P2SH بسته‌بندی می‌شود
Native SegWit v0bc1q...P2WPKH / P2WSHWitness Program مستقیم با Bech32
SegWit v1 / Taprootbc1p...P2TRWitness Version 1 با Bech32m

نکته مهم این است که هر آدرسی که با عدد 3 شروع می‌شود لزوماً SegWit نیست؛ این پیشوند برای P2SH استفاده می‌شود و P2SH می‌تواند اسکریپت‌های غیر SegWit را نیز در خود داشته باشد. در مقابل، آدرس‌های Native SegWit v0 در شبکه اصلی بیت‌کوین معمولاً با bc1q شروع می‌شوند.

Bech32 چیست؟

BIP173 فرمت Bech32 را برای آدرس‌های Native SegWit معرفی کرد. Bech32 برای خوانایی بهتر، تشخیص خطا و استفاده کارآمدتر در QR Code طراحی شد و در بیت‌کوین Mainnet از پیشوند bc استفاده می‌کند.

Native SegWit را نباید «نسخه جدیدتر پروتکل SegWit» در مقابل یک SegWit قدیمی دانست. اصطلاح Native SegWit بیشتر به استفاده مستقیم از Witness Program بدون بسته‌بندی P2SH اشاره دارد. این قالب معمولاً برای الگوهای خرج مشابه، سربار کمتری از P2SH-wrapped SegWit دارد.

Bech32m و Taproot چه ارتباطی با SegWit دارند؟

با فعال شدن Taproot، بیت‌کوین از Witness Version 1 استفاده کرد. برای Witness Version 1 و نسخه‌های بعدی، Bech32 اولیه جای خود را به Bech32m طبق BIP350 داد. به همین دلیل آدرس‌های Taproot در Mainnet معمولاً با bc1p شروع می‌شوند، در حالی که SegWit v0 با bc1q و Bech32 باقی مانده است.

Taproot یک جایگزین برای SegWit نیست؛ در واقع قواعد Taproot روی ساختار Witness Version 1 بنا شده‌اند. برای بررسی مستقل این ارتقا، مقاله تپ روت بیت‌کوین چیست؟ جزئیات بیشتری درباره Schnorr، Script Path و مزایای Taproot ارائه می‌دهد.

مزایای اصلی SegWit چیست؟

  • افزایش ظرفیت مؤثر بلاک: مدل Block Weight اجازه می‌دهد داده Witness با وزن کمتری محاسبه شود.
  • کاهش Virtual Size در بسیاری از الگوهای خرج: این موضوع می‌تواند برای نرخ کارمزد یکسان، هزینه کل تراکنش را کاهش دهد.
  • کاهش Transaction Malleability ناخواسته: Witness در TXID سنتی تراکنش SegWit وارد نمی‌شود.
  • زیرساخت مناسب‌تر برای Lightning: وابستگی مطمئن‌تر به TXID تراکنش‌های تأییدنشده برای طراحی کانال‌های پرداخت اهمیت داشت.
  • مسیر توسعه نسخه‌های جدید Witness: ساختار Versioned Witness امکان ارتقاهایی مانند Taproot را فراهم کرد.
  • بهبودهایی در Signature Hashing: BIP143 نحوه محاسبه Digest برای Witness v0 را بازطراحی کرد.

محدودیت‌ها و برداشت‌های اشتباه درباره SegWit

SegWit با وجود اهمیت زیاد، همه مشکلات بیت‌کوین را حل نمی‌کند. استفاده از آن ظرفیت زنجیره را افزایش می‌دهد، اما فضای بلاک همچنان محدود است و در دوره‌های تقاضای بالا کارمزد می‌تواند افزایش پیدا کند. همچنین SegWit زمان هدف تولید بلاک را تغییر نمی‌دهد و تضمینی برای Confirmation فوری نیست.

  • SegWit سقف ثابت ۴ مگابایت ایجاد نکرد: معیار اصلی Block Weight است، نه فقط تعداد بایت.
  • SegWit همه آدرس‌های 3... را تعریف نکرد: این‌ها آدرس P2SH هستند و می‌توانند SegWit یا غیر SegWit باشند.
  • Native SegWit یک بلاکچین یا پروتکل جدا نیست: روش مستقیم استفاده از Witness Program است.
  • SegWit امنیت بیت‌کوین را «چند برابر» نمی‌کند: مزیت اصلی در اصلاح Malleability، ظرفیت و امکان توسعه بهتر است.
  • کارمزد پایین‌تر تضمینی نیست: کارمزد نهایی به Virtual Size و نرخ انتخابی کاربر و وضعیت شبکه بستگی دارد.

SegWit2x چه بود و چه تفاوتی با SegWit داشت؟

SegWit2x یک پیشنهاد تاریخی جدا از SegWit بود که علاوه بر فعال‌سازی SegWit، افزایش اندازه Base Block به ۲ مگابایت را از طریق تغییر ناسازگارتر قواعد دنبال می‌کرد. این برنامه در سال ۲۰۱۷ به دلیل نبود اجماع کافی برای اجرای Hard Fork برنامه‌ریزی‌شده متوقف شد.

بنابراین نباید SegWit2x را «نسخه بعدی SegWit» دانست. SegWit همان Soft Forkی است که در شبکه بیت‌کوین مستقر شد؛ SegWit2x یک برنامه سیاسی/فنی جداگانه برای تغییر بیشتر ظرفیت Base Block بود که به شکل برنامه‌ریزی‌شده اجرا نشد.

آدرس مناسب برای دریافت بیت کوین کدام است؟

انتخاب نوع آدرس به پشتیبانی کیف پول فرستنده و گیرنده بستگی دارد. در نرم‌افزارهای مدرن، Native SegWit v0 و Taproot معمولاً گزینه‌های استاندارد و کارآمدی هستند، اما کاربر باید مطمئن شود سرویس مبدأ فرمت مقصد را می‌پذیرد. برای انتقال دارایی، همیشه شبکه مقصد و آدرس را پیش از ارسال کنترل کنید و در مبالغ مهم ابتدا تراکنش آزمایشی کوچک انجام دهید.

اگر هدف شما نگهداری یا انتقال BTC است، تفاوت میان معماری شبکه و فعالیت معاملاتی را جدا در نظر بگیرید. صفحه خرید بیت‌کوین به فرایند تهیه BTC مربوط است و صفحه قیمت بیت‌کوین داده بازار را پوشش می‌دهد؛ این دو موضوع با قواعد فنی SegWit یکسان نیستند.

برای بررسی یک تراکنش SegWit به چه چیزهایی توجه کنیم؟

هنگام بررسی تراکنش می‌توان به نوع ورودی و خروجی، Virtual Size، Fee Rate، تعداد Confirmation و وضعیت آن در ممپول توجه کرد. اگر تراکنش هنوز تأیید نشده باشد، صرف دیدن آن در کیف پول به معنی نهایی‌شدن نیست. نودهای کامل قوانین تراکنش و بلاک را مستقل بررسی می‌کنند؛ درباره نقش آن‌ها می‌توانید مقاله نود در شبکه چیست؟ را مطالعه کنید.

در دوره‌های شلوغی شبکه، تراکنشی با Fee Rate پایین ممکن است مدت بیشتری در ممپول بماند. این وضعیت به SegWit یا Legacy بودن تراکنش به‌تنهایی وابسته نیست. برای شناخت دقیق‌تر این حالت، مقاله تراکنش تأییدنشده چیست؟ مسیر مناسب‌تری است.

آیا استفاده از SegWit روی قیمت بیت کوین اثر مستقیم دارد؟

از نظر فنی، SegWit یک تغییر در ساختار و قواعد تراکنش است و نمی‌توان از فعال بودن آن نتیجه گرفت که قیمت BTC حتماً افزایش یا کاهش می‌یابد. قیمت بازار تحت تأثیر مجموعه‌ای از عوامل عرضه و تقاضا، نقدشوندگی، شرایط اقتصاد کلان، مقررات، رفتار سرمایه‌گذاران و رویدادهای بازار قرار دارد.

اگر هدف شما مشاهده بازار است، از صفحه قیمت ارز دیجیتال استفاده کنید و اگر قصد بررسی فرایند تهیه دارایی دارید، راهنمای خرید ارز دیجیتال موضوع متفاوتی را پوشش می‌دهد. انتخاب صرافی ارز دیجیتال نیز یک تصمیم خدماتی و معاملاتی است و نباید با مشخصات فنی پروتکل بیت‌کوین یکی گرفته شود.

جمع‌بندی

SegWit یک Soft Fork کلیدی در بیت‌کوین است که ساختار Witness، Block Weight و روش پردازش برخی داده‌های تراکنش را تغییر داد. مهم‌ترین آثار آن افزایش ظرفیت مؤثر بلاک، کاهش Virtual Size در تراکنش‌های SegWit، کاهش Third-party Transaction Malleability و فراهم شدن زیرساخت مناسب‌تر برای توسعه لایه دوم و نسخه‌های بعدی Witness است.

برای استفاده عملی، تفاوت میان Legacy، Nested SegWit، Native SegWit v0 و Taproot مهم است. آدرس 1... Legacy است، آدرس 3... می‌تواند P2SH-wrapped SegWit باشد، bc1q... معمولاً Native SegWit v0 و bc1p... مربوط به Taproot/Witness v1 است. هیچ‌کدام از این قالب‌ها به‌تنهایی تضمین‌کننده Confirmation سریع یا کارمزد ثابت نیستند؛ هزینه و زمان تأیید به ساختار تراکنش و شرایط شبکه وابسته است.

این مطلب آموزشی است و توصیه مالی یا تضمین درباره هزینه، سرعت تأیید یا عملکرد بازار محسوب نمی‌شود.

مقالات مرتبط

سوالات متداول

آیا SegWit اندازه تراکنش را کم می‌کند؟

بیان دقیق‌تر این است که SegWit نحوه Serialization و محاسبه Weight را تغییر می‌دهد. برای بسیاری از تراکنش‌ها، بخش Witness وزن کمتری دارد و در نتیجه Virtual Size کاهش پیدا می‌کند؛ اما داده Witness حذف نمی‌شود و همچنان باید توسط نودهای SegWit دریافت و اعتبارسنجی شود.

آیا آدرس‌هایی که با 3 شروع می‌شوند همان SegWit هستند؟

خیر. پیشوند 3 در شبکه اصلی بیت‌کوین به P2SH مربوط است. Nested SegWit می‌تواند داخل P2SH استفاده شود، اما همه P2SHها SegWit نیستند.

آدرس bc1 همیشه Native SegWit است؟

آدرس‌های bc1q برای Witness Version 0 از Bech32 استفاده می‌کنند و معمولاً همان چیزی هستند که Native SegWit v0 نامیده می‌شود. آدرس‌های bc1p مربوط به Witness Version 1، از جمله Taproot، هستند و با Bech32m کدگذاری می‌شوند.

آیا برای نهایی شدن تراکنش بیت‌کوین دقیقاً 6 تأیید لازم است؟

خیر. شش Confirmation یک قاعده اجباری پروتکل برای همه پرداخت‌ها نیست. تعداد Confirmation مورد نیاز به سیاست پذیرنده و سطح ریسک بستگی دارد. هر بلاک جدیدی که بعد از بلاک حاوی تراکنش ساخته می‌شود، عمق آن تراکنش را بیشتر می‌کند.

آیا SegWit هنوز در بیت‌کوین اهمیت دارد؟

بله. SegWit بخشی از قواعد مستقر بیت‌کوین است و علاوه بر Witness Version 0، ساختار Versioned Witness زمینه توسعه Taproot در Witness Version 1 را نیز فراهم کرده است. بنابراین SegWit صرفاً یک قابلیت موقتی مربوط به سال ۲۰۱۷ نیست.