در این مقاله قرار نیست با فرمولهای پیچیده ریاضی سردرگم شوید. ما مکانیزم درخت مرکل را بررسی میکنیم تا دقیقاً متوجه شوید این ساختار چگونه کار میکند، چرا بدون آن بیت کوینی وجود نداشت و چگونه امنیت داراییهای دیجیتال را تضمین میکند.
درخت مرکل یا Merkle Tree چیست؟
برای درک عمیق تکنولوژی بلاک چین و چگونگی کارکرد ارزهای دیجیتالی مثل بیت کوین، ابتدا باید با زیرساختهای آن آشنا شویم. یکی از مهمترین این زیرساختها، مفهومی به نام درخت مرکل است که شاید نام آن کمی پیچیده به نظر برسد، اما در واقعیت، منطقی بسیار ساده و کارآمد دارد.
تعریف ساده درخت مرکل به زبان غیر فنی
اگر بخواهیم درخت مرکل را به سادهترین شکل ممکن تعریف کنیم، باید بگوییم: درخت مرکل روشی هوشمندانه برای خلاصهسازی حجم زیادی از دادهها در یک رشته کد کوتاه و منحصربهفرد است.
تصور کنید یک کتابخانه بزرگ با هزاران کتاب دارید. اگر بخواهید مطمئن شوید که حتی یک کلمه در هیچکدام از این کتابها تغییر نکرده است، آیا باید تمام کتابها را کلمه به کلمه بخوانید؟ قطعا نه؛ این کار زمان و انرژی بسیار زیادی میطلبد.
درخت مرکل دقیقاً برای حل همین مشکل در دنیای کامپیوتر و شبکهی بلاک چین طراحی شده است. این ساختار به کامپیوترها اجازه میدهد بدون اینکه نیاز باشد کل اطلاعات یک فایل یا مجموعه تراکنشها را دانلود و بررسی کنند، تنها با داشتن یک کد کوچک، از صحت و سلامت دادهها اطمینان حاصل کنند.
به زبان فنیتر، درخت مرکل یک ساختار داده (روشی برای ذخیره و سازماندهی اطلاعات در کامپیوتر) است که با استفاده از توابع ریاضی، اطلاعات را لایهبهلایه فشرده و رمزگذاری میکند تا به یک کد واحد در بالای ساختار برسد.
نگاهی کوتاه به تاریخچه؛ رالف مرکل و اختراع این ساختار
برخلاف تصور بسیاری از افراد، درخت مرکل همزمان با بیت کوین اختراع نشد. این مفهوم سالها قبل از ظهور ارزهای دیجیتال وجود داشته است.
در سال 1979، دانشمند برجستهی علوم کامپیوتر به نام رالف مرکل (Ralph Merkle) این ساختار را ابداع کرد. او که یکی از پیشگامان رمزنگاری کلید عمومی بود، به دنبال راهی میگشت تا امضاهای دیجیتال و تایید دادهها را سریعتر و کارآمدتر کند.
نوآوری رالف مرکل به قدری بنیادین و مهم بود که بعدها ساتوشی ناکاموتو (خالق بیت کوین) در طراحی ساختار بیت کوین از آن استفاده کرد. در واقع، اگر اختراع رالف مرکل در دههی 70 میلادی نبود، شاید امروز بلاک چین به شکلی که ما میشناسیم وجود نداشت، زیرا شبکههای بلاک چین بدون این ساختار بسیار کند و سنگین میشدند.
چرا نام آن را درخت گذاشتهاند؟ (تشبیه بصری)
شاید برایتان سوال شده باشد که چرا به یک ساختار ریاضی و کامپیوتری، درخت میگویند؟ دلیل این نامگذاری، شباهت بصری و ساختاری این سیستم به یک درخت است، با این تفاوت که در علوم کامپیوتر، این درخت معمولاً به صورت وارونه ترسیم میشود.
در این درخت وارونه، اجزا به شکل زیر چیده شدهاند:
- ریشهی درخت (Root): برخلاف درختهای طبیعت، ریشهی درخت مرکل در بالاترین قسمت قرار دارد. این ریشه، همان کد نهایی و خلاصهشدهای است که نمایندهی تمام اطلاعات پاییندست است.
- شاخهها (Branches): در میانهی مسیر، شاخهها قرار دارند که وظیفهی اتصال برگها به ریشه را بر عهده دارند.
- برگها (Leaves): در پایینترین سطح این درخت، برگها قرار دارند. در دنیای رمز ارزها، این برگها در واقع همان تراکنشهای کاربران (مانند انتقال بیت کوین از علی به رضا) هستند که هش (کدگذاری) شدهاند.
بنابراین، وقتی از بالا به پایین نگاه میکنید، یک ریشه واحد میبینید که به چند شاخه تقسیم میشود و هر شاخه در نهایت به چندین برگ (تراکنش) میرسد. این ساختار شاخهبندی شده باعث میشود پیگیری هرگونه تغییر در برگها (تراکنشها) به سرعت در ریشهی درخت نمایان شود.
پیشنیازهای درک درخت مرکل؛ مفاهیم کلیدی
قبل از اینکه وارد جزئیات ساختار درخت مرکل شویم، لازم است چند آجر اصلی این ساختمان را بشناسیم. درخت مرکل یک مفهوم مجرد نیست، بلکه ترکیبی هوشمندانه از چند تکنولوژی پایهی علوم کامپیوتر است. اگر این سه مفهوم زیر را به خوبی درک کنید، فهمیدن کل ماجرای بلاک چین برایتان بسیار ساده خواهد شد.
تابع هش (Hash Function) و نقش آن در ساختار داده
تابع هش، قلب تپندهی امنیت در دنیای ارزهای دیجیتال است. بیایید این کلمهی فنی را کنار بگذاریم و آن را مثل یک دستگاه جادویی تصور کنیم.
شما میتوانید هر مقدار دادهای را به این دستگاه بدهید؛ فرقی نمیکند این داده یک کلمه باشد، یک کتاب هزار صفحهای، یا کل اطلاعات اینترنت. این دستگاه (تابع هش) دادههای شما را میگیرد، روی آنها عملیات ریاضی انجام میدهد و در نهایت یک رشته کد با طول ثابت به شما تحویل میدهد.
ویژگیهای حیاتی تابع هش عبارتند از:
- اثر انگشت دیجیتال: خروجی تابع هش، منحصربهفرد است. همانطور که اثر انگشت هیچ دو انسانی شبیه هم نیست، هش دو فایل متفاوت هم هرگز یکسان نخواهد بود.
- حساسیت بالا: اگر در یک کتاب هزار صفحهای، فقط یک ویرگول را تغییر دهید و دوباره از آن هش بگیرید، کد خروجی به کلی تغییر میکند. این ویژگی باعث میشود هرگونه دستکاری در دادهها فوراً لو برود.
- یکطرفه بودن: شما از روی اثر انگشت یک فرد نمیتوانید چهرهی او را بازسازی کنید. در تابع هش هم همینطور است؛ شما نمیتوانید با داشتن کد هش، به اصل دادهها برسید.
در درخت مرکل، ما از همین توابع هش استفاده میکنیم تا تراکنشها را به کدهای کوتاه و قابل مدیریت تبدیل کنیم.
تفاوت رمزنگاری و هشینگ در بلاک چین
بسیاری از افراد تازهکار، رمزنگاری (Encryption) و هشینگ (Hashing) را با هم اشتباه میگیرند، اما این دو تفاوت بنیادینی با هم دارند:
- رمزنگاری (Encryption): مثل گذاشتن یک نامه در صندوق امانات است. هدف این است که کسی نامه را نخواند، اما شما کلیدی دارید که میتوانید در صندوق را باز کنید و دوباره به اصل نامه برسید. رمزنگاری دوطرفه است (قفل کردن و باز کردن).
- هشینگ (Hashing): مثل پودر کردن یک سنگ است. شما سنگ را به پودر تبدیل میکنید تا ساختار آن را ثبت کنید، اما هرگز نمیتوانید پودر را دوباره به سنگ تبدیل کنید. هشینگ یکطرفه است و هدف آن مخفی کردن اطلاعات نیست، بلکه تایید صحت اطلاعات است.
در درخت مرکل، ما از هشینگ استفاده میکنیم، نه رمزنگاری. چون هدف این نیست که تراکنشها را پنهان کنیم؛ بلکه میخواهیم مطمئن شویم که تراکنشها دستکاری نشدهاند.
امضای دیجیتال و ارتباط آن با صحتسنجی دادهها
حالا که با هش آشنا شدیم، سوال اینجاست که چه کسی این دادهها را تایید میکند؟ اینجا پای امضای دیجیتال (Digital Signature) به میان میآید.
در دنیای فیزیکی، شما زیر چک را امضا میکنید تا ثابت کنید که صاحب حساب هستید. در دنیای دیجیتال، امضای دیجیتال یک کد ریاضی است که ثابت میکند:
- پیام یا تراکنش واقعاً توسط فرستنده (مثلاً صاحب کیف پول) ارسال شده است.
- پیام در طول مسیر تغییر نکرده است.
ارتباط امضای دیجیتال با درخت مرکل در این است که هر تراکنشی که قرار است وارد برگهای درخت مرکل شود، ابتدا باید دارای یک امضای دیجیتال معتبر باشد. نودهای شبکه (کامپیوترهای متصل به بلاک چین) ابتدا با استفاده از امضای دیجیتال مطمئن میشوند که تراکنش معتبر است، سپس از آن تراکنش یک هش میسازند و آن را در ساختار درخت مرکل قرار میدهند.
به زبان ساده: امضای دیجیتال هویت و اعتبار اولیه را تایید میکند و درخت مرکل، این دادههای تایید شده را در یک ساختار واحد و ایمن بستهبندی میکند.
معماری و نحوه عملکرد Merkle Tree چگونه است؟
حالا که با مفاهیم پایه آشنا شدیم، بیایید ببینیم این ساختار دقیقاً چطور ساخته میشود. تصور کنید میخواهیم یک ساختمان محکم بسازیم؛ در معماری درخت مرکل، ما از پایین شروع میکنیم و آجر به آجر بالا میرویم تا به سقف برسیم. این فرایند کاملاً ریاضی و دقیق است و هیچ جای خطایی باقی نمیگذارد.
اجزای اصلی: برگها، شاخهها و ریشه
درخت مرکل از سه بخش اصلی تشکیل شده است که هر کدام وظیفهی مشخصی دارند. اگر به نمودارهای فنی نگاه کنید، این سه بخش را به وضوح میبینید:
- برگها (Leaves): پایینترین بخش درخت هستند. هر "برگ" در واقع هش یک تراکنش است. یعنی اگر در یک بلاک 500 تراکنش داشته باشیم، 500 برگ در پایین درخت خواهیم داشت.
- شاخهها (Branches): یا همان گرههای میانی، وظیفه دارند برگها را به هم متصل کنند. هر شاخه حاصل ترکیب و هش کردن دو برگ (یا دو شاخهی پایینتر) است.
- ریشه (Root): بالاترین نقطهی درخت است. ریشه، نتیجهی نهایی تمام ترکیبهاست و تنها یک عدد واحد است که نمایندهی کل درخت محسوب میشود.
فرایند ساخت درخت: از پایین به بالا (Bottom-Up)
ساختن درخت مرکل بسیار شبیه به یک تورنمنت حذفی ورزشی است (مثل جام جهانی)، اما برعکس! یعنی از تعداد زیاد شروع میکنیم تا به یک قهرمان (ریشه) برسیم. مراحل کار به صورت گامبهگام به این شکل است:
- هش کردن تراکنشها: ابتدا تمام تراکنشهای موجود در یک بلاک را جمع میکنیم و با استفاده از تابع هش، آنها را به یک کد منحصربهفرد تبدیل میکنیم. اینها همان برگهای ما هستند.
- جفتسازی (Pairing): برگها را دو به دو کنار هم میگذاریم (مثلاً برگ A با برگ B). اگر تعداد برگها فرد باشد، آخرین برگ معمولاً با خودش جفت میشود.
- هش کردن جفتها: حالا این جفتها را با هم ترکیب کرده و دوباره هش میکنیم تا یک "شاخه" جدید ساخته شود.
- تکرار تا رسیدن به قله: این فرایند "جفتسازی و هش کردن" را آنقدر ادامه میدهیم تا لایهها کمتر و کمتر شوند و در نهایت، تنها یک کد در بالای نمودار باقی بماند.
ریشه مرکل (Merkle Root)؛ اثر انگشت نهایی بلاک
آن کد تنهایی که در نوک قله باقی میماند، ریشه مرکل نام دارد. این مهمترین بخش ماجراست. در شبکهی بیت کوین یا اتریوم، این "ریشه مرکل" است که در سربرگ (Header) بلاک ذخیره میشود، نه کل تراکنشها.
چرا این موضوع مهم است؟ چون ریشه مرکل مانند مهر و موم نهایی یک نامه است. اگر حتی یک ویرگول در یکی از هزاران تراکنش پایین درخت تغییر کند، این تغییر پلهبهپله بالا میآید و باعث میشود ریشه مرکل کاملاً تغییر کند. بنابراین، نودهای شبکه فقط با نگاه کردن به همین یک کد، میفهمند که آیا کل بلاک معتبر است یا خیر.
سناریوی عملی: چه اتفاقی میافتد اگر یک تراکنش تغییر کند؟
بیایید یک سناریوی خرابکارانه را بررسی کنیم تا قدرت امنیتی درخت مرکل را بهتر درک کنید. فرض کنید یک هکر میخواهد تراکنشی را در گذشته تغییر دهد تا وانمود کند پولی که خرج کرده، هنوز در حسابش موجود است.
- تغییر داده: هکر سراغ یکی از برگهای پایین درخت میرود و مبلغ تراکنش را عوض میکند.
- تغییر هش برگ: به محض تغییر داده، هش آن برگ تغییر میکند (چون تابع هش حساس است).
- اثر دومینویی: چون هش برگ عوض شده، وقتی با برگ کناریاش ترکیب میشود، شاخهی بالای سرش هم تغییر میکند.
- تغییر ریشه: این تغییر مثل یک موج انفجار تا نوک درخت بالا میرود و در نهایت، ریشه مرکل کاملاً عوض میشود.
- شناسایی و طرد: سایر کامپیوترهای شبکه بلافاصله متوجه میشوند که ریشه مرکل این بلاک با نسخهی اصلی که در اختیار دارند همخوانی ندارد. در نتیجه، کل آن بلاک را به عنوان یک بلاک دستکاریشده و نامعتبر رد میکنند.
جدول مقایسه ساختار داده خطی با ساختار درختی مرکل
شاید بپرسید چرا اطلاعات را پشت سر هم و به صورت خطی (مثل یک لیست خرید) ذخیره نمیکنیم؟ جدول زیر تفاوت کارایی این دو روش را نشان میدهد:
|
ویژگی
|
ساختار خطی (لیست ساده)
|
ساختار درخت مرکل
|
|
روش بررسی صحت داده
|
باید کل لیست دانلود و تکتک آیتمها بررسی شوند.
|
فقط کافی است شاخهی مربوطه و ریشه بررسی شود.
|
|
سرعت در حجم بالا
|
بسیار کند (چون با افزایش داده، زمان بررسی هم زیاد میشود).
|
بسیار سریع (زمان بررسی با افزایش داده تغییر زیادی نمیکند).
|
|
فضای مورد نیاز
|
برای تایید یک تراکنش، به کل دادههای بلاک نیاز است.
|
برای تایید، فقط به بخش کوچکی از دادهها (Proof) نیاز است.
|
|
کاربرد اصلی
|
مناسب برای دادههای کم و ساده.
|
مناسب برای سیستمهای توزیعشده و حجیم مثل بلاک چین.
|
کاربرد و اهمیت حیاتی درخت مرکل در بلاک چین
شاید تا اینجا فکر کرده باشید که درخت مرکل فقط یک مفهوم ریاضی زیباست؛ اما در واقعیت، این ساختار ستون فقراتی است که باعث میشود بلاک چینها کاربردی، سریع و قابل استفاده باشند. بدون درخت مرکل، ارزهای دیجیتالی مثل بیت کوین احتمالاً آن قدر کند و حجیم میشدند که هیچکس نمیتوانست روی کامپیوتر شخصی یا موبایل خود از آنها استفاده کند. در ادامه، چهار دلیل اصلی که چرا این ساختار برای بلاک چین حیاتی است را بررسی میکنیم.
تضمین یکپارچگی و امنیت دادهها (Data Integrity)
اولین و مهمترین وظیفهی درخت مرکل، نگهبانی از اطلاعات است. در دنیای بلاک چین، "یکپارچگی" به این معناست که دادهها دقیقاً همان چیزی باشند که ثبت شدهاند و هیچکس نتوانسته باشد آنها را دستکاری کند.
درخت مرکل این کار را با یک مکانیزم بسیار حساس انجام میدهد. همانطور که در بخش قبلی یاد گرفتیم، ریشهی درخت مرکل (Merkle Root) چکیدهی تمام تراکنشهای یک بلاک است.
- اگر یک هکر بخواهد حتی یک عدد را در یک تراکنش قدیمی تغییر دهد، هش آن تراکنش تغییر میکند.
- این تغییر باعث تغییر شاخههای بالاتر میشود.
- در نهایت، ریشهی درخت تغییر میکند.
چون ریشهی درخت مرکل در هدر (Header) بلاک ذخیره شده و در تمام شبکه پخش میشود، هرگونه مغایرت بلافاصله آشکار میشود. این ویژگی باعث میشود بلاک چینها در برابر جعل و دستکاری، عملاً نفوذ ناپذیر باشند.
صرفهجویی در فضای ذخیرهسازی و پهنای باند
یکی از مشکلات بزرگ بلاک چین، حجم زیاد دادههاست. اگر برای تایید یک تراکنش کوچک، مجبور بودیم کل اطلاعات یک بلاک را دانلود کنیم، اینترنت و فضای هارد دیسک کامپیوترهای ما خیلی زود پر میشد.
درخت مرکل این مشکل را با روشی به نام اثبات مرکل (Merkle Proof) حل میکند.
تصور کنید میخواهید ثابت کنید یک کتاب خاص در کتابخانه وجود دارد. به جای اینکه کل کتابخانه را جابجا کنید، فقط کافی است شماره قفسه و ردیف آن کتاب را نشان دهید.
در بلاک چین هم وقتی میخواهیم وجود یک تراکنش را تایید کنیم، نیازی به دانلود کل بلاک نیست. فقط کافی است خود تراکنش و تعدادی از هشهای شاخههای مربوط به آن (که مسیر رسیدن به ریشه را میسازند) را داشته باشیم. این کار حجم دادههای انتقالی را به شدت کاهش میدهد و باعث میشود شبکه روانتر کار کند.
تایید پرداخت ساده (SPV)؛ راز عملکرد کیف پولهای سبک
آیا تا به حال فکر کردهاید که چطور میتوانید روی گوشی موبایل خود که حافظهی محدودی دارد، کیف پول بیت کوین داشته باشید؟ مگر حجم کل بلاک چین بیت کوین صدها گیگابایت نیست؟
پاسخ این سوال در تکنولوژی تایید پرداخت ساده یا SPV (Simplified Payment Verification) نهفته است که مستقیماً از درخت مرکل قدرت میگیرد.
- نودهای کامل (Full Nodes): کامپیوترهایی هستند که کل تاریخچه بلاک چین را دانلود میکنند.
- نودهای سبک (Light Nodes): همان کیف پولهای موبایلی یا دسکتاپی معمولی هستند که ما استفاده میکنیم.
کیف پول شما (نود سبک) برای اینکه مطمئن شود مبلغی به حساب شما واریز شده، کل بلاک چین را دانلود نمیکند. بلکه فقط سربرگ بلاکها (که حاوی ریشه مرکل است) را دریافت میکند. سپس با کمک یک نود کامل و استفاده از "مسیر مرکل"، فقط چک میکند که آیا تراکنش شما در آن ریشه وجود دارد یا نه.
این فرآیند به کیف پولهای سبک اجازه میدهد با کمترین مصرف اینترنت و حافظه، با امنیت بسیار بالا کار کنند.
تسهیل همگامسازی نودها در شبکههای توزیع شده
در یک شبکه جهانی مثل بیت کوین، هزاران کامپیوتر (نود) باید همیشه اطلاعاتشان را با هم هماهنگ یا سینک (Sync) کنند. اگر قرار باشد برای هر هماهنگی، کل اطلاعات را برای هم بفرستند، شبکه قفل میشود.
درخت مرکل این فرآیند را بسیار سریع میکند:
- دو کامپیوتر ابتدا فقط ریشه مرکل دادههایشان را با هم مقایسه میکنند.
- اگر ریشهها یکسان بود، یعنی تمام اطلاعات آنها دقیقاً مشابه است و نیازی به تبادل داده نیست.
- اگر ریشهها متفاوت بود، آنها شاخهها را چک میکنند تا دقیقاً بفهمند کدام بخش از دادهها متفاوت است.
با این روش، به جای ارسال کل اطلاعات، فقط و فقط بخشهای کوچک تغییریافته دانلود میشوند. این کار باعث میشود سرعت همگامسازی شبکه بسیار بالا برود.
بررسی نقش درخت مرکل در پروژههای بزرگ کریپتویی
تا به اینجا یاد گرفتیم که درخت مرکل چیست و چگونه کار میکند. اما شاید برایتان جالب باشد که بدانید غولهای دنیای رمزارز دقیقا چگونه از این ابزار استفاده میکنند. آیا بیت کوین و اتریوم به یک شکل از این ساختار بهره میبرند؟ پاسخ منفی است. هر شبکه بسته به نیاز و معماری خود، نسخهای خاص از درخت مرکل را پیادهسازی کرده است. بیایید نگاهی به درون موتور این پروژهها بیندازیم.
بیت کوین و استفاده کلاسیک از درخت مرکل
بیت کوین به عنوان اولین ارز دیجیتال، از نسخهی استاندارد و کلاسیک درخت مرکل استفاده میکند که به آن درخت دودویی یا Binary Tree میگویند. در شبکهی بیت کوین، هدف اصلی استفاده از این ساختار، ذخیرهی امن و بهینهی تراکنشهاست.
وقتی ماینرها یک بلاک جدید میسازند، تمام تراکنشهای موجود در آن بلاک را با الگوریتم رمزنگاری SHA-256 (همان تابع هش معروف بیت کوین) هش میکنند و در نهایت به یک ریشه مرکل واحد میرسند. این ریشه در سربرگ بلاک قرار میگیرد.
اهمیت این موضوع در بیت کوین دو چیز است:
- تغییرناپذیری: هیچکس نمیتواند تراکنش خرید بیت کوین که سالها پیش انجام شده را تغییر دهد، چون ریشه مرکل در تمام بلاکهای بعدی اثر گذاشته است.
- سبکسازی: همانطور که پیشتر گفتیم، این ساختار به کیف پولهای موبایلی اجازه میدهد بدون دانلود کردن تاریخچهی سنگین بیت کوین، موجودی شما را نشان دهند.
اتریوم و درخت پاتریسیا مرکل (Merkle Patricia Trie)
اتریوم ساختاری بسیار پیچیدهتر از بیت کوین دارد. بیت کوین شبیه به یک دفتر حسابداری ساده است (چه کسی به چه کسی پول داد)، اما اتریوم مثل یک کامپیوتر جهانی عمل میکند که علاوه بر تراکنشها، باید وضعیت قراردادهای هوشمند (کدهای برنامهنویسی شده روی بلاک چین) و موجودی لحظهای حسابها را هم ذخیره کند.
به همین دلیل، درخت مرکل ساده برای اتریوم کافی نبود. توسعهدهندگان اتریوم، ساختاری ترکیبی و پیشرفتهتر به نام درخت پاتریسیا مرکل را ابداع کردند.
تفاوت اصلی اینجاست که در اتریوم، ما با سه نوع درخت جداگانه سروکار داریم:
- درخت وضعیت (State Root): نشان میدهد که هر حساب در حال حاضر چقدر موجودی دارد. این درخت دائماً در حال تغییر و بهروزرسانی است.
- درخت تراکنشها (Transactions Root): لیست تراکنشهای انجام شده در یک بلاک را نگه میدارد.
- درخت رسیدها (Receipts Root): نتیجهی اجرای قراردادهای هوشمند و کارمزدهای پرداخت شده را ثبت میکند.
استفاده از این ساختار پیچیده (پاتریسیا) به اتریوم اجازه میدهد تا اطلاعات را سریعتر جستجو کند و تغییرات لحظهای وضعیت شبکه را با سرعت بالا مدیریت نماید.
سایر شبکهها و راهکارهای لایه دوم
امروزه بحث مقیاسپذیری (توانایی پردازش تعداد زیادی تراکنش در ثانیه) بسیار داغ است. راهکارهای لایه دوم یا Layer 2 (شبکههایی که روی بلاک چین اصلی سوار میشوند تا سرعت را بالا و هزینه را کم کنند) وابستگی شدیدی به درخت مرکل دارند.
شبکههایی مانند آربیتروم (Arbitrum) یا آپتیمیزم (Optimism) از تکنیکی به نام رولآپ (Rollup) استفاده میکنند. روش کار آنها دقیقاً بر اساس منطق درخت مرکل است:
- آنها صدها یا هزاران تراکنش را در لایه دوم جمعآوری میکنند.
- این تراکنشها را فشرده کرده و یک درخت مرکل برای آنها میسازند.
- در نهایت، فقط و فقط ریشه مرکل را به شبکهی اصلی (مثلاً اتریوم) میفرستند.
با این کار، به جای اینکه اتریوم مجبور باشد 1000 تراکنش را جداگانه پردازش کند، فقط یک کد (ریشه) را ثبت میکند. این یعنی کارمزدها بین هزار نفر تقسیم میشود و سرعت شبکه به شدت افزایش مییابد. بنابراین، میتوان گفت که درخت مرکل، کلید اصلی ارزان شدن و سریع شدن تراکنشها در نسل جدید بلاک چینهاست.
فراتر از بلاک چین؛ سایر کاربردهای تکنولوژیک
شاید تصور کنید که درخت مرکل تنها مختص به دنیای رمزارزها و بیت کوین است، اما این تصور درست نیست. این ساختار هوشمندانه سالها قبل از اینکه ساتوشی ناکاموتو بیت کوین را خلق کند، در علوم کامپیوتر وجود داشت و همچنان در بسیاری از فناوریهایی که روزمره با آنها سروکار داریم، استفاده میشود. در واقع، هر جایی که نیاز به اطمینان از صحت دادهها و هماهنگسازی سریع اطلاعات باشد، رد پایی از درخت مرکل دیده میشود.
سیستم کنترل نسخه گیت (Git)
اگر با برنامهنویسی آشنا باشید، حتماً نام گیت یا پلتفرمهایی مثل گیتهاب (GitHub) را شنیدهاید. گیت یک سیستم کنترل نسخه است؛ یعنی به برنامهنویسان اجازه میدهد تمام تغییرات کدهایشان را در طول زمان ذخیره کنند و در صورت بروز اشتباه، به نسخههای قبلی برگردند. درست شبیه به یک ماشین زمان برای کدنویسی.
گیت برای مدیریت این تاریخچهی تغییرات، دقیقاً از ساختاری شبیه به درخت مرکل استفاده میکند.
- وقتی یک برنامهنویس تغییراتی را ذخیره میکند (که به آن Commit میگویند)، گیت از تمام فایلها و پوشهها یک ساختار درختی میسازد.
- اگر حتی یک حرف در یکی از فایلهای کد تغییر کند، شناسه یا همان هش آن فایل تغییر میکند.
- این تغییر باعث میشود که هش کل آن نسخه (Commit ID) تغییر کند.
به همین دلیل است که در پروژههای بزرگ نرمافزاری که هزاران فایل دارند، سیستم گیت هرگز گیج نمیشود و دقیقاً میداند کدام فایل در چه تاریخی و توسط چه کسی تغییر کرده است.
سیستمهای فایل توزیع شده (مانند IPFS)
سیستم فایل بینسیارهای یا IPFS (InterPlanetary File System) تلاشی برای ایجاد یک اینترنت غیرمتمرکز و آزادتر است. در اینترنت معمولی، وقتی شما فایلی را دانلود میکنید، آن را از یک آدرس مشخص (مثل سرور گوگل) دریافت میکنید. اما در IPFS، فایلها روی کامپیوترهای مردم در سراسر جهان پخش شدهاند.
در اینجا درخت مرکل نقشی حیاتی بازی میکند:
- تقسیم فایل: وقتی فایلی در شبکه IPFS قرار میگیرد، به قطعات کوچکتری تقسیم میشود.
- درخت دادهها: این قطعات در یک ساختار درختی (که به آن Merkle DAG میگویند) سازماندهی میشوند.
- اطمینان از دریافت صحیح: وقتی شما میخواهید فایلی را از کامپیوتر غریبهای دانلود کنید، سیستم با استفاده از ریشهی درخت مرکل چک میکند که آیا تمام قطعات فایل را درست و کامل دریافت کردهاید یا خیر.
بدون درخت مرکل، دانلود فایل در شبکههای نظیربهنظیر (Peer-to-Peer) بسیار ناامن و پر از خطا میشد، زیرا ممکن بود قطعات فایل در مسیر تغییر کرده یا ناقص باشند.
پایگاههای داده NoSQL
پایگاههای دادهی مدرن و بزرگ (مانند Apache Cassandra یا DynamoDB آمازون) که حجم عظیمی از اطلاعات را مدیریت میکنند، با روشهای سنتی و جدولبندی شده (SQL) تفاوت دارند. این پایگاهها دادهها را روی صدها سرور مختلف پخش میکنند تا سرعت و امنیت بالا برود.
چالش اصلی در اینجا هماهنگسازی یا Synchronization است. یعنی اگر اطلاعات روی سرور شماره 1 تغییر کرد، سرور شماره 100 هم باید سریعاً باخبر شود.
این پایگاههای داده از درخت مرکل برای مقایسهی سریع دادهها بین سرورها استفاده میکنند:
- به جای ارسال کل دادهها برای چک کردن تفاوتها، سرورها فقط شاخههای درخت مرکل را با هم مقایسه میکنند.
- اگر شاخهها یکسان باشند، یعنی دادهها هماهنگ هستند.
- اگر تفاوتی پیدا شود، دقیقاً به سراغ همان بخش کوچک تغییریافته میروند و فقط همان قسمت را بهروزرسانی میکنند.
این مکانیزم باعث میشود سرویسهای بزرگی مثل نتفلیکس یا اینستاگرام که از این نوع پایگاههای داده استفاده میکنند، بتوانند با سرعتی باور نکردنی اطلاعات را بین سرورهای خود در قارههای مختلف هماهنگ کنند.
آینده و نوآوریها؛ درخت ورکل (Verkle Tree)
دنیای تکنولوژی هرگز متوقف نمیشود. همانطور که گفتیم، درخت مرکل اختراعی مربوط به دههی 70 میلادی است و با وجود کارایی فوقالعاده، در برابر نیازهای مدرن و سنگین شبکههای امروزی کمی به نفسنفس افتاده است. اینجاست که یک قهرمان جدید وارد میدان میشود: درخت ورکل (Verkle Tree).
این مفهوم که ترکیبی از نامهای "Vector" و "Merkle" است، به عنوان گام بعدی در تکامل بلاک چین شناخته میشود و ویتالیک بوترین (خالق اتریوم) امید زیادی به آن بسته است.
درخت ورکل چیست و چه تفاوتی با مرکل دارد؟
بیایید برای درک تفاوت این دو، از یک مثال سادهی باغبانی استفاده کنیم.
- درخت مرکل (سنتی): شبیه به یک درخت کاج بلند و باریک است. هر شاخه فقط به دو شاخهی دیگر تقسیم میشود. برای اینکه از پایین (برگ) به بالا (ریشه) برسید، باید پلههای زیادی را طی کنید. این یعنی برای اثبات یک داده، باید مسیر طولانیتری را چک کنید و اطلاعات بیشتری (هشهای بیشتری) را دانلود نمایید.
- درخت ورکل (مدرن): شبیه به یک بوتهی پهن و کوتاه است. در اینجا هر شاخه میتواند به تعداد زیادی شاخه (مثلاً هزاران شاخه) تقسیم شود.
تفاوت فنی اصلی در ریاضیات پشت آنهاست. درخت مرکل از "توابع هش" استفاده میکند، اما درخت ورکل از مفهومی پیچیدهتر به نام تعهد برداری (Vector Commitment) بهره میبرد.
بدون اینکه وارد فرمولهای ریاضی شویم، تعهد برداری به ما اجازه میدهد تا تعداد بسیار زیادی از دادهها را با هم ترکیب کنیم و یک مدرک (Proof) بسیار بسیار کوچک بسازیم. در حالی که در درخت مرکل، هرچه تعداد تراکنشها بیشتر شود، حجم مدرک هم کمی بزرگتر میشود، در درخت ورکل حجم مدرک تقریباً ثابت و بسیار ناچیز باقی میماند.
مزایای درخت ورکل برای مقیاسپذیری اتریوم 2.0
اصلیترین دلیل هیجانزدگی توسعهدهندگان اتریوم برای درخت ورکل، حل مشکل کلاینتهای بدون حالت (Stateless Clients) است.
در حال حاضر، اگر بخواهید یک نود تاییدکننده (Validator) در اتریوم باشید، باید صدها گیگابایت اطلاعات (وضعیت کل شبکه) را روی هارد دیسک خود ذخیره کنید. این کار برای کامپیوترهای خانگی دشوار است.
اما با پیادهسازی درخت ورکل:
- کاهش حجم اثبات: حجم دادههایی که برای تایید یک بلاک لازم است (که به آن Witness میگویند)، به شدت کاهش مییابد.
- بینیازی از ذخیرهسازی کل دادهها: نودها برای تایید تراکنشها دیگر نیازی ندارند کل وضعیت شبکه را دانلود کنند. آنها میتوانند فقط با دریافت یک "اثبات ورکل" کوچک، مطمئن شوند که تراکنش صحیح است.
- افزایش تمرکززدایی: وقتی نود شدن راحتتر شود و نیاز به سختافزار گرانقیمت نباشد، افراد بیشتری میتوانند در شبکه مشارکت کنند و امنیت اتریوم افزایش مییابد.
به زبان ساده، درخت ورکل باعث میشود اتریوم سبکتر، سریعتر و برای اجرا روی کامپیوترهای معمولی مناسبتر شود.
جدول مقایسهای: تفاوتهای کلیدی درخت مرکل و درخت ورکل
برای اینکه در یک نگاه متوجه تفاوت این دو تکنولوژی شوید، جدول زیر را مرور کنید:
|
ویژگی
|
درخت مرکل (Merkle Tree)
|
درخت ورکل (Verkle Tree)
|
|
ساختار ظاهری
|
بلند و باریک (عمق زیاد)
|
کوتاه و پهن (عمق کم)
|
|
روش رمزنگاری
|
توابع هش (Hash Functions)
|
تعهدات برداری (Vector Commitments)
|
|
حجم اثبات (Proof Size)
|
نسبتاً بزرگ (چند کیلوبایت)
|
بسیار کوچک (کمتر از 150 بایت)
|
|
هزینه ساخت
|
محاسبات ساده و سریع
|
محاسبات ریاضی سنگینتر و پیچیدهتر
|
|
هدف اصلی
|
تایید صحت دادهها با امنیت بالا
|
کاهش حجم دادهها برای مقیاسپذیری (Scalability)
|
|
وضعیت در اتریوم
|
استفاده فعلی در شبکه
|
برنامهریزی شده برای آپدیتهای آینده
|
منابع:
Cube Exchange
Simpli Learn
OSL