درختهای مرکل چگونه با زنجیره هش، دادههای بلاکچین را بدون دانلود کل شبکه تایید میکنند
درختهای مرکل با هش کردن جفتجفتِ بلوکهای داده، مجموعههای عظیم اطلاعاتی را در یک هش ریشه ۲۵۶ بیتی فشرده میکنند. این ساختار به نودهای سبک اجازه میدهد تا صحت یک تراکنش خاص را تنها با استفاده از بخش کوچکی از دادههای کل بلوک تایید کنند.
به قلم رضا حسینی
این خبر را به اشتراک بگذارید
- توسعهدهندگان پروتکل
- تمرکز بر افزایش کارایی که به شبکههای غیرمتمرکز اجازه میدهد بدون خارج کردن سختافزارهای مصرفی از دور، مقیاسپذیر شوند.
- پژوهشگران رمزنگاری
- تحلیل امنیت ریاضی درختها، با تمرکز بر مقاومت در برابر برخورد و آسیبپذیریهای کوانتومی.
- مهندسان سیستمهای توزیعشده
- نگاه به این ساختار به عنوان یک ابزار جهانی برای یکپارچگی دادهها در کنترل نسخه و اشتراکگذاری فایل همتا به همتا.
دیدگاههایی که این گزارش پوشش نداده
- توسعهدهندگان برنامههای کاربردی مصرفکننده
- اپراتورهای نود سختافزاری
درختهای مرکل دادههای بلاکچین را با جفت کردن هشهای تراکنش و هش کردن مکرر آنها تایید میکنند تا زمانی که تنها یک هش اصلی — یعنی ریشه — باقی بماند. وقتی کاربری نیاز دارد وجود یک تراکنش خاص را ثابت کند، تنها شاخه کوچکی از هشها را که دادههای او را به آن ریشه متصل میکند دانلود کرده و از بقیه بلوک کاملاً عبور میکند. این مکانیزم مشکل اساسی مقیاسپذیری شبکههای غیرمتمرکز را حل میکند: چگونه میتوان به یک پایگاه داده عظیم اعتماد کرد بدون اینکه آن را روی سختافزار خود ذخیره کنید.[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]
این معماری بدون موارد استثنایی نیست. اگر یک درخت به درستی پیادهسازی نشود، میتواند در برابر حملات پیشتصویر دوم آسیبپذیر باشد، جایی که یک عامل مخرب یک نود برگ جعلی میسازد که همان هش یک نود شاخه مشروع را تولید میکند. پروتکلها این مشکل را با اضافه کردن پرچمهای بایتی متفاوت به هشهای برگ و شاخه قبل از هش کردن آنها کاهش میدهند.[2]
بلاکچینهای مدرن نیز این مفهوم را تکامل بخشیدهاند. اتریوم از یک درخت پاتریشیا مرکل اصلاحشده استفاده میکند که تایید رمزنگاری یک درخت مرکل را با مسیریابی کارآمد کلید-مقدار یک درخت پاتریشیا ترکیب میکند. این امر به اتریوم اجازه میدهد تا نه تنها یک لیست ثابت از تراکنشها، بلکه وضعیت در حال بهروزرسانی مداوم میلیونها قرارداد هوشمند را به طور ایمن ذخیره کند.[6]
با مقیاسپذیری شبکهها برای پردازش هزاران تراکنش در ثانیه، پژوهشگران در حال توسعه درختهای ورکل (Verkle) هستند. درختهای ورکل با جایگزینی توابع هش استاندارد با تعهدات برداری، قصد دارند اندازه اثباتها را حتی بیشتر کاهش دهند و راه را برای کلاینتهای بدون وضعیتی هموار کنند که برای اعتبارسنجی شبکه تقریباً به هیچ فضای ذخیرهسازی محلی نیاز ندارند.[6]
چرا مهم است
بدون این ساختار رمزنگاری، هر گوشی هوشمند یا دستگاه سبکی که با بلاکچین تعامل دارد، برای تایید تنها یک پرداخت باید صدها گیگابایت تاریخچه تراکنش را دانلود کند. این همان پایه ریاضی است که شبکههای غیرمتمرکز را برای سختافزارهای مصرفی استاندارد قابل دسترس میکند.
نکات کلیدی
- درختهای مرکل مجموعههای عظیم داده را در یک هش ریشه ۲۵۶ بیتی فشرده میکنند.
- آنها به کلاینتهای سبک اجازه میدهند تراکنشها را بدون دانلود کامل بلاکچین تایید کنند.
- اثبات برای یک بلوک یک میلیون تراکنشی تنها به ۲۰ هش نیاز دارد.
- این ساختار در سال ۱۹۷۹ ثبت اختراع شد و توسط Git و BitTorrent نیز استفاده میشود.
بررسی عمیق دیدگاهها
توسعهدهندگان پروتکل
تمرکز بر افزایش کارایی که به شبکههای غیرمتمرکز اجازه میدهد بدون خارج کردن سختافزارهای مصرفی از دور، مقیاسپذیر شوند.
برای مهندسان پروتکل، درخت مرکل در درجه اول یک ابزار مقیاسپذیری است. بدون پیچیدگی تایید O(log N)، بلاکچینها به محیطهای دیتاسنتر محدود میشدند، جایی که تنها سرورهای سازمانی توانایی تامین پهنای باند برای اعتبارسنجی زنجیره را داشتند. با نگه داشتن اندازه اثباتها در محدوده کیلوبایت، توسعهدهندگان اطمینان حاصل میکنند که سختافزارهای مصرفی استاندارد — و حتی دستگاههای موبایل از طریق SPV — میتوانند در تایید بدون نیاز به اعتماد (trustless) شرکت کنند.
پژوهشگران رمزنگاری
تحلیل امنیت ریاضی درختها، با تمرکز بر مقاومت در برابر برخورد و آسیبپذیریهای کوانتومی.
رمزنگاران این ساختار را از دریچه بردارهای تهدید بررسی میکنند. نگرانی اصلی آنها اطمینان از این است که تابع هش زیربنایی (مانند SHA-256) در برابر برخورد مقاوم باقی بماند. اگر یک مهاجم بتواند دو ورودی متفاوت پیدا کند که یک هش یکسان تولید کنند، از نظر تئوری میتواند یک اثبات مرکل را جعل کند. پژوهشگران به طور فعال در حال مطالعه این موضوع هستند که چگونه محاسبات کوانتومی ممکن است این توابع هش را تضعیف کند، که این امر کاوش در الگوریتمهای مقاوم در برابر کوانتوم را برای پیادهسازیهای آینده درختها ضروری میسازد.
مهندسان سیستمهای توزیعشده
نگاه به این ساختار به عنوان یک ابزار جهانی برای یکپارچگی دادهها در کنترل نسخه و اشتراکگذاری فایل همتا به همتا.
مهندسانی که خارج از حوزه ارزهای دیجیتال کار میکنند، درختهای مرکل را به عنوان یک بلوک سازنده اساسی برای هر سیستم توزیعشدهای میبینند. در ابزارهایی مانند Git، ساختار درختی تضمین میکند که تاریخچه یک پایگاه کد غیرقابل تغییر است؛ در IPFS و BitTorrent، این ساختار به کاربران اجازه میدهد یک فایل را به طور همزمان از دهها همتای غیرقابل اعتماد دانلود کنند و هر قطعه را در برابر هش ریشه تایید کنند تا تضمین شود فایل نهایی مونتاژ شده دستنخورده است.
- 256 bits
- اندازه خروجی استاندارد هش
- 20 hashes
- حجم اثبات برای یک میلیون تراکنش
- O(log N)
- پیچیدگی زمانی جستجو
منابع
[1]Semantic Scholarپژوهشگران رمزنگاریA Certified Digital Signature
مطالعه در Semantic Scholar →
[2]Wikipediaپژوهشگران رمزنگاریMerkle tree
مطالعه در Wikipedia →
[3]GeeksforGeeksمهندسان سیستمهای توزیعشدهBlockchain Merkle Trees
مطالعه در GeeksforGeeks →
[4]Binanceتوسعهدهندگان پروتکلMerkle Tree
مطالعه در Binance →
[5]Topcoderتوسعهدهندگان پروتکلMerkle Tree in Blockchain
مطالعه در Topcoder →
[6]تیم سردبیری کوهستانمهندسان سیستمهای توزیعشدهتحلیل تیم سردبیری کوهستان
مطالعه در تیم سردبیری کوهستان →
نظرات
هر زاویه. هر روز.
دریافت راهنماها اخبار همراه با پوشش کامل منابع و تحلیل دیدگاهها، مستقیم در صندوق ورودی شما.


