מהו עץ מרקל? מדריך למתחילים לרכיב הבלוקצ'יין הזה

עצי מרקל הם מרכיב בסיסי בבלוקצ'יין העומד בבסיס הפונקציונליות שלהם. הם מאפשרים אימות יעיל ומאובטח של מבני נתונים גדולים, ובמקרה של בלוקצ'יין, ערכות נתונים שעלולות להיות חסרות גבולות.

ליישום עצי מרקל בבלוקצ'יין יש השפעות מרובות. זה מאפשר להם לבצע קנה מידה תוך מתן ארכיטקטורה מבוססת hash עבורם כדי לשמור על שלמות הנתונים ודרך טריוויאלית לאמת את שלמות הנתונים.

פונקציות גיבוב קריפטוגרפיות הן הטכנולוגיה הבסיסית שמאפשרת לעצי מרקל לעבוד, אז ראשית, חשוב להבין מהן פונקציות גיבוב קריפטוגרפי.

פסק דין מהיר: עצי מרקל הם מבני נתונים המורכבים מגיבובים קריפטוגרפיים המאפשרים אימות תקינות ומיפוי יעיל של מערכי נתונים גדולים, מה שהופך אותם למרכיב אינטגרלי של מערכות כמו בלוקצ'יין ובקרת גרסאות מבוזרת.


בקצרה

נקודות מפתחתיאור
פונקציות גיבוב קריפטוגרפיותפונקציות Hash שלוקחות קלט בכל גודל ומוציאות ערך hash באורך קבוע. משמש בעצי מרקל.
מבנה עץ מרקלמבנה נתוני עץ שבו כל צומת שאינו עלה הוא גיבוב של הצמתים הצאצאים שלו. מאפשר מיפוי ואימות יעיל של מערכי נתונים גדולים.
חשיש שורשחשיש בראש עץ מרקל המייצג את הגיבוב של העץ כולו. פועל כטביעת אצבע עבור מערך הנתונים המלא.
מרקל הוכחהאפשר אימות של שלמות הנתונים והמיקום בעץ מבלי להזדקק למערך הנתונים המלא, רק hash שורש.
הטמעה בביטקויןעצי מרקל מאחסנים עסקאות בבלוקים. Hash Root המאוחסן בכותרת הבלוק מאפשר לצמתי SPV לאמת עסקאות.
יישומי בלוקצ'יין אחריםמשמש בבלוקצ'יין רבים כמו Ethereum שמשתמש בעצי מרקל פטרישה מורכבים יותר.
מערכות מבוזרותאפשר למערכות בקרת גרסאות כמו Git ו-IPFS לאמת בקלות נתונים המשותפים בין עמיתים.

פונקציות Hash קריפטוגרפיות

במילים פשוטות, פונקציית hash היא כל פונקציה המשמשת למיפוי נתונים בגודל שרירותי (קלט) לפלט בגודל קבוע. אלגוריתם גיבוב מוחל על קלט הנתונים והפלט המתקבל באורך קבוע מכונה ה-hash.

אלגוריתמי גיבוב רבים זמינים ברבים וניתן לבחור אותם על סמך הצרכים שלך.

ה-hash המתקבל מהקלט השרירותי לא רק קבוע באורך, הוא גם ייחודי לחלוטין לקלט והפונקציה עצמה דטרמיניסטית. כלומר, לא משנה כמה פעמים תפעיל את הפונקציה על אותו קלט, הפלט תמיד יהיה זהה.

לדוגמה, אם יש לך את מערכי הנתונים הבאים כקלט, הפלטים המתקבלים הם ייחודיים עבור כל קלט. שימו לב איך בדוגמה השנייה והשלישית, למרות שההבדל בין הקלטים הוא רק מילה אחת, הפלטים המתקבלים שונים לחלוטין.

זה חשוב מאוד מכיוון שהוא מאפשר "טביעת אצבע" של נתונים.

פונקציית hash קריפטוגרפית, תמונה מויקיפדיה

מכיוון שאורך הפלט (סכום הגיבוב בדוגמה) תמיד זהה לזה שנקבע על ידי אלגוריתם הגיבוב המשמש, ניתן לזהות כמויות אדירות של נתונים אך ורק באמצעות הגיבוב המתקבל.

עם מערכות המכילות כמויות אדירות של נתונים, היתרונות של היכולת לאחסן ולזהות נתונים עם פלט באורך קבוע יכולים ליצור חיסכון עצום באחסון ולעזור להגביר את היעילות.

בתוך בלוקצ'יין, משתמשים באלגוריתמי hashing כדי לקבוע את מצב הבלוקצ'יין.

Blockchains הן רשימות מקושרות המכילות נתונים ומצביע גיבוב המצביע על הבלוק הקודם, ויוצרות שרשרת של בלוקים מחוברים, ומכאן השם "בלוקצ'יין".

כל בלוק מחובר זה לזה באמצעות מצביע גיבוב, שהוא ה-hash של הנתונים בתוך הבלוק הקודם יחד עם הכתובת של הבלוק הקודם. על ידי קישור בלוקים של נתונים בפורמט זה, כל hash שנוצר מהבלוק הקודם מייצג את כל המצב של הבלוקצ'יין שכן כל הנתונים הגיבובים של הבלוקים הקודמים עוברים hash אחד.

זה מיוצג (במקרה של אלגוריתם SHA-256) על ידי פלט (hash) כגון זה:

b09a57d476ea01c7f91756adff1d560e579057ac99a28d3f30e259b30ecc9dc7

ה-hash למעלה הוא טביעת האצבע של כל מצב הבלוקצ'יין לפניו. המצב של הבלוקצ'יין לפני הבלוק החדש (כנתונים גיבובים) הוא הקלט, וה-hash המתקבל הוא הפלט.

למרות שניתן להשתמש ב-hashs קריפטוגרפיים ללא עצי מרקל, זה מאוד לא יעיל ולא ניתן להרחבה. שימוש ב-hashes לאחסון נתונים בבלוק בפורמט סדרה הוא זמן רב ומסורבל.

כפי שתראה, עצי מרקל מאפשרים רזולוציה טריוויאלית של שלמות הנתונים, כמו גם מיפוי של הנתונים הללו דרך העץ כולו באמצעות הוכחות מרקל.


מרקל עצי ומרקל הוכחות

עצי מרקל, שנקראו על שם ראלף מרקל, אשר רשם פטנט על הרעיון בשנת 1979, הם עצי מבנה נתונים כאשר כל צומת שאינו עלים הוא גיבוב של צמתי הצאצא שלו.

בלוטות העלים הם השכבה הנמוכה ביותר של צמתים בעץ. בהתחלה, זה אולי נשמע קשה להבנה, אבל אם תסתכל על הדמות הנפוצה למטה, זה יהפוך הרבה יותר קל להבנה.

עץ האש

דוגמה לעץ חשיש בינארי, תמונה מויקיפדיה

חשוב לשים לב כיצד הצמתים או ה"ענפים" שאינם עלים (מיוצגים על ידי Hash 0-0 ו- Hash 0-1) בצד שמאל, הם גיבוב של ילדיהם L1 ו-L2 בהתאמה. בנוסף, שימו לב כיצד ענף Hash 0 הוא ה-hash של ילדיו המשורשרים, ענפי Hash 0-0 ו-Hash 0-1.

הדוגמה שלמעלה היא הצורה הנפוצה והפשוטה ביותר של עץ מרקל המכונה עץ מרקל בינארי. כפי שניתן לראות, ישנו חשיש עליון שהוא הגיבוב של העץ כולו, המכונה חשיש השורש. בעיקרו של דבר, עצי מרקל הם מבנה נתונים שיכול לקחת "n" מספר גיבובים ולייצג אותו ב-hash בודד.

מבנה העץ מאפשר מיפוי יעיל של כמויות נתונים גדולות באופן שרירותי ומאפשר זיהוי קל של היכן מתרחשים שינויים בנתונים אלו. תפיסה זו מאפשרת הוכחות מרקל, שבאמצעותן מישהו יכול לאמת שה-hash של הנתונים הוא עקבי לאורך כל העץ ובמיקום הנכון מבלי להסתכל בפועל על כל מערך הגיבובים.

במקום זאת, הם יכולים לאמת שגוש נתונים תואם את ה-hash הבסיס על ידי בדיקת תת-קבוצה קטנה של ה-hash בלבד ולא את מערך הנתונים כולו.

כל עוד ה-Root Hash ידוע בציבור ומהימן, זה אפשרי לכל מי שרוצה לבצע חיפוש מפתח-ערך במסד נתונים להשתמש בהוכחה של Merkle כדי לאמת את המיקום והשלמות של פיסת נתונים בתוך מסד נתונים שיש לו שורש מסוים.

כאשר ה-hash השורש זמין, ניתן לקבל את עץ ה-hash מכל מקור שאינו מהימן וניתן להוריד ענף אחד של העץ בכל פעם עם אימות מיידי של שלמות הנתונים, גם אם העץ כולו אינו זמין עדיין.

אחד היתרונות החשובים ביותר של מבנה עץ Merkle הוא היכולת לאמת קבוצות נתונים גדולות באופן שרירותי באמצעות מנגנון גיבוב דומה המשמש לאימות כמויות נתונים קטנות בהרבה.

העץ הוא יתרון להפצת קבוצות גדולות של נתונים לחלקים קטנים יותר הניתנים לניהול כאשר המחסום לאימות תקינות מצטמצם באופן משמעותי למרות גודל הנתונים הגדול יותר.

ה-Root hash יכול לשמש כטביעת אצבע עבור מערך נתונים שלם, כולל מסד נתונים שלם או מייצג את כל המצב של בלוקצ'יין. בסעיפים הבאים, נדון כיצד ביטקוין ומערכות אחרות מיישמות עצי מרקל.


עצי מרקל בביטקוין

פונקציית הגיבוב ההצפנה המופעלת על ידי ביטקוין היא אלגוריתם SHA-256. זה מייצג "Secure Hashing Algorithm", שהפלט שלו הוא באורך קבוע של 256 סיביות. התפקיד הבסיסי של עצי מרקל בביטקוין הוא לאחסן ובסופו של דבר לגזום עסקאות בכל בלוק.

כפי שהוזכר קודם לכן, בלוקים בבלוקצ'יין מחוברים באמצעות hashes של הבלוק הקודם. בביטקוין, כל בלוק מכיל את כל העסקאות בתוך הבלוק הזה וכן את כותרת הבלוק המורכבת מ:

  • מספר גרסה חסום
  • הקודם Block Hash
  • חותם זמן
  • יעד קושי בכרייה
  • ללא
  • מרקל שורש האש

התמונה למטה היא מהספר הלבן של ביטקוין וממחישה כיצד עץ המרקל משתלב בכל בלוק.

עץ מרקל

העסקאות נכללות בבלוקים על ידי כורים ומועברות גיבוב כחלק מעץ מרקל, המוביל לשורש מרקל המאוחסן בכותרת הבלוק. לעיצוב זה יש מספר יתרונות ברורים.

במיוחד, כפי שמתואר בספר הלבן, זה מאפשר קיום של צמתים של אימות תשלום פשוט (SPV), הידוע גם בשם "לקוחות קלים". הצמתים האלה לא חייבים להוריד את כל הבלוקצ'יין של הביטקוין, רק את כותרות הבלוק של השרשרת הארוכה ביותר.

צמתי SPV יכולים להשיג זאת על ידי ביצוע שאילתות לצמתי העמיתים שלהם עד שהם משוכנעים שכותרות הבלוק המאוחסנות שעליהן הם פועלים הן חלק מהשרשרת הארוכה ביותר. צומת SPV מסוגל לקבוע את מצבה של עסקה על ידי שימוש בהוכחת Merkle כדי למפות את העסקה לעץ Merkle ספציפי עם ה-hash השורש של עץ Merkle בהתאמה בכותרת בלוק שהיא חלק מהשרשרת הארוכה ביותר.

בנוסף, הטמעת עצי מרקל של ביטקוין מאפשרת גיזום של הבלוקצ'יין על מנת לחסוך במקום. זוהי תוצאה של רק ה-hash השורש מאוחסן בכותרת הבלוק, לכן, בלוקים ישנים ניתן לגזום על ידי הסרת ענפים מיותרים של עץ מרקל תוך שמירה רק על אלו הדרושים להוכחת מרקל.


הטמעת עצי מרקל בבלוקצ'יין ומערכות אחרות

למרות שביטקוין היה הבלוקצ'יין הראשון שהטמיע עצי מרקל, בלוקצ'יין רבים אחרים מיישמים מבני עצי מרקל דומים או אפילו גרסאות מורכבות יותר.

יתרה מכך, יישום עץ Merkle אינו מוגבל רק ל- blockchains והוא מיושם על מגוון מערכות אחרות.

Ethereum, בהיותו המטבע הקריפטוגרפי השני המוכר ביותר, הוא גם דוגמה מצוינת ליישום אחר של עץ מרקל. מכיוון ש-Ethereum מושלם כפלטפורמה לבניית יישומים הרבה יותר מורכבים, הוא משתמש בגרסה מורכבת יותר של עץ מרקל הנקראת Merkle Patricia Tree שהיא למעשה 3 עצי מרקל נפרדים המשמשים לשלושה סוגים של אובייקטים. אתה יכול ללמוד עוד על העצים האלה כאן.

לבסוף, עצי מרקל הם מרכיב חשוב במערכות בקרת גרסאות מבוזרות כמו Git ו-IPFS. היכולת שלהם להבטיח ולאמת בקלות את שלמות הנתונים המשותפים בין מחשבים בפורמט P2P הופכת אותם לבעלי ערך רב למערכות אלו.


סיכום

עצי מרקל הם מרכיב אינטגרלי של בלוקצ'יין ומאפשרים להם לפעול ביעילות ללא ניתנות להוכחה ולשלמות העסקה.

הבנת התפקיד שהם ממלאים ברשתות מבוזרות והטכנולוגיה הבסיסית שלהן של פונקציות גיבוב קריפטוגרפיות חיונית לתפיסת המושגים הבסיסיים בתוך מטבעות קריפטוגרפיים כשהם ממשיכים להתפתח למערכות גדולות ומורכבות יותר.

מקור: https://blockonomi.com/merkle-tree/