عبارت Segregated Witness، در واقع یک طرح بهبود برای پادشاه ارزهای دیجیتال یعنی بیت کوین است، سگویت (SegWit) در راستای رفع دو مشکل اجرا و پیاده سازی معرفی شد. هدف SegWit که یک سافت فورک است، در وهله اول فراهم کردن شرایطی برای محافظت از انعطاف پذیری (Malleability) تراکنش ها و در گام بعدی افزایش ظرفیت بلاک (Block Capacity) در شبکه بلاک چین بیت کوین است. SegWit از سوی تیم توسعه دهندگان رمز ارز بیت کوین کور که یکی از محبوب ترین کلاینت مرجع بیت کوین است، پیشنهاد و در آگوست ۲۰۱۷ بر روی بلاک چین بیت کوین اعمال شد. در این مقاله قصد داریم به بررسی طرح SegWit و تاثیرات آن بر روی بیت کوین بپردازیم.
کارکرد تراکنش های بیت کوین
تراکنش های ارز دیجیتال بیت کوین بسیار متفاوت تر از تراکنش های ارزهای فیات است، تراکنش ارزهای دیجیتال فیزیکی نیست، تاریخچه تراکنش ها تنها مدرکی است که به شما نشان می دهد که بیت کوین دارید.
دو نکته مهم در ارتباط با تراکنش های پادشاه ارز دیجیتال یعنی بیت کوین
- صحت سنجی و تایید تراکنشهای بیت کوین توسط استخراج کنندگان (بیشتر ماینرها در استخرها حضور دارند و به صورت جداگانه فعالیت استخراج را انجام نمی دهند) انجام میشود. آنها در عوض ارائه چنین خدماتی پاداش استخراج و کارمزد تراکنش را دریافت میکنند.
- زمانی که در مورد ارزهای فیات بحث می شود، شما به عنوان گیرنده این ارزها نمی دانید که چگونه و از کجا آن را بدست آورده اید، برای مثال فرض کنید که یک کیف پول فیزیکی دارید، از خود سوال کنید که منشا این پول ها از کجا بوده است؟ این در حالیست که شما می توانید منشا ارزهای دیجیتال را از طریق تراکنش ها پیدا کنید.
ورودی تراکنش (Input)
به علت وجود تاریخچه تراکنش، شما می توانید حساب تک تک کوین های رمزنگاری خود را داشته باشید، فرض کنید شما باید از تراکنش هایی به اسم (TX(0 و (TX(1 و (TX(2 ارز دیجیتال بیت کوین بردارید، این سه تراکنش با هم جمع شده و در نهایت به ورودی تراکنش نهایی که اینپوت نام دارد می رسد.
خروجی تراکنش (Output)
برخی تراکنش ها فقط یک خروجی دارند، البته تراکنش هایی نیز وجود دارد که چندین خروجی دارند که این نمودار در واقع همان چیدمان اصلی تراکنش است، لذا برای اینکه تمام این اتفاقات دقیق و بدون نقص انجام شود باید دارای شرایط خاصی باشد.
شرایط واجد تراکنش
یکی از مهم ترین فاکتورها برای تراکنش ها این است که تراکنش های ورودی همیشه باید بزرگ تر از تراکنش خروجی باشد. (Input>Output) در مورد ارز دیجیتال بیت کوین، برای خرج کردن دارایی ها نیاز به یک نوع کلمه عبور است و این کلمه عبور، امضای دیجیتال نام دارد. این امضا همانند یک امضا دست نویس، معتبر بودن این انتقال دیجیتالی را تصدیق می کند اما این کار با استفاده از یک الگوریتم ریاضی خاص انجام میشود که به علت پیچیدگی این الگوریتم کپی و جعل آن غیرممکن می شود.
امضای دیجیتال یک کلمه عبور ساده و ثابت نیست. بلکه برای هر تراکنش، باید امضایی کاملا متفاوت درج شود. لازم به ذکر است که در شبکه بیت کوین شما با افراد کاملا ناشناسی طرف هستید، به همین دلیل باید امنیت شما تامین شود و دارایی های شما امن بماند. یک امضای دیجیتال با استفاده از دو کلید جداگانه کار میکند. این دو کلید با وجود متفاوت بودن، مکمل یکدیگر نیز هستند. کلید خصوصی یک امضا تولید میکند و با یک کلید عمومی بقیه میتوانند معتبر بودن امضا را بررسی کنند. کلید خصوصی را به عنوان کلمه عبور واقعی در نظر بگیرید و امضای دیجیتال مدرکی است که نشان میدهد شما کلمه عبور را دارید.
محدودیت های ارز دیجیتال بیت کوین
رتبه اول ارزهای دیجیتال یعنی بیت کوین ارز دیجیتالی است که با استفاده از علم رمزنگاری و دید حفظ امنیت تراکنش ها ایجاد شده است. اطلاعات و داده های مربوط به شبکه پادشاه ارزهای دیجیتال و تراکنش های آن به صورت دائمی بر روی واحد هایی به نام بلاک ذخیره میشوند. این به معنی این است که هر بلاک شبیه به صفحهای از دفتر کل است.
هر زمانی که بلاکی برای بیت کوین تکمیل میشود، با استفاده از یک هش رمزنگاری به صورت متوالی به بلاک پیشین خود متصل میشود و بقیه اطلاعات بر روی بلاک بعدی ذخیره خواهند شد. انجام مکرر این کار، زنجیرهای از بلاکها و یا همان بلاک چین را شکل میدهد. هر بلاک بیت کوین، شامل اطلاعاتی در رابطه با فرستنده و گیرنده بیتکوین انتقالی و همچنین امضایی که هر تراکنش را تایید میکند، است.
در ابتدا هیچ محدودیتی برای سایز بلاک وجود نداشت. این بدان معنا بود که افراد مخرب میتوانستند دادههای بلاک جعلی بسازند و حمله دیداس به شبکه را ترتیب دهند. بلاکهای جعلی آنها قابل شناسایی و تشخیص بود اما انجام این کار بسیار زمانبر بود و سرعت عملکرد کل سیستم را پایین میآورد. راهکار ساتوشی ناکاموتو برای مقابله با این مساله، اعمال محدودیت ۱ مگابایتی برای هر بلاک بود که در اواخر سال ۲۰۱۰ به طور مخفیانه در کد بیت کوین قرار داد.
به این ترتیب، حملههایی که با استفاده از بلاک های بزرگ شکل میگرفتند، به راحتی و به سرعت شناسایی و رد میشدند. در حال حاضر سایز بلاک بیت کوین ۱ مگابایت است. بنابراین ترتیب تعداد تراکنش های هر بلاک محدود و به تبع آن سرعت انجام تراکنش ها پایین است. با افزایش محبوبیت بیت کوین، محدودیت سایز بلاک ها دردسرساز شد و سبب کم شدن سرعت تراکنش ها شد.
مقیاس پذیری در ارزهای دیجیتال، با تعداد تراکنشهایی که هر بلاک چین در ثانیه میتواند پردازش کند سنجیده میشود و تابعی از اندازهی بلاک و زمان تشکیل یک بلاک است. زمان تشکیل یک بلاک بر مبنای بازه زمانی قراردادی که از سوی ساتوشی ناکاموتو تعیین شد، به صورت میانگین ۱۰ دقیقه است.
با توجه به محدودیت سایز بلاک، تنها تعداد محدودی تراکنش و به اندازهای که ظرفیت بلاک اجازه دهد، میتوانند در آن قرار بگیرند. هرچه اندازهی بلاک بزرگتر باشد، تعداد تراکنش های بیشتری میتوانند در این زمان بر روی بلاک چین ثبت شوند.
در حال حاضر سرعت انجام شدن تراکنش ها در پادشاه ارزهای دیجیتال یعنی بیت کوین نسبت به سایر ارزهای دیجیتال حوزه کریپتوکارنسی (cryptocurrency) و یا کارت های اعتباری بسیار پایین است و گاهی ممکن است تایید یک تراکنش حتی ساعت ها به طول انجامد. عدهای با طرحها و ایده هایی مثل «پرداختهای برون زنجیرهای» به دنبال حل مشکل مقیاس پذیری بلاک چین بیت کوین هستند و در تلاشند تا تراکنشها بدون نیاز به تایید بلاک چین، انجام شوند.
دلایل نیاز بیت کوین به طرح سگویت
شبکه بلاک چین بیت کوین از زنجیرهای از بلاکها تشکیل شده است. این شبکه یک بستر آزاد توزیع شده است که برای انجام تراکنش ها از شبکه همتا به همتا استفاده میکند. نودها مدیریت تراکنشهای این شبکه را بر عهده دارند. (نود به عنوان یک عضو شبکه، سیستمی متصل به شبکه بلاک چین است که اقدام به دانلود و ذخیره یک نسخه کامل از شبکه میکند.) همه تراکنشهایی که در بلاک چین انجام شده باید توسط نودها تایید شوند و در سیستم آنها کپی شود.
تراکنش بیت کوین از یک ورودی و یک خروجی تشکیل شده است. ورودی آدرس عمومی فرستنده و خروجی آدرس عمومی گیرنده در بلاک چین می باشد. در بخش ورودی، در کنار آدرس عمومی فرستنده، برای تایید میزان دارایی فرستنده یک امضا وجود دارد. این امضا تایید میکند که فرستنده در حساب خود دارایی به اندازه مبلغ تراکنش دارد و بدون هیچ مشکلی اجرای تراکنش انجام خواهد شد. پس از این که نودها این اطلاعات یا همان تراکنش را تایید کردند، بر روی بلاکها ذخیره می شوند و سپس به زنجیره بلاک چین اضافه می گردند. این امضا بیشتر حجم تراکنش را در برمیگیرد.
حجم بلاکها در بلاک چین بیت کوین نمی تواند نیاز شبکه را رفع کند.
همیشه یکی از دغدغه های کاربران، حجم ۱ مگابایتی بلاک از آغاز فعالیت بیت کوین در بستر بلاک چین بوده است. به دلیل این که اندازه بلاکها کوچ است، در بلاک چین بیت کوین انجام تراکنشها در حال حاضر ۲ تا ۷ ثانیه طول می کشد. با توجه به این که در این شبکه حجم معاملات بسیار بالا می باشد، در نتیجه با سرعت بسیار پایینی روند تایید و انجام تراکنشها صورت می گیرد.
در واقع می توان گفت در حال حاضر با توجه به افزایش قابل توجه کاربران شبکه بیت کوین، سریعتر از گذشته حجم بلاک ها با تراکنش های تایید شده اشغال میشوند. ترافیک و تراکم شبکه در هنگام تکمیل ظرفیت بلاکها، افزایش پیدا میکند و تراکنش ها تا زمان تشکیل بلاک جدید در صف انتظار و تایید نشده باقی میمانند. ممکن است این انتظار گاهی چند روز طول بکشد. کارمزد تراکنش ها در این شرایط نیز افزایش پیدا میکند. بنابراین زمان پیک شبکه، ضمن تاخیر در تایید و انجام تراکنش ها، کارمزدها نیز به شدت افزایش می یابند زیرا افراد باید برای قرار گرفتن در اولویت تایید تراکنش، کارمزد بالاتری مشخص کنند.
در واقع مقیاس پذیری شبکه بیت کوین، تحت تاثیر حجم کم بلاکها قرار می گیرد و این حجم کم اثرات منفی بر روی شبکه دارد. یکی از ارکان مهم در بلاک چین ها، مقیاس پذیری است که میتواند به کاهش یا افزایش میزان محبوبیت یک بلاک چین، تعداد کاربران و تعداد تراکنش ها منجر شود. در واقع می توان مقیاس پذیری را همان سرعت و قدرت بلاک چین در پاسخ گویی به تقاضای کاربران دانست.
راهکارهای طرح سگویت برای بهبود مقیاس پذیری
در راستای بهبود مقیاس پذیری شبکه، افزایش حجم بلاک میتواند قدم بزرگی باشد. در این راستا طرح SegWit قدم برداشته و در بلاک چین بیت کوین ظرفیت بلاکها را افزایش داده است. SegWit از دو روش حجم بلاک بیت کوین را افزایش می دهد:
افزایش آنی حجم بلاک تا ۴ مگابایت: در سافت فورک SegWit، حداکثر حجم بلاک ۴ مگابایت است. در حالی که حجم واقعی بلاک بستگی به شرایط شبکه دارد. طبق پیش بینی کارشناسان، حجم بلاکها، پس از آغاز به کار SegWit، بین ۲ تا ۲.۱ مگابایت خواهد بود. همچنین هر بایت اطلاعاتی، با وجود سگویت فقط یک چهارم از بلاک را اشغال میکند. در واقع میزان فضای ذخیره سازی تراکنش در بلاکها ۴ برابر میشود.
جدا سازی امضا از تراکنش: Segregated Witness متشکل از دو واژهی Segregate (تفکیک) و witnesses (شاهدان) می باشد. امضا های تراکنش در واقع همان شاهدان می باشد. طبق توضیحات قبلی، امضاهای تایید تراکنش ها، بخش زیادی از حجم تراکنشها را تشکیل می دهند. این امضاها در سافت فورک SegWit، از اطلاعات ورودی و خروجی تفکیک می شوند تا حجم تراکنش کاهش و حجم بلاک افزایش یابد. این طرح در بخش جداگانهای در انتهای بلاک، دادههای مربوط به امضای تراکنشها را قرار میدهد و باعث آسان تر و سریع تر شدن محاسبهی شناسه تراکنش شود.
این طرح SegWit ضمن رفع مشکلات مقیاس پذیری شبکه، برای روی کار آمدن راهکارهای مقیاس پذیری لایهی دوم نیز زمینهی لازم را فراهم کرد. شبکهی لایتنینگ یکی از این راهکارها است. ظرفیت شبکه از طریق خروج حجم عمدهای از تراکنشها از زنجیرهی اصلی و پردازش آنها بهصورت برونزنجیرهای، بهشکل چشمگیری افزایش مییابد.
سگویت چگونه کار میکند؟
پس از بررسی چگونگی انجام تراکنش اولین کوین بازار ارزهای دیجیتال یعنی بیت کوین و ساختار بلاک در بلاک چین، زمان آن رسیده است در ارتباط با سگویت و اینکه چطور می تواند مشکلات را برطرف کند صحبت کنیم. سگویت با جداسازی داده های مربوط به امضای دیجیتال از تراکنش ها، اندازه بلاک را افزایش می دهد، لذا دلیل نام گذاری آن از عبارت Segregate به معنی جدا کردن و Witnesses به معنی تصدیق ها یا امضاها گرفته شده است.
سگویت (SegWit) اصطلاح با یک تیر دو نشان زده است را به وضوح به کاربران حوزه ارزهای دیجیتال نشان می دهد، سگویت داده های مربوط به امضای بخش اطلاعات ورودی را به بخش جداگانه ای که در بخش پایانی بلاک قرار دارد منتقل می کند لذا این عملکرد باعث تسهیل در محاسبه تراکنش ها و در نتیجه تا حد زیادی از حمله انعطاف پذیری جلوگیری می کند.
SegWit علاوه بر حل این مشکل، توانست زمینه را برای روی کار آمدن راهکارهای مقیاس پذیری بیت کوین نیز فراهم کند، یکی از نمونه راهکارها شبکه لایتنینگ بود؛ ظرفیت شبکه با خارج شدن حجم عمده ای از تراکنش ها از زنجیره اصلی و پردازش این تراکنش ها به صورت برون زنجیره ای، افزایش پیدا می کند.
حل مشکل توسط SegWit
SegWit سایز هر بلاک را از 1 مگابایت به حداکثر 4 مگابایت افزایش می دهد و بر حسب شرایط شبکه این عدد می تواند متغیر باشد.
افزایش سایز بلاک به این علت اتفاق میافتد که هر بایت در تراکنشهایی که SegWit در آنها فعال شده است، برابر با ۱ واحد وزنی است در حالی که در حالت معمول هر بایت برابر با ۴ واحد است. در نتیجه زمانی که بخشی از دادهها از بلاک اصلی جدا میشوند، ۴ برابر آن مقدار در بلاک فضای خالی ایجاد میشود.
توسعه دهندگان می دانستند که برای فعال سازی SegWit به صورت سافت فورک، ریشه دادههای امضا باید در بلاک قرار گیرد. آن ها تراکنش کوین بیس (coinbase) را برای این کار انتخاب کردند. اولین تراکنشی که در بلاک اتفاق می افتد اما اطلاعات ورودی ندارد مربوط به کوین بیس است. علاوه بر این، این تراکنشها پاداش استخراجی که ماینرها در ازای ایجاد این بلاک دریافت میکنند را مشخص میکند که در حال حاضر پاداش هایی که برای ماینرها تعلق می گیرند ۱۲.۵ بیت کوین است.
آدرس های سگویت چگونه است؟
با توجه به این که نسخه های زیاد و متعددی برای پروتکل اینترنت مانند IPv4 و IPv6 وجود دارد، برای پادشاه ارزهای دیجیتال یعنی بیت کوین نیز سه نوع آدرس وجود دارد. از هر سه آدرسی که برای اولین کوین بازار مالی ارزهای دیجیتال می توان برای انتقال و دریافت آن استفاده کرد و درصد احتمال اینکه صرافی ها و سرویس های نگهداری حداقل از یکی از این آدرس ها پشتیبانی کند، بسیار بالاست، لذا برخلاف این گفته، تعداد خیلی کمی از ارائه کنندگان خدمات به طور همزمان از هر سه آدرس پشتیبانی می کنند.
لِگاسی (P2PKH)
در صورتی که آدرس رمزنگاری شده ارز دیجیتال بیت کوین شما با عدد ۱ شروع میشود، شما از آدرس لگاسی یا P2PKH استفاده میکنید: مانند 1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2 این اولین فرمت آدرس بیت کوین بود که هنوز هم به درستی کار میکند. عبارت P2PKH مخفف Pay-to-Pubkey Hash است. یکی از نکات قابل توجه در ارتباط با آدرس لگاسی مرتبط نبودن این آدرس ها با SegWit است؛ اما شما به راحتی و بدون هیچ مشکلی میتوانید از یک آدرس P2PKH به آدرس سگویت بیت کوین ارسال کنید. میانگین کارمزد تراکنش در تراکنشهای انجام شده با آدرسهای لگاسی بیشتر از SegWit است.
آدرس P2SH
ساختار آدرسهای P2SH مشابه آدرسهای P2PKH است، با این تفاوت که همانند 3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy، به جای عدد ۱ با عدد ۳ آغاز میشوند. P2SH مخفف عبارت Pay To Script Hash است و قابلیتهای بیشتری نسبت به آدرسهای لگاسی دارد. تابع اسکریپت P2SH اغلب برای آدرسهای امضای چندگانه مورد استفاده قرار میگیرد.
این فرمت آدرس همچنین با استفاده از فرآیندی که با نام P2WPKH-in-P2SH شناخته میشود، تراکنشهای غیربومی (non-native) سگویت را فعال میکند. کاربران معمولی نباید خودشان را درگیر عملکرد پیچیده فرمت P2SH کنند. چیزی که اهمیت دارد این است؛ این نوع از آدرس به طور گستردهای پشتیبانی میشود و میتوان از آن برای ارسال ارز به هر دو آدرس P2PKH و bech32 استفاده کرد.
آدرس بومی سگویت (bech32)
آدرسهای bech32 کاملا متفاوت از آدرسهای نوع P۲ است. هر آدرس bech32 با عبارت bc1 آغاز میشود و طولانیتر از دو نوع آدرس دیگر است. این نوع آدرس توسط اکثر نرم افزارها و کیف پول ها پشتیبانی میشود اما تعداد صرافیهایی که از این آدرس پشتیبانی میکنند محدود است. در حال حاضر بسیاری از صرافی های امکان ارسال بیت کوین به این آدرس را فراهم کردند اما کاربرانشان قادر به دریافت بیت کوین با این فرمت آدرس نیستند. تاکنون، تنها ۱.۳ درصد از بیت کوینهای موجود در بازار با فرمت آدرس bech32 ذخیره شدهاند و این روند با سرعت کمی در حال رشد است.
مزایا و معایب SegWit چیست؟
مزایا SegWit |
تعداد تراکنش هایی که در یک بلاک اتفاق می افتد توسط سگویت افزایش می یابد. |
در ارتباط با مقایس پذیری بیت کوین کمک می کند. |
مشکل انعطاف پذیر تراکنش ها را برطرف می کند. |
کمک به فعال سازی پروتکل لایتنینگ |
کاهش کارمزد تراکنش |
کاهش اندازه هر تراکنش |
کاهش زمان انتظار تائید تراکنش |
با وجود افزایش تراکنش در هر بلاک، می توان افزایش درآمد کلی برای ماینینگ ها را نیز محاسبه کرد. |
معایب SegWit |
با توجه به عملکرد سگویت، کارمزد ماینرها می تواند کاهش پیدا کرد. |
پیاده سازی سگویت کاری پیچیده است و نیاز می شود که همه کیف پول ها سگویت را خودشان به صورت جداگانه اعمال کنند. |
سگویت باعث افزایش استفاده از منابع می شود. |
با بوجود آمدن بیت کوین کش، سگویت توانست باعث دو قسمت شدن جامعه بیت کوین کور شود. |
نگهداری و تعمیر سگویت یکی از مشکلات آن است چرا که نگهداری از آن توسط ماینرها هیچ سودی ندارد. |
کدام کیف پولها از SegWit پشتیبانی میکنند؟
چندین کیف پول از جمله لجر نانو اس (Ledger Nano S)، الکتروم (Electrum)، ترزور (Trezor)، کوینومی (Coinomi)، بیت گو (BitGo)، کوین بیس (Coinbase)، گرین آدرس (GreenAddress)، بیت باکس (BitBox)، تراست والت (Trust Wallet)، اکسودوس (Exodus)، سگویت آدرس (Segwitaddress) و سامورایی والت (Samourai Wallet) از طرح سگویت پشتیبانی می کنند. سگویت آدرس (Segwitaddress کیف پول کاغذی Segwit می باشد.
کدام صرافیها از SegWit پشتیبانی میکنند؟
چندین صرافی از جمله جمینی (Gemini)، لوکال بیت کوینز (LocalBitcoins)، کراکن (Kraken)، بیت استمپ (Bitstamp)، بیت اونیک (Bitonic)، بیتفینکس (Bitfinex) و هیتبیتیسی (HitBTC) از طرح SegWit پشتیبانی می کنند.
نتیجه گیری: عبارت Segregated Witness، در واقع یک طرح بهبود برای اولین کوین بازار ارزهای دیجیتال یعنی بیت کوین است، سگویت (SegWit) در مسیر بهبود و رفع دو مشکل اجرا و پیاده سازی معرفی شد. هدف سگویت در وهله اول فراهم کردن شرایطی برای محافظت از انعطاف پذیری تراکنش ها و در گام بعدی افزایش ظرفیت بلاک در شبکه بلاک چین بیت کوین است.