چکش خواری تراکنش یک مشکل بسیار جدی برای شبکهٔ بیت کوین است که در این مقاله قصد داریم به آن بپردازیم.
قبل از اینکه دربارهٔ چکش خواری تراکنش صحبت کنم ابتدا باید به این مثال توجه کنید: لوسی قصد دارد ۱۰ بیت کوین به جودی ارسال کند. برای اینکه این اتفاق رخ دهد مراحل زیر باید طی شوند.
لوسی یک درخواست به شبکه ارسال میکند. درخواست او شامل آدرس عمومی جودی، مبلغ ۱۰ بیت کوین برای ارسال و کارمزد تراکنش برای ماینرها میشود. این درخواست شامل امضای کلید خصوصی لوسی نیز میشود که با استفاده از آن ثابت میکند که موجودی او برای ارسال مبلغ ۱۰ بیت کوین کافی است. این امضا "دادهٔ امضای تراکنش" نام دارد.
ماینرها تراکنش را پردازش میکنند. آنها اطلاعات جودی و لوسی را به صورت رمزگذاری شده در کنار هم میگذارند. یعنی اطلاعات را تبدیل به کدهای کامپیوتری به نام "شناسهٔ تراکنش" میکنند.
صفهای تراکنش، در انتظار پردازش. اگر لوسی تراکنش با کارمزد ارزان را انتخاب کرده باشد باید مدت زمان زیادی را منتظر بماند. مثلا برای اینکه بستهای به شهرستان ارسال کنید میتوانید از پست پیشتاز که هزینهٔ بیشتری دارد استفاده کنید و بستهٔ شما ظرف ۳ روز کاری به مقصد برسد یا اینکه از پست عادی استفاده کنید که هزینهٔ ارزان دارد با این تفاوت که ۷ روز طول میکشد.
لوسی نیز میتواند با ارسال مجدد تراکنش با هزینهٔ بیشتر روند را تسریع کند. اکنون شناسهٔ تراکنش مجددا رمزگذاری شده و به شناسههای تراکنش سایر کاربران اضافه میشود. این فرایند تا زمانی که اطلاعات تراکنش به ۱ مگابایت برسد ادامه مییابد.
بلاک تایید میشود. بلاک به شبکه ارسال میشود و اگر ۵۱ درصد از نودها موافقت کنند که اطلاعات آن معتبر است، تایید میشود و در بلاک چین ثبت میشود. اکنون جودی ۱۰ بیت کوین دریافت میکند.
به این طریق تراکنشهای بیت کوین انجام میشوند. اکنون قصد دارم به شما نشان دهم که چگونه جودی میتواند از چکش خواری استفاده کند تا لوسی را فریب دهد تا بجای ارسال ۱۰ بیت کوین، ۲۰ بیت کوین ارسال کند.
باگهایی که در کد بیت کوین وجود دارند این امکان را به جودی میدهند تا دادهی تراکنش لوسی را قبل از اینکه در شبکه تایید شود، تغییر دهد. این امر باعث میشود تا شناسهٔ تراکنش لوسی بدون اینکه خودِ تراکنش تغییر کند دچار اصلاحات شود. بطوریکه تراکنش هنوز همان ۱۰ بیت کوین باشد.
هنگامی که این تراکنشِ اصلاح شده به تایید شبکه میرسد، تراکنش اصلی را لغو میکند. اکنون، جودی به دروغ مدعی میشود که مبلغی به دست او نرسیده است و لوسی را وادار میکند تا دوباره مبلغ را ارسال کند.
لوسی شبکه را بررسی میکند و میبیند که حق با جودی است و تراکنش اصلی انجام نشده است. اکنون لوسی تصمیم میگیرد مبلغ را مجددا ارسال کند، اما اینبار ترجیح میدهد از تراکنش با کارمزد گرانتر استفاده کند تا تراکنش سریع تر انجام شود. تراکنش مجددا فرایند تایید خود را در شبکه میگذراند و به دست جودی میرسد.
متاسفانه لوسی، ماینرها و سایر اعضای شبکه متوجه این موضوع نمیشوند. به محض اینکه تراکنشها تایید و در بلاک چین ثبت شوند دیگر نمیتوان آنها را تغییر یا حذف کرد.
نمودار زیر نشان میدهد که چکش خواری تراکنش یک مشکل بسیار جدی برای شبکهٔ بیت کوین است. تراکنشهایی که توسط چکش خواری تغییر یافتهاند با رنگ قرمز نشان داده شدهاند.
برطرف کردن مشکل چکش خواری تراکنش توسط سگویت
عملکرد سگویت بسیار ساده است. دادههای امضا میتوانند شناسهٔ تراکنش را تغییر دهند. پیتر ویل برای جلوگیری از این کار پیشنهاد کرد دادههای امضا را از تراکنش حذف کنند. سگویت کوتاه شدهٔ عبارت Segregated Witness است. Segregate به معنی حذف یا جداسازی و Witness به معنی امضا که معنی کامل آن "حذف دادههای امضا" است.
حذف دادههای امضا یک زنجیره جانبی ایجاد میکند که دادههای امضا خارج از بلاک چین اصلی ذخیره شوند. این امر باعث میشود تا شناسههای تراکنش توسط کاربران متقلب تغییر پیدا نکنند.
ویژگی هوشمندانهای که سگویت دارد این است که میتواند با اطلاعات گذشتهٔ شبکه همگام شود. یعنی نودهایی که با پروتکل سگویت آپدیت میشوند هنوز میتوانند با نودهایی که آپدیت نشدهاند کار کنند. به این شیوه از آپدیت "انشعاب نرم" گفته میشود. آپدیتهایی که با اطلاعات گذشته همگام نمیشوند "انشعاب سخت" نام دارند. انشعابهای سخت میتوانند شبکهها را برای تولید ارزهای دیجیتال جدید از هم جدا کنند.
پیتر ویل قصد داشت سگویت را به گونهای طراحی کند که با اطلاعات گذشته سازگار باشد. او برای این کار نیاز داشت تا سگویت را به گونهای طراحی کند که دادههای امضا بعد از آپدیت در بلاک چین اصلی باقی بمانند. راه حلی که او برای این کار ارائه کرد این بود که تمامی دادههای امضا را در یک بلاک بر روی بلاک چین جانبی سگویت رمزگذاری کند و سپس یک نسخهٔ کپی شده از آنها را در بلاک چین اصلی ذخیره کند. این طرح باعث میشد تا سگویتِ بیت کوین بتواند چکش خواری تراکنش را بدون نیاز به آپدیت به روش انشعاب سخت به روز رسانی کند.
نظر شما