سوال: با توجه به اینکه کد اصلی بیت‌کوین تغییر اساسی نمیکنه، پس توسعه دهنده‌های بیت‌کوین چه میکنند؟

ضیا: این سوال رو چند نفر دیگه هم پرسیده بودند که توسعه دهنده‌های بیت‌کوین دقیقا چیکار می‌کنند توی شبکه. این همه مدت با کد بیت‌کوین چیکار می‌کنند. خب بذارید اینطوری توضیح بدم. اگر شما repository یا همون مخزنی رو که کد بیت‌کوین به شکل اوپن سورس وجود داره رو، برید توی گیت هاب ببینید، فعالیت بسیار زیادی داره روش انجام میشه. خب پس مشخصا یه عالمه آدم دارند یه کاری می‌کنند و بعضی وقت‌ها حتی فعالیتش بیشتر از بقیه‌ی پروژه‌هایی هست که وجود داره.

پس این بیت‌کوین که انگار هیچیش در طول گذر زمان تغییر نمی‌کنه، چه چیزیش داره تغییر می‌کنه که این همه دارن روش کار می‌کنند؟

فرآیند‌ها خیلی زیاده. مطرح کردن پروپوزال، رفع مشکلات، بهبود نرم‌افزار، بررسی کد، اگر مثلا کسی یه چیزی رو درخواست داده که مثلا این رو توی کد بخوایم تغییر بدیم، این رو دائم بررسی می‌کنند، بارها بررسی میشه توسط اشخاص مختلف و یکی از مهم‌ترین کارها و بیشترین کارهایی که انجام میشه یه مبحثی به نام Refactoring و ماژولار سازی کد بیت‌کوین هست. ولی این Refactoring بیشترین کاریه که انجام میشه. Refactoring یعنی چی؟ یعنی کد رو دارن سعی می‌کنند تا جایی که میشه استیبل‌ترین، بی‌نقص‌ترین و امن‌ترین حالت ممکن و بهینه‌ترین حالت ممکن تبدیلش کنند.

چون شبکه‌ی بیت‌کوین یه چیزی مثل زیرساخته. مثل زیرساخت اینترنته. خیلی حساسه. مثل یه هواپیماییه که داره پرواز می‌کنه و هر چیزیش رو دست می‌زنی ممکنه همه چیز نابود بشه. پس خیلی حساسه و هیچ وقت هم نمیشه مثلا خاموشش کرد و فرود بیاریش و تعمیرات انجام بدی و دوباره بلندش کنی. دائم بیت‌کوین روشنه و از روز اولی که بیت‌کوین شروع به کار کرده تا به امروز، 99.999999 درصد اوقات عمرش رو روشن بوده.

اون یک هزارم درصد آخرش که نیست کجاست پس؟ سال دو هزار و چند بود، یادم نمیاد! یه بار به خاطر یه باگی، پروسه‌ی تولید بلاک کند شد و به خاطر اون ماجرا، اون یک هزارم کمه، وگرنه می‌تونیم بگیم که 100 درصد اوقات شبکه‌ی بیت‌کوین همیشه روشن بوده و همیشه در حال فعالیت بوده.

پس یه هواپیمایی که در حال حرکته رو شما نمی‌تونی به سادگی بهش دست بزنی و باید هم یه کاری کنی که یه وقت نیفته. حتما باید همه چیش بررسی بشه. این قسمت Refactoring واسه‌ی بهبود دادن این قضیه است که شبکه قرص و محکم کار کنه و این خیلی پروسه‌ی مهمیه و همه هم به صورت عام‌المنفعه و بدون منافع، وقت می‌ذارن و روی کد کار می‌کنند.

سوالی از من پرسیده بودند که به این موضوع ربط داره اینه که توسعه دهنده‌ها چطور به اتفاق نظر می‌رسند؟

این خیلی سوال جالب و خوبیه. این که توسعه ‌دهنده‌های بیت‌کوین چجوری در مورد کد بیت‌کوین تصمیم می‌گیرند. این موضوع یه جورایی انتزاعی هم هستش، چون ما در واقع چیزی به نام کد بیت‌کوین نداریم. Bitcoin core کلاینتیه که اغلب اشخاص استفاده می‌کنند. بهش میگن reference client. این نرم افزاریه که اغلب اشخاص نصب کردند و بلاک‌چین بیت‌کوین از اون استفاده می‌کنه.

یه سری بخش‌ها داره که بهش میگن consensus rules. این‌ها قواعد و قوانین شبکه‌اند. این قسمت‌ها قسمت‌های حساسی‌اند و تغییر و اتفاق نظر راجع بهشون یک ماجراییه اصلا. سال‌ها شاید طول بکشه تا اتفاقی بیفته.

قسمت‌های دیگه‌ی نرم افزار، مثلا قسمت‌‌های والت، قسمت‌های ارتباطات کانکشن اینترنتش، قسمت‌های مختلفی که ارتباط به دیتابیس داره. بخش‌های مختلفی داره این نرم افزار. به این شکله که این پروژه الان آزاد و اوپن سورس روی مخزن گیت هاب هست.

یه نفر میاد مثلا میگه که من یه پیشنهاد دارم، اینجوری می‌تونیم این قسمت نرم افزار رو بهتر کنیم. این یه چیزیه که ربطی به قوانین شبکه نداره. مثلا یه اروری هست بیایم این رو حلش کنیم، و ربطی هم به شبکه‌ی بیت‌کوین نداره. خود نرم افزاره فقط.

این قسمت اینجوری که مثلا یه نفر پیشنهادش رو میده، مشکل رو شرح میده، توضیح میده و نحوه‌ی بهینه‌تر کردن و بهبود دادنش رو هم ثبت می‌کنه که اینجوری کد رو باید تغییر بدیم.

بعد چندتا از maintainer ها، کسانی که مسئول هستند، میان مسئله رو چک می‌کنند و میبینند که حرفی که اون شخص داره میزنه منطقیه. بعد یه مقدار به بحث گذاشته میشه. مثلا توسعه دهنده‌های مختلفی میان زیرش کامنت میذارن، میگن آره به نظر ما خیلی کار خوبیه. خیلی‌ها میان میگن مثلا نه این یه مشکلی رو مد نظر قرار ندادید مثلا این موضوع هم هست و اگه این کار رو بکنید فلان قضیه به مشکل میخوره.

و این شکلی روی اون مسئله کلی کار و بحث میشه. حالا که به نظر میاد همه چی پخته شده و کار شده، بعضی وقت‌ها این فرایند مثلا ممکنه شش هفت ماه طول بکشه.

من یکی از دوستانم که توی توییتر هم فعال هستش، فکر کنم از معدود ایرانی‌هایی هم هستش که روی کد بیت‌کوین چیزی رو تغییر داده، متوجه شده که یه اروری وجود داره و این رو مودیفای کرد و تغییرش داد. فکر کنم پروسه‌اش سه چهار ماه طول کشید تا پذیرفته بشه درخواستش.

پس این اتفاق نظره به این شکله که با بارها و بارها و بارها بررسی شدن روی کد Bitcoin core، آپدیت مورد نظر پذیرفته میشه و پیشنهاد تغییر کد وارد کد نرم افزار میشه. این شکلی تغییری در کد نرم افزار صورت می‌گیره.

اما قوانین شبکه چیزی هست که بیت‌کوین رو ساخته. به اون قسمت ما میگیم کد بیت‌کوین نه خود نرم افزار. خود نرم افزار به معنی بیت‌کوین نیست. ما نرم افزارهای متفاوتی داریم مثل BTC.D و Bitcoin Knots که این نرم افزارها همه نرم افزار بیت‌کوین هستند، چون قواعد و قوانین شبکه رو بهش پایبنداند.

قسمت‌های دیگه‌ی نرم افزار رو هر کاری دوست داشتید بکنید ولی قواعد و قوانین شبکه رو تغییر نده، وگرنه اگه تغییر بدی اون موقع دیگه شما جزئی از شبکه‌ی بیت‌کوین نیستی.

مثلا اینکه ما 21 میلیون کوین داریم، ماینینگ باید ب این صورت اتفاق بیفته، امضاها و آدرس‌ها اینجوری‌اند، یک تراکنش صحیح اینه و خیلی چیزهای این شکلی هست که این‌ها نباید تغییر کنه.

این‌ها اگر چیزیش بخواد تغییر کنه بعضی وقت‌ها شاید چهار سال یا پنج سال روش بحث و گفت و گو میشه.