CS120: بیت کوین برای توسعه دهندگان من

ساخت وبلاگ

یکی از مؤلفه های اصلی سیستم بیت کوین ، شبکه همتا به همسالان است که روی آن کار می کند. در حالی که شبکه ها قبل از بیت کوین شبکه ها وجود داشته اند ، درک آنچه در شبکه بیت کوین P2P اتفاق می افتد برای درک بیت کوین اساسی است.

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

کشف شبکه

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

برای اتصال به یک همسالان شناخته شده ، گره ها اتصال TCP را معمولاً به بندر 8333 (درگاه ای که معمولاً به عنوان بیت کوین استفاده می شود) یا در صورت تهیه یک درگاه جایگزین ایجاد می کنند. پس از برقراری اتصال ، گره با انتقال یک پیام نسخه ، "دست زدن به دست اول بین همسالان) را شروع می کند ، که حاوی اطلاعات شناسایی اساسی است ، از جمله:

چابک

نسخه پروتکل Bitcoin P2P مشتری "صحبت می کند" (به عنوان مثال ، 70002)

سرویس های nlocalservice

لیستی از خدمات محلی که توسط گره پشتیبانی می شود ، در حال حاضر فقط node_network

زمان

زمان فعلی

یدک

آدرس IP گره از راه دور همانطور که از این گره مشاهده می شود

دستبند

آدرس IP گره محلی ، همانطور که توسط گره محلی کشف شده است

بخشنده

زیر نسخه ای که نوع نرم افزاری را که روی این گره اجرا می شود نشان می دهد (به عنوان مثال ، /satoshi:0. 9. 2. 1/)

بهترین

ارتفاع بلوک blockchain این گره

پیام نسخه همیشه اولین پیام ارسال شده توسط هر یک از همسالان است. همسالان محلی که یک پیام نسخه دریافت می کند ، NVersion گزارش شده از راه دور را بررسی می کند و تصمیم می گیرد که آیا همتا از راه دور سازگار است یا خیر. اگر همکار از راه دور سازگار باشد ، همکار محلی پیام نسخه را تصدیق می کند و با ارسال پیام Verack ارتباط برقرار می کند.

چگونه یک گره جدید همسالان را پیدا می کند؟روش اول پرس و جو DNS با استفاده از تعدادی "دانه DNS" است که سرورهای DNS هستند که لیستی از آدرس های IP گره های بیت کوین را ارائه می دهند. برخی از این دانه های DNS یک لیست استاتیک از آدرس های IP گره های گوشتی پایدار بیت کوین را ارائه می دهند. برخی از بذرهای DNS پیاده سازی های سفارشی Bind (نام اینترنت برکلی Daemon) هستند که یک زیر مجموعه تصادفی را از لیستی از آدرس های گره بیت کوین جمع آوری شده توسط یک خزنده یا یک گره بیت کوین طولانی باز می گردانند. مشتری اصلی بیت کوین شامل نام نه بذر مختلف DNS است. تنوع مالکیت و تنوع اجرای بذرهای مختلف DNS سطح بالایی از قابلیت اطمینان را برای فرآیند اولیه بوت استرپینگ ارائه می دهد. در مشتری Bitcoin Core ، گزینه استفاده از دانه های DNS توسط گزینه سوئی چ-dnsseed گزینه کنترل می شود (به طور پیش فرض روی 1 تنظیم کنید تا از دانه DNS استفاده کنید).

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

شکل 4. دست زدن اولیه بین همسالان

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

شکل 5. به انتشار و کشف آدرس

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

در گره ای که مشتری اصلی بیت کوین را اجرا می کند ، می توانید اتصالات همکار را با فرمان getPeerInfo لیست کنید:

$ bitcoin-cli getpeerinfo
پلتفرم های تجاری...
ما را در سایت پلتفرم های تجاری دنبال می کنید

برچسب : نویسنده : مریم کاویانی بازدید : <-PostHit-> تاريخ : سه شنبه 24 مرداد 1402 ساعت: 9:37