Sebastien Rousseau

Understanding the Technology behind Blockchain

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

8 דקות קריאה
Banner for: Understanding the Technology behind Blockchain

Abstract digital ledger blocks connected by light trails on dark background.class="img-fluid clearfix"

סיכום מנהלים / נקודות מפתח

  • הבעיה. מזומן דיגיטלי מחייב פתרון בעיית ההוצאה הכפולה: מניעת הוצאת אותה יחידה פעמיים ללא מסלקה מהימנה. הדף הלבן של Bitcoin משנת 2008 פתר זאת על ידי החלפת מתווכים מהימנים בהוכחה קריפטוגרפית והסכמה מבוזרת (Nakamoto, 2008).
  • מבנה הנתונים. blockchain הוא רשימה מקושרת של בלוקים שבה כל כותרת בלוק מכילה את ה-hash SHA-256 של הכותרת הקודמת. שרשרת ה-hash הופכת את ההיסטוריה לניתנת להוספה בלבד: שינוי בלוק עבר כלשהו מבטל כל hash עוקב ומכריח תוקף לבצע מחדש את כל ה-proof-of-work העוקב.
  • Merkle trees. עסקאות בתוך בלוק מועברות ל-hash לתוך עץ Merkle בינארי. ה-hash השורשי, המאוחסן בכותרת הבלוק, מאפשר אימות יעיל של כל עסקה בודדת מבלי להוריד את הבלוק המלא — הבסיס ללקוחות SPV קלים.
  • הרחבת Ethereum. ה-Yellow Paper של Ethereum (2014) הציג את ה-EVM — מכונת ערימה דטרמיניסטית הפועלת בכל צומת מלא. חוזים חכמים הם קוד בית הנפרס בשרשרת; הם מבצעים בצורה זהה בכל הצמתים ומתיישבים אטומית, ומחליפים מתווכים מהימנים בקוד אכיפה עצמית (Wood, 2014).
  • משמעות מעשית. כל נכס מאסימן, stablecoin ופרוטוקול DeFi שנפרסו מאז 2017 פועלים על יסודות אלה. הבנת שרשרת ה-hash, עץ Merkle ומודל הביצוע של EVM היא תנאי מוקדם לעבודה עם כל מערכת מבוססת Ethereum.

הבעיה ש-Blockchain פתר #

לפני Bitcoin, תשלומים דיגיטליים הצריכו מתווך מהימן — בנק, מעבד תשלומים או בית סליקה — כדי למנוע הוצאה כפולה. אם אליס שלחה קובץ דיגיטלי המייצג £10 לבוב, שום דבר בקובץ עצמו לא מנע ממנה לשלוח עותק זהה לקרול. הפתרון בכל מערכת קיימת היה ניהול רשומות מרכזי: ספר החשבונות של הבנק אמר שהכסף הוצא, ולכן לא ניתן היה להוציאו שוב.

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

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

  2. הסכמת proof-of-work. הוספת בלוק חדש מחייבת מציאת ערך nonce כך שה-hash של הבלוק יפול מתחת לסף יעד — יקר מבחינה חישובית למציאה, זול באופן מזניח לאימות. זה הופך את כתיבת ההיסטוריה מחדש ליקרה באופן יחסי לעומק הבלוק המשתנה, כיוון שתוקף חייב לבצע מחדש את כל ה-proof-of-work מאותו בלוק ועד קצה השרשרת.

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

אבני הבניין הקריפטוגרפיות #

טכנולוגיית blockchain מרכיבה שלושה פרימיטיבים קריפטוגרפיים קיימים מראש לתוך ארכיטקטורה חדשה:

פונקציות Hash SHA-256 #

SHA-256 (Secure Hash Algorithm 256-bit) הוא חבר במשפחת SHA-2 המתוקנת על ידי NIST. הוא לוקח קלט בעל אורך שרירותי ומייצר פלט של 256 סיביות. תכונות מפתח לשימוש ב-blockchain:

Bitcoin מיישם SHA-256 פעמיים (SHA-256d) לאבטחה נוספת נגד התקפות הארכת אורך. Ethereum משתמש ב-Keccak-256, גרסת פינאליסט SHA-3.

Merkle Trees #

עץ Merkle הוא עץ בינארי של hash-ים. כל צומת עלה הוא ה-hash של עסקה. כל צומת פנימי הוא ה-hash של שני ילדיו. השורש — שורש Merkle — מסכם את כל העסקאות בבלוק בערך יחיד של 32 בייטים המאוחסן בכותרת הבלוק.

התוצאה המעשית: כדי לאמת שעסקה ספציפית נכללת בבלוק, אתה צריך רק log₂(n) hash-ים, לא את כל n העסקאות. עבור בלוק עם 2,000 עסקאות, האימות דורש 11 hash-ים במקום 2,000 — הבסיס לאימות תשלום מפושט (SPV) בלקוחות קלים.

חתימות דיגיטליות (ECDSA) #

אישור עסקאות ב-Bitcoin וב-Ethereum משתמש באלגוריתם החתימה הדיגיטלית על עקומה אליפטית (ECDSA) על עקומת secp256k1. מפתח פרטי חותם על עסקה; כל צומת יכול לאמת את החתימה באמצעות המפתח הציבורי המתאים מבלי לדעת את המפתח הפרטי. זה מבטיח שרק בעל המפתח הפרטי יכול לאשר הוצאה מכתובת.

כתובות Ethereum הן 20 הבייטים האחרונים של ה-hash Keccak-256 של המפתח הציבורי — נגזרת שהופכת כתובות לקומפקטיות וניידות תוך שמירה על קשר קריפטוגרפי לזוג המפתחות.

כיצד עובד ה-Blockchain של Bitcoin #

בלוק Bitcoin מכיל שלושה רכיבים לוגיים:

כותרת הבלוק — 80 בייטים הכוללים: גרסת הפרוטוקול, ה-hash של כותרת הבלוק הקודם, שורש Merkle של עסקאות, חותמת זמן Unix, יעד הקושי הנוכחי וה-nonce. כורים מחזרים על ה-nonce (ולפעמים על חותמת הזמן או extra-nonce בעסקת ה-coinbase) עד שה-hash הכפול SHA-256 של הכותרת נופל מתחת ליעד הקושי.

רשימת העסקאות — הקבוצה המסודרת של עסקאות הכלולות בבלוק. עסקת ה-coinbase (הראשונה) מקצה את פרס הבלוק ועמלות העסקאות לכתובת הכורה.

השרשרת — הקישור של כותרות. ה-proof-of-work המצטבר בשרשרת (סכום כל העבודה שנעשתה לייצור כל בלוק) קובע איזה fork הוא השרשרת הקנונית. צמתים תמיד עוקבים אחר השרשרת עם העבודה המצטברת הגדולה ביותר.

זמן הבלוק מיועד ל-10 דקות עבור Bitcoin. הקושי מתכוונן כל 2,016 בלוקים (כשבועיים בערך) כדי לשמור על היעד הזה בעוד קצב ה-hash הכולל של הרשת משתנה.

שכבת התכנות של Ethereum #

Ethereum הכליל את מודל העסקאות של Bitcoin מ"העברת ערך" ל"ביצוע קוד". התוספות המרכזיות:

Ethereum Virtual Machine (EVM). מכונה וירטואלית מבוססת ערימה עם מילים של 256 סיביות המבצעת בצורה דטרמיניסטית בכל הצמתים המלאים. לכל קוד פעולה יש עלות gas מפורשת. החישוב מוגבל על ידי מגבלת ה-gas של הבלוק, ומונע מלולאות אינסוף לעצור את הרשת. כל הצמתים המבצעים את אותו קוד בית באותו מצב חייבים לייצר את אותו פלט — הסכמה זו על הביצוע היא מה שהופך חוזים חכמים לבלתי-נאמנים.

חשבונות. ל-Ethereum שני סוגי חשבונות: Externally Owned Accounts (EOA) הנשלטים על ידי מפתחות פרטיים, ו-Contract Accounts שקודם מאוחסן בשרשרת. עסקה שנשלחת לכתובת חוזה מפעילה את ביצוע קוד הבית של החוזה.

מצב. המצב הגלובלי של Ethereum הוא מיפוי של כתובות למצבי חשבונות (nonce, יתרה, אחסון, hash קוד). שורש המצב — trie Patricia Merkle של כל מצבי החשבונות — נכלל בכל כותרת בלוק, מאפשר הוכחה יעילה של מצב כל חשבון בכל גובה בלוק.

Gas. משתמשים משלמים gas (ב-ETH) עבור כל פעולת EVM. Gas ממלא שתי פונקציות: הוא מפצה כורים/מאמתים על חישוב, ומגביל את המשאבים שכל עסקה בודדת יכולה לצרוך, ומונע התקפות מניעת שירות דרך פעולות יקרות.

כתיבת חוזים חכמים ב-Solidity #

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

pragma solidity ^0.8.0;

contract MyToken {
    string public name;
    string public symbol;
    uint8 public decimals;
    uint256 public totalSupply;
    mapping(address => uint256) public balanceOf;

    event Transfer(address indexed from, address indexed to, uint256 value);

    constructor(
        string memory _name,
        string memory _symbol,
        uint8 _decimals,
        uint256 _totalSupply
    ) {
        name = _name;
        symbol = _symbol;
        decimals = _decimals;
        totalSupply = _totalSupply;
        balanceOf[msg.sender] = _totalSupply;
    }

    function transfer(address _to, uint256 _value) external returns (bool) {
        require(balanceOf[msg.sender] >= _value, "Insufficient balance");
        balanceOf[msg.sender] -= _value;
        balanceOf[_to] += _value;
        emit Transfer(msg.sender, _to, _value);
        return true;
    }
}

תצפיות מרכזיות: mapping(address => uint256) הוא פריסת אחסון EVM, לא מבנה נתונים בזיכרון — קריאות וכתיבות עולות gas. require מחזיר את כל העסקה בכישלון, ומחזיר gas שלא נוצל. event Transfer פולט יומן שאינדקסורים מחוץ לשרשרת משתמשים בו למעקב אחר העברות מבלי לקרוא מחדש את המצב המלא. ה-constructor פועל פעם אחת בפריסה; קריאות עוקבות מגיעות לפונקציות הממוינות.

תקן ERC-20 פורמל ממשק משותף לאסימונים פטריים — transfer, transferFrom, approve, allowance, balanceOf, totalSupply — המאפשר לכל אסימון תואם ERC-20 לעבוד עם כל בורסה או ארנק תואם ERC-20 ללא אינטגרציה מותאמת אישית.

מספר חשבונות לתשתית פיננסית #

הפרימיטיבים של blockchain המתוארים כאן — שרשרות hash, עצי Merkle, EVM ו-ERC-20 — הפכו לבסיס לקבוצה רחבה יותר של יישומים פיננסיים בין 2018 ל-2026:

פיננסים מבוזרים (DeFi). פרוטוקולי הלוואות (Compound, Aave), יוצרי שוק אוטומטיים (Uniswap) ואגרגטורי תשואה פועלים כולם כחוזים חכמים EVM. הם מחליפים את פונקציות הסליקה, האחסנה והסדר של מתווכים פיננסיים מסורתיים בקוד מבצע עצמי ובריכות נזילות בשרשרת.

נכסים מאסימנים. בנקים מרכזיים ובנקים מסחריים מנהלים פיילוטים של פיקדונות מאסימנים, אגרות חוב מאסימנות וקרנות שוק כסף מאסימנות על גרסאות מורשות של שרשרות תואמות EVM. המכניקה הבסיסית — מעברי מצב מאובטחים ב-hash, סדר אטומי, כללי העברה תכנותיים — הם צאצאים ישירים של ארכיטקטורת Ethereum 2014.

מטבעות דיגיטליים של בנקים מרכזיים. מחקר CBDC הסיטוני של בנק אנגליה, תוכנית האירו הדיגיטלי של ה-ECB ופרויקט Agorá כולם חוקרים ארכיטקטורות DLT הנגזרות מהעיצובים הבסיסיים ב-Bitcoin וב-Ethereum או תואמות להם. מבני ההסכמה ושרשרת ה-hash נותרים רלוונטיים גם כאשר מודל ההרשאה והממשל שונה לחלוטין מ-blockchains ציבוריים.

המסע מהדף הלבן של Bitcoin ב-2008 לפיננסים המאסימנים של 2026 משתרע על פני שני עשורים, אך הוא פועל על שושלת טכנית קוהרנטית. הבנת כיצד שרשרת hash SHA-256 אוכפת בלתי-שינויות, כיצד עץ Merkle מאפשר אימות יעיל, וכיצד EVM מבצע חוזים חכמים באופן אטומי היא התנאי המוקדם להערכת כל טענה לגבי מה ה-blockchain יכול ולא יכול לעשות בשירותים פיננסיים מוסדרים.

שאלות נפוצות #

מה ההבדל בין blockchain לבסיס נתונים מבוזר?

בסיס נתונים מבוזר מסורתי משכפל נתונים על פני צמתים לזמינות וביצועים, אך האמון מרוכז — מנהל יכול לשנות רשומות. blockchain הופך חבלה ליקרה מבחינה חישובית דרך שרשרת hash והסכמה: שינוי כל רשומה היסטורית דורש ביצוע מחדש של כל ה-proof-of-work או proof-of-stake העוקב, ושכנוע הרשת לקבל את ה-fork המשתנה. התכונה המבדילה היא עמידות בפני חבלה הנאכפת על ידי קריפטוגרפיה ועיצוב תמריצים ולא על ידי בקרות גישה.

מדוע Ethereum משתמש ב-Keccak-256 ולא ב-SHA-256?

Ethereum אימץ את Keccak-256 (פינאליסט SHA-3 לפני התאמות סטנדרטיזציה של NIST) בחלקו כי מעצביו רצו עצמאות משושלת SHA-2 ש-Bitcoin כבר הסתמך עליה. ל-Keccak גם תכונות אלגבריות שונות שהפכו אותו לאטרקטיבי לפעולות EVM מסוימות. ההשפעה המעשית על מפתחים היא שגזירת כתובת Ethereum וה-hashing של חריץ האחסון משתמשים ב-Keccak-256, לא ב-SHA-256d כמו ב-Bitcoin.

מה "gas" מונע ב-EVM?

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

כיצד proof-of-stake משנה את מודל האבטחה בהשוואה ל-proof-of-work?

ב-proof-of-work, האבטחה מסופקת על ידי הוצאת אנרגיה: תקיפת השרשרת דורשת שליטה בלמעלה מ-50% מקצב ה-hash של הרשת, כלומר שליטה בלמעלה מ-50% מחומרת המחשוב והחשמל שלה. ב-proof-of-stake (בשימוש Ethereum מאז ה-Merge ב-2022), האבטחה מסופקת על ידי הימור כלכלי: מאמתים נועלים ETH כבטחון, אשר מקוצץ אם הם חותמים על בלוקים סותרים. התקפת 51% דורשת רכישת וסיכון של יותר מ-50% מכל ה-ETH המוהמר — עלות הון ולא עלות חומרה ואנרגיה. מודל האבטחה שונה אך ניתן להשוואה מתמטית מבחינה כלכלית בהנחה שמאמתים רציונליים מעדיפים הכנסות מעמלות על פני הרס הון.

הפניות #

נסקר לאחרונה .

נסקר לאחרונה .