درخت مرکل ساختاری برای سازماندهی و بررسی دادهها با کمک هشهای رمزنگاری است. دادهها در پایین درخت قرار میگیرند و هشهای آنها در چند مرحله با هم ترکیب میشوند تا به یک هش نهایی، به نام ریشه مرکل، برسند. این ریشه به محتوای دادهها و ترتیب قرارگرفتن آنها وابسته است. اگر دادهای عوض شود، هشهای مسیر آن تا ریشه نیز تغییر میکنند.
در این مقاله چه میخوانیم؟
در بلاک چین، درخت مرکل به بررسی حضور یک تراکنش در مجموعه تراکنشهای یک بلاک کمک میکند. برای این بررسی لازم نیست همه تراکنشهای بلاک در اختیار بررسیکننده باشد؛ داده موردنظر، چند هش از شاخههای مجاور و یک ریشه قابلاعتماد کافی است. البته نتیجه این بررسی محدود است: حضور داده را نسبت به همان ریشه نشان میدهد، نه اعتبار تمام جنبههای تراکنش یا بلاک را.

درخت مرکل چگونه ساخته میشود؟
در شکل ساده و دودویی درخت مرکل، هر داده یک برگ دارد. ابتدا هش برگها محاسبه میشود. سپس هش دو برگ کنار هم ترکیب و دوباره هش میشود تا گرهای در سطح بالاتر ساخته شود. همین کار برای گرههای تازه تکرار میشود و در پایان تنها یک هش باقی میماند: ریشه مرکل. روش دقیق هشکردن، ترتیب برگها و شیوه برخورد با تعداد فرد برگها را قواعد هر سامانه تعیین میکند؛ بنابراین نمیتوان ریشه یک سامانه را با قواعد سامانهای دیگر بازسازی کرد.
در بیتکوین، شناسه تراکنشها با ترتیب مشخص در برگها قرار میگیرند و ریشه مرکل در سرآیند بلاک ثبت میشود. اگر تعداد هشهای یک سطح فرد باشد، هش آخر در محاسبه آن سطح تکرار میشود. این جزئیات برای کسی که میخواهد ریشه یک بلاک را محاسبه یا یک اثبات را بررسی کند مهماند. «هش تراکنش» در این کاربرد نقطه شروع مسیر بررسی است، اما بهتنهایی نشان نمیدهد تراکنش در کدام بلاک آمده است.
یک مثال ساده
فرض کنید یک سامانه چهار رسید با نامهای الف، ب، پ و ت دارد و میخواهد حضور رسید پ را بعداً قابلبررسی کند. هش الف و ب با هم ترکیب میشوند و یک گره میسازند؛ هش پ و ت نیز گره دوم را میسازند. ترکیب این دو گره، ریشه درخت را به دست میدهد. اکنون برای بررسی رسید پ، سامانه میتواند خود رسید، هش رسید ت و هش گره مربوط به الف و ب را ارائه کند.
بررسیکننده ابتدا هش رسید پ را محاسبه میکند، آن را در جای درست با هش ت ترکیب میکند و سپس نتیجه را با هش گره دیگر ترکیب میکند. اگر حاصل با ریشه قابلاعتماد برابر باشد، رسید پ با دادههایی که آن ریشه از آنها ساخته شده سازگار است. در این مثال نیازی به دریافت متن رسیدهای الف و ب نیست. همچنین ترتیب ترکیب هشها باید معلوم باشد؛ جابهجایی آنها میتواند نتیجه دیگری بسازد.
اثبات مرکل چه چیزی را نشان میدهد؟
به مجموعه داده و هشهای لازم برای پیمودن مسیر یک برگ تا ریشه، اثبات مرکل میگویند. هرچه درخت بزرگتر شود، بررسی یک برگ همچنان به بخش کوچکی از هشهای درخت نیاز دارد. به همین دلیل، اثبات مرکل برای بررسی داده در مجموعههای بزرگ کاربرد دارد. بررسیکننده هشها را طبق قواعد همان درخت بازسازی میکند و نتیجه را با ریشهای که از پیش میشناسد مقایسه میکند.
اعتماد به ریشه بخش ضروری این فرایند است. اگر کسی هم ریشه و هم اثبات را بدون راهی برای بررسی اعتبار ریشه ارائه کند، تطابق آن دو بهتنهایی کافی نیست. برای نمونه، در بررسی حضور تراکنش بیتکوین، ریشه باید به سرآیند بلاک موردنظر مربوط باشد و خود سرآیند نیز در چارچوب قواعد شبکه بررسی شود. اثبات مرکل نشان میدهد یک تراکنش در درخت آن بلاک قرار دارد؛ از آن نمیتوان بهتنهایی درباره نهاییشدن پرداخت یا وضعیت کنونی داراییها نتیجه گرفت.
کاربردها و تفاوت پیادهسازیها
یکی از کاربردهای درخت مرکل، بررسی حضور تراکنش بدون دریافت تمام تراکنشهای بلاک است. این ویژگی برای نرمافزارهایی مفید است که میخواهند مقدار داده کمتری دریافت کنند. کاربرد دیگر، بررسی سازگاری بخشی از داده با یک ریشه ثبتشده است: دریافتکننده میتواند داده و مسیر اثبات را محاسبه کند و ببیند به همان ریشه میرسد یا نه. در چنین بررسیهایی، ریشه خلاصهای قابلمقایسه از مجموعه داده است.
همه شبکهها از یک شکل درخت استفاده نمیکنند. بیتکوین برای تراکنشهای هر بلاک درخت مرکل دارد. اتریوم در لایه اجرای خود از ساختاری پیچیدهتر به نام درخت مرکل پاتریشیا برای دادههایی مانند وضعیت حسابها، تراکنشها و رسیدها استفاده میکند. ایده مشترک، پیوند دادن دادهها به یک ریشه قابلبررسی با کمک هش است؛ نوع داده، شکل مسیر و قواعد ساخت اثبات در هر پیادهسازی فرق دارد.
محدودیتهای درخت مرکل
درخت مرکل درباره درستبودن محتوای یک داده داوری نمیکند. اگر اطلاعات نادرست از ابتدا در برگها قرار گرفته باشد، درخت فقط میتواند سازگاری آن اطلاعات را با ریشه نشان دهد. همچنین یک اثبات معتبر برای یک ریشه مشخص، بدون بررسی اعتبار همان ریشه معنای محدودی دارد. قواعد ساخت درخت نیز باید روشن باشند تا بررسیکننده بداند برگها چگونه مرتب شدهاند و هش هر گره چگونه محاسبه میشود.
تغییر یک برگ، ریشه محاسبهشده را تغییر میدهد، اما این ویژگی بهتنهایی از تغییر دادهها جلوگیری نمیکند. آنچه دستکاری را آشکار میکند، مقایسه با ریشه معتبری است که پیشتر ثبت یا تأیید شده است. در کاربردهای بلاک چینی، بررسی کامل یک تراکنش ممکن است به اطلاعات و قواعد دیگری هم نیاز داشته باشد. پس هنگام دیدن عبارت «اثبات مرکل» باید مشخص شود چه دادهای، نسبت به کدام ریشه و با چه قواعدی بررسی شده است.

