جمعه 30 اردیبهشت 1401
خانه آموزش درخت مرکل (Merkle Tree)چیست؟

درخت مرکل (Merkle Tree)چیست؟

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

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

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

برای مثلا

هش اسم mohammad :

میشود : A219DEB20F118754A4280A77F842BDBF

حالا کافیست اسم mohammad  را تغییر دهیم ، و آن را به این صورت بنویسیم Mohammad.

هش میشود : 8242B65442BB32C3EB7CF13536AAC810

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

در حوزه بلاکچین، از هشینگ برای تعیین حالت بلاکچین بهره گرفته میشود.

حال که کمی با هش و زمینه‌ی آن آشنایی پیدا کردیم دوباره به درخت مرکل میپردازیم.

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

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

ابتدا هر تراکنش به طور مجزا هش می شود تا برای آن مقدار هش مشخصی ایجاد شود ، سپس مقدار هش جدید با هش تابع  همسایه ترکیب می شود و در صورت ترکیب این دو تابع، هش جدید متفاوتی تولید می شود.مثلا مقدار هش X3  و X4 ترکیب و هش میشوند و X34 تولید میشود.

در شکل بالا ۸ تراکنش با مقادیر هش مختص به خود وجود دارد.

توجه داشته باشید که هیچگاه تعداد برگ ها یا شاخه ها فرد نخواهند بود و همیشه به صورت زوج هستند تا سیستم بتواند ریشه (Root) را به راحتی شناسایی کند. هرچند اگر تعداد تراکنش‌ها فرد باشد، برای مثال ۷ تراکنش وجود داشته باشد، هش هفتم با خود جفت می‌شود تا مقدار هش جدید تولید شود.برای مثال X7 با X7 ترکیب میشود و X77 را تولید میکند. این فرآیند تا زمانی تکرار می‌شود که آخرین مقدار هش به دست آید. به این مقدار، هش ریشه یا روت می‌گویند. همان‌طور که مشاهده میکنید یک هش راس وجود دارد که هش همه‌ی درخت میباشد. این هش را با اسم روت هش یا هش ریشه می‌شناسند. در شکل بالا  هش ریشه  X12345678 است . اندازه هش ریشه  ۳۲ بایت است و در هدر بلاک قرار می‌گیرد که بیانگر خلاصه ای از اطلاعات تمام تراکنش‌هاست. این  درخت  قادر است n شاخه داشته باشد و همه‌ی آنها را در یک هش بیان کند. با استفاده از ساختار درخت مرکل می‌توان هر مقدارداده و اطلاعات  دلخواه را با کارآمدی بالا نگاشت نمود و بروز هرگونه تغییر در داده و اطلاعات  را به آسانی  شناسایی نمود . اساس این مفهوم به اثبات مرکل گره خورده که به وسیله‌ی  آن می‌توان درستی هشینگ دیتا را از پایین تا راس درخت تایید نمود و قرارگیری آن در جای صحیح را بررسی کرد؛ بدون اینکه نیاز باشد همه هش‌ها را چک نماییم. به همین جهت به وسیله‌ی اثبات هش می‌توان تنها با چک کردن یک زیرمجموعه کوچک از هش‌ها (به جای همه‌ی داده‌ها ) دریافت که یک داده  با روت هش (Hash Root) خود همخوانی دارد یا خیر. یکی از اصلی ترین مزایای ساختار درخت مرکل این میباشد که می‌توان با یک مکانزیم هش‌گیری، درستی مجموعه‌های داده و اطلاعات را  در مقدار دلخواه را مشخص نمود؛ از اطلاعات و داده های کم تا داده‌های بزرگ و بسیار درشت.

تابع هش به کار گرفته شده در بیت کوین را «الگوریتم SHA-256 » نامگذاری میکنند.

دلیل این نامگذاری این است که عبارت (SHA-256) مخفف  ((الگوریتم هشینگ امن/ Secure Hashing Algorithm)) است .خروجی این تابع طول ثابتی دارد که مقدار آن 256 بیت دارد.

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

در بیت کوین، هر بلاک دارای تعدادی تراکنش و یک سربلاک یا بلاک هِدِر (block header) میباشد.

سربلاک یا بلاک هدر شامل :

.شماره ورژن بلاک

.هش بلاک پیشین

.تایم استمپ یا برچسب زمانی

.سختی استخراج مورد نظر

.نانس

.روت هش مرکل

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

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

در کنار بیت کوین اتریوم شناخته شده ترین ارز جهان است.بعد از بیت کوین بزرگ ترین نمونه استفاده از درخت مرکل اتریوم است. اختیار درخت مرکلی که اتریوم اجرا کرده با نسخه بیت کوین تفاوت دارد. دلیل آن این است که اتریوم یک سیستم تورینگ کامل (turing-complete) است و پلتفرمی برای طراحی کارکردها و اپلیکیشن‌های پیچیده‌تر است. به همین خاطر نسخه درخت مرکل به کار رفته در اتریوم پیچیده‌تر است. این نسخه، درخت مرکل پاتریشیا (Merkle Patricia Tree) نام دارد و در حقیقت ۳ درخت مرکل جداگانه است که برای سه کار متفاوت استفاده می‌شوند. درخت مرکل یکی از اجزای اساسی سیستم‌های کنترل نسخه‌ توزیع شده است و سیستم‌هایی مانندGit و IPFS از آن بهره برده‌اند. توانایی درخت مرکل در تایید بی‌دردسر تمامیت دیتا‌ی مشترک میان کامپیوترها با فرمت P2P آن را به یک ابزار غیرقابل ارزش‌گذاری برای چنین‌ سیستم‌هایی تبدیل کرده است.

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

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

مزیت های ساختار درخت مرکل عبارتند از:

. بررسی آسان این موضوع که آیا در تراکنش‌ها مداخله‌ای صورت گرفته است یا خیر

. استفاده کمتر از منابع

. تایید آسان اضافه شدن تراکنش خاص در بلاک

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

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

تایید یک تراکنش: درخت مرکل به کاربران امکان می‌دهد تا بدون دانلود کردن کل بلاک چین، بتوانند بررسی کنند یک تراکنش مشخص در بلاک حضور دارد یا خیر. اگرچه با استفاده از کلاینت‌های سبک‌تر نظیر پروتکل SPV، کاربران می‌توانند بررسی کنند که تراکنش مورد نظرشان در بلاک چین حضور دارد یا خیر.

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

ارسال یک پاسخ

لطفا دیدگاه خود را وارد کنید!
لطفا نام خود را در اینجا وارد کنید