هش کردن چیست؟ – قسمت چهارم
مترجم: احمد رجعتی
اکنون اجازه دهید بر روی هش Merkle Root تمرکز کنیم. اما قبل از آن باید با درخت Merkle آشنا شوید.
درخت Merkle چیست؟
در یک درخت Merkle، هر گره غیر برگ، هش گرههای فرزند خود است.
- گره برگ: گرههایی هستند که در پایینترین سطح درخت قرار دارند.
- گرههای فرزند: برای یک گره، گرههای زیر آن که از آن تغذیه میشوند، گرههای فرزند هستند.
- گره ریشه: گره تک در بالاترین سطر با برچسب «Top Hash» گره ریشه نام دارد.
درخت Merkle چه ارتباطی با بلاکچین دارد؟
هر بلوک شامل هزاران معامله است. ذخیرهسازی تمام دادهها درون هر بلوک به عنوان یک سری، از نظر زمانی بسیار ناکارآمد خواهد بود. انجام این کار باعث میشود پیدا کردن یک معامله خاص بسیار سنگین و وقتگیر باشد. با این حال اگر از درخت Merkle استفاده کنید، زمان زیادی را برای تعیین اینکه معامله خاص متعلق به آن بلوک است یا نه، کاهش میدهید.
هش در استخراج: پازلهای رمزنگاری
وقتی از «استخراج» (Mining) سخن میگوییم، به این معنی است که به دنبال یک بلوک جدید برای اضافه شدن به زنجیره هستیم. استخراجکنندگان (Miners) از سراسر دنیا بیوقفه در حال کار هستند تا مطمئن شوند که زنجیره در حال رشد است. در گذشته برای مردم آسان بود که از طریق لبتابشان استخراج را انجام دهند، اما در طی زمان، استخرهای استخراج به وجود آمد تا مردم بتوانند به صورت بهینهتری از قدرت کامپیوتر خود استفاده کنند.
با این حال این موضوع میتواند یک مشکل باشد. برای هر نوع ارز رمزنگاری شده، یک سقف وجود دارد، به عنوان مثال. برای بیتکوین، این سقف 21 میلیون است. تنها 21 میلیون بیتکوین وجود دارد. اگر استخراجکنندگان مجاز به ادامه دادن باشند، با این سرعت، تمام بیتکوینهای موجود را استخراج خواهند کرد لذا باید بین ایجاد هر بلوک، یک محدودیت زمانی خاص وجود داشته باشد. برای بیتکوین، این محدودیت زمانی بین ایجاد بلوک 10 دقیقه است. اگر اجازه داده شود بلوکها سریعتر ایجاد شوند، این امر منجر به تبعات زیر خواهد شد:
- تصادمهای بیشتر: توابع هش بیشتری تولید خواهد شد که به ناچار باعث ایجاد تصادم بیشتر میشود.
- بلوکهای orphanedبیشتر: اگر بسیاری ازاستخراجکنندگان بیش از اندازه استخراج کنند، بلوکهای جدید به طور همزمان تولید میشوند. این موضوع باعث میشود که بلوکهای بیشتری از زنجیره اصلی جدا شوند و تبدیل شدن به بلوکهای orphaned شوند.
لذا برای محدود کردن تولید بلوک جدید، درجه سختی خاصی تعیین میشود.استخراج مانند یک بازی است، پازل را حل میکنید و پاداش میگیرید. تعیین سختی حل پازل را سختتر میکند و درنتیجه زمان بیشتری را باید صرف کرد. هدف سختی برای بیتکوین یک رشته 64 کاراکتری (مانند خروجی SHA-256) است که با تعدادی صفر آغاز میشود. با افزایش درجه سختی، تعداد این صفرها نیز افزایش مییابد. سطح سختی بعد از هر 2016 بلوک افزایش مییابد.
فرآیند استخراج
هنگامی که نرمافزار بیتکوین قصد دارد یک بلوک جدید به بلاکچین اضافه کند، روش آن به شرح زیر است. هر بار که یک بلوک جدید وارد میشود، مقدار هش تمام محتویات بلوک محاسبه میشود. اگر هش کمتر از مقدارهدف سختی باشد آنگاه به بلاکچین اضافه میشود و هر شخصی در جامعه بلوک جدید را تایید میکند.
با این حال این فرایند به این سادگیها هم نیست. شما باید خیلی خوش شانس باشید که یک بلوک جدید مانند آن را دریافت کنید. اینجا جایی است که nonce وارد میشود. nonce یک رشته دلخواه است که به هش بلوک چسبیده است. پس از آن این رشته پیوندی مجددا محاسبه شده و با سطح سختی مقایسه میشود. اگر از سطح دشواری کمتر نباشد، nonce تغییر میکند و بارها و بارها تکرار میشود تا نهایتا الزامات مورد نیاز را برآورده سازد. هنگامی که این اتفاق میافتد، بلوک به زنجیره بلوک افزوده میشود.
بنابراین به طور خلاصه:
- هش محتویات بلوک جدید گرفته میشود.
- ) nonce رشته تصادفی) به هش اضافه میشود.
- هش رشته جدید دوباره ایجاد میشود
- سپسهش نهایی با سطح دشواری مقایسه میشود و میبینیم که کمتر از آن است یا نه.
- اگر کمتر نباشد، Nonce تغییر میکند و فرآیند دوباره تکرار میشود.
- اگر کمتر باشد، بلوک به زنجیره اضافه میشود و دفترکل به روز رسانی میشود و از افزوده شدن بلوک جدید اعلام میشود.
- استخراجکنندگان مسئول این امر با بیت کوین پاداش میگیرند.
نرخ هش چیست؟
میزان هش به طور عمده به این معنی است که این عملیات هش کردن در استخراج چقدر سریع انجام میشود. نرخ بالا به این معنی است که افراد و دستگاههای نرم افزاری بیشتری در فرایند استخراج شرکت میکنند و به همین ترتیب سیستم به آرامی کار میکند. اگر نرخ هش بیش از حد سریع باشد، سطح دشواری افزایش می یابد. اگر نرخ هش خیلی کند باشد، سطح دشواری کاهش می یابد.
منبع: blockgeeks
Leave a Reply