مفهوم «درخت مرکل» (Merkle Tree) در اوایل دهه 80 میلادی و توسط مهندس کامپیوتری به نام «رالف مرکل» (Ralph Merkle) معرفی شد. این مفهوم، به ساختاری از دادهها اشاره دارد که در برنامههای حوزه علوم کامپیوتر استفاده میشود. درخت مرکل همچنین در بیت کوین و سایر ارزهای دیجیتال، برای کدگذاری دادههای بلاک چین به صورت کارآمد و ایمن به کار میرود. به عبارت دیگر، درخت مرکل به ساختاری اشاره دارد که به منظور تأیید یکپارچگی دادهها در یک مجموعه استفاده میشود. درختهای مرکل به طور اختصاصی در شبکههای «همتا به همتا» (Peer-to-Peer) به کار میروند و هنگامی که شرکتکنندگان در شبکه قصد داشته باشند که اطلاعات را اعتبارسنجی کنند یا به اشتراک بگذارند، به کمک آنها میآیند. در این مقاله، به معرفی درخت مرکل میپردازیم و پس از توصیف ساختار آن، کاربرد این درخت را شرح داده و اهمیت آن در ارزهای دیجیتال را بررسی میکنیم.
هر بلاک تراکنش در بلاک چین بیتکوین، در بستر الگورتیمی اجرا میشود تا یک هش (hash) به وجود بیاید. هر هش رشتهای از اعداد و حروف است که میتواند نشان بدهد مجموعهای از دادهها مشابه مجموعۀ تراکنشهای اصلی هستند اما شامل آن مجموعۀ اصلی نمیشوند. نرمافزار بیتکوین در سراسر بلاک دادههای تراکنش اجرا نمیشود و بهطور متوسط ده دقیقه از تراکنش را نمایش میدهد. این مسیر از راه عملیات هش صورت میگیرد. هر تراکنش هش میشود و سپس هر جفت از تراکنشها به هم پیوند داده میشوند. این روند ادامه پیدا میکند تا یک هش برای بلاکی کامل شکل گیرد. اگر عدد عجیبی در تراکنشها باشد، یکی از تراکنشها تکرار و هش آن با خودش جمع و پیوند داده میشود. بهعبارت دیگر، مرکل تری یا همان درخت مرکل که به هشتری (hash tree) هم معروف است، درختی است که هریک از برگهایش با هش رمزگذاریشده از بلاک دادهها نامگذاری میشود.
برای درک بهتر مرکل تری، با یک مثال ساده کار را آغاز میکنیم. فرض کنید 4 تراکنش (A و B و C و D) در یک بلاک (بلاک 2 تصویر زیر) وجود دارد و هر کدام از آنها دارای یک هش بلاک منحصربهفرد (HashA و HashB و HashC و HashD) هستند. حالا هر جفت از این تراکنشهای هششده برای ساخت یک هش جدید با یکدیگر ترکیب میشوند. در این مثال، هش A با B ترکیب و هش AB را میسازد. در طرف دیگر، تراکنش هششده C و D نیز با یکدیگر ترکیب و هش CD را میسازند. حالا مجددا هش AB و CD توسط تابع هش ترکیب شده و ABCD را میسازد که در واقع همان ریشه مرکل یا هش ریشه برای درخت ماست. نهایتا مرکل روت در هدر و عنوان بلاک ذخیره میشود.
درخت مرکل اساساً برای شکستن قطعات بزرگ داده به قطعات بسیار کوچکتر طراحی شده است، که تضمین میکند که همه تراکنشها میتوانند به موقع تأیید شوند. درخت هر تراکنش را با ایجاد یک اثر انگشت کوچک از مجموعه خاصی از تراکنشها خلاصه میکند، که تأیید در دسترس بودن تراکنشها را برای کاربران آسانتر میکند. درختان مرکل از هش کردن جفت گرههای مختلف تشکیل میشوند تا زمانی که فقط یک هش باقی بماند که به آن ریشه مرکل میگویند. این درختها از پایین به بالا ساخته میشوند و هر تراکنش جداگانه از هش تشکیل شده است. هر گره برگ یک هش منفرد از دادهها است. در مورد گرههای غیر برگ، اینها هشهای هشهای قبلی هستند. فرض کنید که درخت مرکل از چهار تراکنش تشکیل شده است که با حروف W، X، Y و Z برچسب گذاری شدهاند. هر تراکنش قبل از اینکه هش مستقیماً روی گره برگ ذخیره شود، هش میشود. هنگامی که این اتفاق میافتد، هش W، X، Y و Z ایجاد میشود. سپس هر جفت گره برگ متوالی از طریق هش کردن هش W و هش X در یک گره والد خلاصه میشود که منجر به هش WX میشود. اگر هش Y و هش Z با هم هش شوند، هش YZ ایجاد میشود. هر دوی این هشها یک بار دیگر هش میشوند تا ریشه مرکل Merkle ایجاد شود. این فرآیند را میتوان با مجموعه دادههای گسترده استفاده کرد. ریشه Merkle مسئول خلاصه کردن دادههایی است که در تراکنشهای خاص وجود دارد، که همه آنها مستقیماً در هدر بلوک ذخیره میشوند. این تکنیک باعث میشود که یکپارچگی دادهها به درستی حفظ شود. در صورتی که یکی از جزئیات تراکنش در نقطهای تغییر کند، ریشه مرکل Merkle به طور خودکار در کنار آن تغییر میکند.
نتیجه گیری :
از جمله مواردی که باعث افزایش امنیت و جلوگیری از دستکاری در بلاک چین میشود، تغییرناپذیری بلاک چین است. استفاده از درخت مرکل با ساختار دادهای سلسلهوار آن در بلاک چین باعث بالا رفتن امنیت در بستر بلاک چین میشود. از طرفی دیگر با استفاده از درخت مرکل در بلاک چین میتوان پردازش اطلاعات و ذخیرهسازی داده را به نحو مطلوبی در بلاک چین انجام داد. در این مطلب در ابتدا با مفهوم درخت مرکل و تابع هش در بلاک چین آشنا شدیم. در ادامه با مثالی ریشه درخت مرکل در بلاک چین را توضیح دادیم. و در پایان نیز مزایای درخت مرکل در بلاک چین را شرح دادیم.