راه پرداخت
رسانه فناوری‌های مالی ایران

بازنگری در کد بیت‌کوین / از ایده تا توسعه

جان نیوبری، توسعه دهنده کد زنجیر بیت‌کوین، در نوزدهم ژوئن جمعی از توسعه دهندگان این ارز رمزنگاری شده را گرد هم آورد تا روی اعمال یک تغییر پیشنهادی روی بیت‌کوین کار کنند. بازنگری در کد بیت‌کوین یکی از مهم‌ترین چالش‌هایی است که توسعه دهندگان با آن روبه‌رو هستند و سعی دارند به بهترین شکل و در کمترین زمان ممکن آن را انجام دهند بدون این‌که اختلالی در کل کد ایجاد شود.

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

هدف دیگر نیوبری، نحوه بازنگری در چنین کدی و بررسی آن است.

آیا حمله تایم وراپ این تغییر را متوقف خواهد ساخت؟

نیوبری، ضمن اشاره به ماهیت تغییر زمان در حملات نوشت:

حمله تایم وراپ، با انتقال بلوک‌هایی که تنظیمات روی آن‌ها دشوارتر است به آینده و آوردن بلوک‌های آتی به زمان حال، با این تغییر همراهی خواهند کرد.

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

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

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

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

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

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

وب‌سایت باشگاه با توضیح این‌که «این باشگاه مبتنی بر گپ رله اینترنتی، برای افرادی است که می‌خواهند با درخواست پول (pull request) به بازنگری در هسته بیت‌کوین‌ کمک کنند، اما تهدیدآمیز نیز هست» افزود:

بررسی و آزمایش درخواست‌های پول بهترین راه برای آغاز مشارکت در هسته بیت‌کوین است، اما تشخیص این‌که از کجا باید شروع کرد دشوار است. صدها درخواست پول باز وجود دارد، که بسیاری از آن‌ها نیاز به دانش متنی دارند و مشارکت کنندگان و بازبین‌گران اغلب دارای ترمینولوژی (terminology) متفاوت هستند.

به این ترتیب، علیرغم این‌که کد این ارزرمزنگاری شده برای همه در دسترس است و همه اجازه دارند آن را بازبینی کرده و تغییر دهند، اما این کار چندان هم راحت نیست. باید تمرین کنید تا بدانید چه چیزهایی را باید بازبینی کرده و تغییر دهید.

کاری که تقریبا باید بکنید اینجا است.

هرکسی می‌تواند این کار را انجام دهد

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

شما متوجه خواهید که در گیت‌هاب، کارهای زیادی می ةوان انجام داد، اما برای بازبینی کدها مهم‌ترین و اصلی‌ترین کار نگاه کردن به درخواست‌های پول است. مجموعه‌ای از تغییرات، که باید توسط توسعه دهندگان انتخاب شده و مورد ارزیابی قرار بگیرند.

به عبارت دیگر، فرض کنید 300 تغییر وجود دارد که هنوز به طور کامل توسط توسعه دهندگان مورد ارزیابی قرار نگرفته است تا وارد زیربنای رمزنگاری بیت‌کوین شود. تغییراتی که برخی از آن‌ها ممکن است مخرب و ریسک‌آفرین باشند و برخی به بهبود کارایی و سطح امنیت ارز بیانجامند.

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

به همین دلیل نیز نیوبری سعی دارد به این فرایند کمک کند.

بنابراین، واقعا در روند انتخاب، بررسی و تایید یک تغییر چه می‌گذرد؟ همان‌طور که نیوبری نیز در وب‌سایت باشگاه توصیف می‌کند، چندین گام کلیدی برای شروع وجود دارد که مراجعه به «راهنمای مشارکت در هسته بیت‌کوین» و تلاش برای کسب مهارت در زبا برنامه‌نویسی زیربنایی ارز رمزنگاری شده بیت‌کوین C++ از آن جمله‌اند.

گام بعدی بسیار ساده است؛ انتخاب یک تغییر برای بررسی. با وجود 300 درخواست پول زنده و در تب‌وتاب انتخاب، چه نوع تغییری برای آغاز مناسب است؟ بهترین کار برای کسانی که هنوز اطلاعات و مهارت کافی را در مورد پایگاه کد ندارند، انتخاب تغییراتی با برچسب «مسایل اولیه خوب (good first issues)» است.

هنگامی‌ که پیش‌نویس‌ها به پایان رسیدند، توسعه دهنده نیاز دارند مخزن را کلون (clone) یا به عبارت دیگر کپی کند. در واقع، توسعه دهنده با استفاده از گیت پایگاه کد را به کامپیوتر شرکت کنندگان کپی می‌کند تا امتحان کنند تغییر اعمالی‌شان آن‌گونه که برنامه‌ریزی شده است کار می‌کند یا نه.

فرایند کپی پایگاه کد به کامپیوتر شرکت کنندگان با استفاده از یک دستور بسیار ساده صورت می‌گیرد.

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

در فکر بازبینندگان

در فکر بازبینندگان و ارزیابان چه می‌گذرد؟

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

نیوبری در یکی از جلسات باشگاه اذعان کرد:

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

نیوبری، با اشاره به سایر گروه‌های فعال در گپ رله اینترنتی معرفی شده و سوالات و جواب‌های جاری در این گپ بین توسعه دهندگان و شرکت کنندگان مبنی بر نحوه توسعه تغییرات، افزود «اگر دوبه شک هستید که دیگران رسالت و نحوه سودمندی کد پیشنهادی و درخواست پول شما را درک کرده‌اند یا نه، راحت باشید و از توسعه دهندگان هسته بیت‌کوین یا سایر شرکت کنندگان در شبکه در این خصوص پرس‌وجو کنید».

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

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

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

یکی از شرکت کنندگان با نام مستعار آریارد، سعی داشت با ارائه یک درخواست، توسعه دهندگان را دعوت به بازنگری در یکی از فرایندهایی کند که قبلا توسعه داده شده بود. یکی از توسعه دهندگان گفت:

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

یکی دیگر از بررسی کنندگان اذعان کرده است که صرفا با ارزیابی زمان موردنیاز برای ران شدن هر تغییر و پیشنهاد نیز می‌تواند به بهره‌وری بیشتری دست یافت. یکی از شرکت کنندگان با نام مستعار جی‌بی 55 (jb55) عنوان کرده است که پیشنهاد کدنویسی 10000 کلمه‌ای من از هشت دقیقه به سه ثانیه رسیده است.

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

منبع: coindesk

ارسال یک پاسخ

آدرس ایمیل شما منتشر نخواهد شد.