آموزش مفاهیم پایه

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

خلاصه مطلب

درخت مرکل یک ساختار داده مبتنی بر هش است که در رمزنگاری و علوم کامپیوتر برای بررسی و اثبات یکپارچگی داده‌ها استفاده می‌شود. ریشه مرکل یا هش ریشه یک خلاصه‌ رمزنگاری‌شده از کل داده‌ها است که با کوچک‌ترین تغییر در اطلاعات، مقدار آن تغییر می‌کند و همین موضوع باعث افشای سریع دستکاری داده می‌شود. ایده‌ درخت مرکل در اوایل دهه‌ ۱۹۸۰ توسط رالف مرکل، دانشمند حوزه‌ علوم رایانه و رمزنگاری، معرفی شد.روش کار مرکل تری در بلاکچین به این شکل است که ابتدا هر تراکنش هش می‌شود، سپس هش‌ها دوتا‌دوتا به صورت سلسله‌مراتبی هش می‌شوند تا در نهایت فقط یک هش باقی بماند. هش ریشه نماینده‌ همه‌ تراکنش‌های داخل آن بلاک است و به شبکه کمک می‌کند داده‌ها را سریع‌تر و مطمئن‌تر بررسی کند. مزیت اصلی درخت مرکل این است که برای بررسی صحت یک مجموعه‌ بزرگ از داده‌ها، لازم نیست همه‌ اطلاعات را بخوانیم. برای تایید یک تراکنش خاص، فقط کافی است مسیر هش‌های آن تا ریشه مرکل بررسی شود. به‌همین دلیل، یک روش سریع و کم‌هزینه به شمار می‌آید. انواع درخت مرکل شامل درخت هش باینری، درخت مرکل پاتریشا، درخت مرکل پراکنده و ورکل تری می‌شود. شبکه بیت کوین از درخت مرکل باینری و اتریوم از درخت پاتریشا استفاده می‌کند. کاربرد درخت مرکل فقط به بلاکچین محدود نمی‌شود؛ هر جایی که یکپارچگی داده مهم باشد، می‌توان از آن استفاده کرد. از مهم‌ترین کاربردهای غیربلاکچینی مرکل تری می‌توان به سیستم‌های کنترل نسخه (Git)، ذخیره‌سازی غیرمتمرکز (IPFS)، ذخیره‌سازی ابری (Google Drive) و گواهی‌نامه‌های امنیتی وب (TLS/SSL) اشاره کرد.

مقدمه

بلاکچین را معمولاً به یک دفتر کل دیجیتال تشبیه می‌کنند؛ چیزی شبیه به همان دفتر سیاهه‌های قدیمی که در آن همه‌چیز با دقت ثبت می‌شد. چه کسی چه چیزی را برای چه کسی فرستاده است، چه زمانی این اتفاق افتاده است و وضعیت حساب‌ها چطور تغییر کرده‌اند. اما یک تفاوت اساسی وجود دارد؛ در بلاکچین، این دفتر نه در اختیار یک فرد یا نهاد، بلکه در اختیار هزاران نود در سراسر جهان است. حالا سؤال مهم اینجاست که اگر تعداد این ثبت‌ها به هزاران، میلیون‌ها یا حتی میلیاردها مورد برسد، چطور می‌توان مطمئن شد که اطلاعات هنوز درست، دست‌نخورده و قابل اعتماد هستند؟ اگر کسی بخواهد فقط یک تراکنش خاص را بررسی کند، آیا باید کل دفتر را از اول تا آخر بخواند؟ چطور شبکه‌ای مانند بیت‌کوین یا اتریوم می‌توانند بدون نیاز به اعتماد به یک نهاد مرکزی، حجم عظیمی از داده را سریع و امن راستی‌آزمایی کند؟ اصلاً چطور می‌توان فهمید که حتی یک بیت از اطلاعات داخل بلاک تغییر نکرده است؟

معامله سریع و آسان در نوبیتکس خرید تتر

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

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

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

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

کانال بله مجله نوبیتکس

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

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

تابع هش چیست؟

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

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

در علم رمزنگاری الگوریتم‌های هش مختلفی وجود دارد؛ مانند SHA-1 ،SHA-3 ،RIPEMD-160 و BLAKE2. شبکه بیت کوین، از الگوریتم هش امن ۲۵۶ (SHA-256) استفاده می‌کند که طول آن خروجی آن همیشه ۲۵۶ بیت (۶۴ کاراکتر) است.

فرض کنید می‌خواهیم مبلغ ۱۰۰ دلار را به دوستی بفرستیم. اگر این تراکنش یعنی عبارت Pay 100$ را با الگوریتم SHA-256 هش کنیم، نتیجه عبارت زیر می‌شود:

80b8f1f6c646f8f5e1f1d4f4b6f1f8c6e6f0c9bbf3d4c7b0f7a6a5f7e2e9d3a1

حالا اگر فقط عدد ۱۰۰ را به ۱۰۱ تغییر دهیم (Pay 101$) هش جدید کاملاً متفاوت خواهد بود:

 2e2a7f8c9d4b0c3e1f6a8b7c5d4e3f2a1b0c9d8e7f6a5b4c3d2e1f0a9b8c7d6e

همان‌طور که می‌بینید با یک تغییر جزئی، هش کاملاً عوض شد. این خاصیت، کلید اصلی اطمینان از عدم تغییر داده‌ها در درخت هش است.

اجزای درخت مرکل و ساختار وارونه آن

اجزای درخت مرکل چیست؟
اجزای درخت مرکل چیست؟

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

  • نود برگ‌ (Leaf Node): هر دو هشِ تراکنش با هم هش می‌شوند و «نودهای برگ‌» را تشکیل می‌دهند.
  • نودغیربرگ (Non-Leaf Node): لایه بعدی درخت، از هش شدنِ جفت‌ هش‌های برگ‌ها ایجاد می‌شود و «نودهای غیربرگ» را می‌سازد. درواقع، ابتدا هش دو فرزند با هم ترکیب می‌شود و نتیجه دوباره هش می‌شود تا نود والد ساخته شود.
  • ریشه مرکل (Merkle Root): فرایند ترکیب و هش کردن آنقدر لایه‌به‌لایه ادامه پیدا می‌کند تا در نهایت به یک هش واحد برسیم. این هش نهایی، «ریشه مرکل» یا «هش ریشه» نام دارد و در هدر (Header) هر بلاک ذخیره می‌شود.

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

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

برای اینکه با نحوه عملکرد درخت مرکل آشنا شویم، بیایید یک مثال را مرور کنیم. فرض کنید در یک بلاک چندین تراکنش از TxA تا TxO گنجانده شده است. ابتدا از هر تراکنش یک هش جداگانه گرفته می‌شود؛ Hash C ،Hash B ،Hash A و همین‌طور تا آخرین تراکنش یعنی Hash O ادامه پیدا می‌کند. این هش‌ها، همان نودهای برگ‌ درخت مرکل هستند.

در مرحله بعد، هشِ هر نودِ برگ با نودِ برگ کناری هش می‌شود تا نودهای غیربرگ ( Hash AB و Hash CD و …) به‌دست بیاید. در اینجا لازم است به این نکته اشاره کنیم که درخت مرکل، یک ساختار باینری دارد و عملیات هش را به‌صورت دودویی انجام می‌دهد. به همین دلیل اگر تعداد نودهای برگ فرد باشد، آخرین نود برگ کپی می‌شود و با خودش یک جفت نود می‌سازد. در مثال بالا برای تراکنش TxO همین اتفاق افتاده است و نود غیربرگ Hash OO ایجاد شده است.

در لایه بعدی، نودهای غیربرگ دو به دو با هم هش می‌شوند و هش‌های جدیدی می‌سازند. این روند به‌صورت سلسله‌مراتبی آنقدر ادامه پیدا می‌کند تا در نهایت به یک هش واحد یعنی (ABCDEFGHIJKLMNOO) برسیم. این مقدار همان «هش مرکل» است.

ریشه مرکل چیست و چرا اهمیت دارد؟

ریشه مرکل (Merkle Root) یا هشِ ریشه، یک مقدار هشِ واحد است که از کل تراکنش‌های داخل یک بلاک ساخته می‌شود. درواقع این مقدار، خروجیِ نهایی درخت مرکل است که نقش «نماینده‌ رمزنگاری‌شده»‌ تمام داده‌های آن بلاک را دارد. اما در پاسخ به این سوال که چرا ریشه مرکل برای سیستم‌های همتا‌به‌همتا مانند بلاکچین اهمیت دارد باید به چند دلیل مهم اشاره کنیم. نخست اینکه برای راستی‌آزمایی یک تراکنش لازم نیست همه تراکنش‌ها را یک‌به‌یک بررسی کنیم، کافی است ریشه مرکل بررسی شود. اگر حتی یک حرف، عدد یا بیت در یکی از تراکنش‌ها تغییر کند، هش همان تراکنش عوض می‌شود و این تغییر به‌صورت زنجیره‌ای به لایه‌های بالاتر منتقل شده و در نهایت ریشه مرکل را نیز تغییر می‌دهد. به همین دلیل، ریشه مرکل مانند اثر انگشت کل داده‌های بلاک عمل می‌کند.

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

ریشه مرکل همچنین فاکتور مهمی برای تضمین امنیت بلاک و کل زنجیره است. ماجرا این است که مرکل روت هر بلاک در کنار اطلاعات مهم دیگری نظیر هش بلاک قبلی، زمان ثبت بلاک، هدف سختی شبکه و عدد تصادفی نانس (Nonce) در هدر بلاک ذخیره می‌شوند. نکته مهم اینجاست که تمامی این داده‌ها با هم ترکیب و دوباره «هش» می‌شوند تا هشِ نهاییِ بلاک به دست آید. این فرآیند باعث می‌شود ریشه مرکل و سایر اطلاعات هدر، به صورت درهم‌تنیده با هم پیوند بخورند. از آنجا که هشِ هر بلاک به بلاکِ بعدی متصل است، هرگونه تغییرِ جزئی در یک تراکنش، بلافاصله ریشه مرکل را تغییر می‌دهد. با تغییر ریشه مرکل، داده‌های هدرِ بلاک نیز تغییر کرده و در نتیجه، هشِ نهاییِ آن بلاک دگرگون می‌شود. این تغییرِ هش، مانند قطع کردن یک زنجیره، تمامی بلاک‌های بعدی را نیز بی‌اعتبار می‌کند و این‌گونه، یکپارچگی و امنیتِ کل بلاکچین تضمین می‌شود.

نحوه کار درخت مرکل

اثبات مرکل چیست؟

اثبات مرکل (Merkle Proof) یک روش رمزنگاری‌شده برای اثبات این است که یک داده‌ مشخص، مثلاً یک تراکنش، واقعاً بخشی از یک مجموعه‌ بزرگ‌تر از داده‌ها است یا خیر؛ آن هم بدون اینکه لازم باشد کل آن مجموعه را دانلود یا بررسی کنید. این روش بر پایه ساختار درخت مرکل کار می‌کند.

اثبات مرکل
اثبات مرکل

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

ویژگی بسیار مهم اثبات مرکل این است که حجم آن بسیار کم است. مثلاً برای اثبات وجود یک تراکنش در بلاکی با ۱٬۰۰۰ تراکنش، لازم نیست هر ۱۰۰۰ تراکنش بررسی شود؛ معمولاً فقط حدود ۱۰ هش کافی است. به همین دلیل، اثبات مرکل برای کیف‌پول‌های سبک، اپلیکیشن‌های موبایل و سیستم‌هایی که محدودیت پهنای باند و فضای ذخیره‌سازی دارند بسیار مفید است. این روش باعث می‌شود کاربران بتوانند با صرف منابع کم، همچنان از امنیت و اعتبار اطلاعات در یک شبکه غیرمتمرکز مطمئن شوند.

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

درخت مرکل نخستین بار توسط رالف مرکل (Ralph Merkle)، دانشمند برجسته‌ علوم رایانه و از پیشگامان رمزنگاری، معرفی شد. او این ایده را در مقاله‌ای با عنوان “A Digital Signature Based on a Conventional Encryption Function” مطرح کرد که در سال ۱۹۸۷ منتشر شد. با این حال، ایده‌های اولیه‌ او درباره‌ این ساختار بسیار زودتر از ظهور بیت‌کوین و حتی پیش از شکل‌گیری بلاکچین مطرح شده بودند. به همین دلیل، درخت مرکل را نباید اختراعی وابسته به بلاکچین دانست؛ بلکه این فناوری سال‌ها پیش از آن در حوزه‌ رمزنگاری و تأیید صحت داده‌ها وجود داشته است.

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

انواع درخت مرکل چیست؟

درخت مرکل انواع مختلفی دارد که با وجود ماهیت یکسان، تفاوت‌هایی در آن‌ها وجود دارد. در ادامه با ۴ نوع مهم و رایج‌ آن‌ها آشنا می‌شویم:

۱. درخت مرکل باینری (Binary Merkle Tree)

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

  • تأیید سریع تراکنش‌ها: بدون نیاز به دانلود کل بلاک.
  • تشخیص دستکاری: هر تغییری در داده‌ها، فورا ریشه را تغییر می‌دهد.
  • اعتبارسنجی به روش تایید ساده پرداخت (SPV): کلاینت‌های سبک می‌توانند به اطلاعات حداقلی بسنده کنند و با داشتن تنها چند هش میانی و ریشه مرکل از صحت تراکنش خود مطمئن شوند.

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

۲. درخت مرکل پاتریشیا (Patricia Merkle Tree)

پاتریشا ترکیبی از درخت مرکل و یک ساختار داده به نام پری‌فیکس تری (Prefix Tree یا Trie) است که برای ذخیره‌سازی داده‌ها به صورت نگاشت کلید-مقدار (key-value) بهینه‌سازی شده است. تفاوت کلیدی این درخت با هش باینری این است که درخت باینری صرفا می‌گوید: «آیا یک داده خاص وجود دارد و معتبر است؟» اما درخت پاتریشیا علاوه بر این، می‌گوید: «کدام کلید به کدام داده تعلق دارد و چگونه می‌توان آن را پیدا کرد یا به‌روزرسانی کرد؟».

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

  • State Trie: وضعیت موجودی حساب‌ها و قراردادها
  • Transaction Trie: تمام تراکنش‌های یک بلاک
  • Receipt Trie: نتایج اجرای قراردادهای هوشمند و گزارش‌ها

این ساختار برای اتریوم یک وضعیت جهانی قابل‌اعتماد و قابل‌تأیید ایجاد می‌کند و زیربنایی را برای برنامه‌های غیرمتمرکز (DApps) و اکوسیستم‌های امور مالی غیرمتمرکز (DeFi) آن می‌سازد.

۳. درخت مرکل پراکنده (Sparse Merkle Tree – SMT)

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

قابلیت «اثبات عدم وجود» برای سیستم‌هایی مانند رول‌آپ‌های دانش صفر (zk-rollups)، راه‌حل‌های لایه ۲ و پروتکل‌های حفظ حریم خصوصی بسیار مهم است. در این سیستم‌ها، اغلب لازم است که ثابت شود یک چیز خاص (مثلاً یک تراکنش خرج‌شده یا یک یادداشت باطل‌شده) وجود ندارد. درخت‌های مرکل سنتی در این زمینه کارآمد نیستند، اما SMT این کار را به‌خوبی انجام می‌دهد. به‌علاوه، اثبات‌ها در درخت مرکل پراکنده، صرف‌نظر از بزرگی مجموعه داده، اندازه‌ ثابتی دارند. این ویژگی، آن‌ها را برای سیستم‌های دانش صفر (zk-SNARKs)، حسابرسی اثبات ذخایر (proof-of-reserves) و هویت غیرمتمرکز ایده‌آل می‌کند. پروژه‌هایی مانند پروتکل مینا (Mina Protocol) و سلستیا (Celestia) از این نوع درخت یا نسخه‌های بهبودیافته‌ آن استفاده می‌کنند.

۴. درخت ورکل (Verkle Tree)

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

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

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

در جدول زیر تفاوت انواع درخت‌های مرکل را مشاهده می‌کنید:

ساختاراندازه اثباتمناسب برایفرض‌های رمزنگاریپیچیدگی تولید/ بررسی اثبات
درخت مرکل باینریO(log2 n) هشفهرست بلاک‌ها یا تراکنش‌هاتوابع هش استانداردعملیات هش سریع و ساده
درخت مرکل پراکندهO(logn) با ارتفاع ثابتفضاهای کلید بسیار بزرگ و پراکندهتوابع هش استانداردمشابه مرکل معمولی
درخت مرکل پاتریشاO(log n) براساس مسیر کلیدذخیره وضعیت کلید- مقدار (مانند اتریوم)هش‌گذاری+ کدگذاری مسیراثبات مبتنی بر نودهای کدگذاری شده
درخت ورکلO(logk n)؛ بسیار کوچکتروضعیت‌های بسیار بزرگ با محدودیت پهنای باندتعهدات برداری/چندجمله‌ایاثبات‌های رمزنگاری سنگین‌تر (چنداثباتی)

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

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

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

نکته‌ مهم این است که درخت مرکل فقط برای تایید وجود یک داده نیست، بلکه برای اثبات دربرگیری (Proof of Inclusion) هم استفاده می‌شود. یعنی می‌توان با آن ثابت کرد که یک تراکنش خاص، یک رکورد مشخص یا یک داده‌ معین عضوی از مجموعه‌ی داده‌های داخل بلاک بوده است. این ویژگی در بلاکچین بسیار ارزشمند است، چون نودها می‌توانند بدون دریافت کل داده‌ها مطمئن شوند که اطلاعات موردنظر واقعاً در بلاک وجود دارد و دستکاری نشده است.

مزایای درخت مرکل در بلاکچین چیست؟

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

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

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

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

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

تأیید یکپارچگی فایل‌ها (مانند Git و IPFS)

سیستم‌های کنترل نسخه مانند گیت (Git) برای مدیریت و ردیابی تغییرات کدهای منبع در پروژه‌های برنامه‌نویسان سراسر جهان از درخت مرکل استفاده می‌کنند. سیستم‌های ذخیره‌سازی غیرمتمرکز مانند سیستم فایل بین سیاره‌ای (IPFS) نیز برای اطمینان از صحت و عدم تغییر فایل‌ها در شبکه‌ توزیع‌شده خود از ساختار مرکل کمک می‌گیرند.

ذخیره‌سازی ابری امن (مانند Google Drive و Dropbox)

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

شفافیت گواهی‌نامه‌ها (مانند حسابرسی TLS/SSL)

در فرآیندهای مرتبط با گواهی‌نامه‌های امنیتی وب (TLS/SSL) هم از درخت مرکل برای ایجاد یک لاگ شفاف و قابل‌حسابرسی استفاده می‌شود. این کار شناسایی گواهی‌نامه‌های جعلی یا نامعتبر را آسان‌تر می‌کند.

ذخیره‌سازی غیرمتمرکز (مانند Filecoin و Arweave)

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

اثبات‌های دانش صفر و رول‌آپ‌ها (Zero-knowledge proofs & rollups)

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

نقش درخت مرکل در کاهش هزینه و بهبود کارآیی شبکه بیت کوین

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

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

جمع‌بندی

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

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

سوالات متداول

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

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

۲) ریشه مرکل چیست؟

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

۳) درخت مرکل در بیت‌کوین چیست؟

بیت‌کوین برای ذخیره و خلاصه‌‌سازی داده‌های بلاک از هش باینری استفاده می‌کند.

۴) درخت مرکل چه کاربردی دارد؟

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

۵) مزایای استفاده از درخت مرکل در بلاکچین چیست؟

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

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

الهام اسماعیلی

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

نوشته های مشابه

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

1 + هجده =