رفتن به محتوای اصلی
Koohestun
توضیح کوهستاناثبات‌های رمزنگاریمقاله آموزشی· 5 دقیقه مطالعه· در راهنماها

درخت‌های مرکل چگونه با زنجیره هش، داده‌های بلاک‌چین را بدون دانلود کل شبکه تایید می‌کنند

درخت‌های مرکل با هش کردن جفت‌جفتِ بلوک‌های داده، مجموعه‌های عظیم اطلاعاتی را در یک هش ریشه ۲۵۶ بیتی فشرده می‌کنند. این ساختار به نودهای سبک اجازه می‌دهد تا صحت یک تراکنش خاص را تنها با استفاده از بخش کوچکی از داده‌های کل بلوک تایید کنند.

به قلم رضا حسینی

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

دیدگاه‌هایی که این گزارش پوشش نداده

  • توسعه‌دهندگان برنامه‌های کاربردی مصرف‌کننده
  • اپراتورهای نود سخت‌افزاری

درخت‌های مرکل داده‌های بلاک‌چین را با جفت کردن هش‌های تراکنش و هش کردن مکرر آن‌ها تایید می‌کنند تا زمانی که تنها یک هش اصلی — یعنی ریشه — باقی بماند. وقتی کاربری نیاز دارد وجود یک تراکنش خاص را ثابت کند، تنها شاخه کوچکی از هش‌ها را که داده‌های او را به آن ریشه متصل می‌کند دانلود کرده و از بقیه بلوک کاملاً عبور می‌کند. این مکانیزم مشکل اساسی مقیاس‌پذیری شبکه‌های غیرمتمرکز را حل می‌کند: چگونه می‌توان به یک پایگاه داده عظیم اعتماد کرد بدون اینکه آن را روی سخت‌افزار خود ذخیره کنید.[4][6]

این مفهوم بر توابع هش رمزنگاری، که معمولاً در پروتکل‌های مدرن بلاک‌چین SHA-256 است، تکیه دارد. یک تابع هش ورودی با هر اندازه‌ای را می‌گیرد و آن را به صورت قطعی به یک رشته ثابت ۲۵۶ بیتی (۳۲ بایتی) درهم می‌آمیزد. اگر تنها یک ویرگول را در یک فایل یک گیگابایتی تغییر دهید، هش حاصل کاملاً تغییر می‌کند. این اثر بهمنی تضمین می‌کند که هرگونه دستکاری بلافاصله برای هر کسی که خروجی را بررسی می‌کند آشکار شود.[2][6]

در بستر بلاک‌چین، ابتدا هر تراکنش به صورت جداگانه هش می‌شود. این هش‌های فردی، نودهای برگ را در پایین درخت مرکل تشکیل می‌دهند. به گفته GeeksforGeeks: «درخت‌های مرکل با هش کردن مکرر جفت نودها ایجاد می‌شوند تا زمانی که تنها یک هش باقی بماند.» اگر تعداد تراکنش‌ها در یک بلوک فرد باشد، هش آخر به سادگی کپی می‌شود تا یک جفت زوج ایجاد شود.[3]

هش‌های جفت‌شده به هم متصل شده و دوباره هش می‌شوند تا لایه بالایی بعدی را که به عنوان نودهای شاخه شناخته می‌شوند، تشکیل دهند. این فرآیند تکرار می‌شود و در هر سطح تعداد هش‌ها را نصف می‌کند تا اینکه در نهایت به یک رشته ۳۲ بایتی در بالا ختم شود. بر اساس گزارش Topcoder: «هش ریشه برای تایید یکپارچگی کل داده‌ها استفاده می‌شود.»[5]

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

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

قدرت واقعی این ساختار در طول فرآیند تایید نمایان می‌شود. برای اثبات وجود یک تراکنش خاص در یک بلوک، کاربر به کل درخت نیاز ندارد. او تنها به هش‌های خاصی نیاز دارد که با هش تراکنش خودش ترکیب شوند تا ریشه را بازسازی کنند. این مسیر خاص از هش‌ها به عنوان اثبات مرکل شناخته می‌شود.[4]

از آنجا که درخت در هر مرحله داده‌ها را نصف می‌کند، تعداد هش‌های مورد نیاز برای یک اثبات به صورت لگاریتمی یا O(log N) مقیاس می‌یابد. در یک ساختار داده خطی، تایید یک تراکنش از میان یک میلیون تراکنش نیازمند بررسی تمام ۱,۰۰۰,۰۰۰ ورودی است که منجر به عملیاتی با پیچیدگی زمانی O(N) می‌شود.[3][4]

از آنجا که درخت در هر مرحله داده‌ها را نصف می‌کند، تعداد هش‌های مورد نیاز برای یک اثبات به صورت لگاریتمی یا O(log N) مقیاس می‌یابد.

با استفاده از درخت مرکل، اثبات یک تراکنش در یک مجموعه داده ۱,۰۰۰,۰۰۰ رکوردی تنها به ۲۰ هش نیاز دارد. با در نظر گرفتن ۳۲ بایت برای هر هش، کل حجم داده اثبات تنها ۶۴۰ بایت است. این نشان‌دهنده کاهش ۹۹٫۹۹۸ درصدی در داده‌هایی است که یک کلاینت باید در مقایسه با دریافت کل مجموعه داده خطی دانلود کند.[6]

اثبات مرکل داده‌های تایید مورد نیاز برای یک بلوک یک میلیون تراکنشی را ۹۹٫۹۹۸ درصد کاهش می‌دهد.

ساتوشی ناکاموتو در وایت‌پیپر بیت‌کوین در سال ۲۰۰۸ به صراحت از این کارایی برای فعال کردن تایید پرداخت ساده (SPV) بهره برد. SPV به کلاینت‌های سبک — مانند کیف پول‌های موبایل — اجازه می‌دهد تا بدون دانلود صدها گیگابایت که تاریخچه کامل بلاک‌چین را تشکیل می‌دهند، به طور ایمن کار کنند.[2][6]

یک کلاینت SPV تنها هدرهای ۸۰ بایتی بلوک را که حاوی ریشه‌های مرکل هستند دانلود می‌کند. وقتی کیف پول نیاز به بررسی یک پرداخت دارد، از یک نود کامل درخواست اثبات مرکل می‌کند که آن پرداخت را به ریشه شناخته‌شده متصل می‌کند. اگر محاسبات ریاضی درست دربیاید، کیف پول متوجه می‌شود که شبکه تراکنش را پذیرفته است.[4][6]

اختراع این ساختار دهه‌ها پیش از بلاک‌چین صورت گرفته است. رالف مرکل، پژوهشگر دانشگاه استنفورد، مفهوم درخت‌های هش را در سال ۱۹۷۹ به عنوان روشی برای ایجاد امضاهای دیجیتال ثبت اختراع کرد. امروزه، این ساختار بسیار فراتر از ارزهای دیجیتال گسترش یافته و زیربنای بخش عمده‌ای از اینترنت مدرن است.[1][2]

سیستم‌های کنترل نسخه توزیع‌شده مانند Git از درخت‌های مرکل برای ردیابی تغییرات در مخازن کد استفاده می‌کنند و اطمینان می‌دهند که هیچ تاریخچه کامیتی بدون شناسایی تغییر نمی‌کند. شبکه‌های همتا به همتا مانند BitTorrent و سیستم فایل بین‌سیاره‌ای (IPFS) از آن‌ها برای تایید اینکه قطعات فایل دانلود شده با فایل اصلی مطابقت دارند، استفاده می‌کنند.[2][6]

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

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

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

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

چرا مهم است

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

نکات کلیدی

  • درخت‌های مرکل مجموعه‌های عظیم داده را در یک هش ریشه ۲۵۶ بیتی فشرده می‌کنند.
  • آن‌ها به کلاینت‌های سبک اجازه می‌دهند تراکنش‌ها را بدون دانلود کامل بلاک‌چین تایید کنند.
  • اثبات برای یک بلوک یک میلیون تراکنشی تنها به ۲۰ هش نیاز دارد.
  • این ساختار در سال ۱۹۷۹ ثبت اختراع شد و توسط Git و BitTorrent نیز استفاده می‌شود.

بررسی عمیق دیدگاه‌ها

توسعه‌دهندگان پروتکل

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

برای مهندسان پروتکل، درخت مرکل در درجه اول یک ابزار مقیاس‌پذیری است. بدون پیچیدگی تایید O(log N)، بلاک‌چین‌ها به محیط‌های دیتاسنتر محدود می‌شدند، جایی که تنها سرورهای سازمانی توانایی تامین پهنای باند برای اعتبارسنجی زنجیره را داشتند. با نگه داشتن اندازه اثبات‌ها در محدوده کیلوبایت، توسعه‌دهندگان اطمینان حاصل می‌کنند که سخت‌افزارهای مصرفی استاندارد — و حتی دستگاه‌های موبایل از طریق SPV — می‌توانند در تایید بدون نیاز به اعتماد (trustless) شرکت کنند.

پژوهشگران رمزنگاری

تحلیل امنیت ریاضی درخت‌ها، با تمرکز بر مقاومت در برابر برخورد و آسیب‌پذیری‌های کوانتومی.

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

مهندسان سیستم‌های توزیع‌شده

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

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

256 bits
اندازه خروجی استاندارد هش
20 hashes
حجم اثبات برای یک میلیون تراکنش
O(log N)
پیچیدگی زمانی جستجو

منابع

پوشش منابع

6 منبع

3 دیدگاه شناسایی‌شده

توسعه‌دهندگان پروتکل 40%پژوهشگران رمزنگاری 30%مهندسان سیستم‌های توزیع‌شده 30%
  1. [1]Semantic Scholarپژوهشگران رمزنگاری

    A Certified Digital Signature

    مطالعه در Semantic Scholar
  2. [2]Wikipediaپژوهشگران رمزنگاری

    Merkle tree

    مطالعه در Wikipedia
  3. [3]GeeksforGeeksمهندسان سیستم‌های توزیع‌شده

    Blockchain Merkle Trees

    مطالعه در GeeksforGeeks
  4. [4]Binanceتوسعه‌دهندگان پروتکل

    Merkle Tree

    مطالعه در Binance
  5. [5]Topcoderتوسعه‌دهندگان پروتکل

    Merkle Tree in Blockchain

    مطالعه در Topcoder
  6. [6]تیم سردبیری کوهستانمهندسان سیستم‌های توزیع‌شده

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

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

نظرات

همیشه در جریان باشید

هر زاویه. هر روز.

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