در این درس، با آموزش نودهای بیت کوین و فرآیند هشینگ آن به بررسی عمیقی از ساختار و عملکرد شبکه بیت کوین می پردازیم.
نودهای بیت کوین
شبکه بیتکوین یک شبکه همتا به همتا (P2P) از نودها است.
در دروس قبلی، یاد گرفتید که یک شبکه چه کاری انجام میدهد و شبکه همتا به همتا چیست؟
اما دقیقاً یک نود بیتکوین چیست؟ و چگونه و چه کاری انجام می دهد؟
نود بیتکوین، یا به عبارت دقیقتر، یک نود کامل بیتکوین، به سادگی یک رایانه است که نرمافزار بیتکوین را اجرا میکند. و به عنوان مشتری بیتکوین Bitcoin client یا نرمافزار مشتری بیتکوین Bitcoin client software معروف است.
این نود میتواند یک کامپیوتر رومیزی یا لپتاپ باشد تا زمانی که دارای فضای ذخیرهسازی کافی برای نگهداری دادههای تاریخی باشد.
اصطلاحهای نود و نود کامل اغلب به صورت مترادف استفاده میشوند، اما در واقع تفاوتی بین این دو وجود دارد. این تفاوت به دلیل وجود دو نوع نود است: نود کامل و نود سبک. نودهای کامل اساس شبکه بیتکوین را تشکیل میدهند، در حالی که نودهای سبک برای عملکرد، به نودهای کامل وابستهاند.
نودهای بیت کوین چه کاری انجام میدهد؟
یک نود سه وظیفه مهم دارد:
- پیروی از قوانین
- اشتراک گذاری اطلاعات
- نگهداری یک کپی از تراکنشهای مورد تایید
نودهای بیت کوین و پیروی از قوانین
هر نود (یک رایانه که نرمافزار بیتکوین را اجرا میکند) برنامهریزی شدهاست تا مجموعه ای از قوانین را دنبال کند. این مجموعه قوانین به نام پروتکل بیتکوین است. پروتکل مجموعهای از قوانین پیشفرض است که تعیین میکند چگونه شبکه عمل میکند و تمام شرکتکنندگان شبکه باید طبق آن عمل کنند تا شبکه بتواند کار کند.
نودهای بیت کوین خودمختار هستند. اگر رایانه ای دارید که نرم افزار بیتکوین را اجرا میکند، شبکه به شما نمی گوید چه کاری انجام دهید. به جای اینکه شبکه به شما بگوید چه کاری انجام دهید، این نرم افزار در حقیقت از پیش میداند چه کاری انجام دهد و بر اساس پروتکل بیتکوین (قوانین) تصمیمات خود را میگیرد.
به دلیل اینکه قوانین از پیشتعیین شده و در نرمافزار بیتکوین کد گذاری شدهاند، این امر از هر اختلافی در شبکه بیتکوین جلوگیری میکند.
اهمیت پیروی از قوانین
با پیروی از این قوانین، اگر همه چیز معتبر باشد یک نود قادر است تراکنشهایی که دریافت میکند را بررسی کرده و فقط آنها را منتقل کند. اگر هر گونه مشکلی وجود داشته باشد، تراکنش منتقل نمیشود.
تراکنشی که قوانین را دنبال نمیکند توسط شبکه همتا به همتای رایانهها رد خواهد شد. به عنوان مثال، یک قانون این است که یک شخص باید مقدار بیتکوین معادل یا بیشتر از مقداری که قصد ارسال آن را دارد، در اختیار داشته باشد.
اگر نود شما تراکنشی دریافت کند که کسی سعی کرده باشد بیشتر از مقدار بیتکوینی که در اختیار دارد ارسال کند، تراکنش به نودهای دیگر منتقل نخواهد شد.اگر هر عضو از شبکه بیتکوین تلاش کند اطلاعات نادرست پخش کند، تمام نودهای شبکه فوراً آن را غیرمعتبر شناخته و رد خواهند کرد.
چرا که هر نود میتواند تمام اطلاعات موجود در شبکه را به صورت خودکار تأیید کند، نیازی به اعتماد به اعضای دیگر شبکه نیست. این امر باعث می گردد بیتکوین یک سیستم بدون اعتماد باشد.
نودهای بیت کوین و اشتراک گذاری اطلاعات
کار اصلی یک نود چت کردن یعنی اشتراک گذاری اطلاعات با دیگر نودها است.
این اطلاعات که یک نود به اشتراک میگذارد، تراکنشها هستند. در کل دو نوع تراکنش وجود دارد که نودها به اشتراک میگذارند:
تراکنشهای تازه: تراکنشهایی که به تازگی در شبکه وارد شدهاند.
تراکنشهای تایید شده: تراکنشهایی که تایید شدهاند و بر روی یک فایل نوشته شدهاند. این تراکنشها به صورت جداگانه به اشتراک گذاشته نمیشوند، بلکه ابتدا در بلوکهایی بسته میشوند و سپس به اشتراک گذاشته میشوند.
یک نود همچنین هر دو نوع تراکنش تازه و بلوکهای تراکنشهای تایید شده را به اشتراک میگذارد.
بلوک چیست؟
بیایید فرض کنیم شما به فروشگاه قهوه میروید و پس از پرداخت، یک رسید دریافت میکنید که تراکنش با باریستا را نشان میدهد. شما واقعاً دوست دارید به این قهوه فروشی بروید و پس از چندین بار، اکنون دسته ای از رسید در دستان شما است. آنها را با یکدیگر بسته میکنید. جمع این رسیدها با هم یک بلوک است. پس در بیتکوین، تراکنشهایی که با هم گروه بندی میشوند، بلوک نامیده میشوند.
نودهای بیت کوین و نگهداری یک کپی از تراکنشهای تایید شده
همانطور که در بالا گفته شد، هر نود همچنین بلوکهایی از تراکنشهای تایید شده نگه میدارد. این بلوک ها در فایلی به نام بلاکچین نگهداری می شوند.
زنجیره یا Chain نودهای بیت کوین چیست؟
Chain یا زنجیره به این معناست که وقتی یک بلوک جدید (یک دسته دیگر از تراکنشها) ایجاد میکنید، آن را به بلوک قبلی متصل میکنید. و اتصال آن دائمی است. شما نمی توانید آنها را ازهم جدا کنید. چون برای همیشه به آن بلوک قبلی متصل است.
تراکنش های تازه در سراسر شبکه حرکت می کنند تا زمانی که به بلاک چین اضافه شوند، که فقط یک دفتر کل تراکنش های تایید شده است. هیچ بلاک چین واحدی وجود ندارد. هر گره دارای کپی مخصوص به خود از بلاک چین است.
همه نودها تلاش میکنند تا همگام بمانند. اگر برخی از نودها نسخههای قدیمی از بلاکچین داشته باشند، نودهای دیگر که جدیدترین نسخه از بلاکچین را دارند، نسخه خود را با آنها به اشتراک میگذارند.
چیز جالب در مورد داشتن هر نود با داشتن یک نسخه از بلاکچین این است که اگر یک (یا چند) نود آفلاین شود، شبکه بیتکوین همچنان میتواند کار کند و هر چه بیشتر نودها در حال اجرا باشند، خاموش کردن بیت کوین سخت تر است.
شبکه بیت کوین وابسته به هیچ نود تکی نیست. هیچ نقطه مرکزی که شکستآور باشد، نیست. برای از بین بردن بیت کوین، تک تک نسخه های بلاک چین باید از بین برود.
هر گره مستقل است. گره ها (رایانه ها) می توانند به دلخواه شبکه را ترک کرده و دوباره به آن بپیوندند.
اگر یک نود از شبکه قطع شود و بازگردد، رایانه فقط نسخه تازهتر بلاکچین بیتکوین را دانلود خواهد کرد و باز هم یک نود میشود. نودها بخش حیاتی از سیستم بیتکوین هستند. بدون نودها، هیچ شبکه بیتکوینی وجود ندارد.
و بدون شبکه بیتکوین، بلاکچین نیز وجود ندارد چرا که برای نگهداری نسخههای بلاکچین، نودها نیاز است. و بدون بلاکچین، هیچ سیستم بیتکوینی وجود ندارد.
خلاصه ای از نودهای بیت کوین
تا کنون یاد گرفتهاید که شبکه بیتکوین:
- یک شبکه همتا به همتا از نودها (رایانههایی که نرمافزار بیتکوین را اجرا میکنند) و بدون رهبر است،
- که هر نود به طور مستقل بررسی میکند که آیا تمام قوانین اعمال می گردد یا نه،
- تراکنشهای تازه را تأیید کرده و
- یک نسخه از بلاکچین (دفتر ثبت تراکنشهای مورد تایید) را نگه میدارد.
- چون هر نود همان کار را انجام میدهد، هیچ نقطه مرکزی شکستآوری وجود ندارد. هیچ سرور متمرکزی نیست.
برای اینکه تراکنشهای تازه به بلاکچین افزوده گردند، آنها از فرآیندی به نام ماینینگ عبور میکنند و توسط نوع ویژه ای از نودها به نام استخراجکنندگان یا ماینرها انجام می گردد.
بطور خلاصه شبکه بیت کوین به مجموعه ای از رایانه ها یا گره ها اشاره دارد که نرم افزار بیت کوین را اجرا می کنند. کاربران با پخش پیامهایی به شبکه با استفاده از نرمافزار کیف پول، واحدهای ارز معروف به بیت کوین (BTC) را ارسال و دریافت میکنند.
چگونه فرایند هش کار میکند؟
هش کردن یک عملیات ریاضی است که انجام آن آسان است، اما معکوس کردن آن بسیار دشوار است.
فرایند هش کردن، یک قطعه از Data را به کد باینری تبدیل میکند، که فقط یک مجموعه از ۰ و ۱ است.
سپس اعداد را می شکند و تقسیم می کند و آشفتگی مخفی را ایجاد میکند، که توسط چیزی به نام تابع هش انجام می گردد.
چگونه هش در رمزارز کار میکند؟
وقتی در بیتکوین و سایر رمزارزها به کار می رود، نتیجه نهایی معمولاً یک رشته طولانی 64 رقمی از اعداد و حروف است.
از آنجا که تبدیل توسط یک الگوریتم رمزنگاری (تابع هش) انجام می گردد، فرمول درهم ریخته و ناشناخته است، بنابراین رشته 64 رقمی نمی تواند معکوس گردد.
هر رشته، دنباله ای از کاراکترها است. رشتهها شبیه جملات هستند. آنها با ترکیبی از کاراکترها ایجاد میشوند. هش را مانند یک دسته از حروف و اعداد تصادفی ببینید.
اهمیت هش برای تایید تراکنش
میتوان از هش برای تشخیص دستکاری استفاده کرد، زیرا حتی یک تغییر کوچک در ورودی تابع هش، خروجی کاملاً متفاوتی را به همراه دارد.
بسیار مهم است که این نکته را به خاطر بسپارید زیرا در بخش بعدی خواهید دید که چگونه از این روش برای جلوگیری از دستکاری تراکنش های قبلی استفاده می شود.
تابع هش فقط یکطرفه است. شما نمیتوانید یک هش موجود را بگیرید و سعی کنید آن را برعکس کنید تا رشته ورودی را پیدا کنید.
پس اگر تنها چیزی که میدانید هش است، هیچ راهی برای دانستن اینکه ورودی اصلی چیست وجود ندارد. شما نمیتوانید هش را مهندسی معکوس یا هک کنید.
در آخر، طول خروجی (هش) با افزایش اطلاعات در ورودی افزایش نمییابد. یک تابع هش داده های ورودی با هر طولی را میگیرد و مقداری را با طول ثابت برمیگرداند. اگر تمام متن یک کتاب هری پاتر که بیش از 76,000 کلمه دارد را وارد کنید، خروجی هش همچنان تنها ۶۴ کاراکتر خواهد بود.
و دوباره، اگر حتی یک حرف را در کتاب هری پاتر اشتباه بنویسید، و آن را از طریق تابع هش اجرا کنید، یک هش کاملا متفاوت از بالا ایجاد میکند. این مزیت به شما این امکان را می دهد که فوراً بدانید کتاب اصلاح شده است بدون اینکه مجبور باشید کل کتاب را به صورت دستی بررسی کنید.
برای درک واقعی از اینکه هش چه کاری انجام میدهد، مفید است که نمونههای واقعی را در حال اجرا ببینید. بیایید ببینیم چگونه فرآیند هش با استفاده از یک تابع هش واقعی انجام میشود. از آنجایی که SHA-256 تابع هش انتخابی بیتکوین است، بیایید از آن برای مثال خود استفاده کنیم.
این ورودی نمونه اول ما است:
.Chartestan.com is cool as ice
وقتی این جمله در تابع هش SHA-256 قرار می گیرد، مقدار هش زیر را ایجاد می کند که به عنوان دایجست یا همان هش نیز معروف است:
c0edc4cc9af6f78eb4b9e08fc3336e236856e9f381a657a15207260de99c5a0e
جدای از آن، واقعاً چیزهای زیادی نمی توانید از دیدن این هش بفهمید. هیچ الگو یا سرنخی برای اینکه ورودی چیست وجود ندارد.
خروجی ممکن است تصادفی به نظر برسد. اما هیچ راهی وجود ندارد که بتوانید ورودی را فقط با نگاه کردن به خروجی حدس بزنید.
اگر دوباره ورودی را از طریق تابع هش SHA-256 اجرا کنید، دقیقا همان خروجی (هش) را دوباره دریافت خواهید کرد.
ورودی یکسان همیشه خروجی یکسان نیز تولید خواهد کرد. حالا، بیایید یک تغییر ظریف به ورودی نمونه اول اعمال کنیم و ببینیم چه اتفاقی میافتد:
.Chartestan.com is cool as rabbit
حالا این هش جدید است:
79691acf733112153c6e466357ddef0c0469ef6dca300d03bd263c70d66b9320
حتی اگر ورودیها تقریباً یکسان باشند، تغییر یک کاراکتر تنها خروجی کاملاً متفاوتی ایجاد می کند.
ارزش تأکید دارد که در واقع هر ورودیای میتواند وارد تابع هش شود. بدون توجه به طول ورودی، خروجی همیشه طول ثابت خواهد داشت و همیشه به نظر کاملاً تصادفی می آید.
فرایند هش برای چه چیزی استفاده می شود؟
هدف اصلی از فرایند هش تأیید سلامت یک قطعه Data از شبکه بیت کوین است.
از آنجا که هش بوجود آمده برای دیتای ورودی یونیک است، به عنوان اثر انگشت منحصر بفرد دیتای ورودی عمل میکند.
این امر، هش را برای تأیید سلامت و یکپارچگی دیتاهای ارسالی از طریق کانالهای ارتباطی ناامن مانند اینترنت مفید میکند. یکپارچگی Data به این معنی است که دیتاها به روشی تایید نشده تغییر نکرده اند.
مقدارهش دیتای دریافتی میتواند با مقدار هش دیتای قبل از ارسال مقایسه گردد تا تشخیص دهیم آیا داده تغییر یافته است یا خیر.
اگر هم پیام و هم مقدار هشی را که از آن ایجاد کرده ایم برای شما ارسال کنیم، میتوانید از پیامی که دریافت کردهاید یک مقدار هش ایجاد کنید و مقادیر هش را باهم مقایسه کنید.
هش یکسان
اگر هر دو مقدار هش یکسان باشند، این نشان میدهد که:
پیام به درستی ارسال شده است. البته در دنیای واقعی، این کارها توسط کامپیوترهای ما انجام میشود.
مثال واقعی از هشینگ: رمزهای عبور آنلاین
شاید شما را شگفتزده کند، اما احتمالاً هر روز در زندگی روزمره خود با هشینگ روبرو میشوید… هر زمان که برای چک کردن ایمیل خود وارد سیستم میشوید.
هنگامی که یک آدرس ایمیل و رمز عبور ایجاد می کنید، ارائه دهنده ایمیل شما احتمالا رمز عبور واقعی شما را ذخیره نمی کند.
در عوض، ارائهدهنده ایمیل شما رمز عبور را از طریق یک تابع هش اجرا میکند و هش رمز عبور شما را ذخیره میکند.
هر بار که سعی میکنید وارد حساب ایمیل خود شوید، ارائهدهنده ایمیل شما رمز عبوری که وارد کردهاید را درهم میکند و این هش را با هشی که ذخیره کرده است مقایسه میکند. فقط زمانی که هر دو هش مطابقت داشته باشند، مجاز به دسترسی به ایمیل خود هستید. بیایید ببینیم چرا رمز عبور واقعی شما را ذخیره نمیکنند.
رمز عبور در فرایند هشینگ
اگر رمزهای عبور واقعی ذخیره شوند و هکرها وارد سیستم شوند، می توانند آنها را سرقت کنند. این موضوع قطعا برای کاربرانی که از یک رمز عبور برای چندین وب سایت استفاده می کنند خوب نیست. راه حل این است که رمز عبور را هش کنید
با استفاده از هشینگ رمزعبور، شرکت اطلاعات کاربران را حفاظت میکند. حتی اگر یک هکر به سیستم نفوذ کند، دسترسی به رمزهای عبور واقعی را ندارد، فقط به هشها دسترسی پیدا میکند.
به یاد داشته باشید که هشها غیرقابل معکوس هستند، بنابراین برای هکر غیرممکن است که تنها با نگاه کردن به هش، رمز عبور واقعی را بفهمد. هش کردن تضمین می کند که دیتاها در حالت درهم ذخیره می گردند، بنابراین سرقت آن دشوارتر است.هر زمان که ورود بزنید، تنها چیزی که آنها نیاز دارند هش است.
هنگامی که رمز عبور خود را وارد می کنید، از طریق تابع هش اجرا می شود. خروجی با هشی که در پایگاه Data ذخیره گردیده است، مقایسه می گردد. اگر مقادیر هش یکسان باشند، رمزعبور صحیح است.
رمز عبور اشتباه
رمز عبور اشتباه وارد شده هش متفاوتی نسبت به رمز ذخیره شده ایجاد می کند. هش ها مطابقت ندارند، بنابراین تلاش شما برای ورود به سیستم با شکست مواجه می شود.
بنابراین همانطور که می بینید، یک تابع هش دیتاها را مخدوش و غیرقابل خواندن می کند. حتی اگر هکری به سرور ارائه دهنده ایمیل شما دسترسی پیدا کند، جزئیات ذخیره را نمی توان از حالت رمز خارج کرد.
هش کردن فرآیند تبدیل رشته ای از کاراکترها به رشته ای دیگر از کاراکترها است که از کاراکترهای کوتاهتر و با طول ثابت 64 تایی است.
در درس بعدی با فرایند ماینینگ بیت کوین آشنا می شوید.
- پشتیبانی مناسب در تحلیل، استراتژی های معاملاتی و مدیریت ریسک و سرمایه خود را در خدمات ما از جمله درخواست تحلیل سهم، اکسپرت مدیریت سرمایه و سفارش اکسپرت انتخاب کنید.
گره یا نود بیت کوین، یک کامپیوتر یا دستگاهی است که به شبکه بیت کوین متصل است و کلیه تراکنشهای این شبکه را پردازش میکند.
فرایند هش در بیت کوین برای تأیید تراکنشها و ایجاد امنیت در شبکه استفاده میشود. هش به عنوان یک تابع رمزنگاری استفاده میشود که دادههای تراکنشها را به صورتی بیهویت تبدیل میکند و از تغییرات غیرمجاز جلوگیری میکند.
بلاکچین یک ساختار دادهای است که برای ثبت تراکنشها در شبکه رمزارزی مورد استفاده قرار میگیرد. این ساختار از زنجیرهی بلوکها تشکیل شده است، که هر بلوک حاوی تراکنشهای رمزارزی و هش بلوک قبلی است. این سیستم امنیت و شفافیت بیشتری را در انتقال و ثبت تراکنشها فراهم میکند.