فناوری بلاک چین از ابتدای پیدایش تاکنون، تحولی بنیادین در صنایع گوناگون ایجاد کرده و باعث پیشرفتهای خیرهکنندهای در بخشهای مختلف شده است. بیشک میتوانیم مهمترین دستاورد این فناوری را تأمین امنیت شبکه بیت کوین و سایر ارزهای دیجیتال مشابه بدانیم. دراینمیان، آنچه کارایی این فناوری را در شبکه مالی گستردهای مانند بیت کوین تضمین میکند، مجموعهای از ساختارهای ریاضی وابسته به علم رمزنگاری و هشینگ (Hashing) است. یکی از ساختارهای اساسی داده در فناوری بلاک چین درخت مرکل (Merkle Tree) است که به بلاک چین اجازه میدهد حجم عظیمی از دادهها را پردازش و ذخیره کنند.
درخت مرکل ساختار دادهای شبیه به درخت دارد و از چند هش مختلف تشکیل شده است که اطلاعات تراکنشها را در خود جای دادهاند. درخت مرکل را میتوان یکی از ستونهای اصلی تأمین امنیت و کارایی شبکههای مبتنیبر بلاک چین مانند بیت کوین دانست که با ساختارهای عظیم داده سروکار دارند. بهدلیل اهمیتی که این ساختار دارد، این مقاله را به بررسی درخت مرکل اختصاص دادهایم. درادامه پس از آشنایی با مفهوم درخت مرکل و تاریخچه آن، به چگونگی کارکرد این ساختار نگاهی خواهیم انداخت. سپس، به وظایف درخت مرکل و اهمیت آن در بلاک چین اشاره میکنیم. پس تا انتهای این مطلب همراه ما باشید.
درخت مرکل (Merkle Tree) چیست؟
درخت مرکل که درخت هش (Hash Tree) نیز نامیده میشود، ساختار دادهای شبیه به درختی وارونه دارد که میتواند حجم زیادی از داده را بهصورت ایمن پردازش و خلاصهسازی کند. درخت مرکل در علوم رایانهای، بهویژه رمزنگاری کاربردهای متعددی دارد. بلاک چین نیز یکی از فناوریهایی است که از این مفهوم استفاده میکند.
بلاک چین از درخت مرکل برای پردازش و درعینحال کاهش حجم دادههای رمزنگاریشده بهشکلی مؤثر و ایمن استفاده میکند. در هر بلاک، تراکنشها و دادههای فراوانی جای میگیرند. درخت مرکل مقادیر هش (Hash Value) هر تراکنش یا همان شناسه تراکنش (Transaction ID) را بهصورت مجزا در نظر میگیرد و باهم ترکیب میکند تا شاخهای جدید ایجاد کند.
برای اینکه بهتر بتوانید عملکرد درخت مرکل را تصور کنید، هش تراکنشها را بهعنوان برگهای درخت در نظر بگیرید. هر دو برگ باهم جفت میشوند و زیر تابع هش (بهعنوان مثال تابع SHA۲۵۶ در بلاک چین بیت کوین) قرار میگیرند. حاصل این ترکیب هش جدیدی است که ردّپایی از دو هش قبلی را در خود دارد. درادامه، درخت این هش جدید را با هش جدید دیگری که از دو تراکنش دیگر بهدست آمده، جفت میکند تا هش جدیدتری ایجاد شود.
بیشتر بخوانید: بلاک در بلاک چین بیت کوین چیست و در داخل آن چه چیزی وجود دارد؟
این مسیر هشینگ ادامه پیدا میکند تا درنهایت به هشی واحد به نام ریشه مرکل (Merkle Root) دست پیدا کنیم که همان هش اصلی بلاک است. هش نهایی خلاصه پردازششده از تمام دادههای تراکنشهاست که اثرانگشت هریک از تراکنشها را در خود جای داده است.
تاریخچه درخت مرکل
درخت مرکل قدیمیتر از فناوری بلاک چین است. این ابداع در سال ۱۹۸۹ ثبت شد و بهافتخار استاد دانشگاه استنفورد، رالف مرکل (Ralph Merkle)، «مرکل» نام گرفت. مرکل با انتشار مقالهای درباره امضاهای دیجیتالی با عنوان «یک امضای دیجیتال تأییدشده» (A Certified Digital Signature) این طرح را توضیح داده بود. چند دهه پیش از ابداع بیت کوین، از علم رمزنگاری بهمنظور ایمنسازی دادهها در توسعه نرمافزار استفاده میشد. درخت مرکل یکی از روشهای محاسبه حجم عظیمی از دادهها و صرفهجویی در حافظه بود.
این فرایند روشی معتبر برای اعتبارسنجی دادههای هش در پایگاههای دادهای است که با حجم عظیمی از اطلاعات سروکار دارند. مقاله مرکل در وایت پیپر بیت کوین بهعنوان یکی از اجزای اصلی این شبکه مطرح شده و جالب است بدانید شخصِ رالف مرکل هم یکی از حامیان ارزهای دیجیتال است و حامی سازمانهای خودگران غیرمتمرکز یا دائوهاست.
بیشتر بخوانید: دائو (DAO) چیست؟ آشنایی با بهترین پروژههای سازمان خودگردان غیرمتمرکز
ریشه مرکل (Merkle Root) چیست؟
همانطورکه پیشتر اشاره کردیم، ریشه مرکل هش واحد و نهایی کل درخت مرکل است که خلاصهای از تمام دادههای بلاک را در خود دارد. ریشه مرکل بهعنوان چکیدهای از هر بلاک در هِدِر (Header) یا سربرگ آن ذخیره میشود و یکپارچگی دادهها را حفظ میکند.
درواقع، از ریشه مرکل برای سنجش صحت بلاکهای قبلی استفاده میشوند. هر بلاک فقط میتواند یک ریشه مرکل داشته باشد. با کوچکترین تغییری در تراکنشهای بلاک، ریشه مرکل هم تغییر میکند. بنابراین، اگر بخواهیم خیلی سریع و ساده بررسی کنیم که آیا تراکنشی در یک بلاک جای گرفته یا خیر، فقط کافی است به ریشه مرکل آن رجوع کنیم.
درخت مرکل چگونه کار میکند؟
در این روش، هش تمام تراکنشهای مرتبط دوبهدو باهم زیر تابع هش قرار میگیرند تا درنهایت، به هشی نهایی به نام ریشه مرکل برسیم. برای این منظور، تعداد ورودیهای هش باید زوج باشند. اگر تعداد هشها فرد باشد، هش آخر یک بار تکرار و سپس با خودش جفت میشود.
فرض کنید ۲۰۰ تراکنش در انتهای درخت مرکل دارید که زیر تابع هش ابتدا به ۵۰، سپس به ۱۰، درادامه به ۵ و در آخر به ۱ هش خلاصه میشوند. هش نهایی یا همان ریشه مرکل نماینده تمام ۲۰۰ هش قبلی گروه محسوب میشود؛ زیرا هر تغییر کوچکی در تراکنشها ممکن است نتیجه نهایی ریشه مرکل را تغییر دهد. این مسئله دستکاری تراکنشها را عملاً غیرممکن میکند.
برای مثال، در تصویر زیر شاهد چهار هش تراکنش C ،B ،A و D هستید. با جفتشدن این چهار هش به دو هش AB و CD میرسیم، درنهایت با هش واحد ABCD روبهرو هستیم که ریشه مرکل و نماینده چهار هش قبلی است. البته این تصویر کاملاً سادهسازی شده است و درختهای مرکل عموماً حجم بسیار گستردهتری از دادهها را پردازش و خلاصه میکنند. بااینحال، در مجموعه دادههای بزرگتر نیز با هشینگ متوالی میتوان به هشی واحد دست یافت.
توجه کنید که درخت مرکل صرفاً فهرستی از تراکنشها نیست؛ زیرا حتی بدون دسترسی به تمام تراکنشها، میتوانید هر شاخه از تراکنش را بهصورت مجزا اعتبارسنجی کنید. بدینترتیب، اگر نسخه اولیه مخدوش شود، میتوان بخشهای کوچکتر دادهها را مجدداً بررسی کرد.
مزایای درخت مرکل
درخت مرکل مزایای متعددی به سیستم پردازش داده اضافه میکند که برخی از آنها عبارتاند از:
- ایجاد روشی کارآمد و سریع برای اثبات صحت و اعتبار دادهها
- کاهش میزان داده موردنیاز برای صحتسنجی اطلاعات شبکه
- کاهش حافظه موردنیاز برای نگهداری دادههای شبکه
- امکان اعتبارسنجی به روش تأیید پرداخت ساده (SPV) برای کلاینتهای لایت بیت کوین (در این روش، لایتنودها به بررسی حداقلی اطلاعات بسنده میکنند)
- سهولت انتقال و انتشار داده به سرتاسر شبکه
- امکان بررسی بخشهای مجزای بلاکها بدون نیاز به دراختیارداشتن تمام اطلاعات
- دسترسی به بخشهای مجزای داده بدون نیاز به بارگیری تمام اطلاعات
درخت مرکل و بلاک چین
علم رایانه از واژه «درخت» برای توصیف هر ساختار دادهای که منشعب میشود، استفاده میکند. درختهای مرکل درختهای وارونهای با برگهای پایین و ریشه یگانه و واحدی در بالا هستند. بهطورکلی، درخت مرکل در بلاک چین از سه بخش مهم تشکیل میشود:
- نودها یا گرههای برگی
- نودها یا گرههای غیربرگی
- ریشه مرکل
در پایینترین بخش درخت مرکل، با نودهای برگی سروکار داریم که هش تراکنش یا همان شناسه تراکنش (TXID) هستند. اگر در مرورگر بلاک چین بهدنبال تراکنش خاصی باشید، با این شناسهها روبهرو میشوید. با جفتشدن دو نود برگی، به یک نود غیربرگی میرسیم. نود غیربرگی دیگر حاوی شناسه یا همان هش تراکنش نیستند؛ بلکه فقط هش دو نود برگی پایینتر را ذخیره میکند. این نودهای غیربرگی هم جفت میشوند تا در لایه بعدی دوباره تعداد هشها نصف شود. در پایان، فقط دو نود باقی میمانند که شکلدهنده ریشه مرکل هستند.
بیشتر بخوانید: بیت کوین چگونه کار میکند و تراکنشهای آن چگونه انجام میشود؟
از ریشه مرکل میتوانیم برای اعتبارسنجی هر نود برگی یا همان شناسه تراکنشها استفاده کنیم. اگر با شیوه کارکرد بیت کوین آشنا باشید، میدانید که هِدِر هر بلاک فقط حاوی یک هش واحد است. این هش واحد همان ریشه مرکل است که گاهی به آن هش ریشه (Root Hash) هم میگویند.
کاربردهای درخت مرکل
درخت مرکل روشی برای خلاصهکردن دادههاست و بدینترتیب، میتواند تا حد زیادی نیاز به حافظه برای نگهداری دادهها را در پایگاهداده معتبری مانند بلاک چین کاهش دهد. این فناوری اعتبارسنجی دادهها را از خودِ دادهها جدا میکند. از این ساختار میتوان برای بخشی خاص یا برای کل سیستمی توزیعشده استفاده کرد.
بدینترتیب، درخت مرکل یکی از ابزار اصلی کاربران بلاک چین برای ارزیابی صحت و اعتبار دادههاست. همچنین، ازآنجاکه این فناوری به حافظه یا فضای دیسک کمی احتیاج دارد، به شبکههای بزرگتر کمک میکند تا با سرعت و سهولت بیشتری محاسبات را انجام دهند. با این ساختار، انتقال دادهها به سرتاسر شبکه هم سریعتر انجام میشود؛ زیرا مقادیر اندکی داده میتوانند دربرگیرنده اطلاعات کلی شبکه باشند.
در فناوری بلاک چین، اثبات کامل و سازگار بودن یک ورودی برای دفترکل موضوعی ضروری است. درختهای مرکل کمک میکنند تا آخرین ورودیها بههمراه تمام دادههای پیشین بهطور منظم و دقیق ثبت و اعتبارسنجی شوند.
همچنین برای اثبات صحت ورودی جدید، باید نشان دهیم که تمام دادههای قبلی بدون تغییر یا دستکاری صحیح هستند و مبدأ ورودی شاخه یا فورکی منشعبشده و نامعتبر نیست. درخت مرکل در اثبات این مسئله به ماینرها و کاربرهای بلاک چین کمک میکند؛ زیرا کوچکترین تغییر در یکی از مقادیر هش، تمام معادلات و نتیجه نهایی این ساختار را به هم میزند.
با بهکارگیری درخت مرکل، ماینرها هش تراکنشها را بهتدریج از کاربران دریافت و محاسبه میکنند. کاربران نیز میتوانند بخشهای مجزایی از بلاکها را بررسی و تراکنشهای مدنظر خود را با استفاده از هش سایر قسمتهای درخت اعتبارسنجی کنند. درواقع، درخت مرکل با جداکردن فرایند اعتبارسنجی دادهها از خود دادهها، نیاز به بارگیری حجم عظیمی از اطلاعات برای صحتسنجی دادهها را از بین میبرد.
اهمیت درخت مرکل برای بیت کوین
درخت مرکل را میتوانیم یکی از ستونهای اصلی زیربنای بیت کوین بدانیم. برای درک اهمیت این ساختار در شبکه بیت کوین، فقط کافی است بیت کوین را بدون این درختها تصور کنید.
بیشتر بخوانید: تفاوت بیت کوین و بلاک چین چیست؟
بدون درخت مرکل، هر نود بیت کوین باید نسخه کاملی از تمام دادههای مربوط به هر تراکنشی را نگهداری میکرد که تابهحال روی بیت کوین انجام شده است. صرفنظر از فضای ذخیرهسازی و پهنای باند سرسامآوری که این میزان داده احتیاج دارد، مطابقتدادن نسخههای مختلف بلاک چین بهواسطه نودها برای اطمینان از صحت آنها نیز تقریباً غیرممکن میشد.
درواقع، درخت مرکل به کاربران بیت کوین کمک میکند که هنگام بررسی تراکنشی خاص، بهجای نیاز به بررسی تمام دادهها فقط سراغ ریشه مرکل و مسیر آن بروند. همچنین، کلاینتهای لایتِ بیت کوین فقط با بارگیری هِدِر بلاک که حاوی ریشه مرکل است، میتوانند به اطلاعات بلاک دست پیدا کنند، بدون اینکه نیاز داشته باشند کل بلاک چین را بارگیری کنند.
گفتنی است درخت مرکل با کاهش حجم داده زمان موردنیاز برای انتقال دادهها به سرتاسر شبکه را نیز تا حد زیادی کاهش میدهد. درعینحال، حساسیت همین ساختار به کوچکترین تغییری در دادهها سبب میشود این انتقال بهطور کاملاً ایمن انجام شود.
بهغیر از بیت کوین، بسیاری از شبکههای بلاک چینی دیگر هم از ساختار درخت مرکل بهره میبرند؛ اما برخی از آنها روش استفاده متفاوتی از این ساختار داده دارند. بهعنوان مثال، درخت مرکل شبکه اتریوم پاتریشیا (Patricia) نامیده میشود و برای هر بلاک سه ریشه مرکل مختلف تولید میکند.
جمعبندی
درخت مرکل شیوهای کارآمد برای بهبود سرعت پردازش و انجام محاسبات لازم در سیستمهای رمزنگاری شده است. باتوجهبه اهمیتی که این مفهوم در سیستم رمزنگاریشده بلاک چین دارد، در این مطلب سعی کردیم با بیانی ساده، به درخت مرکل و عملکرد آن در بلاک چین نگاهی بیندازیم. دراینبین، با ریشه مرکل و جایگاه آن در محاسبات شبکههای بلاک چینی آشنا شدیم و به مزایای آن بیشتر پی بردیم. درنهایت، توضیح دادیم که چرا بلاک چین بیت کوین بدون ساختار درخت مرکل نمیتواند به حیات خود ادامه دهد.
درخت مرکل ضامن تغییرناپذیری و یکپارچگی دادههای بلاک چین است. علاوهبراین، این ساختار داده تاحدممکن اطلاعات را فشرده و قابلانتقال میکند. درحقیقت، درخت مرکل را میتوانیم یکی از ستون اصلی بلاک چین بدانیم که به این سیستم اجازه میدهد هرروز بزرگتر و پیچیدهتر شود و درعینحال، دچار نقصان ایمنی نشود. درک جایگاه درخت مرکل در ظهور و گسترش صنعت بلاک چین و ارزهای دیجیتال ضروری بهنظر میرسد و شاید بهجرئت بتوان گفت بدون ابداع تاریخساز این درخت داده، امروز از انقلاب بیت کوین هم خبری نبود.