درخت مرکل یکی از مفاهیم اساسی در فناوری زنجیرهبلوک است که ذخیرهسازی ایمن و کارآمد ساختارهای دادهای را فراهم میکند.
پیادهسازی درخت مرکل در شبکههای زنجیرهبلوکی مزایای بشماری دارد که ازجمله آنها میتوان به افزایش مقیاسپذیری، حفظ یکپارچگی دادهها از طریق معماری مبتنی بر رشتههای درهم (Hash) و ارائه روشی ساده برای تأیید صحت دادهها اشاره کرد.
در این ترجمه از آیآر بلاکچین با نگاهی به فرایند درهمسازی، درباره درخت مرکل، چیستی و چگونگی عملکرد آن برای شما خواهیم نوشت.
به بیان ساده یک تابع درهمساز (Hash Function) نوعی از تابع است که میتواند یک واحد داده با حجم تصادفی را به یک حجم داده با مقدار ثابت تبدیل کند. در حال حاضر الگوریتمهای متفاوتی برای درهمسازی وجود دارد و شما میتوانید بر اساس نیاز هرکدام از آنها را انتخاب کنید.
پس از اجرای الگوریتم، خروجی حاصل نهفقط اندازه ثابت دارد بلکه برای هر ورودی، منحصربهفرد هم هست.
مثلاً در تصویر زیر رشته درهمی که برای واژه FOX تولیدشده با رشته درهمی که برای جمله The red fox runs across the ice تولیدشده کاملاً متفاوت هستند. این ویژگی باعث میشود تا هرکدام از رشتههای درهم بتوانند بهعنوان یک سند معتبر ایفای نقش کنند و در یک دید کلیتر شاکله تغییرناپذیری زنجیرهبلوکها را شکل دهند.
یکی دیگر از مزایای الگوریتمهای درهمساز برای سیستمهای زنجیرهبلوکی فشردهسازی مقادیر عظیم دادهای است. بهعلاوه شناسایی این مقادیر صرفاً با داشتن رشته درهم آنها امکانپذیر است که باعث سهولت کار کردن با شبکههای زنجیرهبلوکی میشود.
در بلاکچین بیتکوین هر بلوک یک سرعنوان (heading) دارد که در آن رشته درهم مربوط به بلوک قبلی همراه با دادههای دیگری ثبتشده است. با این شیوه تمام بلوکها در یک ترتیب منطقی به همدیگر متصل میشوند و رشته درهم بلوک در واقع وضعیت کل بلوکهای موجود در شبکه تا یکلحظه خاص را به نمایش میگذارد. در نتیجه امکان دستکاری دادهها در بلاکچین بیتکوین و البته آلتکوینها تقریباً غیرممکن میشود.
اما داستان از جایی دردناک میشود که ذخیره این حجم از رشتههای درهمساز باعث کاهش کارایی و مقیاسپذیری شبکههای زنجیرهبلوکی میشود. برای درمان این درد متخصصان از تکنیکی با نام درخت مرکل استفاده میکنند که میتواند سایه خودش را بر سر زنجیرهبلوک بگستراند.
ایده اصلی رالف مرکل که در سال ۱۹۷۹ برای آن پروانه ثبت اختراع گرفت درواقع ساختارهای دادهای درختی هستند که در آن هر گره بدون برگ، یکرشته درهمساز از گرههای فرزند خودش هستند و گرههای با برگ (برگها)، پایینترین گروه گرهها در درخت را تشکیل میدهند.
شاید درک این جملهها اندکی پیچیده باشد اما تصویر زیر تا حد زیادی این پیچیدگی را کاهش میدهد.
در این تصویر گرههای بدون برگ یا شاخهها (رشته درهم ۰-۰ و رشته درهم ۱-۰) در سمت چپ تصویر، از رشتههای درهم فرزندانشان که L۱ و L۲ هستند تشکیلشدهاند و در سطح بالاتر رشته درهم ۰ خودش درهم شده رشتههای درهم ۰-۰ و ۱-۰ است.
تصویری که از آن استفادهشده یک مدل ساده و رایج از درخت مرکل است که به نام درخت مرکل دودویی شناخته میشود. در این تصویر یکرشته درهم در بالای همه رشتهها قرارگرفته که درواقع هش تمام درخت است و به آن رشته درهم ریشه هم میگویند. درواقع این تصویر نشان میدهد که درخت مرکل یک ساختار دادهای است که میتواند هر تعداد از رشتههای درهم را بهعنوان ورودی دریافت کند و یکرشته درهم واحد تولید کند.
ساختار درخت امکان مکانیابی مقادیر وسیعی از دادهها را فراهم میکند و شناسایی آسان تغییرات دردادهها را امکانپذیر میسازد. این مفهوم شواهدی تحت عنوان اثبات مرکل را به وجود میآورد که با استفاده از آن میتوان بدون نیاز به بررسی تمام رشتههای درهم تأیید کرد که فرایند درهمسازی دادهها در سراسر ساختار درخت پایدار بوده و در جایگاه درست قرار دارد.
البته نقش رشته درهم ریشه در این فرایند حیاتیتر است چون با داشتن آن میتوان تمام شبکه زنجیرهبلوک را بهسرعت بررسی کرد.
درنهایت یکی از مزایای اصلی درخت مرکل برای سیستمهای توزیعشده تجزیه دادههای کلان به بخشهای کوچکتر قابل مدیریت است که در این صورت موانع تأیید صحت دادهها به طرز چشمگیری کاهش پیدا میکنند.
تابع درهمسازی رمزگذاری شده در بیتکوین SHA-۲۵۶ نام دارد. خروجی این تابع یک مقدار ۲۵۶ بیتی ثابت است و عملکرد اصلی درخت مرکل در شبکه بلاکچین بیتکوین ذخیرهسازی و درنهایت حذف رشتههای درهم زائد در هر بلوک است.
تصویر زیر که از مقاله سفید بیتکوین گرفتهشده بهخوبی نحوه عملکرد درخت مرکل در بلاکچین این رمزارز را نشان میدهد.
تراکنشها توسط ماینرها در بلوکها ذخیره میشوند و به عنوان بخشی از درخت مرکل درهمسازی میشوند که درنهایت یک ریشه مرکل درست میشود که در سر عنوان (header) بلوک ذخیره میگردد.
مهمترین امتیاز درخت مرکل در بیتکوین امکان شکلگیری گرههای تأییدکننده پرداخت ساده (SPV = Simple Payment Verification) است که بیشتر آنها را با نام کلاینتهای سبک (Lightweight clients) میشناسیم. عملکرد این گرهها وابسته به دانلود تمام شبکه بلاکچین بیتکوین نیست و فقط با داشتن سر عنوان بلوکهای طولانیترین زنجیره هم کار میکند.
یک گره SPV میتواند با استفاده از اثبات مرکل یک تراکنش را به یک درخت مرکل خاص با داشتن رشته درهم ریشه آن درخت در یک بلوک ارتباط دهد.
مفهوم درخت مرکل نهفقط در زنجیرهبلوک بیتکوین بلکه در سایر رمزارزها مثل اتریوم هم پیادهسازی شده است.
هرکدام از پروژههای رمزارزی بنا بر قابلیتها و ویژگیهایی که دارند از طرحهای مختلفی برای درختان مرکل استفاده میکنند که سادهتر یا پیچیدهتر هستند.
بهعلاوه درختان مرکل یکی از اجزای جداییناپذیر سیستمهای کنترل توزیعشده مثل Git و IPFS هستند. در واقع توانایی آنها در تضمین و تأیید یکپارچگی دادههای مشترک بین رایانهها در یک قالب بدون واسطه در این سیستمها است.
به هر حال آشنایی با مفهوم درخت مرکل و نقش آن در الگوریتمهای درهمسازی و تأثیر آن بر روی مقیاسپذیری و امنیت شبکههای بلاکچین یکی از مسائل مهمی است که همه افرادی که قصد دارند استارتآپهایی در این حوزه تأسیس کنند یا کوینهای اختصاصی را تولید کنند باید از آن اطلاع داشته باشند.