درخت مرکل چیست؟ نقش درخت هش باینری در ساختار بلاکچین
دنیای کریپتوکارنسی، محبوبتر از قبل شده و بههمین دلیل است که هر معاملهگر یا تریدری باید درک صحیح و کامل از دانش ارزهای دیجیتال داشته باشد. فناوری نوظهور بلاکچین، هسته اصلی بسیاری از پلتفرمهای غیرمتمرکز دنیای ارزهای دیجیتال محسوب میشود. بلاکچینها از فناوریهای پیچیدهای تشکیل شدهاند که درخت مرکل (Merkle Tree) فقط یکی از آنهاست. درخت مرکل، در طول ۵ سال اخیر در پلتفرمهای معتبر و ارزشمندی مثل بیت کوین (BitCoin) و اتریوم (Ethereum) بهکار گرفته شده است. درک مفهوم و ساختار درختهای مرکل میتواند، چشماندازی عمیق و کامل از عملکرد شبکههای بلاکچین ارائه دهد؛ اما چگونه؟
در این مقاله از بلاگ صرافی ایرانی والکس قصد داریم تا به کالبدشکافی مفهوم درخت هش باینری مرکل بپردازیم و اجزای آن را زیر ذرهبین قرار دهیم. ساختار درخت Merkle، برای تایید و حفظ یکپارچگی تراکنشها در معاملاتی که در دفتر کل غیرمتمرکز (decentralizied ledger) قرار دارند، مورد استفاده قرار میگیرد. البته قضیه درخت هش باینری مرکل، خیلی پیچیدهتر از این صحبتهاست و برای درک بهتر آن، پیشنهاد میکنیم که با ما همراه شوید.
درخت مرکل چیست؟
درخت هش باینری مرکل، یک ساختار پیچیده و قدرتمند است که میتواند برای بررسی سریع و آنی دادهها در یک مجموعه مورد استفاده قرار بگیرد. این ساختار منظم، معمولاً شامل چندین تابع هش (Hash Function) است که بهطور عمده و گسترده در فناوری بلاکچین مورد استفاده قرار میگیرند.
درخت Merkle که با عنوان درخت هش (Hash Tree) هم شناخته میشود، برای اولینبار توسط رالف مرکل (Ralph Merkle) در دهه ۸۰ میلادی معنی پیدا کرد. درختهای مرکل غالباً با شبکههای همتابههمتا (P2P) در نظر گرفته میشوند و برای بهاشتراکگذاری اطلاعات و تایید مستقل دادهها مورد استفاده قرار میگیرند. درخت مرکل، سازوکاری شبیه به یک سوپاپ اطمینان دارد و یکی ازبرجستهترین کاراییهای آن، تایید بیقیدوشرط اعتبار اطلاعات و دیتا است.
درخت هش باینری مرکل، نقش بسیار پررنگ و کارآمدی در ساختار شبکه بلاکچین بیت کوین ایفا میکند. ایفای این نقش پررنگ، با قرار دادن هش برای نمایش اطلاعات و دادهها امکانپذیر میشود. به درخت Merkle، درخت هش باینری هم میگویند؛ چرا که تعداد گرههای معروف به Leaf node در آن باید زوج باشند تا درخت بهدرستی ساخته شود.
درخت هش باینری چه ساختاری دارد؟
برای درک بهتر درخت مرکل باید ساختار آن را بررسی کنیم و اجزای تشکیلدهنده آن را مورد واکاوی قرار دهیم. فناوری بلاکچین از هزارانهزار بلاک مجزا و مستقل تشکیل شده است که هرکدام از آنها میتوانند دادهها را برای هزاران تراکنش مختلف آمادهسازی و ذخیره کنند. بسته به اینکه قرار است چه تعداد تراکنش در یک بلاک ثبت شود، رسیدگی به نیازهای مربوط به قدرت محاسباتی و فضای حافظه هم میتواند چالشبرانگیز باشد. در این میان، درخت مرکل میتواند تراکنشها را بدون استفاده از دادههای زیاد به تایید برساند. این کار باعث میشود که حجم پردازش CPU کاهش پیدا کند و در عین حال، قدرت امنیت شبکه هم بالا برود.
وقتی به ساختار یک درخت مرکل نگاه میکنیم، همه تراکنشها را بهصورت جفتجفت و در قالب گروهبندیهای مجزا میبینیم. هر جفت تراکتش دارای یک هش محاسبه شده است که مستقیماً در نود یا گره Parent node ذخیره میشود. این گرهها هم بهصورت جفتجفت گروهبندی و پس از آن، هش آنها در سطوح بعدی ذخیره میشوند. این فرآیند منظم تا رسیدن به ریشه یک درخت مرکل ادامهدار است.
در حال حاضر ۳ نوع گره (نود) در ساختار درخت هش باینری مرکل یافت میشوند که عبارتند از:
- گره برگ (Leaf node): از مقادیر هش برای دادعهای یک تراکنش تشکیل شده است. هر تراکنشی که در یک بلاک قرار دارد، از دادههای هششده تشکیل میشود. نهایتاً مقادیر هش در گرههای موسوم به Leaf node ذخیره میشوند.
- گره غیر برگ (Non-leaf node): این نودها از مقادیر هش میانی تشکیل شدهاند و تا زمانی که فرآیند مورد نظر به ریشه درخت مرکل برسد، مورد استفاده قرار میگیرند.
- گره ریشه (Root node): ریشه هر درخت Merkle مستقیماً در بخش هدر (Header) هر بلاک ذخیره میشود.
تاریخچهای کوتاه در مورد درخت Merkle
درخت Merkle، برای اولینبار توسط رالف مرکل در ۱۹۸۰ توسعه یافت. مرکل، دانشمند و پؤوهشگر علم کامپیوتر بود و سالها روی موضوع رمزنگاری کلید عمومی (Public Key Cryptography) کار میکرد. گرچه تمامی کارهای مربوط به توسعه مفهوم و ساختار درخت Merkle در دهه ۸۰ شکل گرفتند، اما مفهوم درخت هش برای اولینبار توسط مرکل و یکسال قبل از توسعه آن (یعنی در سال ۱۹۷۹) شکل گرفت.
ریشه یک درخت هش باینری چه ساختاری دارد؟
یکی از مهمترین اجزای تشکیلدهنده درختهای مرکل، ریشه آنهاست. ریشه مرکل (Merkle Root)، یک نوع تکنیک ریاضی است که حقایق و دادههای مربوط به درخت هش باینری را مورد تایید قرار میدهد. وقتی که این درخت برای دنیای کریپتوکارنسی و بازار ارزهای دیجیتال مورد استفاده قرار میگیرد، ریشه مرکل باعث میشود تا در مورد عدم تغییر بلاکهای داده، سلامت ساختارشان و کامل بودنشان اطمینان حاصل شود.
نگاهی به سازوکار و نحوه عملکرد درخت مرکل
وظیفه و مسئولیت درخت Merkle، تجزیه قطعات بزرگ دادهها به قطعات بسیار کوچکتر است و باعث میشود که تمامی تراکنشهای یک بلاکچین بهموقع تایید شوند. یک درخت هش باینری، هر تراکنش را با استفاده از یک نشانه کوچک (مثل اثر انگشت) از مجموعهای خاص از تراکنشها خلاصه میکند. این فرآیند نسبتاً پیچیده باعث میشود تا پس از تایید، دسترسی به تراکنشها برای کاربران و معاملهگران آسان شود.
درختهای مرکل از پایین به بالا ساخته میشوند و در جریان آن، هر تراکنش بهصورت جداگانه از هش تشکیل میشود. درخت مرکل، با هش کردن جفتگرههای مختلف، شروع به ساخته شدن و شکل گرفتن میکند. این شکل گرفتن تا زمانی که فقط یک هش باقی بماند، ادامه پیدا میکند. فرض کنید که درخت Merkle از ۴ تراکنش مختلف تشکیل شده است که با نامهای W، X، Y و Z شناخته میشوند. هر تراکنش پیشازاینکه هش آن مستقیماً روی گره Leaf Node ذخیره شود، هش میشود. سپس، هر جفت گره Leaf node، از طریق هش کردن تراکنش W و هش X در یک گره parent node خلاصه میشود. نهایتاً، این کار به تشکیل هش WX منجر میشود.
اگر هش تراکنش Y و هش تراکنش Z با هم هش شوند، هش نهایی YZ شکل میگیرد. هر دوی این هشها یکبار دیگر هم هش میشوند تا ریشه مرکل شکل بگیرد و درخت، از پایین به بالا ساخته شود. این فرآیند را میتوان با استفاده از مجموعه دادههای گسترده و بزرگ ایجاد کرد. ریشه درخت مرکل، مسئول خلاصه کردن دادههایی است که در تراکنشهای خاص وجود دارند و همه بهصورت مستقیم در هدر بلاک ذخیره میشوند. این تکنیک باعث میشود تا یکپارچگی دادهها در سیستم شبکه بلاکچین بهدرستی حفظ و ذخیره شود. درصورتیکه یکی از اجزای تراکنشها در نقطهای دچار تغییر شود، ریشه مرکل بهصورت خودکار و با توجه به تراکنش، دستخوش تغییرات میشود.
۳ مزیت برجسته درخت مرکل برای تایید تراکنشها
درخت هش باینری، مزایا و دستاوردهای مثبتی برای فناوری بلاکچین و پلتفرمهای ارز دیجیتال دارد. برجستهترین مزیت این درخت هش باینری، تایید تراکنشها و تشخیص سریع دستکاری در ساختار آنهاست. در ادامه به ۳ مزیت مهم این درخت اشاره میکنیم.
- فرآیند کارآمد تایید دادهها: تایید یکپارچه و یکدست تراکنشها هیچوقت آسان نیست. بهدلیل ساختار دادهها، حافظه بسیار کمی در طول فرآیند تایید تراکنشها استفاده میشود. درخت Merkle، تمامی فرآیند تایید یکپارچه تراکنشها را بهصورت منظم و بینقص انجام میدهد.
- تشخیص دستکاری: ساختار هش، تشخیص دستکاری در تراکنشها را برای ماینرها (miners) آسان میکند. ازآنجاییکه هر تراکنش در درخت Merkle بهعنوان یک هش ذخیره میشود، اگر جزئیات آن تغییر کند، همانطور و با حفظ تغییرات به سطوح بالای درخت میرسد. در نهایت، پسازاینکه ریشه مرکل (در هدر بلاک) با ریشه مرکل در دادهها مقایسه شود، دستکاری تشخیص داده میشود.
عدم تاخیر: استفاده از درخت Merkle باعث میشود تا انتقال دادهها در شبکه بلاکچین بدون هیچ تاخیری انجام شود.
بررسی نقش درخت مرکل در شبکههای بلاکچین
مطالعات نشان میدهند که درختهای مرکل برای تقویت و کارآمدی فناوری بلاکچین ضروری و حیاتی هستند؛ چرا که با وجود این درختهاست که میتوان تایید تراکنشها را سریع و آسان انجام داد. یکی از مهمترین ویژگیهای درخت مرکل، این است که هیچ تکنیک جایگزینی برای آن وجود ندارد. این درخت، به توسعهدهندگان اجازه میدهد تا مجموعههای بسیار بزرگی از داده را فشردهسازی کنند و از شر دادههای غیرضروری خلاص شوند. توسعهدهندگان میتوانند، دادههای باقیمانده را به هش تبدیل کنند و فعالیتهای جدیدی را از سر بگیرند. ویژگیهای مختلفی که درختهای مرکل برای شبکههای بلاکچین به ارمغان میآورند، عبارتند از:
- ساختار بسیار سبک و کمحجم
- مقیاسپذیری موثر و کارآمد
- تایید آنی و آسان این مسئله که تراکنشها در یک بلاک بهخصوص گنجانده شدهاند
- احراز هویت اولیه برای پرداخت
بررسی کاربردهای درخت مرکل در انواع بلاکچینها
از ساختار درختهای مرکل و ریشه آنها بهصورت گسترده در بسیاری از پلتفرمها و بلاکچینهای دنیای کریپتوکارنسی استفاده شده است. در ادامه به چند مورد از کاربردهای درخت Merkle اشاره میکنیم.
بیت کوین
بیت کوین، به روشهای مختلفی از درختهای مرکل استفاده میکند که در نهایت، ساختار کلی پلتفرم Bitcoin را شکل میدهند. بهعبارت سادهتر، درختهای مرکل در هر هدر بلاکهای بیت کوین وجود دارند و هش برای هر تراکنش مورد استفاده قرار میگیرد. وقتی که از بیت کوین و شبکه بلاکچین آن صحبت میشود، درک ریشه مرکل برای استخراج BTC و تایید تراکنشهای آن، اهمیت دارد.
استخراج ارز دیجیتال (Mining)
بلاکهای بیت کوین شامل هدرهایی هستند که متا دیتا (اَبَرداده) و فهرست بلندبالایی از تراکنشها را شامل میشوند. این فهرست، معمولاً از هدر بلاکهای شبکه بیت کوین بزرگتر و حجیمتر هستند. ماینرها، دادهها را اصطلاحاً هش میکنند تا به یک خروجی برای اعتبارسنجی بلاک جدید دست پیدا کنند. ماینرها میتوانند قبلازاینکه بلاک معتبری را پیدا کنند، هزارانهزار تلاش دیگر را انجام دهند. هر تلاش، به تغییر یک عدد در هدر بلاکها نیاز دارد. ریشههای مرکل این امکان را فراهم میکنند تا فرآیند فوق، آسانتر شود.
هنگامی که فرآیند ماینینگ یا استخراج ارز دیجیتال شروع میشود، دستهبندی تراکنشها در قالب درخت Merkle میتواند روند کار را بهتر جلوه دهد. پسازاینکه تراکنشها با توجه به ریشه مرکل دستهبندی شدند، میتوان هش ریشه را در هدر بلاک قرار داد. در این مرحله کافی است که ماینر، هدر بلاک را خلاف کل بلاک، هش کند.
اتریوم
شبکه اتریوم (Ethereum)، بر اساس یک نسخه تغییر یافته از درخت مرکل شکل گرفته است. بههمین دلیل است که به شبکه اتریوم، درخت مرکل پاتریشیا (Merkle Patricia Tree) هم گفته میشود. هر بلاک در بلاکچین اتریوم از ۳ درخت مرکل تشکیل شده است.
- ریشه اول، بهعنوان یک ریشه برای هر معامله یا تراکنش در نظر گرفته میشود.
- ریشه دوم، وضعیت معامله مورد نظر را نشان میدهد.
- ریشه نهایی یا ریشه سوم، برای وصول معامله و انجام شدن تراکنش مورد استفاده قرار میگیرد.
کاربران شبکه اتریوم میتوانند به ریشه مرکل نگاه کنند تا متوجه شوند، تراکنش مورد نظرشان در یک بلاک خاص یافت میشود یا خیر. همچنین، امکان دریافت موجودی حساب با توجه به کاربرد درخت مرکل در شبکه اتریوم، ممکن است.
بلاکچین، جهانی پر از جزئیات
درخت مرکل، برای پلتفرمهای ارز دیجیتال و بهمنظور اطمینان از فرآیند تایید تراکنشها مورد استفاده قرار میگیرد. بدون بهرهمندی از این ساختار، فرآیند تایید تراکنشها بسیار زمانبر و طاقتفرساست؛ چرا که دادهها برای تایید تراکنشها باید در تمامی شبکه منتقل شوند. همه پلتفرمهایی که از درختهای مرکل استفاده میکنند، معمولاً پهنای باند و توان محاسباتی کمتری نسبت به سایرین دارند.
نظر شما در مورد مفهوم و عملکرد درخت هش باینری چیست؟ آیا میتوان از این ساختار برای پلتفرمهایی که توان محاسباتی قدرتمندی هستند هم استفاده کرد؟ بهنظر شما چه ایرادی در این ساختار وجود دارد؟ نظرتان را برای خوانندگان والکس بنویسید و برای انجام معاملات ارز دیجیتال در ایران، روی امکانات و سروریسهای ما حساب کنید.
گام قبلی (۲۰/۲۷) گام بعدی