درخت مرکل یک ساختار داده ای است که با هدف تسهیل راستی آزمایی مقادیر زیادی از داده های سازماندهی شده با ارتباط آنها با استفاده از تکنیک های مختلف رمزنگاری و مدیریت اطلاعات ایجاد شده است.
دیمن وارد هر بلوک شبکه بیت کوین می شوم و ساختاری به نام “درخت مرکل” پیدا می کنیم .
درخت مرکل یک ساختار داده ای است که به چندین لایه تقسیم می شود که هدف آن ارتباط هر گره با یک ریشه واحد مرتبط با آنها است. برای دستیابی به این هدف، هر گره باید با یک شناسه منحصر به فرد ( هش ) شناسایی شود. این گره های اولیه که گره های فرزند (برگ) نامیده می شوند، سپس با یک گره غیر برتر به نام گره والد (شاخه) مرتبط می شوند. گره والد یک شناسه منحصر به فرد خواهد داشت که از هش گره های فرزند خود حاصل می شود. این ساختار تا گره ریشه یا ریشه مرکل که اثر آن با تمام گره های درخت مرتبط است تکرار می شود.
به لطف این ساختار منحصربهفرد، درختان مرکل اجازه میدهند که حجم زیادی از دادهها در یک نقطه به هم مرتبط شوند (ریشه مرکل). به این ترتیب، تأیید و اعتبارسنجی این دادهها میتواند بسیار کارآمد باشد و به جای کل ساختار، فقط باید ریشه Merkle را تأیید کرد.
این طرح توسط رالف مرکل در سال ۱۹۷۹ به منظور ساده سازی فرآیند تأیید برای مقادیر زیاد داده ایجاد شد.
درخت مرکل چگونه کار می کند؟
درخت مرکل ساختاری است که تمام تراکنش ها را به هم مرتبط می کند و آنها را بین جفت گروه بندی می کند تا یک هش ریشه یا ” آدرس ریشه” به دست آید . این هش ریشه به همه هش های درخت مربوط می شود. بررسی کنید همه تراکنش های یک شبکه بسیار کند است و ناکارآمد است.به همین دلیل این سیستم پیاده سازی شد.از آنجایی که اگر یک هش تغییر کند بقیه تا رسیدن به ریشه تغییر می کنند (هش ریشه) این امر صحت اطلاعات را برای کل درخت بی اعتبار می کند.دقیقا همین است. عملکردی که به درختان مرکلز اجازه می دهد تا سطح بالایی از ایمنی را که مشخصه آنهاست را فراهم کنند.
برای درک عمیقتر نحوه عملکرد درخت مرکل، مثال زیر را بررسی کنید:
بلوک داده ای را تصور کنید که دارای یک چاپ یا هش منحصر به فرد و تکرار نشدنی است. هر یک از این بلوکها در لایههایی سازماندهی شدهاند که بهعنوان ساختاری هرمی میبینیم. این بلوک ها با استفاده از این هش ها به یک لایه بالاتر متصل می شوند. به این ترتیب، بلوک های بالایی همیشه به بلوک های پایین اشاره می کنند، اما مهمتر از آن، هش این بلوک های بالایی حاصل مجموع اطلاعات موجود در بلوک جدید با هش بلوک قبلی است. به این ترتیب، همانطور که به مقیاس کردن ادامه می دهید، همان ساختار تکرار می شود زیرا همه بلوک ها به یک بلوک بزرگ داده متصل می شوند.
این واقعیت که به این شکل کار می کند، باعث تغییر هش یک بلوک و بی اعتبار شدن هش بقیه بلاک ها می شود. به این ترتیب سیستم دو چیز را تسهیل می کند. اول، تأیید بلوک های داده را آسان تر می کند. دوم، به عنوان مکانیزمی برای جلوگیری از دستکاری عمل می کند. این به لطف این واقعیت است که این مکانیسم امکان تشخیص تغییرات هش در هر بلوک داده را می دهد. اگر تغییری تشخیص داده شود، کل درخت باطل می شود زیرا تغییر کرده است و داده های آن معتبر نیستند.


ویژگی های درختان مرکل
برخی از برجسته ترین ویژگی های درختان مرکل عبارتند از:
- آنها ابزار کارآمدی برای تولید یک ساختار داده توزیع شده هستند.
- آنها امنیت و مقاومت بالایی در برابر تغییرات داده ها ارائه می دهند.
- آنها سطح بالایی از عملکرد انتقال داده را در شبکه های توزیع شده امکان پذیر می کنند. با تشکر از این، آنها مقدار داده های لازم برای عملکرد صحیح آن را کاهش می دهند.
- آنها از نظر محاسباتی ارزان و در ایجاد، پردازش و تأیید اطلاعات کارآمد هستند.
- آنها به “تشریح” اجازه می دهند تا بررسی های تأیید را سریعتر انجام دهد. همه اینها بدون به خطر انداختن امنیت و قابلیت ردیابی معاملات انجام شده.
- به لطف ویژگی “تشریح”، آنها همچنین می توانند منابع ذخیره سازی را ذخیره کنند.
- آنها سازگاری زیادی با مشکلات مختلف رایانه ارائه می دهند. به همین دلیل، درختان مرکل به طور گسترده ای در سیستم های مختلف مورد استفاده قرار گرفته اند. به عنوان مثال، نرم افزار پایگاه داده، سیستم های فایل، ساختارهای کلید عمومی، سیستم های نسخه سازی، شبکه های توزیع شده (P2P) و غیره.
آیا درختان مرکل به تنهایی یک راه حل عالی برای تأیید داده ها هستند؟
نادرست!
در حالی که درختان مرکل ابزار قدرتمندی برای تأیید داده ها هستند، به خودی خود امنیت داده ها را تضمین نمی کند. به همین دلیل است که توسعهدهندگان فناوری بلاک چین و ارزهای دیجیتال از روشهای تأیید دیگری استفاده میکنند که اجازه میدهد یک اجماع کامل ایجاد کنند که دادهها واقعاً ایمن هستند و تغییری نکردهاند.
امروزه استفاده می کند
امروزه درختان مرکل کاربردهای زیادی در سیستم های کامپیوتری دارند و ما در اینجا در مورد برخی از آنها صحبت خواهیم کرد.
فناوری بلاک چین
استفاده از درختان مرکل در فناوری بلاک چین حیاتی است. به لطف استفاده از آن، نرم افزار مشتری می تواند کل تاریخچه بلاک چین را دانلود کرده و آن را به صورت داغ تایید کند. در واقع، استفاده از آن با اجازه دادن به “ Prune ” (فقط بخشی از تاریخچه را بگیرید) تاریخچه را تسهیل می کند و حجم دانلود را کاهش می دهد.
به عنوان مثال، کاربری که می خواهد کلاینت بیت کوین را نصب کند، مجبور نیست تمام تاریخچه بلاک چین را دانلود کند. در عوض، میتوانید دانلود خود را به چند صد یا هزاران بلوک کاهش دهید. به این ترتیب، به نسخه سبکتری از تاریخچه که بهتر نیازهای شما را برآورده می کند، دسترسی خواهید داشت.
برخلاف آنچه شما فکر می کنید، این امر از امنیت مشتری کم نمی کند. خوب، به لطف درخت Merkle، می توان یک “root hash” خاص را دانلود کرد و از آنجا شروع به ایجاد یک تاریخ کرد. از آنجایی که «هش ریشه» مربوط به بلوک های قبل از آن است، تنها کاری که باید انجام دهید این است که آن را تأیید کنید. برای انجام این کار، می توانید به یک سری از گره های بیت کوین کامل (با تمام سابقه) بروید و بررسی کنید که “ریشه هش” گرفته شده مطابقت دارد. با اجماع مطلق در این مورد، “ریشه هش” معتبر است. و از آن نقطه به بعد، کاربر می تواند کاملاً از گره مشتری جدید بیت کوین خود استفاده کند.
سیستم های فایل
ابزار دیگری که می توانیم از درختان مرکل ببینیم در سیستم های فایل منعکس شده است. سیستم فایل یک ساختار داده ای است که یک سیستم عامل از آن برای پیگیری پرونده هایی که ذخیره می کند استفاده می کند. به طور معمول این ساختار روی هارد دیسک و حتی در داخل کارت های حافظه ای که گوشی های هوشمند ما استفاده می کنند اعمال می شود.
برخی از این خلاقیت های عجیب و غریب از درختان مرکل به منظور مدیریت و تضمین استفاده صحیح از داده های ذخیره شده استفاده می کنند. موارد خاص ذکر شده در این گروه فایل سیستم های ZFS و Btrfs هستند.
ZFS که با نام Zettabyte File System شناخته می شود ، در دنیای کامپیوتر به عنوان بهترین سیستم فایلینگ در نظر گرفته می شود. توانایی های او بسیار بیشتر از شناخته شده ترین حریفانش به عنوان NTFS ، FAT :، exFAT یا ext3 / ۴ است. دارای مقاومت در برابر خرابی، بازیابی و تصحیح خطاها، حذف مجدد داده ها، تکرار، کپی در نوشتن (CoW) و مقیاس پذیری بالا است. همه اینها آن را به گزینه ای عالی برای استقرار در محیط های بحرانی تبدیل می کند. طراحی شده توسط Sun Microsystems و معرفی آن در سال ۲۰۰۴، در حال حاضر پیشرو در سیستم فایل کامپیوتری است.
اما برای دستیابی به این ZFS یک ابزار مخفی در وسط تمام کدهای خود دارد: استفاده گسترده و فشرده از درختان مرکل . همه اینها به منظور داشتن سیستمی که امکان تأیید سریع داده های ذخیره شده در ساختارهای خود را فراهم می کند. بازیابی خطا، حذف مجدد، CoW (Copy-On-Write) و خواص تکرار به شدت به این تکنیک بستگی دارد، در غیر این صورت هزینه محاسباتی بالایی را به دنبال خواهد داشت که مزایای آن را تضعیف می کند.


سیستم های کنترل نسخه
یکی دیگر از کاربردهای درختان مرکل را میتوان در سیستمهای نسخهسازی نرمافزار مشاهده کرد، موارد معروف Go و Mercurial . از هر دو، معروفترین آنها در Git، همانهایی که عملکرد پلتفرمهایی مانند Gitlab و Github یا توسعه هسته لینوکس را ممکن میسازد، دومی اولین پروژهای بود که از آن در تولید استفاده کرد، زیرا خالق Git لینوس توروالدز
استفاده از درختان مرکل در این نوع نرم افزارها مربوط به سیستم ردیابی تغییرات در مخزن یا فضای کاری است که فایل ها در آن ذخیره می شوند. به این ترتیب، هر تغییر ایجاد شده (بلوک های جدید داده ها) از طریق یک فرآیند هش کردن می گذرد که هنگام عبور از تمام محتوای مخزن، یک هش منحصر به فرد از فضای کاری مذکور ایجاد می کند که به آن commit می گویند.
این سیستم علامت گذاری به ما این امکان را می دهد که مثلاً به یک commit خاص برویم تا ببینیم وضعیت کد پروژه در یک زمان مشخص چگونه بوده است، در حالی که وضعیت کلی پروژه دست نخورده باقی می ماند. با دیدن آن به روشی ساده تر، درختان Merkle در Git به ما این امکان را می دهند که نوعی ماشین زمان ایجاد کنیم، که به ما اجازه می دهد تا در میان تعهدات مختلف پروژه حرکت کنیم و فایل ها و تغییرات آنها را همانطور که در آن لحظه خاص بودند حفظ کنیم.
ابزاری که هنگام طراحی نرم افزار در محیط های کاری پرترافیک و پراکنده بسیار مفید است، همانطور که لینوس توروالدز در پروژه بزرگ هسته لینوکس خود نشان داده است.




