آپدیت جدید هستهی بیتکوین تقریبا ۱۰ روز پیش منتشر شد و میتونیم ادعا کنیم که این بهروزرسانی یکی از پرتغییرترین ورژنهای منتشرشدهست. اما قبل از اینکه به جزییاتش بپردازیم توضیح مختصری بدیم که اصلا خود هستهی بیتکوین چیه.
آیا تا به حال پیغامی از ویندوز، گوشی، نرم افزار و یا هر ابزار هوشمند دیگهتون دریافت کردین که از شما بخواد به روزرسانی انجام بدین؟
پیام به شما میگه که توی نسخهی جدید چند تا باگ رفع شده، یک سری ویژگیها حذف شده و یک سری ویژگیها هم اضافه شده (البته به جز اپل که اکثرا هیچی اضافه نشده!). ما هم امروز میخوایم راجعبه یکی از همین نوع بهروزرسانیها صحبت کنیم؛ با این تفاوت که این تغییرات در نرمافزار بیتکوین اتفاق میفته و نه گوشی یا ویندوزمون.
هستهی بیتکوین یک نرمافزار مثل بقیهی نرمافزارهاست و از لحاظ ماهیت از چندین خط کد تشکیل شده. هر از گاهی این کدها توسط برنامهنویسهای داوطلب بهینه میشن و مشکلاتشون رفع میشه و یا با حذف و اضافه کردن بخشهایی ویژگیهای جدیدی در اون ایجاد میکنن. این نرمافزار، ۱۲ سال پیش توسط سازندهی بیتکوین، ساتوشی ناکاموتو، نوشته شده و پس از اون با مشارکت دیگران هر سال بارها دچار تغییروتحولات مختلفی شده. همچنین، نرمافزارهای مشابه دیگهای هم توسط سایرین به شکل جداگانهای پیادهسازی شده، اما به خاطر اولین بودن این کلاینت، به اون «هستهی بیتکوین» میگیم و به اصطلاح نرمافزار اصلی تلقیش میکنیم. [شاید براتون سوال باشه که دیگران چهطور بیتکوین رو از ابتدا پیادهسازی میکنن و جواب اینکه بیتکوین یک پروژهی متنبازه؛ یعنی دستورپخت و پروپوزالها به صورت عمومی در دسترسه و همه میتونن در این شبکه مشارکت کنن.]
در ۲۱امین نسخه که اولین آپدیت در سال ۲۰۲۱ هست، تغییرات متنوعی داشتیم که ما به طور مختصر دربارهی کیف پولهای توصیفی، جایگزین فیلتر Bloom، زمان جدید مخابرهی تراکنشها، Tor ورژن۳ و کمی هم از اعمال تپروت و اشنور صحبت میکنیم. این تغییرات عمدتا مرتبط با حریم خصوصی هستن.
زمانی که شما هستهی بیتکوین رو نصب میکنین درواقع تبدیل به یک فول نود بیتکوین میشین. این نود به صورت پیشفرض یک کیف پول در خودش داره؛ که به دلیل داشتن تاریخچهی کل تراکنشها (بلاک چین) به عنوان موثقترین کیف شناخته میشه و صحتسنجی تراکنشهای شما توسط خودتون رو ممکن میکنه. در نسخههای قبلی، UTXOهای شما (یعنی بیتکوینهایی که توی کیفتونه و میتونید خرجشون کنین) به شرط تطبیق امضای شما با آدرس عمومی امکان جابهجایی داشت. به عبارتی، تنها در صورت داشتن کلید خونه، میتونستید واردش بشین. این کلید باید دارای ویژگیهای خاصی باشه تا کاملا با قفل تطبیق پیدا کنه و بتونه در رو باز کنه. مثلا به برآمدگی و اشکال انتهای کلیدهای زیر توجه کنین؛ هر کدوم دارای شرایط خاصیاند و درهای مختلفی با اشکال مکمل رو باز میکنند. توی دنیای بیتکوین به این اشکال و شرایط خاص میگیم ScriptPubKey که از لحاظ لغوی یعنی شرایط کلید عمومی.
در کیف پولهای قبلی، کلیدهای خصوصی به طور غیرمستقیم، آدرسها و همینطور Scriptpubkey رو تولید میکردن؛ به عبارتی ساختار کیف پول بر پایهی کلید خصوصی بنا بود. اما در نسخهی جدید، کیف پولهای توصیفی معرفی شدند که پایه و اساس رو شرایط خرج کردن بیتکوین در نظر میگیرند؛ یعنی بر پایهی Script هستند.
به عبارت دیگه، کیف پول بیتکوینهاتون رو بر اساس شروطی که میتونین خرجشون کنین طبقهبندی میکنه و مثلا چندامضایی (multisig) رو از تکامضایی جدا میکنه. این کار نسبت به روش قبلی مزایای بیشتری داره و پیچیدگیهای کیف پولها رو کمتر میکنه.
این نوع کیف پول بیشتر برای توسعهدهندگان نرمافزار کاربرد داره که میخوان روی هستهی بیتکوین نرمافزار پیادهسازی کنند؛ و مثلا UTXOها رو بر اساس نوعشون ایجاد کنند. اما مشخصا کاربرهای معمولی هم با استفاده از این روش میتونن نظم بیشتری در کیفشون ببینند و مقادیر مالی کیف رو با جزییات دنبال کنن. همچنین ویژگی Watchonly هم توی این ورژن ارتقا پیدا کرده. یعنی شما میتونین یک آدرس خاص (مربوط به شما یا دیگران) رو وارد کیف پول کنین و این آدرس رو تحت نظر بگیرین؛ و جزییات ورودی و خروجیهاش رو زیرنظر داشته باشید.
این نوع کیف پولها در مرحلهی آزمایشی قرار داره و هنوز باگهاش شناسایی و رفع نشده؛ به همین خاطر پیشفرض کیف پول هستهی بیتکوین شما نیستن. برای استفاده از این نوع کیف پول باید به صورت دستی این گزینه رو انتخاب کنین تا تولید بشه.
باید که نه؛ اما بهتره اگر میتونیم این کارو انجام بدیم. دانلود کل بلاک چین در کنار مزایایی که داره، نیازمند فضای زیادی هم هست (در حال حاضر ۳۵۰ گیگابایت) و همینطور کمی از پهنای باند اینترنتتون رو هم مصرف میکنه. در نتیجه، انتخاب اول و گزینهی راحتی برای خیلی از کاربرها نیست. به جای هستهی بیتکوین میتونیم از کیف پولهای به اصطلاح «سبک» استفاده کنیم که به راحتیِ دانلود یک اپلیکیشناند؛ مثل الکتروم، سامورایی و یا گرین. این کمپانیها به نمایندگی از شما فول نود اجرا میکنن و فقط زمان انجام تراکنش، اطلاعات مرتبط با بلوک و تراکنش رو به کیف شما میفرستند و شما نیازی به اجرای فول نود ندارید. بدیهیه که نسبتا امنیت پایینتری دارن.
اگر شما به جای فول نود یک کیف پول سبک داشته باشین، موقع انجام تراکنش نیاز دارید تا اطلاعات مرتبط رو از نودهای اطراف درخواست کنید. روش مرسوم و فعلی، استفاده از یک روش رمزنگاری به اسم فیلتر Bloom بوده؛ به این شکل که کیف پول سبک شما نودها رو تقریبا تصادفی انتخاب میکنه و ازشون اطلاعات مرتبط با تراکنشتون رو درخواست میکنه. طی این سالها معلوم شده که این روش به ضرر حریم خصوصیه. چون تمامی اطلاعات کاربر رو به اون نودها افشا میکنه.
برای افزایش حریم خصوصی کاربرها روش جدیدی در (BIP 157/158) پیشنهاد و اعمال کردن که مسیر درخواست اطلاعات رو برعکس میکنه. یعنی کاربر به نود درخواست نمیده؛ نود برای هر بلوک فیلترهای مجزایی ایجاد میکنه و هر کاربری درخواست کرد براش بستههای آماده رو میفرسته (و از کاربر درخواست اطلاعات نمیکنه.) تنها کاری که کیف پول کاربر نیازه بکنه اینه که اطلاعات بلوک ارسالشده رو چک کنه و ببینه آیا تراکنشش در اون قرار داره و یا نه. این فیلترهای ایجادشده توسط هستهی بیتکوین برای هر نرمافزاری که روی نود بیتکوین اجرا میشن (مثل کیف پولها) در دسترسه.
مطلب مرتبط» چگونه اطلاعات یک بلوک از بلاک چین را بخوانیم
وقتی یک نود میخواد تراکنشی رو مخابره کنه، هر ۱۵ دقیقه، اون رو در شبکه منتشر میکنه و انقدر این کارو ادامه میده تا بالاخره تراکنشش توی یک بلوک قرار بگیره. مشکلی که وجود داره اینه که اگر کسی در حال جاسوسی باشه، میتونه با دنبال کردن این الگو منشا تراکنش رو بفهمه و چون IP نودها مشخصه، به راحتی میتونه به هویت منتشرکنندهی تراکنش وصل بشه.
نود بیتکوین چیست؟
راهحل نسخهی جدید هستهی بیتکوین کاهش تعداد دفعات مخابرهست. یعنی به جای هر ۱۵ دقیقه، نودها هر ۱۲ الی ۳۶ ساعت یک بار تراکنششون رو به شبکه اطلاع میدن. با این روش هم بازهای که باید برای پیدا کردن منشا تراکنش باید بررسی بشه افزایش پیدا میکنه و هم احتمال پیدا کردنش کاهش پیدا میکنه.
در ورژن بعدی این مشکل به کلی رفع میشه؛ چون نود تراکنش خودش رو همراه با بقیهی تراکنشها مخابره خواهد کرد و همینطور فقط اونهایی رو منتشر میکنه که بر اساس محاسباتش صلاحیت قرار گرفتن در شبکه رو دارن؛ این کار نیاز به مخابرهی چندباره رو از بین میبره.
تکنیکی که احتمالا در مرورگر Tor با اون کمابیش آشنایی دارید، به رمزنگاری پیازی معروفه. نودها در هستهی بیتکوین برای پیدا کردن همدیگه از آدرسهای Tor استفاده میکنن. اخیرا Tor آدرسهاش رو به ورژن۳ ،که رشتههای طولانیتری هستن، تغییر داده و تا حدود یک سال دیگه از آدرسهای ورژن۲ پشتیبانی نخواهد کرد. نسخهی 0.21 فرمت جدیدی رو معرفی کرده که با ورژن جدید Tor تطبیقپذیر شده.
نحوهی عملکرد Tor را در این پست بخوانید.
تپروت و امضای اشنور رو میتونیم یک قدم دیگه در جهت افزایش حریم خصوصی و کاهش هزینهها بدونیم.
اشنور میتونه امکان جمعآوری امضاها و خروج فقط یک امضا رو مهیا کنه. برای مثال کلید خصوصی 1 و 2 و 3 و 4 میتونند از معادلهی خطی اشنور بگذرند و تبدیل به یک کلید خصوصی بشن. از طرفی، کلید عمومی 1 تا 4 هم با هم تلفیق بشن و یک کلید عمومی رو بسازن. به این شکل مشخص نمیشه که شما چندین امضا داشتین و تراکنش غیرمعمول از تراکنش معمول تمایزی نداره. همچنین شما نیازی به پرداخت هزینهی بیشتر برای چندامضایی ندارید و این ویژگی افراد رو تشویق به استفاده از روشهای امنتر میکنه.
از طرفی، تپروت هم کاری میکنه که خروجی تراکنشها در نظر بیننده یکسان باشن و همهی تراکنشها یک تراکنش عادی به نظر بیان؛ نتیجتا امکان تشخیص نوع و یا شرایط خرج بیتکوینها مخفی میمونه.
این دو ویژگی علاوه بر افزایش حریم خصوصی، بیتکوین رو برای قراردادهای هوشمند بهینهتر میکنه و همینطور یک گره از مشکل مقیاسپذیری رو هم حل میکنه و میتونیم انتظار شبکهای مقیاسپذیرتر رو داشته باشیم.
کد هر دوی این تغییرات روی شبکه اعمال شده اما فقط در تستنت در دسترسه تا توسعهدهندگان بیتکوین آزمایشش کنند. انتظار میره تا یک ماه دیگه روی شبکهی اصلی بیتکوین هم قرار بگیره.
اینها هایلاتی از نسخهی جدید بود که با مشارکت بیشاز ۱۰۰ نفر از توسعهدهندهها ممکن شده. اگر تمایل دارین بیشتر بدونین منابع این مقاله به اضافهی پادکست The Van Wirdum Sjorsnado رو پیشنهاد میکنم.
برای نگارش این مقاله از منابع زیر استفاده شدهاست: