سوار شدن به هسته بیت کوین

ساخت وبلاگ

در طول یک سال گذشته ، من سوراخ خرگوش فوق العاده کمک به Bitcoin Core را پایین آورده ام. در طول راه ، من بسیار خوش شانس بوده ام که از بسیاری از افراد راهنمایی و پشتیبانی دریافت کرده ام ، و من چند ترفند خودم را به دست آورده ام. در این پست ، من می خواهم برخی از ابزارهایی را که پیدا کرده ام به اشتراک بگذارم و به اشتراک بگذارم.

کمک به Bitcoin Core تنها یک راه برای کمک به پیشبرد پروتکل است. گزینه های دیگر شامل (و گسترش بسیار فراتر از آن) در بحث لیست های پستی ، تحقیق در مورد بردارهای حمله یا تکنیک های مقیاس گذاری ، کمک به یکی از مشتری های رعد و برق [1] [2] [3] [4] ، یا توسعه ابزار مرتبط مانند کتابخانه SECPK256K1یا یک زیرساخت آزمایش بهتر. اما این پست هیچ یک از این مباحث را پوشش نمی دهد.

این پست در مورد Bitcoin Core ، از طریق لنزهای تجربه سوارکاری من است. امیدوارم به شما کمک کند مسیر خود را برای مشارکت شناسایی کنید.

قبل از اینکه تو شروع کنی

  • ابتدا کاغذ سفید را بخوانید. واقعاًاگر هنوز آن را نخوانده اید ، خواندن این مطلب را ترک کنید و مستقیم به آنجا بروید.
  • درک اصول مفهومی در مورد چگونگی کار بیت کوین برای ایجاد PRS معنی دار به هسته بیت کوین (از جمله کوچکترین موارد) ضروری است. روش های زیادی برای قرار گرفتن در معرض وجود دارد. من با خواندن یکی از کتاب ها (تسلط بر بیت کوین ، برنامه نویسی بیت کوین یا بیت کوین) شروع می کنم. برای مانور مطالب آنلاین ، من به لیست منابع جیمسون لوپ یا برنامه درسی آزمایشگاه های زنجیره ای مراجعه می کنم. اولین وسعت بیشتری دارد ، اما مورد دوم به طور خاص به سمت توسعه پروتکل هدایت می شود.
  • اگر هدف شما کمک به Bitcoin Core است ، سعی نکنید جزئیات هر مفهوم را بیاموزید. مباحث زیادی با ظرافت بی نهایت وجود دارد. هدف این است که درک سطح بالایی داشته باشید و در معرض قسمتهای مختلف سیستم قرار بگیرید. برای درونی کردن اصول نحوه عملکرد این سیستم اجماع توزیع شده ، زمان لازم است.
  • خبرنامه هفتگی Bitcoin Optech * بهترین روش * برای یادگیری در مورد تحولات فنی در اکوسیستم است. دیو هاردینگ یک جادوگر کلمه ای است که باعث می شود به روز ماندن آن در دسترس باشد. من مشترکاً مشترک را توصیه می کنم.

انتخاب کنید که چه چیزی را تنظیم کنید

هنگامی که تصمیم گرفتید که می خواهید در Bitcoin Core مشارکت کنید ، این روند متوقف نمی شود. پیچیدگی و توسعه کافی در این پروژه وجود دارد تا هر کسی را برای چندین طول عمر مشغول کند. برای انتخاب چگونگی توجه خود ، مفید است که آنچه را که * * * * نمی خواهید در آن شرکت کنید (حداقل در حال حاضر) مفید است.

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

افرادی که می خواهند به عشق کمک کنند توصیه های بیشتری را که باید بخوانید/یاد بگیرید/مصرف کنید/درک کنید ... من قبلاً به صراحت این کار را در بالا انجام داده ام- من 3 کتاب ، 2 لیست نامحدود از مطالب و 1 خبرنامه هفتگی را توصیه کردم. این نیز ، در بخش "قبل از شروع"! همچنین فشار ضمنی وجود دارد که با دیگران در تعامل باشید تا در مورد تعداد زیادی از موضوعات آگاه باشید تا به هر مکالمه ای کمک کند. این برای وسعت عالی است ، اما فقط شما می توانید مسیر خود را برای پیگیری عمق ایجاد کنید. برای ایجاد روابط عمومی باید دانش خاصی را ایجاد کنید (صرف نظر از اینکه سطح سطح آن چقدر کوچک است) که به شما امکان می دهد تغییر را ارائه دهید. در مرحله "مصرف" گیر نکنید ، تمرکز به شما اطمینان می دهد که به مرحله "ایجاد" ادامه دهید.

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

خوب ، در حال حاضر مشاوره کافی در زندگی. بازگشت به برخی از مشخصات پروژه ...

با پایگاه کد آشنا شوید

  • repo را کلون کنید ، آن را کامپایل کنید و تست ها را اجرا کنید.
  • از طریق اسناد توسعه دهنده در پروژه بخوانید:
  1. کمک به راهنمای اصلی بیت کوین ، دانش اساسی برای شروع کار است ، از جمله فلسفه درخواست درخواست و نحوه عملکرد روند بررسی.
  2. یادداشت های توسعه دهنده خوب است که در ابتدا از بین بروند ، سپس قبل از باز کردن روابط عمومی دوباره بررسی کنید تا اطمینان حاصل کنید که به استانداردهای فعلی پایبند هستید.
  3. یادداشت های بهره وری دارای ترفندهایی هستند که * بسیار مفید است * برای به دست آوردن در بخش های مختلف توسعه گردش کار شما. من به شدت توصیه می کنم چهار مورد اول را بلافاصله انجام دهید (نصب ccache ، استفاده از ./configure را به نفع خود ، کامپایل با mak e-j [nu m-cores] و ارائه اهداف ساخت).
  • پست های وبلاگ را که توسط جیمی سونگ و جان Newbery نوشته شده است ، بخوانید.
  • در باشگاه بررسی هفتگی PR شرکت کنید. بررسی PRS برای پروژه بسیار مهم است. مهمتر از همه ، با شروع کار ، این یک روش مؤثر برای یادگیری در مورد پایگاه کد و فرآیند ادغام است. Club Review راهی برای آشنایی با تغییرات خاص با پشتیبانی دیگران است. ارزشی که می توانید از Club Review بدست آورید ، یک محصول مستقیم از انرژی است که شما مایل به سرمایه گذاری هستید. یادداشت های هفتگی به جلب آگاهی از الگوهای مانند معماری فنی و زمینه تاریخی کمک می کند ، که برای توسعه مستقل زمان بیشتری طول می کشد. این که آیا شما به جلسه تنظیم می کنید و فقط کمین می کنید و یا وقت خود را صرف می کنید تا در اطراف کد قبل از زمان شرکت کنید و شرکت کنید ، مطمئناً چیزهای زیادی یاد خواهید گرفت. آماده سازی قبل از زمان به شما امکان می دهد تا از جلسه استفاده کنید تا سؤالات را صدا کنید یا اعتماد به نفس خود را در مورد درک خود از کد ایجاد کنید.

اولین روابط عمومی خود را پیدا کنید

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

  • شماره اول شماره را بر روی برچسب ها کنترل کنید و برای گرفتن. با استفاده از گیرها ، حتماً فیلتر کنید تا هر دو باز و بسته را شامل شود.
  • پایگاه کد را برای رشته "TODO" GREP کنید و از آن جدا شوید تا ببینید که آیا به نظر می رسد برای سطح آشنایی شما با کد کد معقول است یا خیر. من در تست هایی که به نظر دوستانه مبتدی هستند ، رسیده ام.
  • بخشی از پایگاه کد (با نام مستعار یکی از بخش های موجود در اسناد کمک کننده) را انتخاب کنید و به PR های مربوطه که در حال باز شدن هستند توجه کنید. اگر به همراه مکالمات روابط عمومی پیگیری کنید ، به طور قطع * متوجه می شوید که کارهای انجام شده را دنبال کنید. همچنین ، در مورد چگونگی آزمایش تغییرات به طور جدی فکر کنید. افتتاح روابط عمومی برای رسیدگی به پیگیری ها و افزایش پوشش آزمون بسیار مورد استقبال قرار می گیرد. همچنین می توانید با مراجعه به تاریخچه مربوطه ، با یک بخش با یک بخش آشنا شوید.

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

من بسیار شگفت زده شده ام که مشاهده می کنم چقدر میوه کم آویز برای کمک به آن وجود دارد. من قبل از نگاهی دقیق به پروژه GitHub هرگز انتظار نداشتم.

برای مقدار "انتقاد خیابانی" و ارعاب که پروژه اصلی بیت کوین با آن همراه است ، دیدن این که مشارکت در دسترس چقدر است ، باورنکردنی است. با مشاهده لیست بی پایان Todos (چه ساده و چه پیچیده) واقعاً چشم انداز پروژه بیت کوین و نیاز آشکار به همکاران بیشتری را در چشم انداز قرار داده است.

برای ادامه یادگیری خود از اینترنت در آغوش بگیرید

وقتی شروع به یادگیری C ++ کردم ، کتابهای خوبی گرفتم ، اما صادقانه بگویم ، من هنوز هم راه خود را از طریق آنها انجام می دهم.

یادگیری دستی برای من بهترین کار را می کند ، و من بر یادگیری مهمترین قسمت های زبانی که به من امکان می دهد پایگاه اصلی بیت کوین را بخوانم متمرکز شدم.

بنابراین ، من کد می نویسم. وقتی با یک مفهوم جدید C ++ روبرو شدم ، اسناد را خواندم و سعی می کنم عملکرد را در یک برنامه مثال جدا کنم. من همیشه یک برگه tmux باز دارم که من آن را C ++ Play می نامم. این برنامه ها همچنین به عنوان مستندات مفاهیمی که من با آنها استفاده کرده ام ، خدمت می کنند. یکی دیگر از ابزارهای عالی Compiler Explorer است. من می دانم که برجسته کد رنگی به ویژه برای مقایسه روشهای مختلف اجرای همان عملکرد مفید است تا ببینم اختلافات سطحی است ، بهینه سازی می شود یا اساساً کار انجام شده را تغییر می دهد.

برای شیرجه رفتن به مفاهیم خاص C ++ ، من از تماشای مذاکرات CPPCON ، به ویژه آهنگ "بازگشت به اصول" لذت می برم.

این یک شروع خوب است ، اما گاهی اوقات می خواهم با یک انسان صحبت کنم. در ابتدا ، من بعضی اوقات در مورد نگارشی سؤالاتی داشتم که نمی دانستم چگونه Google را برای آن انجام دهم (به عنوان مثال یادگیری که با دقت قرار داده شده است: لیست اولیه را نشان می دهد). این روزها ، من بیشتر می خواهم درک را که از اسناد و اسناد و مدارک جدا کرده ام تأیید کنم.

من برخی از اجتماعات آنلاین شگفت انگیز را با غریبه هایی پیدا کرده ام که مایل به کمک به من در جهت درست هستند. برای C ++ یک Cpplang Slack ، یک کانال ## C ++-General IRC وجود دارد ، و #includجامعه با سرور Discord. من از اینکه چقدر غریبه های اینترنتی مفید بوده اند شگفت زده شده ام. من همچنین برای سؤالات خاص GIT در کانال #Git IRC قرار گرفته ام.

  1. من درخواست کمک می کنم ، اما لطفاً در مورد نحوه انجام این کار احترام و متفکر باشید. دقت لازم را انجام دهید و سعی کنید اولین بار جواب خود را پیدا کنید. بخشنده باشید و از کانال های ارتباطی مناسب برای سوال خود استفاده کنید. مردم به شما پاسخ نمی دهند. هر کمکی که ارائه می شود از سخاوت خارج است.
  2. انتخاب یک مشتری irc: من irccloud را یک کلاینت ساده و زیبا شناختم که نیازی به سرمایه گذاری در ابزارسازی ندارد. همچنین گزینه ای برای داشتن نام کاربری و لاگ های مداوم با هزینه اندک وجود دارد. گزینه‌های زیادی برای مشتریان irc وجود دارد، اما من توصیه می‌کنم قدرت تصمیم‌گیری خود را روی تصمیم‌گیری‌های تاثیرگذارتر متمرکز کنید و به سادگی مشتری را به دلخواه انتخاب کنید.

بیشتر منابع بیت کوین مورد علاقه من در سراسر این پست پاشیده شده است، اما در اینجا برخی از آنها وجود دارد که می خواهم برای مانور کد برجسته کنم:

  • برای پیام‌های P2P و RPCها، بحث‌هایی خاص برای توسعه پروتکل وجود دارد که از طریق پرسش‌ها و پاسخ‌های مختلف پراکنده شده است. به خوبی توسط گوگل ایندکس نمی شود، بنابراین ارزش آن را دارد که مستقیماً از سایت بازدید کنید و بر اساس موضوع جستجو کنید.
  • فابیان جهر یک سند جامع در مورد تکنیک های اشکال زدایی گردآوری کرده است [گفتگو] [خلاصه]
  • من از نمای کلی معماری ارائه شده توسط James O’Beie لذت بردم [گفتگو] [اسلاید]

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

راه های بیشتر برای یادگیری در مورد بیت کوین

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

  • یک جلسه irc هر پنجشنبه ساعت 19:00 UTC در #bitcoin-core-dev وجود دارد
  • کانال #bitcoin-core-pr-reviews نیز گاهی برای بحث در مورد فرآیندها و ابزارها استفاده می شود، بنابراین توجه ممکن است مفید باشد.
  • برنامه درسی بیت کوین Chaincode Labs را دوباره مرور کنید. مطالب بسیار عالی در آنجا وجود دارد - گفتگوها، مقالات، و حتی چالش های کد!
  • در کنفرانس های با کیفیت شرکت کنید.
  • ویدیوهای کنفرانس های قبلی را تماشا کنید. با استفاده از رفت و آمدم برای گوش دادن و تماشای ویدیوهای Bitcoin Edge Dev++ [2017] و [2018] چیزهای زیادی یاد گرفتم.
  • اگر در شهری زندگی می‌کنید که این یک گزینه است، در سمینار سقراطی شرکت کنید.
  • ویکی بیت کوین، به ویژه صفحات پروتکل و حریم خصوصی را بخوانید.
  • Chaincode اخیراً یک پادکست متمرکز بر پروتکل راه اندازی کرده است.

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

به برنامه اقامت کد زنجیره ای توجه کنید. من بسیار سپاسگزارم که تابستان گذشته توانستم شرکت کنم و از نظر سوار شدن من به این پروژه در حال تغییر بازی بود. اما به خاطر داشته باشید که این یک برنامه بسیار رقابتی است و هرگونه کمک به Bitcoin Core که قبل از زمان انجام می دهید ، شانس پذیرش شما را افزایش می دهد (شرکت در باشگاه بررسی ، بررسی PRS ، ساخت PRS و غیره).

به طور جدی. انجام دهید.

کمک به هسته بیت کوین سخت است ، اما به دور از غیرممکن است. من قبل از شروع این سفر هرگز C ++ را ننوشته ام (یا واقعاً خوانده ام). طبیعی است که مرعوب شوید ، اما اجازه ندهید که شما را متوقف کند.

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

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

این مهم است. با تصحیح تایپ در PRS شروع نکنید. صبور باشید ، در یادگیری خود سرمایه گذاری کنید ، پروژه را رعایت کنید و چگونه می توانید مشارکت معنی دار داشته باشید.

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

برای نتیجه گیری ، برخی از تعمق های غریب ...

اگر بخواهیم تصویری از مسیرهای مختلف یادگیری برای کمک به هسته بیت کوین بکشیم ، مطمئناً مانند یک blockchain به خوبی سفارش داده نمی شود و خطی نیست. سفر خود را دنبال کنید ، چند تورهای منظره را انجام دهید و اوقات خوبی داشته باشید.

پیمایش در قلمرو منبع باز ، کوله پشتی خارج از تریل را به من یادآوری می کند.

با کوله پشتی ، من ابتدا منطقه ای را که می خواهم از روی نقشه توپوگرافی (TOPO) بازدید کنم بازرسی می کنم و مسیری خشن از سفر مورد نظر خود را ترسیم می کنم ، و سعی می کنم در آرام ترین زمین بمانم. توپ های قلمرو بیت کوین چیزی در نقشه های USGS ندارند که به طرز شگفت انگیزی به من کمک می کنند تا از طریق سیرارها حرکت کنم. بنابراین ، هنگام پیمایش بیت کوین ، ابتدا باید یک نقشه خشن از منطقه را با قطعه های درک جمع کنید و سپس یک رویکرد را ترسیم کنید. امید من با این پست این است که این روند را کمی ساده تر کنیم.

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

این روند در بیت کوین مشابه است. همانطور که بیشتر می آموزید ، از زمین های آینده بازدید می کنید و باید دائماً درست عمل کنید تا خود را به روشی معقول پیش ببرد. بعضی اوقات شما به یک صخره برخورد می کنید و مجبور به عقب نشینی هستید و یک مسیر متناوب را امتحان می کنید. یافتن مسیر به انرژی و توجه زیادی نیاز دارد. شما باید یک ناوبر و کوهنورد باشید.

احتمالاً می توانم طول این پست را با غواصی به شباهت های بین تجربیات خود دو برابر کنم ، اما در عوض ، من آن را با این کار پایان می دهم

موفق باشید! امیدوارم که شما را در GitHub ببینم :)

اگر سؤال یا پیشنهادی دارید ، لطفاً من را در توییتر DM کنید.

آنالیز فاندامنتال...
ما را در سایت آنالیز فاندامنتال دنبال می کنید

برچسب : نویسنده : اسماعیل داورفر بازدید : 53 تاريخ : شنبه 5 فروردين 1402 ساعت: 23:43