JavadAgha
JavadAgha
خواندن ۳ دقیقه·۳ ماه پیش

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

درخت ‏مرکل (Merkle Tree) که به آن هش تری (hash tree) نیز گفته می‌شود، یک ساختار داده‌ای بنیادی در تکنولوژی بلاکچین است. این ساختار برای بررسی کارآمد و امن یکپارچگی و انسجام داده‌ها استفاده می‌شود. در زمینه بلاکچین،درختان مرکل نقش مهمی در اطمینان از عدم دستکاری داده‌های بلاک‌ها ایفا می‌کنند.

ساختار درخت مرکل

یک درخت دودویی (binary tree) است که در آن:

۱. گره‌های برگ (Leaf Nodes): گره‌های پایین‌ترین قسمت درخت که به آنها گره‌های برگ گفته می‌شود، شامل هش داده‌ها (مثل تراکنش‌ها در بلاکچین) هستند.‏

۲. گره‌های غیر برگ (Non-Leaf Nodes): بالای گره‌های برگ، هر گره والد، هش دو گره فرزند خود است. این فرآیند تا بالای درخت ادامه می‌یابد.

۳. گره ریشه (Merkle Root): بالاترین گره درخت که به آن مرکل روت گفته می‌شود، هش نهایی است که نماینده کل مجموعه داده است. این هش نهایی یک نمایش فشرده و منحصربه‌فرد از تمامی داده‌های درخت است.



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

هش کردن داده‌ ها:

1.هر قطعه داده (مثلاً یک تراکنش در یک بلاک) به صورت جداگانه هش می‌شود تا گره‌های برگ درخت مرکل ایجاد شوند. هشینگ یک تابع یک‌طرفه است که داده‌ها را به یک رشته کاراکتر با اندازه ثابت تبدیل می‌کند که برای داده اصلی منحصربه‌فرد است.

ساختن درخت:

  1. گره‌های برگ سپس به صورت جفت جفت با هم ترکیب می‌شوند و هر جفت با هم هش می‌شوند تا یک گره جدید ایجاد شود. این فرآیند به صورت تکراری ادامه می‌یابد، گره‌های به‌دست‌آمده دوباره با هم جفت می‌شوند و هش می‌شوند تا به بالای درخت برسید که در آن فقط یک گره باقی می‌ماند: مرکل روت.
  2. برای مثال، اگر چهار تراکنش داشته باشید، ابتدا هر تراکنش را هش می‌کنید تا چهار گره برگ ایجاد شود. سپس این گره‌های هش‌شده را با هم جفت کرده و دوباره هش می‌کنید تا دو گره جدید ساخته شود. در نهایت، این دو گره دوباره هش می‌شوند تا یک گره واحد، یعنی مرکل روت، ایجاد شود.

تایید:

  1. برای تأیید اینکه یک قطعه خاص از داده (مثل یک تراکنش) بخشی از درخت مرکل است، تنها کافی است هش آن داده و هش‌های گره‌های مسیر تا ریشه را بدانید. این بدان معنی است که نیازی به دانلود یا بررسی کل مجموعه داده نیست، که تأیید را بسیار کارآمد می‌سازد.
  2. برای مثال، برای اثبات اینکه یک تراکنش در یک بلاک گنجانده شده است، شما یک "Merkle proof" ارائه می‌دهید که شامل هش تراکنش و سری‌ای از هش‌ها است که برای بازسازی مرکل روت لازم است. اگر ریشه بازسازی‌شده با ریشه شناخته‌شده مطابقت داشته باشد، تراکنش تأیید می‌شود که بخشی از بلاک است.


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


تأیید کارآمد داده‌ها

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

اثبات یکپارچگی

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

قابلیت مقیاس‌پذیری

درختان مرکل به مقیاس‌پذیری بلاکچین کمک می‌کنند، به‌ویژه در مورد کلاینت‌های سبک (light clients). یک کلاینت سبک می‌تواند یک تراکنش را بدون نیاز به دانلود کل بلاکچین تأیید کند، با استفاده از Merkle proofها.

امنیت

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


مثال در بیت‌کوین

  1. هر بلاک شامل یک Merkle root در هدر خود است.
  2. تراکنش‌های موجود در بلاک هش شده و در قالب یک درخت مرکل سازمان‌دهی می‌شوند.
  3. زمانی که یک نود در شبکه می‌خواهد یک تراکنش را تأیید کند، از درخت مرکل برای انجام این کار به صورت کارآمد استفاده می‌کند، بدون اینکه نیازی به دانلود کل بلاک باشد.






درخت مرکلبلاک‌چینمهندسی نرم افزارmerkle proofرمزارز
کنجکاو در مباحث مهندسی نرم افزار
شاید از این پست‌ها خوشتان بیاید