این مقاله مانند یک ذرهبین، مفهوم پیچیده چکشخواری را شفافسازی میکند و توضیح میدهد که چرا تغییر ساختار آدرسها در سگویت، برای همیشه جلوی این ناهماهنگی را گرفت.
چکش خواری تراکنش یا Transaction Malleability چیست؟
در دنیای رمزارزها، اصطلاحات فنی گاهی پیچیدهتر از آن چیزی که واقعاً هستند به نظر میرسند. چکش خواری تراکنش یا همان Transaction Malleability یکی از همین اصطلاحات است. بیایید ابتدا معنی لغوی آن را بررسی کنیم. کلمهی Malleable در زبان انگلیسی معمولاً برای فلزاتی مانند طلا یا آهن به کار میرود و به معنای «قابلیت چکشخواری» یا «شکلپذیری» است؛ یعنی فلزی که میتوان با ضربه زدن به آن، شکلش را تغییر داد بدون آنکه بشکند.
حالا این مفهوم در بیتکوین به چه معناست؟ در شبکهی بیتکوین، هر تراکنش یک شناسهی منحصربهفرد دارد که به آن TxID میگویند. این شناسه مانند کد رهگیری بانکی است. مشکل چکش خواری دقیقاً از اینجا ناشی میشود: یک نقص فنی که به افراد اجازه میداد شناسهی تراکنش را تغییر دهند، بدون اینکه محتوای اصلی تراکنش (مانند مبلغ ارسالی، فرستنده و گیرنده) تغییر کند یا باطل شود.
به زبان سادهتر، هکر یا شخص خرابکار میتوانست ظاهر تراکنش را دستکاری کند تا کد رهگیری آن عوض شود، اما تراکنش همچنان معتبر باقی بماند و در شبکه تایید شود. این اتفاق شاید در نگاه اول ساده به نظر برسد، اما همانطور که در ادامه خواهیم دید، میتواند سیستمهای حسابداری را کاملاً به اشتباه بیندازد.
مثالی از دنیای واقعی برای درک تغییر شناسه تراکنش
برای اینکه این مفهوم فنی را کاملاً لمس کنید، بیایید از مثال یک چک بانکی استفاده کنیم. تصور کنید شما میخواهید مقداری پول به دوستتان قرض دهید:
- شما یک چک به مبلغ ۱۰ میلیون تومان مینویسید و آن را امضا میکنید. این چک یک شماره سریال اختصاصی دارد (مثلاً ۱۰۰۱).
- شما چک را به دوستتان میدهید تا آن را نقد کند.
- دوست شما (یا یک واسطهی شیطنتآمیز) قبل از رفتن به بانک، بدون اینکه مبلغ یا امضای شما را خراب کند، با یک ترفند خاص شماره سریال چک را از ۱۰۰۱ به ۱۰۰۲ تغییر میدهد.
- بانک چک را قبول میکند! چرا؟ چون امضای شما درست است و موجودی هم دارید. پول از حساب شما کسر میشود و به دوستتان پرداخت میگردد.
حالا مشکل کجاست؟ وقتی شما پرینت حساب خود را چک میکنید، به دنبال چک شماره ۱۰۰۱ میگردید تا مطمئن شوید پاس شده است. اما در سیستم بانکی، چک شماره ۱۰۰۲ ثبت شده است. شما فکر میکنید چک ۱۰۰۱ هرگز پاس نشده و پول دوستتان پرداخت نشده است، در حالی که پول از حساب شما کسر شده است. این دقیقاً همان کاری است که چکش خواری با تراکنشهای بیتکوین انجام میدهد.
چرا تغییر شناسه تراکنش (TxID) خطرناک است؟
شاید بپرسید: خب اگر پول در نهایت به مقصد میرسد، پس تغییر کردن شناسه چه خطری دارد؟ خطر اصلی متوجه صرافیها و سیستمهای پرداخت خودکار است. این باگ به هکرها اجازه میدهد تا یک کلاهبرداری هوشمندانه انجام دهند که مراحل آن به صورت زیر است:
- درخواست برداشت: هکر از صرافی درخواست میکند که مقداری بیتکوین به کیف پول او واریز کند.
- دستکاری شناسه: صرافی تراکنش را ارسال میکند. هکر در میانهی راه، امضای دیجیتال (بخشی از اطلاعات فنی که هویت تراکنش را تایید میکند) را کمی تغییر میدهد تا TxID عوض شود، اما تراکنش همچنان معتبر بماند.
- تایید تراکنش دستکاری شده: ماینرها تراکنش دستکاری شده (با شناسهی جدید) را تایید میکنند و بیتکوینها به کیف پول هکر مینشیند.
- ادعای عدم دریافت: حالا هکر به پشتیبانی صرافی پیام میدهد، من هنوز بیتکوینی دریافت نکردهام!
- بررسی صرافی: سیستم صرافی شناسهی اصلی (TxID اولیه) را در شبکه جستجو میکند. چون آن شناسه تایید نشده (و جایگزین آن تایید شده)، سیستم به اشتباه تصور میکند تراکنش شکست خورده است.
- ارسال مجدد: صرافی برای جبران، دوباره همان مبلغ را برای هکر ارسال میکند.
نتیجهی نهایی این است که صرافی دو بار پول پرداخت کرده است، اما در سیستمش فقط یک تراکنش موفق ثبت میشود. این حفرهی امنیتی باعث شد تا مهاجمان بتوانند موجودی صرافیها را بدون اینکه کسی متوجه شود، خالی کنند. دلیل خطرناک بودن چکش خواری این بود که اعتماد به سیستمهای حسابداری را از بین میبرد و تشخیص اینکه چه پولی واقعاً جابجا شده، دشوار میشد.
داستان صرافی Mt.Gox؛ بزرگترین قربانی باگ چکش خواری
شاید اگر امروز وارد بازار رمزارز شده باشید، نام بایننس یا کوینبیس را زیاد بشنوید؛ اما در سالهای ابتدایی تولد بیتکوین، پادشاه مطلق بازار صرافی Mt.Gox بود. این صرافی که در توکیو ژاپن مستقر بود، زمانی بیش از ۷۰ درصد از کل تراکنشهای بیتکوین در جهان را مدیریت میکرد. تصور کنید که یک بانک به تنهایی مسئولیت پولهای سهچهارم مردم دنیا را بر عهده داشته باشد.
اما این امپراتوری در سال ۲۰۱۴ با یک فاجعهی بزرگ فرو ریخت. صرافی اعلام کرد که حدود ۸۵۰ هزار بیتکوین (که مبلغی نجومی محسوب میشود) ناپدید شده است. دلیل اصلی این اتفاق چه بود؟ بله، همان باگ چکش خواری تراکنش که در بخش قبل با آن آشنا شدیم. سیستمهای نرمافزاری این صرافی به گونهای طراحی شده بودند که به شدت در برابر تغییر شناسهی تراکنش آسیبپذیر بودند و هکرها با زیرکی تمام از این ضعف نهایت استفاده را بردند.
هکرها چگونه از چکش خواری برای سرقت بیت کوین استفاده کردند؟
هکرها برای خالی کردن خزانهی صرافی Mt.Gox، نیازی به شکستن رمزنگاریهای پیچیدهی بلاکچین نداشتند؛ آنها فقط از یک اشتباه در سیستم حسابداری صرافی سوءاستفاده کردند. بیایید این سناریوی سرقت را مرحله به مرحله مرور کنیم:
- درخواست برداشت: هکر مقداری بیتکوین از حساب کاربری خود در صرافی درخواست میکرد.
- ارسال تراکنش: صرافی تراکنش را انجام میداد و بیتکوینها به سمت کیف پول هکر حرکت میکردند. این تراکنش یک شناسهی مشخص (TxID) داشت.
- حملهی چکش خواری: هکر بلافاصله قبل از اینکه تراکنش در شبکه تایید نهایی شود، با دستکاری امضای دیجیتال، شناسهی تراکنش را تغییر میداد.
- تایید شناسهی جعلی: ماینرها (استخراجکنندگان) که برایشان شناسهی تراکنش اهمیتی نداشت و فقط به معتبر بودن امضا کار داشتند، تراکنش دستکاری شده را تایید میکردند و پول به کیف پول هکر میرسید.
- فریب دادن صرافی: هکر با پشتیبانی تماس میگرفت و میگفت: من پولی دریافت نکردم! سیستم خودکار صرافی، شناسهی اولیهی تراکنش را چک میکرد. چون آن شناسه در شبکه ثبت نشده بود (و شناسهی تغییر یافته جای آن را گرفته بود)، صرافی تصور میکرد انتقال شکست خورده است.
- پرداخت دوباره: صرافی برای جلب رضایت مشتری، دوباره همان مبلغ را ارسال میکرد. در واقع هکر یک بار پول را گرفته بود، اما سیستم صرافی را فریب میداد تا دوباره پول بگیرد.
تکرار این چرخه باعث شد تا هزاران بیتکوین از صرافی خارج شود، بدون اینکه دفاتر حسابداری داخلی صرافی متوجه این کسری شوند، تا زمانی که دیگر خیلی دیر شده بود.
آیا این باگ هنوز هم یک تهدید برای شبکه بیت کوین است؟
احتمالاً حالا با نگرانی میپرسید: آیا ممکن است این اتفاق برای داراییهای من هم بیفتد؟ خبر خوب این است که پاسخ خیر است. این باگ دیگر یک تهدید جدی برای کاربران و صرافیهای مدرن محسوب نمیشود.
جامعهی توسعهدهندگان بیتکوین برای حل همیشگی این مشکل، یک بهروزرسانی بسیار هوشمندانه به نام سگویت یا SegWit را معرفی کردند. این آپدیت که در ادامه به طور مفصل با آن آشنا میشویم، ساختار تراکنشها را تغییر داد و امکان دستکاری شناسه را از بین برد.
امروزه تمام کیف پولهای معتبر و صرافیهای بزرگ دنیا از استانداردهای جدید استفاده میکنند که در برابر چکش خواری کاملاً ایمن هستند. بنابراین، تا زمانی که شما از نرمافزارهای بهروز و معتبر استفاده میکنید، ماجرای Mt.Gox برای شما تکرار نخواهد شد و این باگ بیشتر به تاریخ پیوسته است تا اینکه یک تهدید حال حاضر باشد.
سگویت (SegWit) چیست و چگونه مشکل را حل کرد؟
پس از مشکلات امنیتی بیتکوین، توسعهدهندگان در سال ۲۰۱۷ آپدیت مهمی به نام سگویت (SegWit) را معرفی کردند. این کلمه مخفف Segregated Witness و به معنای «شاهد جدا شده» است. در زبان فنی بیتکوین، منظور از «شاهد»، همان امضای دیجیتال است. بنابراین کار اصلی سگویت، جداسازی امضای دیجیتال از بخش اصلی تراکنش بود تا امنیت شبکه را تضمین کند.
معرفی آپدیت سگویت به عنوان ناجی شبکه
تا پیش از این آپدیت، شبکه بیتکوین با دو مشکل بزرگ روبرو بود: یکی باگ چکش خواری که امنیت را تهدید میکرد و دیگری محدودیت ظرفیت بلاکها که باعث کندی سرعت شده بود. سگویت به عنوان یک بهروزرسانی نرمافزاری (Soft Fork) ارائه شد؛ یعنی بدون اینکه شبکه را دو تکه کند، هم مشکل امنیتی تغییر شناسه را حل کرد و هم با فشردهسازی اطلاعات، ظرفیت بیشتری برای تراکنشها ایجاد نمود.
جداسازی امضای دیجیتال (Witness Data)؛ کلید حل معما
مکانیسم سگویت بسیار هوشمندانه است. در تراکنشهای قدیمی، امضای دیجیتال بخشی از بدنهی اصلی تراکنش بود و در ساخت شناسه (TxID) نقش داشت؛ به همین دلیل با تغییر ظاهری امضا، شناسه هم عوض میشد. سگویت آمد و امضا را از بدنهی اصلی جدا کرد و در یک بخش ضمیمه (Witness) قرار داد.
مثال ساده:
تصور کنید قبلاً امضای شما روی خود چک بانکی زده میشد (تراکنش قدیمی). اگر کسی روی امضا خط میکشید، ظاهر چک عوض میشد.
اما در سگویت، شما چک را مینویسید ولی امضا را روی یک کاغذ جداگانه میزنید و به چک سنجاق میکنید. حالا هر چقدر هم آن کاغذ ضمیمه تغییر کند، شماره سریال و متن اصلی چک ثابت و دستنخورده باقی میماند. با این روش، شناسه تراکنش (TxID) غیرقابل تغییر و کاملاً امن شد.
مقایسه ساختار تراکنش قبل و بعد از سگویت
|
ویژگی
|
تراکنشهای قدیمی (Legacy)
|
تراکنشهای سگویت (SegWit)
|
|
محل قرارگیری امضا
|
داخل دادههای اصلی
|
جدا شده در بخش ضمیمه (Witness)
|
|
امنیت شناسه (TxID)
|
آسیبپذیر (قابل تغییر)
|
ایمن و ثابت
|
|
هزینه کارمزد
|
بالاتر
|
ارزانتر و بهصرفهتر
|
|
شروع آدرس کیف پول
|
با عدد 1
|
با عدد 3 یا عبارت bc1
|
انواع آدرسهای سگویت و تفاوت آنها با یکدیگر
وقتی تصمیم میگیرید از تکنولوژی سگویت استفاده کنید، ممکن است در کیف پول خود با گزینههای مختلفی روبرو شوید که کمی گیجکننده به نظر برسند. توسعهدهندگان بیتکوین برای اینکه تغییرات شبکه باعث قطعی ارتباط با نرمافزارهای قدیمی نشود، سگویت را در دو مرحله و با دو استاندارد مختلف عرضه کردند. شناختن این آدرسها به شما کمک میکند تا هنگام انتقال دارایی، انتخاب هوشمندانهتری داشته باشید و کارمزد کمتری بپردازید.
در ادامه، این دو نوع آدرس را بررسی میکنیم:
سگویت معمولی (P2SH) با آدرسهای شروع شده با 3
این نوع آدرس، که با نامهای Nested SegWit یا Wrapped SegWit هم شناخته میشود، در واقع راهکاری بود برای اینکه سگویت بتواند با سیستمهای قدیمی تعامل داشته باشد.
- شکل ظاهری: این آدرسها همیشه با عدد 3 شروع میشوند. (برای مثال: 3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy)
- عملکرد: تصور کنید میخواهید یک نامهی اداری جدید و مدرن را به یک ادارهی قدیمی بفرستید که فقط پاکتهای نامهی قدیمی را قبول میکند. شما نامهی مدرن خود را درون یک پاکت قدیمی میگذارید تا سیستم آن را رد نکند. آدرسهای P2SH دقیقاً همین کار را میکنند؛ آنها تراکنش سگویت را درون یک پوستهی قدیمی بستهبندی میکنند تا کیف پولهای قدیمی هم بتوانند به آن پول واریز کنند.
- مزیت: سازگاری بسیار بالا با تمام کیف پولها و صرافیها.
سگویت بومی (Native SegWit) یا Bech32 با آدرسهای bc1
این نوع آدرس، خالصترین و پیشرفتهترین شکل سگویت است. در اینجا دیگر خبری از بستهبندی یا واسطه نیست و تراکنش با استاندارد کامل سگویت انجام میشود. در تنظیمات بسیاری از کیف پولها، این گزینه را با نام Bech32 مشاهده میکنید.
- شکل ظاهری: این آدرسها با عبارت bc1 شروع میشوند و معمولاً طولانیتر از آدرسهای معمولی هستند. (برای مثال: bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq)
- ویژگی خاص: در این آدرسها تفاوتی بین حروف بزرگ و کوچک وجود ندارد (Case-insensitive). این ویژگی باعث میشود که احتمال خطای تایپی هنگام وارد کردن آدرس کاهش یابد.
- مزیت: سبکترین و کمحجمترین نوع تراکنش در شبکهی بیتکوین است.
کدام آدرس برای انتقال بیت کوین به صرفهتر و سریعتر است؟
اگر هدف شما صرفهجویی در هزینهها و افزایش سرعت تایید تراکنش است، پاسخ قطعی سگویت بومی (Native SegWit) یا همان آدرسهای bc1 است.
بیایید این سه نوع آدرس را از نظر کارمزد مقایسه کنیم:
- آدرسهای قدیمی (Legacy - شروع با 1): بیشترین کارمزد و سنگینترین حجم داده را دارند. (بدترین گزینه برای انتقال).
- آدرسهای سگویت معمولی (P2SH - شروع با 3): کارمزد کمتری نسبت به مدل قدیمی دارند، اما چون هنوز مقداری دادهی اضافی برای سازگاری حمل میکنند، بهترین گزینه نیستند.
- آدرسهای سگویت بومی (Native - شروع با bc1): کمترین کارمزد ممکن را دارند. به دلیل اینکه دادههای امضا کاملاً جدا شده و هیچ بستهبندی اضافی ندارند، فضای کمتری در بلاک اشغال میکنند و ماینرها کارمزد کمتری از شما کسر میکنند.
توصیهی نهایی: همیشه سعی کنید از آدرسهای bc1 استفاده کنید. تنها زمانی به سراغ آدرسهای شروع شده با 3 بروید که کیف پول یا صرافی مقصد، هنوز آنقدر قدیمی است که آدرسهای جدید bc1 را تشخیص نمیدهد؛ هرچند امروزه تقریباً تمام سرویسهای معتبر از سگویت بومی پشتیبانی میکنند.
مزایای پیادهسازی سگویت فراتر از حل مشکل چکش خواری
اگرچه هدف اصلی سگویت رفع یک حفرهی امنیتی بود، اما این آپدیت مانند یک تیر و چند نشان عمل کرد. مهندسان شبکه با این بهروزرسانی، تغییرات بنیادینی ایجاد کردند که باعث شد بیتکوین نه تنها امنتر، بلکه سریعتر و بهینهتر شود. در ادامه سه مزیت کلیدی این فناوری را به صورت خلاصه مرور میکنیم.
افزایش ظرفیت بلاک و مقیاس پذیری شبکه
یکی از مشکلات قدیمی بیتکوین، محدودیت فضا در بلاکها بود. بلاکها مانند واگنهای قطاری با ظرفیت محدود هستند که اگر پر شوند، ترافیک و کندی ایجاد میشود.
سگویت با جدا کردن امضای دیجیتال (که حجم زیادی داشت) از بدنهی اصلی تراکنش، فضای خالی بیشتری را در هر بلاک ایجاد کرد. این کار باعث شد تعداد تراکنشهای بیشتری در یک بلاک جا شوند و ظرفیت کلی شبکه افزایش یابد که به این قابلیت، مقیاسپذیری میگویند.
کاهش کارمزد تراکنشها برای کاربران
در شبکهی بیتکوین، کارمزد بر اساس حجم دادههای تراکنش محاسبه میشود، نه مبلغ پول.
از آنجا که تراکنشهای سگویت به دلیل حذف دادههای امضا از بدنهی اصلی، «سبکتر» و کمحجمتر هستند، ماینرها کارمزد کمتری برای تایید آنها دریافت میکنند. بنابراین استفاده از آدرسهای سگویت (که با 3 یا bc1 شروع میشوند) به معنای پرداخت هزینهی کمتر برای انتقال دارایی است.
هموار کردن مسیر برای شبکه لایتنینگ (Lightning Network)
شبکهی لایتنینگ بیت کوین تکنولوژی لایه دومی است که پرداختهای فوری و بسیار ارزان را روی بیتکوین ممکن میکند. این شبکه برای فعالیت صحیح، نیاز مبرم داشت که شناسهی تراکنشها (TxID) ثابت و غیرقابل تغییر باشد.
سگویت با حل مشکل چکش خواری و تثبیت شناسهها، عملاً فونداسیون و زیرساخت لازم را برای ساختن لایتنینگ فراهم کرد. بدون سگویت، داشتن تراکنشهای برقآسا و ارزان امروزی غیرممکن بود.
معایب و چالشهای پذیرش آپدیت سگویت
پیادهسازی سگویت در شبکه بیتکوین مسیری هموار نبود و با چالشهای فنی و مخالفخوانیهای زیادی روبرو شد. این تغییر بزرگ، اگرچه مفید بود، اما هزینهها و پیچیدگیهایی را هم به همراه داشت که باعث شد پذیرش کامل آن زمانبر باشد.
پیچیدگی فنی برای توسعهدهندگان کیف پولها
برای سازندگان کیف پولها و صرافیها، سگویت فقط یک آپدیت ساده نبود، بلکه تغییری بنیادین در ساختار تراکنشها محسوب میشد.
توسعهدهندگان مجبور بودند بخش زیادی از کدهای نرمافزاری خود را بازنویسی کنند. این کار هم زمانبر بود و هم ریسک ایجاد باگهای جدید را به همراه داشت. به همین دلیل، بسیاری از سرویسدهندگان ترجیح دادند تا زمان اطمینان کامل از پایداری سیستم، دست نگه دارند و از سگویت پشتیبانی نکنند.
چرا برخی ماینرها و سرویسها در ابتدا مقاومت کردند؟
مقاومت اصلی در برابر سگویت از سوی گروهی از ماینرها بود که دو دلیل عمده برای مخالفت داشتند:
- کاهش درآمد: سگویت باعث کاهش کارمزد تراکنشها میشد و این به معنای سود کمتر برای ماینرها بود.
- حذف یک مزیت پنهان (AsicBoost): برخی ماینرها از روشی خاص برای استخراج سریعتر و کمهزینهتر استفاده میکردند. آپدیت سگویت جلوی این ترفند را میگرفت و باعث میشد آنها برتری خود را نسبت به سایر رقبا از دست بدهند؛ بنابراین به شدت با فعالسازی آن مخالفت میکردند.
کدام کیف پولها از سگویت پشتیبانی میکنند؟
حالا که متوجه شدیم استفاده از سگویت باعث میشود کارمزد کمتری بپردازیم و تراکنشهایمان سریعتر تایید شود، سوال اصلی این است: چطور باید از آن استفاده کنیم؟ کلید این کار در انتخاب کیف پول (Wallet) شماست. برای بهرهمند شدن از مزایای سگویت، شما نیاز به کیف پولی دارید که این تکنولوژی را بشناسد و بتواند آدرسهای مدرن (که با 3 یا bc1 شروع میشوند) را تولید کند.
خوشبختانه امروزه اکثر کیف پولهای معتبر این قابلیت را دارند. در ادامه، بهترین گزینهها را برای کاربرانی که میخواهند تراکنشهای بهینهتری داشته باشند، معرفی میکنیم.
معرفی کیف پولهای سخت افزاری
کیف پولهای سختافزاری که شبیه به فلشمموری هستند، امنترین روش برای نگهداری طولانیمدت بیتکوین محسوب میشوند، زیرا کلیدهای خصوصی شما را دور از اینترنت نگه میدارند. دو غول اصلی این بازار، پشتیبانی کاملی از سگویت دارند:
- لجر (Ledger): وقتی در نرمافزار مدیریت این کیف پول (Ledger Live) میخواهید یک حساب بیتکوین جدید بسازید، سیستم به شما چند گزینه میدهد. بهترین کار این است که گزینهی Native SegWit را انتخاب کنید تا آدرسهای شما با bc1 شروع شود و کمترین کارمزد را داشته باشید. البته لجر گزینهی SegWit معمولی (با شروع 3) را هم برای سازگاری بیشتر دارد.
- ترزور (Trezor): در نرمافزار Trezor Suite نیز اوضاع دقیقاً به همین شکل است. این کیف پول به صورت پیشفرض کاربران را به سمت ساخت حسابهای سگویت هدایت میکند تا تجربهی کاربری بهتری داشته باشند. در ترزور هم میتوانید به راحتی بین انواع حسابهای قدیمی و جدید جابجا شوید.
معرفی کیف پولهای نرم افزاری محبوب
اگر به دنبال کیف پولی هستید که روی موبایل یا کامپیوتر نصب شود (کیف پول نرمافزاری) و دسترسی سریعتری به داراییهایتان داشته باشید، گزینههای زیر از پیشگامان استفاده از سگویت هستند:
- الکتروم (Electrum): این یکی از قدیمیترین و حرفهایترین کیف پولهای بیتکوین است که روی کامپیوتر و موبایل نصب میشود. الکتروم به صورت پیشفرض برای شما آدرسهای Native SegWit تولید میکند. اگرچه ظاهر این برنامه کمی ساده و کلاسیک است، اما به شما اجازه میدهد کنترل دقیقی روی کارمزدها داشته باشید و دقیقاً تعیین کنید که چقدر میخواهید هزینه کنید.
- سامورایی (Samourai Wallet): این کیف پول که مخصوص سیستمعامل اندروید است، تمرکز ویژهای روی حریم خصوصی و امنیت دارد. سازندگان سامورایی از طرفداران سرسخت سگویت هستند و تمام امکانات این کیف پول بر پایهی آدرسهای جدید بنا شده است. استفاده از سامورایی به شما کمک میکند تا علاوه بر کاهش هزینهها، تراکنشهای خصوصیتری هم داشته باشید.
نکتهی پایانی: اگر از کیف پولهای دیگری (مثل تراست ولت یا اتمیک) استفاده میکنید، حتماً دقت کنید که آدرس بیتکوین شما با چه کاراکتری شروع میشود. اگر با عدد 1 شروع میشود، یعنی هنوز در حال پرداخت کارمزد اضافی هستید و بهتر است به سراغ گزینههای سگویت بروید.
آیندهی بیت کوین پس از حل مشکل چکش خواری
زمانی که آپدیت سگویت با موفقیت پیادهسازی شد و مشکل چکش خواری برای همیشه به تاریخ پیوست، انگار بندهایی که پای بیتکوین را بسته بودند، باز شدند. حل این مشکل فقط یک تعمیر ساده نبود؛ بلکه دروازهای را به سوی آیندهای روشنتر و پیشرفتهتر باز کرد. بیتکوین از یک سیستم صرفاً برای انتقال پول، به بستری تبدیل شد که میتوانست میزبان فناوریهای پیچیدهتری باشد. در این بخش بررسی میکنیم که این ثبات فنی چگونه امنیت قراردادها را تضمین کرد و ماجرای جنجالی سگویت 2x چه بود.
تاثیر حذف این باگ بر امنیت قراردادهای هوشمند بیت کوین
شاید اصطلاح قرارداد هوشمند (Smart Contract) را بیشتر در کنار نام اتریوم شنیده باشید، اما بیتکوین هم قابلیتهای اولیهای برای اجرای این قراردادها دارد. قرارداد هوشمند به زبان ساده، کدهایی هستند که مثل یک ربات امین عمل میکنند و میگویند: «اگر شرط A اتفاق افتاد، به صورت خودکار کار B را انجام بده».
قبل از حل مشکل چکش خواری، ایجاد قراردادهای هوشمند پیچیده روی بیتکوین مثل ساختن خانه روی شنهای روان بود. چرا؟
چون قراردادهای هوشمند اغلب از زنجیرهای از تراکنشها تشکیل شدهاند که به یکدیگر متصل هستند. هر تراکنش برای اینکه تراکنش بعدی را فعال کند، به شناسهی تراکنش قبلی (TxID) نیاز دارد.
- وضعیت قبل از اصلاح: اگر هکری شناسهی تراکنش اول را با استفاده از باگ چکش خواری تغییر میداد، تراکنش دوم دیگر نمیتوانست آن را پیدا کند. در نتیجه، کل زنجیرهی قرارداد از هم میپاشید و اجرا نمیشد.
- وضعیت بعد از اصلاح: با آمدن سگویت و ثابت شدن شناسهها، توسعهدهندگان توانستند با خیال راحت قراردادهای چندمرحلهای بنویسند.
این امنیت جدید باعث شد تا تکنولوژیهایی مانند شبکهی لایتنینگ و کیف پولهای چندامضایی بدون ترس از خرابکاری هکرها، به درستی کار کنند.
سگویت 2x چه بود و چرا شکست خورد؟
در سال ۲۰۱۷، همزمان با معرفی سگویت، یک درگیری بزرگ و تاریخی در جامعهی بیتکوین رخ داد که به «جنگ داخلی بیتکوین» معروف شد. ماجرا از این قرار بود که گروهی از شرکتهای بزرگ و ماینرها معتقد بودند که سگویت به تنهایی برای افزایش سرعت شبکه کافی نیست و باید سایز بلاکها را هم به زور افزایش دهیم.
آنها طرحی به نام SegWit2x را پیشنهاد دادند. این طرح دو بخش داشت:
- فعالسازی سگویت (که همه با آن موافق بودند).
- افزایش سایز بلاک به ۲ مگابایت از طریق یک هارد فورک (Hard Fork). هارد فورک نوعی تغییر رادیکال و اجباری در قوانین شبکه است که باعث میشود نسخههای جدید با قدیمی سازگار نباشند و شبکه دو تکه شود.
چرا این طرح شکست خورد؟
بخش اول (سگویت) اجرا شد، اما بخش دوم (2x) با مقاومت شدید کاربران عادی، توسعهدهندگان اصلی و گرههای (Nodes) شبکه روبرو شد. دلایل شکست آن عبارت بودند از:
- خطر مرکزی شدن: افزایش ناگهانی حجم بلاک باعث میشد که حجم دادههای بلاکچین خیلی زیاد شود. این یعنی کاربران عادی دیگر نمیتوانستند روی کامپیوترهای خانگی خود گرهی بیتکوین را اجرا کنند و قدرت شبکه فقط دست شرکتهای بزرگ دارای سرورهای قوی میافتاد.
- نبود اجماع: در دنیای بیتکوین، هیچ رئیسی وجود ندارد. وقتی کاربران و توسعهدهندگان با این تغییر اجباری مخالفت کردند، شرکتهای حامی SegWit2x متوجه شدند که اگر این کار را انجام دهند، بیتکوین دو شقه میشود و کسی از نسخهی آنها حمایت نمیکند.
در نهایت، طرح SegWit2x در نوامبر ۲۰۱۷ لغو شد. این اتفاق یک درس بزرگ داشت: در شبکهی بیتکوین، قدرت واقعی دست کاربران و جامعهی غیرمتمرکز است، نه شرکتهای قدرتمند و ماینرها.
منابع:
DYDX
Bit2me
River
Leather.io