בלוקצ’יין מוסבר

blockchain-101

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

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

אבל איך זה עובד, ולמה הומצא?

בעיית ההוצאה הכפולה

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

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

כדוגמה, נניח שלחנה יש 10 דולר, והיא צריכה לשלם לאליס 3 דולר וליאם 5 דולר. הסוף ההגיוני והמוצלח לעסקאות אלו יביא לכך שהאנה תהיה בעלת 2 דולר, אליס עם 3 דולר וליאם עם 5 דולר. האנה לא יכולה לשלוח את אותו הכסף לאליס ולליאם באותו הזמן. אם היא הייתה עושה את זה, האנה תסיים 5 $, אליס תקבל 3 $ וליאם יקבל 5 $. האנה הייתה מייצרת בקסם 3 דולר נוספים. היא הייתה מוציאה את כספה פעמיים.

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

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

כיצד ביטקוין/בלוקצ’יין פותר את זה

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

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

הצפנת מפתח ציבורי

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

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

  • רק המפתח הציבורי יכול לפענח נתונים שהוצפנו באמצעות המפתח הפרטי המתאים
  • המפתח הציבורי יכול לאמת נתונים שנחתמו על ידי המפתח הפרטי המתאים

ניתן לשתף את המפתח הציבורי בבטחה עם אחרים, ומכאן “ציבורי”. יש לשמור את המפתח הפרטי בחשאי מטעמי אבטחה. ניתן להפיק את המפתח הציבורי מהמפתח הפרטי אך לא להיפך.

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

לעיון, כך נראה מפתח ציבורי:

305C300D06092A864886F70D01010105 00034B003048024100A251C92CCA3E7B 6599146DDB10044807B3AA1EFA8BE627 4D329765E0CC5A0EA03CA8F010524A89 2484A7C96498650220230220620230220620150220230562023056202205620620562056205620562063059

הודעה מוצפנת יכולה להיראות בערך כך:

—–BEGIN PGP ההודעה —– hIwCMavvb4t6z90BA / 42UOAdWvnzfhRG2xXyYe203CISLsn2O39vM / y640hNbSl7 U29aNGZFfLMRGn7eLZG43SWwBz4cHjphG6iAzeLftRgHkLggxXA9VpGki5PyNID9 B0rk4TpRVE3qzgTbdio69aMlK6BdAQ4zWkyxSCi0oR3Vpnh + VVZyOVyaX8etlYRM AvUTsuDYCkr1AQH + OlA4ntqhxoPP / SJpKm5ugMLYiiij8ak8V90a8IYMkYB0CzMr liOJ6ZZxQm1x8orgjL / 6Bm5EoSvN4eCCeA / xXKYAAAHXLhG47kVhJkjlPrI / U / SR 2aQEm6r + aU1s0ziU1LxF2c5DAW6cD5b4xH + EbvYrnQQJClNMh9y03SjviXvnqFDC O4M70u3iLC50 + em4PouqM1DZdoW8O5pb = vhFx —– ההודעה PGP END—–

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

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

חשיש הוא כמו חתימה דיגיטלית של הודעה. אלגוריתמים רבים, המכונים פונקציות חשיש, פותחו ליצירת חשיש, כגון MD5 ו SHA-1, אבל זה הנפוץ ביותר כיום נקרא SHA-256. פרטי החיש והמתמטיקה הכרוכה בפונקציות החשיש השונות מיותרים להבנת הבלוקצ’יין.

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

SHA-256 מייצר תמיד ערך חשיש של 256 סיביות. לדוגמה:

[מזהה טבלה = 1 /]

כפי שאתה יכול לראות, שינוי יחיד בנתונים (רישיות L במקרה זה) משנה לחלוטין את החשיש.

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

מהן שרשראות

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

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

[מזהה טבלה = 2 /]

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

מהו כרייה

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

מטרת הכורים היא לאמת את העסקאות המתבצעות בבלוקצ’יין. כאשר מספר רשתות עסקאות אומתו, הן משולבות ליצירת א לַחסוֹם של עסקאות.

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

הכורים חייבים להראות את שלהם הוכחת עבודה כדי לזכות בשכרם. ה עֲבוֹדָה לבצע הוא בעצם מציאת שדה 32 סיביות שכאשר הוא מקוצר עם ערך ה- hash של שרשרת העסקאות מייצר ערך hash נוסף עם מספר מוגדר של אפסים מובילים. שדה זה נקרא nonce. מספר האפסים המובילים שייווצרו נקבע על ידי הקושי שמשתנה לאחר שנכרת מספר קבוע של בלוקים. ככל שמספר האפסים המובילים גדול יותר, כך קשה יותר למצוא את ה- nonce. 

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

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

לשים את הבלוקצ’יין ביחד

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

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

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

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