- وایتپیپر(نقشهاولیه) بیتکوین به درستی به عنوان یکی از تاثیر گذارترین مقالات علوم کامپیوتری در تاریخ شناخته میشود که صنعتی با ارزش چند میلیارد دلار را راهاندازی کرد و هزاران وایتپیپر رمزارزی با الگو گرفتن از آن بوجود آمدند. اما به نظر میرسد ارزش این مقاله(وایتپیپر بیتکوین) و (عناصری که در طراحی بیتکوین اصلی از روی مقاله حذف شده است)، با طرح سوال از بخشهای صحیح و اشتباه این مقاله و همچنین سوالاتی که هنوز پاسخ آنها را نمیدانیم، مورد چالش قرار گرفته است.
کدام بخشهای بیتکوین درست عمل میکنند
این بخش احتمالا سختترین، بخش تالیف این مقاله محسوب میگردد. ما فراموش کردیم که پیش از پیدایش یکی از موفقترین ایدهها، مردم جهان چگونه فکر میکردند. یکی از اساسیترین اثرات بیتکوین در نحوهی نگرش مردم مشاهده میشود.
فراموش نکنید که برای بخش بزرگی از دههی 2000 رمزارزی یک خلاء تحقیقاتی محسوب میشود. پس از تلاشهای ناموفق بسیار در دههی 90 برای ساخت یک سیستم کارآمد (عمدتا با استفاده از ایدهی دیوید چام(David Chaum) در دههی 80) تعدادی مقاله در این زمینه منتشر شد. بسیاری اعتقاد داشتند که هیچ بازار پایداری برای ارزهای غیر دولتی وجود نخواهد داشت.
سیستمهای غیر متمرکز پیش از بیتکوین، زمینهی تحقیقاتی فعالی در دههی 2000 بودهاند(که اغلب به عنوان شبکههای نفر به نفر(P2P) توصیف میشوند) و (با توسعهی Tor و سیستمهای دیگر) تحقیقات با نتایج نامشخصی در این زمینه صورت پذیرفت.
اما این سیستمها، ویژگیهای لازم برای یک سیستم پرداخت را برآورده نمیکردند. براستی بیتکوین چه چیزی را ارائه کرد؟
- انگیزه برای ماینرها: یکی از ویژگیهای هستهی بیتکوین، ایجاد انگیزه برای ماینرها از طریق افزایش قیمت و کارمزد است، این مدل به طور کلی موفق عمل کرده است. بسیاری از سیستمهای نفر به نفر در دورهی پیش از پیدایش بیتکوین که مشارکت آزاد را به کاربرانشان پیشنهاد میکردند( هر کسی میتوانست یک گره(node) را پیادهسازی نماید)، در مقابل حملات Sybil و مشکلات دیگر آسیبپذیر بوده است. تلاشهای زیادی برای تشویق مشارکت صادقانه صورت گرفت اما تا پیش از بیتکوین هیچ سیستمی به درستی عمل نمیکرد.
- کلاینتهای سبک(Light clients): بیتکوین گرههای کامل(full) و سبک(light) یا SPV را پشتیبانی میکند که کاملا قدرتمند هستند، ساختار بلوکی تعبیه شده در بیتکوین پیادهسازی کلاینتهای سبک را نهتنها ممکن ساخته بلکه آن را به امری طبیعی تبدیل کرده است. (کلاینت: نرمافزاری که توسط کاربر نهایی مورد استفاده قرار میگیرد و تولید کلیدهای خصوصی و ارسال پرداخت با استفاده از کلید خصوصی را تسهیل میکند.)
- اسکریپ: پشتیبانی محدود بیتکوین از اسکریپ(در وایتپیپر عنوان نشده است)، ارائهی ویژگیهای مفید زیادی را همانند حسابهای با چند امضا و شبکهی پرداخت را امکانپذیر کرده است. ایجاد امکان پشتیبانی از سیستم پرداخت در آینده، انتخاب هوشمندانهای به حساب میآید.
- تشخیص صحیح مشوقهای بلند مدت: ساتوشی ماینینگ در مقیاس صنعتی یا استخرهای ماینینگ را پیشبینی نمیکرد(حداقل در وایتپیپر). اما در این مقاله در یک خط به خطرات متمرکز شدن، اشاره شده است: «(مهاجم) سود خود را در تغییر قوانین مییابد، قوانینی که به او در مقایسه با هر شخص دیگری رمزارزهای بیشتری میدهد، این موضوع در نهایت اعتبار سیستم و ثروت مهاجم را از بین میبرد.» علی رغم هشدارهای فراوانی که از احتمال وقوع حملات ماینرها اطلاع میدهند، تا کنون هیچ حملهای از این جهت به شکل جدی انجام نشده است. ساتوشی یک اصل قدرتمند را به رسمیت شناخته است: ماینرها مشوق قدرتمندی داشته باشند تا به شبکه حمله نکنند و از آنجایی که در سلامت اکوسیستم سرمایهگذاری میکنند، با آسیب دیدن و یا از بین رفتن رمزارز آنها نیز دچار زیان میشوند.
اشتباهات بیتکوین
ما برخی از ویژگیهای عجیب نسخههای اولیهی بیتکوین؛ همانند سیستم پرداخت به آدرس IP، و سیستم تجارت داخلی که هیچ ارتباطی با خارج از شبکهی بیتکوین نداشت را از یاد بردهایم.
اما ویژگیهای مختلفی برای بیتکوین وجود دارند که به نظر میرسد اشتباه بوده و امروزه هیچ سیستمی نباید آنها را تکرار کند.
- ECDSA: در حالی که الگوریتم ایجاد امضاءECDSA بسیار بهتر از RSA میباشد اما در تمامی جنبهها از EC-Schnorr ضعیفتر است. به احتمال زیاد ساتوشی از این گزینه مطلع نبوده است. امروزه واضح است استفاده از شنور(Schnorr) به دلیل پشتیبانی از ویژگی threshold signing(ایجاد گروهی که در آن تنها تعدادی از اعضا حق ایجاد امضا را دارند) مفیدتر است و در صورت پاسخگو نبودن آن، استفاده از طرح امضاء پیشرفتهتر همانند BLS را میتوان استفاده کرد.
- خوانده شدن تراکنشها: این مشکل که به شکل غیر عمدی در نسخهی قدیمیتر بیتکوین وجود داشت منجر به ایجاد مشکلاتی برای پروتکلهایی همانند شبکههای پرداخت گردید و همینطور حملهی مشهور Gox را امکان پذیر ساخت. امروزه در کنار سگویت(SegWit یا segregated witness) که یک فورک نرم بیتکوین(bitcoin soft fork) به شمار میرود از طراحی محتاطانهای استفاده شده تا اطمینان حاصل شود هش تراکنشها غیر قابل خواندن هستند.
- ویژگیهای اضافه شده: کاملا مشخص است اضافه نکردن ویژگیهای محبوبی همانند Pay to script hash یا P2SH(استانداردی که در BIP 16 اضافه شده و امکان ارسال تراکنشها به یک هش اسکریپ(آدرسهایی که با 3 شروع میشوند) به جای کلید هش عمومی(آدرسهایی که با 1 شروع میشوند) را امکان پذیر میسازد.) و check-locktime-verify(نوعی قرارداد هوشمند اولیه که خرج کردن بیتکوین را تا یک مدت زمان یا یافتن بلوک مشخصی محدود میسازد.) که بعدها در یک فورک نرم به بیتکوین اضافه گردید.
- تقسیمپذیری محدود سکهها: بیتکوین دارای محدودیت انتشار 21 میلیون سکهی دیجیتالی است، اما محدودیت مهمتر دیگری نیز وجود دارد، تعداد واحدهای کوچکتر آن(ساتوشی) نیز دارای محدودیت 2^52(دو به توان 52) واحد است. اگر بیتکوین واقعا به تنها سیستم پرداخت جهان تبدیل شود، به ازای هر انسان کمتر از یک میلیون واحد ساتوشی وجود خواهد داشت. این مقدار به اندازهای نیست که تراکنشهای روزانه را با استفاده از آن انجام داد(حتی در زمان ارزش دهها دلاری هر ساتوشی). در این صورت تقسیم بیشتر هر بیتکوین به واحدهای کوچکتر از ساتوشی بسیار اقتصادی خواهد بود.
- بلوکها در یک زنجیرهی ساده: در صورتی که قرار دادن بلوکها در یک زنجیرهی خطی باعث شود هزینههای کلاینتهای سبک برای تایید بلوک قدیمی در زنجیرهی کنونی، افزایش یابد، اصطلاح بلاکچین مفهوم خود را از دست میدهد. بیتکوین تراکنشها را در در یک درخت ذخیره میکند. لیست پرش(skip list: ساختار دادهای که جستجوی سریع را امکان پذیر میسازد) پیشرفت بزرگ دیگری برای بیتکوین است. پروژهی شفافیت مجوزها(Certificate Transparency project در همان زمان و بطور جداگانه از بیتکوین طراحی شده بود) هر بروزرسانی و تغییر را در درخت قرار میدهد، هم اکنون برخی رمزارزها بر روی تغییر طراحی زنجیرهی خطی فعالیت میکنند.
- نبود نمایانگر وضعیت: ماینرهای بیتکوین وضعیت سیستم را به صورت مجموعه تراکنشهای خروجی خرج نشده(UTXOs) ردیابی میکنند. اما این تراکنشها به هر بلوک مربوط نشده و در تاریخ تسویه میشوند(ممکن است با انجام تراکنش در زمان تغییر کنند). این موضوع موجب میشود تشخیص وضعیت کنونی و ارسال شدن تراکنش برای کلاینتهای سبک دشوار باشد. بسیاری از سیستمهای پس از بیتکوین (همانند اتریوم) نسخهای از نمایانگر وضعیت UTXO را به هر بلوک اضافه خواهند کرد.
- تحلیل سادهی حملات: وایتپیپر بیتکوین بخش بزرگی از مقاله(تقریبا یک چهارم) را به تحلیل شانس ماینرهایی با هشریت کمتر از 51% هشریت شبکه برای اجرای موفقیت آمیز فورک پرداخته است. تجزیه و تحلیلهای بعدی خطرات حملات دیگری همانند ماینینگ خودخواهانه(selfish mining) را آشکار میسازد و تحلیل موجود در وایتپیپر بیتکوین هماکنون، تاریخ گذشته به نظر میرسد.
- یک پردازنده یک رای: ساتوشی بیتکوین را به صورت سیستمی توصیف کرده که بیشتر جامعهی آن ماینرهایی هستند که از Cpu استفاده میکنند. از آنجایی که سختافزارهای اختصاصی(اسیکها) هم اکنون در عملیات ماینینگ بیتکوین غالب هستند، سالهاست که این تعریف درستی محسوب نمیشود. در حالی که بحث پیرامون مزایا و معایب اسیکها در ماینینگ بیتکوین ادامه دارد، قطعا در وایتپیپر اصلی به آن پرداخته نشده است.
نکاتی که هماکنون از آنها آگاهی نداریم
- معمای SHA-256: استفاده از سیستم محاسبات بر مبنای هش(proof-of-work) یکی از موضوعات بحث برانگیز بوده است. آیا انرژی زیادی برای رمزارز مصرف میشود؟ آیا اسیکها موجب متمرکز شدن بیتکوین میشوند؟ آیا طراحی بیتکوین بر مبنای پردازندههای گرافیکی(GPU) و دیگر روشها، مشوقهای بیشتری را با هزینهی کمتر پیشنهاد میکنند؟ آیا سیستم توزیع proof-of-stake(دریافت سود به ازای نگهداری رمزارز) در نهایت پیروز خواهد شد؟
- محدودیتهای اندازهی بلوک و دیگر پارامترها: محدودیت 1 مگابایتی اندازهی بلوک و فاصلهی زمانی ده دقیقهای بین هر بلوک موضوع بحث بسیاری بوده است. خصوصا در سال 2017 با افزایش تعداد تراکنشها و در نتیجه پرشدن این حجم و افزایش کارمزدها، بحث پیرامون این موضوع نیز افزایش یافت. بسیاری از سیستمهای واپسین با بلوکهای بزرگتر و فاصلهی زمانی کمتر بلوکها پیشرفت کردهاند. آیا طرح کنونی بیتکوین در بلند مدت عاقلانه است؟
- ناشناس ماندن: استدلالهایی که در وایتپیپر بیتکوین در مورد ناشناس ماندن در بیتکوین، بخاطر ارسال تنها کلید عمومی(و نه اطلاعات هویتی کاربر) عنوان شده است، هم اکنون بدلیل پیشرفت در آنالیز گراف تراکنشها کامل به نظر نمیرسد. رمزارزهایی همانند مونرو(Monero) و زیکش(Zcash) حریم خصوصی رمزارزی قدرتمندتری را پیشنهاد میکنند. از طرف دیگر بسیاری از طرحهایی که با ترکیب کردن و حفظ سازگاری با نسخهی قبلی، ردگیری تراکنشها را دشوار میکند، پیشنهاد شدهاند. آیا ناشناس ماندن یک ویژگی حیاتی است که بیتکوین آن را نادیده گرفته است؟
- تورم: طراحی بیتکوین به شکلی انجام شده است که از تورم جلوگیری میکند. اما بسیاری از اقتصاددانان بر این باورند از آنجایی که رمزارزها با گم شدن کلیدها از گردش خارج میشوند(یا رمزارزها با تراکنشهای سوزاندن رمزارزها(burn) غیر قابل خرج کردن میشوند)، این طراحی موجب آشفتگی سیستم بیتکوین میشود. در حقیقت برای دستیابی به تورم صفر، انتشار مقدار کمی رمزارز نیاز است تا با رمزارزهای از دست رفته جبران گردد. اگر این موضوع در بیتکوین یک اشتباه باشد، احتمالا با کاهش تدریجی تورم(کاهش تدریجی رمزارزهای صادر شده)، این موضوع توسط جامعه احساس نشود.
- انتقال به کارمزد تراکنشها: بیتکوین به شکلی برنامهریزی شده است که ماینرها به آرامی از پاداش یافتن بلوک به سمت دریافت پاداش حاصل از کارمزد تراکنشها سوق داده شوند. هیچ کسی نمیداند این موضوع چه نتیجهای خواهد داشت، اما برخی از تحقیقات نشان میدهند که این موضوع احتمالا میتواند بیثباتی قابل توجهی در سیستم آینده ایجاد کند.
- محدودیت شدید: بیتکوین به منظور حفظ قابلیت انجام آسان تراکنشها(و امکان پیشبینی هزینه) محدودیتهای شدیدی را اعمال میکند. پروژهی اتریوم برای مُدل برنامهریزی پربارتر، با تقاضای قابل توجهی روبرو شده است. هرچند نگرانی از مقیاس پذیری مدل اتریوم بیشتر است. آیا بیتکوین در طولانی مدت بهخاطر مدل برنامهریزی ضعیفترش از بین خواهد رفت؟
نظر شما در مورد ضعفها و نقاط قوت مطرح شده در این مقاله چیست؟ آیا بیتکوین میتواند در آینده همچنان با بقیه رمزارزها رقابت داشته باشد و یا جایگاه خود را به رمزارز دیگری واگذار خواهد کرد؟ نظر خود را به صورت کامنت با ما در میان بگذارید.