پیش گفتار: برای مطالعه قسمت اول کلیک کنید.
رقابت در بازار آزاد
در مقالهای از Bitmex به خوبی در مورد اکوسیستم پیادهسازی بیتکوین توضیح داده شده است. در حدود دهها پیادهسازی سازگار برای بیتکوین وجود دارد. این به معنای آزادی نرمافزارهای متن باز میباشد و هر کسی که از نحوه عملکرد Bitcoin Core راضی نباشد میتواند پیادهسازی خود را از ابتدا انجام دهد یا اینکه از Bitcoin Core یک فورک جدید برای خود ایجاد کند.
در لحظه نوشتن این مقاله حدود ۹۶٪ نودهای بیتکوین از یکی از ورژنهای هسته بیتکوین استفاده میکنند. به چه دلیل این اتفاق رخ داده است؟ چرا هسته بیتکوین دارای وضعیت انحصاری در شبکه نودها میباشد، در حالیکه هزینه جابهجایی بین پیادهسازیهای بیتکوین بسیار پایین میباشد و حتی بسیاری از این پیادهسازیها، از APIهای RPC سازگار یا بسیار مشابه با هسته بیتکوین استفاده میکنند.
به عقیده من هسته بیتکوین در واقع نقطه کانونی توسعه بیتکوین میباشد، زیرا توسعه دهندگان آن به مراتب دارای زمان و استعداد بیشتری میباشند و این موضوع باعث میشود کدی که برای هسته بیتکوین نوشته میشود دارای کارایی و امنیت بیشتری باشد. کسانی که برای مدیریت پول خود نود بیتکوین راهاندازی میکنند ترجیح نمیدهند که چیزی به جز بهترین نرمافزار را اجرا کنند. همچنین با در نظر گرفتن این نکته که این نرمافزار بر اساس اجماع کار میکند و پروتکل بیتکوین نمیتواند دارای یکسری مشخصات خاص باشد زیرا کسی قدرت تعیین آن را ندارد، در نتیجه اجرا کردن این نسخه نرمافزار در صورت داشتن باگ نیز با بقیه نرمافزارهای شبکه سازگاری خواهد داشت. میتوان اینگونه برداشت کرد که کدی که در نقطه کانونی توسعه نوشته شده، نزدیکترین مشخصات را به مشخصات بیتکوین دارد.
توسعهدهندگان هسته چه کسانی هستند؟
کسانی که با پروسه توسعه هسته بیتکوین آشنایی ندارند، ممکن است با نگاه از بیرون به این پروژه هسته بیتکوین را به صورت یک واحد انحصاری تلقی کنند. این خیلی از واقعیت به دور است! بین شرکتکنندگان در هسته به صورت متداول مخالفت بوجود میآید و حتی بهترین توسعهدهندگان کدهای زیادی نوشتهاند که هیچگاه با شاخه اصلی ادغام نشده است. اگر راهنماهای مربوط به مشارکت در هسته را مطالعه کنید میبینید که آنچنان با یکدیگر هم راستا نیستند. این پروسه را به بهترین شکل میتوان با «اجماع تقریبی» توصیف کرد.
«نگهدارندهها تنها زمانی یک پچ را در نظر خواهند گرفت که با اصول پروژه همسو باشد، دارای حداقل استانداردهای لازم باشد و مورد اجماع عمومی مشارکتکنندگان باشد.»
نگهدارندههای هسته چه کسانی هستند؟ این افراد کسانی هستند که با مشارکتهای فعال و ارزشمند خود در طول زمان، در هسته برای خود جایگاه اجتماعی پیدا کردهاند. زمانی که این گروه از نگهدارندهها به این نتیجه برسند که میتوانند این نقش را به شخصی منتقل کنند که در یک حوزه خاص دارای صلاحیت، قابلیت اطمینان و انگیزه لازم میباشد، میتوانند به حساب گیتهاب آن شخص دسترسی کامیت را بدهند. نقش نگهدارنده رهبر بر عهده شخصی است که به تمام جنبههای توسعه دید کافی دارد و مسئولیت هماهنگی انتشار را بر عهده دارد. این نقش به صورت داوطلبانه در طی سالهای اخیر جابهجا شده است.
- ساتوشی ناکاموتو : 1/3/09 – 2/23/11
- گوین اندرسین: 2/23/11 – 4/7/14
- ولادیمیر وندرلان: 4/7/14 - حال حاضر
نقش نگهدارندهها بیشتر یک نوع وظیفه سرایداری میباشد زیرا این افراد حق تصمیمگیری در صورتی که مخالف با اجماع یا کاربران باشد را ندارند. با این حال این نقش به دلیل توجه بسیار زیاد از اکوسیستم دارای چالشهای بسیاری میباشد. به عنوان مثال در سال ۲۰۱۷ گرگوری مکسول نقش نگهدارنده خود را به دلایل شخصی واگذار کرد، که عمدتاً به دلیل فشارهای عمومی بر سر بحث مقیاسپذیری بیتکوین بود. در یک پست اندیشمندانه ولادیمیر در مورد استرس ناشی از داشتن نقش نگهدارنده در هسته، و دلیل گرفته شدن دسترسی گوین علیرغم ناراحتی عدهای نوشته است.
به طور مشابه وقتی که جف گارزیک از گیتهاب بیرون گذاشته شد، او و دیگران در مورد این اتفاق ناراحت بودند، اما او به مدت ۲ سال بود که هیچ مشارکتی در هسته نداشت.همانگونه که در پست ولادیمیر به آن اشاره شده است، ترک کردن گیتهاب با وجود داشتن دسترسی به مخزن هیچ سودی برای پروژه نداشت و باعث ایجاد ریسکهای امنیتی و نقض قانون کمترین امتیاز نیز میشد. ممکن است دیگران بر این باور باشند که هسته بیتکوین تکنوکراسی یا برج عاجی میباشد که راه ملحق شدن تازه واردان به آن بسیار سخت میباشد. اما اگر با مشارکتکنندگان صحبت کنید خواهید دید که به هیچ وجه اینگونه نیست. با اینکه در سالهای اخیر چند ده نفر دسترسی کامیت داشتهاند اما صدها نفر توسعه دهنده در آن مشارکت کردهاند. خود شخص من چندین مشارکت کوچک انجام دادهام. با اینکه خودم را یک «توسعه دهنده هسته» نمیدانم، اما از لحاظ فنی هستم. هیچکس نمیتواند جلوی مشارکت شما را بگیرد.
یکی از سختترین کارها برای اینکه مردم بتوانند از نظر فکری با آن کنار بیایند، درک این موضوع میباشد که نقطه کانونی توسعه بیتکوین فقط حساب کاربری گیتهاب Bitcoin Core نمیباشد. با اینکه هسته بیتکوین بهگونهای ساختار دارد (استفاده از کانالهای ارتباطی متمرکز در جهت هماهنگی)، خود پروژه توسط هیچ یک از اعضای شرکتکننده قابل کنترل نمیباشد، حتی کسانی که دسترسی غیرمجاز به حساب گیتهاب پروژه دارند. با وجود اینکه از نظر فنی ممکن است یک کودتای سازماندهی شده توسط نگهدارندهها برای خراب کردن مخزن GitHub، سانسور توسعه دهندگان مخالف، یا حتی به برند تبدیل کردن نام Bitcoin Core اتفاق بیفتد، اما این تنها باعث میشود که هسته بیتکوین به عنوان نقطه کانونی توسعه بیتکوین شناخته نشود. توسعهدهندگانی که با اقدامات نگهدارندهها موافق نباشند میتوانند به راحتی کد را فورک کنند و به مخزنی دیگر منتقل کنند بدون اینکه توسعه دهندگان هسته بیتکوین به آن دسترسی داشته باشند.
حتی بدون در نظر گرفتن یک کودتا (اگه بشه اسمشو بذاریم)، اگر یک تغییر بحث برانگیز به درون هسته راه پیدا کند، توسعهدهندگانی هستند که برنامه را فورک کنند و تغییرات ایجاد شده را از بین ببرند و در دسترس کاربران قرار دهند. میتوان ادعا کرد که این دقیقا کاری است که Amaury Sechet انجام داد و از Bitcoin Core یک فورک گرفت و قابلیت Segregated Witness را برداشت تا Bitcoin ABC را ایجاد کند. از سوی دیگر اگر هسته با تغییراتی که افرادی آن را میخواهند مخالفت کند، توسعه دهندگان میتوانند یک فورک بگیرند و تغییرات را اعمال کنند. این اتفاق چندین بار رخ داده است، از قبیل وقتی که:
- Mike Hearn از هسته یک فورک گرفت تا Bitcoin XT را بسازد.
- Andrew Stone از هسته فورک گرفت تا Bitcoin Unlimited را بسازد.
- Jeff Garzik از هسته فورک گرفت تا BTC1 را ایجاد کند.
فورک کردن کد کار سادهای میباشد. جابهجا کردن نقطه کانونی توسعه بیتکوین کار سختی میباشد. به این معنی که باید مشارکتکنندهها را متقاعد کنید که زمانی که صرف توسعه در هسته میشود، در یک پروژه دیگر به نحو بهتری از آن استفاده خواهد شد.
همچنین قانع کردن عموم برای اینکه متوجه شوند که کاربران به صورت کورکورانه Bitcoin Core را دنبال نمیکنند کار سختی میباشد. ممکن است این خود نوعی اعتقاد خود تقویت کننده باشد، زیرا اگر کاربران بدون درک حق انتخابهای خود در فرایند اجماع شرکت کنند، برخی از قدرتهای خود را به توسعهدهندگان واگذار خواهند کرد. با این حال قدرت کاربران یکبار در سال ۲۰۱۷ در جنبش UASF یا User Activated Soft Fork به صورت عملی خود را نشان داده است. در این جنبش یک توسعهدهنده ناشناس بیتکوین به نام مستعار shaolinfry پروپوزال BIP148 را ارائه کرد که در آن ماینرها مجبور میشدند قابلیت Segregated Witness را در ارتفاع بلاکی مشخص در ۱ آگوست، فعال کنند. با این حال، BIP148 بسیار بحث برانگیز بود تا بتواند توسط هسته بیتکوین به تصویب برسد. به همین دلیل shaolinfry یک فورک از Bitcoin Core گرفت و Bitcoin UASF را ایجاد کرد و در دسترس قرار داد. این پیادهسازی نرمافزاری به اندازهای کشش ایجاد کرد که باعث ایجاد فشار کافی برای متقاعد کردن ماینرها، به منظور پذیرش BIP91 برای فعال کردن فورک قبل از مهلت BIP148 شد.
به عقیده من بهترین مشارکتکنندگان در هسته بیتکوین کسانی هستند که بر مالکیت مفرط ممارست میکنند. به عنوان نمونه، با اینکه John Newbery کدی که در آن باگ اجماع وجود داشت را ننوشته بود، اما بخاطر اینکه نتوانسته بود در زمان ادغام، کد را به دقت بررسی کند و یا هنگام نوشتن آزمونها این باگ را پیدا کند احساس مسئولیت میکند.
ما همه ساتوشی هستیم.
مشارکت در هسته بیتکوین
در ابتدا ممکن است مشارکت در هسته بیتکوین کمی دلسرد کننده باشد، با وجود اینکه منابع زیادی برای کمک به توسعهدهندگان علاقهمند وجود دارد. در اینجا راهنمای چگونگی مشارکت در هسته بیتکوین آورده شده است. همچنین میتوانید از مقاله مقدمهای ملایم توسط Jimmy Song استفاده کنید.
توسعه دهنده هسته، Eric lombrozo همچنین یک قطعه در مورد درک اینکه چگونه تغییرات در مخزن هسته رخ میدهند تهیه کرده است:
Alex B نیز یک مقاله عالی در مورد فلسفه پشت توسعه بیتکوین نوشته است. هر شخصی که علاقه دارد یک مشارکتکننده جدی در هسته بیتکوین باشد پیشنهاد میشود این مقاله را بخواند.
یک مثال واقعی در اینجا میتواند بسیار مفید باشد. در هنگام نوشتن این مقاله برای اجرای اسکریپت verify-commits.py و بررسی یکپارچه بودن تاریخچه کامیتهای GitHub دچار مشکلات زیادی شدم. به منظور جلوگیری از ایجاد اینگونه مشکلات برای توسعهدهندگان بعدی، یک درخواست واکشی برای بهبود مستندسازی ایجاد کردم. همانگونه که در این درخواست میبینید چهار توسعه دهنده مختلف در مورد چگونه بهتر کردن درخواست واکشی من را مطلع کردند. این شامل استفاده از مارکآپهای مختلف ویکی، تا استفاده از یک دستور bash ساده و استفاده از یک پارامتر جدید برای استفاده در اسکریپت verify-commits.py بود. این پیشنهادات به نظر من منطقی بود پس این تغییرات را در کد خود اعمال کردم و یک ورژن آپدیت برای درخواست واکشی ارسال کردم. در این نقطه توسعهدهندگانی که برای بررسی حضور داشتند درخواست واکشی را قابل قبول ارزیابی کردند و نگهدارندهای به نام MarcoFalke آن را برای انتشار در نسخه ۰.۱۸ علامتگذاری کرد. پس از گذشت چند روز و بدون مخالفت از سوی کسی این کد توسط Samuel Dobson با هسته ادغام شد.
چه کسی بیتکوین را کنترل میکند؟
همانطور که من در طول سالها به مراتب بحث کردهام، درک کامل بیتکوین به عنوان یک سیستم عملاً غیرممکن میباشد. تعریف (کنترل) پروتکل بیتکوین مانند تعریف (کنترل) یک زبان میباشد. زبانها به خودی خود ظاهر میشوند، توافق بر سر معنای لغات به صورت ارگانیک ایجاد میشود نه توسط دیکشنریها. به همان اندازه که یک دیکشنری، پدیده زبان را تعریف میکند تا خود آن زبان را، همانگونه نیز پیادهسازیهای مختلف بیتکوین زبان بیتکوین را توسط کد تعریف میکنند.همانگونه که هیچ شخصی مجبور نیست با معنای یک لغت در دیکشنری موافقت کند، هیچ شخصی نیز مجبور نیست با اجرای کدی در یک پیادهسازی بیتکوین با آن موافقت کند.
بیتکوین نیز همانند زبانها بر پایه دموکراسی ساخته نشده است. در حالی که مردم اغلب در مورد ماینرها، نودها یا رأیگیری کاربران صحبت میکنند، هیچ گونه مکانیزمی برای اینکه رأی اکثریت باعث شود اقلیت مخالف مجبور به پذیرفتن تغییرات شوند وجود ندارد. بیتکوین یک هرج و مرج (آنارشی) است، بدون قانونگذار ولی نه به معنای بدون قانون بودن. قوانین توسط تک تک افرادی که در شبکه شرکت میکنند به اجرا در میآیند.
با اینکه تغییرات در پروتکل بیتکوین معمولاً توسط پروپوزالهای بهبود بیتکوین انجام میشوند، حتی این نیز فقط یک روش پیشنهادی میباشد و کسی مجبور به استفاده از آن نیست. BIP ها صرفاً یک روش رسمیتر برای بررسی همگانی و ایجاد اجماع میباشد.
همانقدر که توضیح این موضوعات سخت میباشد، حیاتیترین دلیل برای ضدشکننده بودن بیتکوین همین موضوع میباشد. به این معنی که اگر تنها یک نقطه کنترلی در بیتکوین وجود داشت، این نقطه به تنها نقطه شکست بیتکوین نیز تبدیل میشد و افرادی که از موفقیت بیتکوین ضرر میکردند میتوانستند از طریق این نقطه به بیتکوین صدمه وارد کنند. در نهایت، اپراتورهای نودها کنترل خود را در دست دارند تا مطمئن شوند هیچ شخص دیگری در شبکه بر خلاف آنچه آنها با آن موافقت دارند عمل نمیکند. این مدل امنیتی، پایه و اساس ساختار حکومتی پایین به بالا در بیتکوین میباشد.
هیچ کس بیتکوین را کنترل نمیکند.
هیچ کس نقطه کانونی توسعه بیتکوین را کنترل نمیکند.
پایان بخش دوم
منبع: Who Controls Bitcoin Core?