درخت مرکل در بلاک چین چیست؟ – Merkle Tree به زبان ساده

۱۰۵۸ بازدید
آخرین به‌روزرسانی: ۲۱ شهریور ۱۴۰۲
زمان مطالعه: ۸ دقیقه
درخت مرکل در بلاک چین چیست؟ – Merkle Tree به زبان ساده

درخت مرکل در بلاک چین از اهمیت بالایی برخوردار است. در سیستم‌های توزیع شده با کمک درخت مرکل می‌توانیم اطلاعات فراوانی را بدون صرف انرژی زیاد بررسی و تأیید کنیم. ممکن است با خواندن کلمه درخت تصویری از درختی با شاخ و برگ را در ذهن تصور کنید. البته در علوم کامپیوتری درخت به ساختارهای داده اشاره دارد. درخت مرکل همانند درختی معکوس است و بیان‌گر ارتباطی سلسله‌وار بین اطلاعات است.

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

درخت مرکل چیست ؟

«درخت مرکل» (Merkle Tree) یا «درخت هش» (Hash Tree) ساختار داده‌ای متداول در علوم کامپیوتری است. در شبکه‌های بلاک چینی و بیت کوین درخت مرکل برای رمزنگاری کارآمدتر و امن‌تر استفاده می‌شود. اطلاعات و تراکنش‌ها در بلاک به صورت متنی عادی ذخیره نمی‌شوند بلکه آن‌ها در ساختاری داده‌ای به‌نام درخت مرکل قرار می‌گیرند. به عبارت دیگر درخت مرکل در بلاک چین در واقع خلاصه‌ای از تمامی تراکنش‌ها در هر بلاک است.

هر تراکنش در بلاک چین به طور منحصر به فردی توسط یک تابع هش همانند تابع هش SHA-256 هش می‌شود. هر یک از تراکنش‌ها که هش شده‌اند به صورت دوبه‌دو با هم هش می‌شوند. این فرآیند تا بدست آمدن تنها یک مقدار هش برای هر بلاک ادامه دارد.

تابع هش در بلاک چین چیست ؟

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

ریشه درخت مرکل در بلاک چین

درخت مرکل همانند یک درخت وارونه است. از لحاظ ساختاری درخت مرکل در بلاک چین همانند یک درخت باینری است که در آن هش‌های به‌دست آمده از تراکنش‌ها در قسمت پایین ساختار به‌نام «نودهای برگ» (Leaf Nodes) شناسایی می‌شوند. هش‌هایی که در قسمت میانی درخت مرکل قرار دارند «شاخه‌ها» (Branches) و مقدار هش بالایی به عنوان «ریشه مرکل» (Merkle Root) شناخته می‌شود. هر بلاک در بلاک چین یک ریشه مرکل دارد.

ریشه درخت مرکل

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

مثالی برای درخت مرکل در بلاک چین

برای این‌که با درخت مرکل در بلاک چین بهتر آشنا شوید فرض کنید چهار تراکنش A و B و C و D داریم. به کمک تابع هش هر کدام از این تراکنش‌ها را هش می‌کنیم. بنابراین هم اکنون هش A، هش B، هش C و هش D را خواهیم داشت. این هش‌های اولیه «نودهای برگ» (Leaf Nodes) نام دارند. سپس هر کدام از این تراکنش‌های هش شده را باهم هش می‌کنیم. در این مثال تراکنش هش شده A را با تراکنش هش شده B با هم ترکیب و هش می‌کنیم تا هش AB حاصل شود و تراکنش هش شده C را با تراکنش هش شده D ترکیب و هش می‌کنیم تا هش CD حاصل شود. هش AB و هش CD شاخه‌های درخت مرکل هستند. در مرحله بعدی هش AB با هش CD با هم به تابع هش می‌روند تا هش ABCD حاصل شود. هش ABCD ریشه درخت مرکل است.

درخت مرکل با تراکنش های فرد

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

برای آگاهی از جواب این سوال فرض کنید تراکنش‌های D,C,B,A و E را داریم. بنابراین هر کدام، هش جداگانه‌ای خواهد داشت. هشA، هشB، هشC، هشD و هشE. جفت هش‌های A و B با هم هش می‌شوند و هش AB را تشکیل می‌دهد. از سویی دیگر جفت هش‌های C و D نیز با هم هش می‌شوند و هش CD را تشکیل می‌دهد. اما هش E جفتی ندارد تا با آن در شاخه‌ای جدید هش شود.

با توجه به این‌که درخت مرکل در بلاک چین ذاتا «دودویی» (Binary) است بنابراین برای عملکرد نیاز دارد تا تعداد نودهای برگ آن عددی زوج باشد. بنابراین در حالتی که هشی بدون جفت بماند، این هش تنها مانده، کپی شده و با کپی خود هش جدید تولید می‌کند. در این مثال هش E با هش کپی خود هش EE را تولید می‌کند.

بعد از این هش AB و هش CD با هم هش جدید ABCD را تولید می‌کنند. از طرفی دیگر هش EE با کپی شده خود هش EEEE را تولید می‌کند. در نهایت هش ABCD و هش EEEE با هم جفت شده و هش واحدی را تولید می‌کنند که ریشه درخت مرکل است.

درخت مرکل با تراکنش های فرد

ریشه درخت مرکل کجا ذخیره می شود؟

هر بلاک از دو قسمت بدنه و «سرآیند بلاک» (Block Header) تشکیل شده است. ریشه درخت مرکل در بلاک هدر ذخیره می‌شود. در بلاک چین بیت کوین تمامی تراکنش‌ها توسط تابع هش SHA256 به هش تبدیل می‌شوند. با کمک درخت مرکل این هش‌ها ساختاربندی می‌شوند و به هش نهایی به‌نام ریشه درخت مرکل تبدیل می‌شوند.

بلاک چین

اطلاعات داخل بلاک چیست ؟

هر بلاک دارای اطلاعاتی است که در ادامه آن‌ها را شرح خواهیم داد.

  1. تراکنش‌ها و اطلاعات: اولین قسمت هر بلاک مربوط به اطلاعات و تراکنش‌ها است. اطلاعات مختلفی که در بلاک چین وجود دارد مانند اطلاعات فرستنده و گیرنده و مقدار تراکنش در این قسمت ذخیره می‌شوند. اطلاعاتی که در هر بلاک ذخیره می‌شوند با توجه به بلاکچین‌های مختلف متفاوت است. به عنوان مثال بلاکچینی که مربوط به زنجیره تأمین مواد غذایی است، اطلاعات مربوط به همان حوزه را در بلاک‌های خود ذخیره می‌کند.
  2. هش بلاک: هر بلاک حاوی هش منحصر به فرد خود است. این هش معرف بلاک و تمامی اجزای تشکیل دهنده آن بلاک است. برای درک بهتر هش می‌توانید آن را همانند اثر انگشت در نظر بگیرید. هش همواره یکتا است و هیچ دو بلاکی هش مشترک ندارند. همزمان با تولید هر بلاک هش مربوط به آن بلاک نیز تولید می‌شود. دست‌کاری یک بلاک هش آن را تغییر می‌دهد. به عبارتی دیگر اگر اثرانگشت یا هش بلاک تغییر کند به این معنی است که آن بلاک دست‌کاری شده است و دیگر بلاک قبلی نیست. بنابراین هش ابزاری قدرتمند برای متوجه شدن دست‌کاری و اعمال تغییر در بلاک است.
  3. هش بلاک قبلی: اطلاعات هش بلاک قبلی در هر بلاک وجود دارد. هش بلاک قبلی باعث می‌شود هر بلاک‌ همانند زنجیر به بلاک‌های دیگر وصل شود و امنیت کل بلاک چین تأمین شود.
  4. تأیید زمانی: چهارمین بخش ضروری موجود در هر بلاک «تأیید زمانی» (Timestamp) است. تأیید زمانی در واقع اثباتی است مبنی بر وجود اطلاعاتی در زمان و تاریخ مشخص. هر اطلاعات دیجیتالی می‌تواند تأیید زمانی داشته باشد. هش هر بلاک که حاوی اطلاعات آن بلاک است قبل از انتشار در شبکه دارای Timestamp می‌شود.
  5. «نانس» (Nonce): نانس عددی است که ماینرهای شبکه برای حل مسأله پیچیده ریاضی جهت تولید بلاک جدید آن را به‌طور تصادفی تولید می‌کنند. نانس عددی صحیح است که همراه با شماره بلاک، اطلاعات بلاک و هش بلاک قبلی به عنوان ورودی تابع هش بلاک برای محاسبه و تولید هش معتبر بلاک در نظر گرفته می‌شود. هش معتبر در بلاک به هشی گفته می‌شود که با سختی تعیین شده از طرف شبکه مطابقت داشته باشد. این سختی تعداد صفرهای قابل قبول در ابتدای هش خروجی را مشخص می‌کند.
  6. «شماره نسخه» (Version Number): شماره ورژن برای ردیابی نرم‌افزار یا پروتکل است و باعث می‌شود کامپیوترهای موجود در شبکه بتوانند بلاک را درست بخوانند.
  7. «هش هدف» (Target Hash): هش هدف میزان سختی  تولید نانس را تعیین می‌کند. این هدف سرعت اضافه شدن بلاک جدید به بلاک چین را تنظیم می‌کند و در هر 2016 بلاک دوباره تنظیم می‌شود.
  8. هش ریشه درخت مرکل: تمامی تراکنش‌ها در بلاک چین به‌صورت هش ذخیره می‌شوند. این هش‌ها دوبه‌دو با هم در ساختار درخت مرکل هش جدید را تولید می‌کنند. در نهایت تنها یک هش باقی می‌ماند. این هش نهایی ریشه درخت مرکل نام دارد.

اطلاعات بلاک هدر چیست ؟

یکی از اجزای مهم هر بلاک سرآیند بلاک یا بلاک هدر است. هر بلاک هدر اطلاعات مهم زیر را در خود جای داده است.

  1.  شماره ورژن بلاک
  2. تأیید زمانی
  3. هش بلاک قبلی
  4. نانس
  5. هش هدف
  6. هش ریشه درخت مرکل
ریشه مرکل در بلاک هدر

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

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

درخت مرکل و تغییرناپذیری بلاک چین

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

 درخت مرکل و کارکرد بلاک چین

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

جمع بندی

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

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

بر اساس رای ۱۹ نفر
آیا این مطلب برای شما مفید بود؟
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
منابع:
Investopedia
نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *