ایران چارت بلاک چین درخت مرکل (Merkle) چیست؟

درخت مرکل (Merkle) چیست؟

تخمین زمان مطالعه

۱۰ دقیقه
چهارشنبه 29 اردیبهشت 1400
درخت مرکل (Merkle) چیست؟

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

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


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

«درخت مرکل» (Merkle Tree) در سال ۱۹۷۹ میلادی و توسط آقای «رالف مرکل» (Ralph Merkle) معرفی شد و هیچ ارتباطی هم به صدراعظم آلمان ندارد! آقای مرکل در این سال وقتی در دانشگاه استنفورد حضور داشت مقاله‌ای تحت عنوان «امضای دیجیتال مجاز» نوشت و بدین ترتیب بدون اینکه خودش بداند، بخش مهمی از فناوری بلاک چین را بنا نهاد. در این مقاله آقای مرکل روش کاملاً جدیدی را برای اثبات درستی داده‌ها ارائه نمود. به عبارت دیگر، او پروسه‌ای را طراحی کرد که بتوان به کمک آن درستی داده‌ها را با سرعت تأیید کرد.

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


توابع هش و درخت مرکل

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

همان‌طور که می‌دانید در بلاک چین هر تراکنش شناسه‌ی مخصوص خود را دارد. در بیشتر بلاک چین‌ها این شناسه‌ یک رشته کد ۶۴ کاراکتری است که ۲۵۶ بیت (یا همان ۳۲ بایت) از حافظه را اشغال می‌کند. حال وقتی به این موضوع فکر کنید که بلاک چین‌ها از صدها هزار بلاک تشکیل شده‌اند که هر بلاک خودش چندین هزار تراکنش را در خود جای می‌دهد، کاملاً برایتان مشخص می‌شود که موضوع حافظه و قدرت پردازشی دو مشکل عمده‌ی این فناوری هستند. بنابراین بهترین کار این است که تا می‌توانیم از داده‌های کمتری برای پردازش و تأیید تراکنش‌ها استفاده کنیم. نه تنها این کار باعث کاهش مصرف پردازنده‌ی مرکزی می‌شود، بلکه امنیت را هم به شکل قابل ملاحظه‌ای بالا می‌برد.

درخت مرکل

این دقیقا همان کاری است که درخت مرکل انجام می‌دهد. در بخش بعدی بیشتر در‌این‌باره توضیح خواهیم داد. فعلاً باید با یک مفهوم مهم دیگر هم آشنا شویم. این مفهوم مهم همان «توابع هش» (Hash Function) هستند. یک تابع هش تابعی است که هرچقدر داده به آن بدهید همواره یک خروجی با اندازه‌ی ثابت تولید خواهد کرد. برای مثال فرض کنید شما متن یک داستان ۱۰ صفحه‌ای را به تابع هش می‌دهید و این تابع یک خروجی با اندازه‌ی ثابت (مثلاً ۶۴ کاراکتری) تحویل شما می‌دهد. حال اگر یک کلمه از این داستان تغییر کند، خروجی که تابع هش بازمی‌گرداند به کلی با خروجی قبلی متفاوت خواهد بود. نکته‌ی مهم دیگر در مورد توابع هش این است که با داشتن خروجی به‌هیچ‌وجه نمی‌توان فهمید ورودی اولیه چه بوده است. به همین دلیل است که از این توابع به شکل گسترده‌ای در رمزنگاری استفاده می‌شود. حال با در نظر داشتن این مفاهیم می‌توانیم نحوه‌ی کار درخت مرکل را راحت‌تر درک کنیم. در بخش بعدی به این موضوع خواهیم پرداخت. برای درک بهتر توابع هش می‌توانید مقاله تابع هش و فرایند هشینگ را مطالعه فرمایید.


درخت مرکل چگونه کار می کند؟

درخت مرکل درواقع درختی است که ساختار داده را نمایش می‌دهد. در این روش هر «گره غیربرگ» یک هش را در خود ذخیره می‌کند که از روی داده‌های گره‌های زیرین خود تولید شده است. برای درک بهتر موضوع به شکل زیر توجه کنید:

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


 در شکل بالا گره‌های L1 تا L4 «گره‌های برگ» هستند که داده‌ها را در خود جای می‌دهند. گره Hash 0-0 تنها یک هش در خود دارد که با دادن محتوای گره L1 به عنوان ورودی به تابع هش ایجاد شده است. به همین ترتیب گره‌ Hash 0-1 نیز از روی محتوای گره L2 تولید شده است. همچنین گره Hash 0 از روی داده‌های گره‌های Hash 0-0 و Hash 0-1 که گفتیم تنها حاوی هش هستند، ایجاد شده است. در نهایت هم گره Top Hash را داریم که به آن «ریشه» گفته می‌شود.

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

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


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

تابع هشی که بیت کوین از آن استفاده می‌کند SHA-256 نام دارد. خروجی این الگوریتم همواره یک رشته کاراکتر ۲۵۶ بیتی است. کاربرد این روش در بیت کوین هم در این است که تراکنش‌های هر بلاک را به شکل فشرده در خود ذخیره کند.
همان‌طور می‌دانید بلاک‌های هر بلاک چین با داشتن هش بلاک قبلی خود به یکدیگر متصل هستند. در بیت کوین هر بلاک حاوی مجموعه‌ای از تراکنش‌ها و یک سرتیتر است که این سرتیتر خودش شامل موارد زیر می‌شود:

  • شماره بلاک
  • هش بلاک قبلی
  • زمان و تاریخ
  • سختی استخراج
  • نانس (Nounce)
  • و هش ریشه‌ی درخت مرکل

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


درخت مرکل در دیگر ارزهای دیجیتال

با اینکه بیت کوین اولین ارز دیجیتالی بود که از درخت مرکل استفاده کرد ولی دیگر بلاک چین‌ها که در سال‌های بعد از بیت کوین معرفی شدند هم از درخت مرکل کمک می‌گیرند. البته ناگفته نماند که پیاده‌سازی این روش ممکن است پیچیده‌تر و متفاوت‌تر از پیاده‌سازی آن در بیت کوین باشد.

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

مزایای استفاده از درخت مرکل

  • قابلیت تأیید درستی داده‌ها
  • سرعت بیشتر
  • کاهش مصرف حجم حافظه برای ذخیره اطلاعات
  • کاهش زمان لازم برای تأیید تراکنش‌ها

همان‌طور که اشاره کردیم مهم‌ترین مزیت استفاده از درخت مرکل قابلیت تأیید درستی داده‌ها با سرعت و کارایی بیشتر است. به این دلیل که دیگر نیاز نیست تمامی داده‌ها بررسی و تأیید شوند، اگر هش ریشه‌ی درخت درست باشد نشان‌دهنده‌ی درستی اطلاعات گره‌های آن درخت است.

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

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

درخت درهم سازی


سخن پایانی

به جرأت می‌توان گفت اگر آقای رالف مرکل در آن سال درخت مرکل را معرفی نمی‌کرد، اکنون شاهد فناوری بلاک چین و ارزهای دیجیتال نبودیم. البته این ادعا در صورتی درست از آب درمی‌آمد که روش جایگزینی برای آن کشف نمی‌شد. به‌هر‌حال بدون استفاده از این روش، مقدار حافظه‌ی مورد نیاز و قدرت پردازشی به‌قدری افزایش می‌یافت که هیچ‌کس توان مالی اجرای آن را نداشت. اگر به این موضوع فکر کنید مي‌فهمید که چقدر جالب است که فناوری‌ای که در سال ۱۹۷۹ میلادی اختراع شده، توانسته باعث ایجاد و پیشرفت فناوری‌های جدید در این سال‌ها شود.

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

تگ ها:

درباره نویسنده

حسین آذرکیش

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

نظر شما

نظرات کاربران