0

آشنایی با درخت مرکل (Merkle Tree) و عملکرد آن

currency
بازدید 528

درخت مرکل (Merkle Tree) به طور ساده

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

عبارت “درخت مرکل” از دو جنبه مختلف تشکیل شده است. بخش اول آن به مرکل اشاره دارد که نام یک دانشمند کامپیوتر و ریاضیدان آمریکایی به نام رالف مرکل است. رالف مرکل نقش مهمی در توسعه رمزنگاری با استفاده از کلید عمومی داشته است. او در سال ۱۹۸۷ یک مقاله با عنوان “یک امضای دیجیتال بر اساس یک تابع رمزگذاری مرسوم” منتشر کرد و ایده درختان هش باینری را مطرح کرد. همچنین، او هش رمزنگاری را که در ساختار درخت مرکل استفاده می‌شود، اختراع کرد.

قسمت دوم عبارت “درخت مرکل” به ساختار آن اشاره دارد

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

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

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

روش عملکرد درخت مرکل چگونه است؟

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

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

اما ریشه مرکل چیست؟

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

نکاتی در مورد درخت مرکل

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

همانطور که پیشتر بیان شد، درختان مرکل به صورت خاص در سیستم‌های توزیع شده همتا به همتا که در آن داده‌های یکسان باید در مکان‌های مختلف موجود باشند، بسیار مفید هستند. این سیستم‌ها در عمل خود از درختان مرکل یا نسخه‌های تغییر یافته آن، مانند درخت مرکلی که بر پایه Merkle Tree ساخته شده است، استفاده می‌کنند. جالب است بدانید که Git یک سیستم کنترل نسخه محبوب است که به طور عمده توسط برنامه‌نویسان استفاده می‌شود. تمامی فایل‌های ذخیره شده در Git همواره در رایانه هر کاربر نگهداری می‌شوند. بنابراین، بسیار حائز اهمیت است که اطمینان حاصل شود که تغییرات در همه رایانه‌ها یکسان باشد. از سوی دیگر، بیتکوین یک ارز آنلاین و ناشناس محبوب است و تمامی تراکنش‌های آن در بلوک‌های بلاکچین ذخیره می‌شوند. برگ‌های درخت مرکل که در بیتکوین استفاده می‌شود، به طور معمول هش بلوک‌های تک تک هستند. هر زمان که فردی می‌خواهد بلوکچین را تغییر دهد، مانند اضافه کردن تراکنش‌ها، این تغییر باید در همه جا منعکس شود.

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

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

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

پروتکل به شرح زیر است:

  1. کامپیوتر A یک هش از فایل را به کامپیوتر B ارسال می‌کند.
  2. کامپیوتر B بررسی می‌کند که آیا هش در برابر ریشه درخت مرکل وجود دارد یا خیر.
  3. اگر تفاوتی وجود نداشته باشد، کار تمام می‌شود. در غیر این صورت به مرحله 4 می‌رویم.
  4. اگر تفاوتی در یک هش وجود داشته باشد، کامپیوتر B ریشه‌های دو زیردرخت آن هش را درخواست می‌کند.
  5. کامپیوتر A هش‌های مورد نیاز را ایجاد کرده و آن‌ها را به کامپیوتر B ارسال می‌کند.

مراحل 4 و 5 تکرار می‌شوند تا زمانی که بلوک‌های داده ناسازگار پیدا شوند. احتمال وجود بیش از یک بلوک اشتباه وجود دارد زیرا ممکن است بیش از یک خطا در داده‌ها وجود داشته باشد.

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

فرض کنید در نظر دارید یک سناریو را بررسی کنید: A، B، C و D چهار تراکنش هستند که همه در یک بلوک اجرا می‌شوند. سپس هر تراکنش هش می‌شود و در اختیارتان قرار می‌گیرد:

  • هش A
  • هش B
  • هش C
  • هش D

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

  • هش AB
  • هش CD

این دو هش سپس با یکدیگر ترکیب می‌شوند و به عنوان Merkle Root شناخته می‌شوند که از ترکیب این دو هش حاصل می‌شود: Hash ABCD.

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

چرا درخت مرکل برای بلاکچین ضروری است؟

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

با استفاده از درخت مرکل، می‌توانید با حجم داده کمتری کار کنید. درخت مرکل به شما امکان می‌دهد تا با استفاده از هش‌ها، یک خلاصه (یا “ریشه”) از تمام تراکنش‌های موجود در بلاک را بسازید. سپس با ارسال این ریشه به جای هر تراکنش، شما می‌توانید احراز هویت را انجام دهید و بقیه اعضای شبکه همچنین می‌توانند از صحت این ریشه اطمینان حاصل کنند. به این ترتیب، نیازی به ارسال تمام داده‌ها نیست و می‌توانید با استفاده از ریشه درخت مرکل تأیید کنید.

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

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

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

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

توابع هش رمزنگاری‌ شده چیست؟

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

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

در ادامه، می‌توانیم تعدادی از ویژگی‌های مهم توابع هش را مشاهده کنیم:

  1. مشخص و قطعی هستند: توابع هش دارای خروجی مشخص و قطعی هستند. به این معنی که برای هر ورودی مشخص، همیشه یک خروجی مشخص و قابل تکرار تولید می‌کنند. این ویژگی از اهمیت بالایی برخوردار است، زیرا این امکان را می‌دهد که با مقایسه خروجی‌ها، اعتبار و صحت داده‌ها را بررسی کرد.
  2. امکان مهندسی معکوسشان وجود ندارد: یکی از ویژگی‌های اساسی توابع هش، عدم امکان بازگشت به داده اصلی است. به این معنی که با توجه به خروجی تابع هش، نمی‌توان به سادگی به داده اصلی بازگشت کرد. این ویژگی تا حد زیادی امنیت و حفاظت را به ارمغان می‌آورد.
  3. محاسباتی کاربردی و مفید هستند: توابع هش برای محاسبات مختلف، به ویژه در رمزنگاری و امنیت، بسیار کاربردی و مفید هستند. زیرا عملیات هش سریع و کارآمد است و می‌تواند در بسیاری از فرآیندهای محاسباتی به طور گسترده استفاده شود.
  4. ضعف در پیداکردن دو داده با خروجی یکسان: یکی از ویژگی‌های توابع هش، ضعف در پیداکردن دو داده با خروجی یکسان است. به عبارت دیگر، احتمال برابری دو داده با یک خروجی هش یکسان بسیار کم است. این ویژگی برای حفاظت از امنیت و اجتناب از تلاش‌هایی مانند تصادفی کردن داده‌ها، بسیار حیاتی است.

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

مزایای درخت مرکل در بلاکچین:

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

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

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

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

به طور خلاصه، درخت مرکل در بلاکچین دارای مزایای بسیاری است،

از جمله اعتبارسنجی یکپارچگونگی انجام یک تابع هش

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

زمانی که می‌خواهید یک تابع هش را بر روی یک مقدار ورودی اعمال کنید، مراحل زیر را دنبال می‌کنید:

  • انتخاب الگوریتم هش: ابتدا باید الگوریتم هش مورد نظر خود را انتخاب کنید. مثال‌هایی از الگوریتم‌های هش معروف عبارتند از SHA-256، MD5 و SHA-3.
  • تهیه ورودی: برای اجرای تابع هش، باید یک مقدار ورودی معتبر را تهیه کنید. این مقدار می‌تواند یک رشته، فایل، یا هر نوع داده دیگری باشد.
  • اعمال تابع هش: مقدار ورودی را به الگوریتم هش انتخاب شده بدهید. الگوریتم هش با اعمال محاسبات خاص بر روی داده ورودی، یک مقدار هش را تولید می‌کند.
  • دریافت خروجی: خروجی تابع هش، مقدار هش تولید شده است. این مقدار معمولاً به صورت یک رشته یا بایت‌های دودویی نمایش داده می‌شود.

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

به این پست امتیاز بدید
برچسب‌ها:, ,

نظرات کاربران

  •  چنانچه دیدگاهی توهین آمیز باشد و متوجه نویسندگان و سایر کاربران باشد تایید نخواهد شد.
  •  چنانچه دیدگاه شما جنبه ی تبلیغاتی داشته باشد تایید نخواهد شد.
  •  چنانچه از لینک سایر وبسایت ها و یا وبسایت خود در دیدگاه استفاده کرده باشید تایید نخواهد شد.
  •  چنانچه در دیدگاه خود از شماره تماس، ایمیل و آیدی تلگرام استفاده کرده باشید تایید نخواهد شد.
  • چنانچه دیدگاهی بی ارتباط با موضوع آموزش مطرح شود تایید نخواهد شد.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *