הטכנולוגיה שמאחורי ביטקוין



חלקים מתוך הספר "הטכנולוגיה שמאחורי ביטקוין"

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

לרכישת הספר (פיזי או דיגיטלי) לחצו כאן - https://sale-page.greeninvoice.co.il/bitcoin-book


תוכן הפרקים

הקדמה

רקע

1. המדריך הקצר - להכיר בלי להעמיק

2. מפתחות וכתובות

3. ארנקים

4. טרנזקציות

5.  חתימות דיגיטליות

6. עמלות

7. רשת הביטקוין

8. הבלוקצ'יין

9. כְּרִיַּת ביטקוין

10. אבטחה

11. שימושים נוספים בבלוקצ'יין של ביטקוין


הקדמה

כתיבת הספר התחילה במהלך חודשי המילואים הראשונים של מלחמת "חרבות ברזל". החלטתי להיכנס לעומק הטכנולוגיה שמאחורי ביטקוין ולכתוב עליה מאמר בבלוג שלי שנקרא "מתכנת פשוט" (http://meta-pa.blogspot.com), בו אני כותב מדי פעם מאמרים ומדריכים מקיפים על כל מיני נושאי תוכנה. תוך כדי הלימוד והכתיבה התברר לי שמדובר על נושא רחב מאוד, ואורך המאמר כבר מצדיק לשנות את הגדרתו מ"מאמר" ל"ספר".

עברתי מכתיבה ב-Blogger ל-Google Docs ואז ל-Word ושיניתי את הסגנון למשהו שמתאים יותר לספר. עדיין השתדלתי לשמור על שפה פשוטה וזורמת מאשר ספרותית ומסובכת, כי הבנת הדברים חשובה בעיניי יותר מאשר סגנונם.

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

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

ייחודיות הספר היא בשני אופנים:

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

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

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

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

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

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

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

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

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

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

רקע

בשנת 2008 פורסם המאמר הראשוני שמתאר את רעיון הביטקוין תחת הכותרת: "Bitcoin: A Peer-to-Peer Electronic Cash System". 

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

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

הבעיה המרכזית שהפרוטוקול מבקש לפתור, ועד אז לא נמצא לה פתרון מספק, היא בעיית השימוש הכפול (double-spending) - מצב שבו נעשה שימוש באותו מטבע יותר מפעם אחת. הפתרון החדשני שמוצע לבעיה זו במאמר, הוא מנגנון קונצנזוס בשם Proof of Work, המהווה את הבסיס הטכנולוגי של הבלוקצ'יין. מנגנון זה גם מספק הגנה על הרשת מפני התקפות, וכן מאפשר חזרה לאחידות במקרה של מחלוקות.

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

המערכת של ביטקוין ממשיכה להתפתח כל הזמן. הצעות לשינויים ושיפורים בפרוטוקול נקראות Bitcoin Improvement Proposals, או בקיצור BIP. לאורך הספר אציין לעיתים BIP עם מספר מסוים (למשל, BIP-32) כאשר הוא רלוונטי לנושא המדובר, כדי להפנות את הקורא למקור הטכני של הנושא. כל ה-BIPs מנוהלים ב https://github.com/bitcoin/bips, אבל יותר פשוט לחפש בגוגל, למשל "BIP-32", ולקבל לינק ישיר למקור. 

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

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

ולבסוף, מבחינת השימוש בשפה האנגלית, אני חושב שנכון להכיר את מילות המפתח של הנושא באנגלית ולכן מילות מפתח לא תרגמתי אלא השתמשתי במילים באנגלית.


1. המדריך הקצר - להכיר בלי להעמיק

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

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

הבלוקצ'יין

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

מה שהופך את הבלוקצ'יין לשרשרת הוא הקשר שבין כל בלוק לבלוק הקודם לו. הקשר הזה מתבטא בכך שכל בלוק מכיל את המזהה (Block ID) של הבלוק שקדם לו. לצורך ההמחשה, נצייר את הבלוקצ'יין כשרשרת בלוקים אנכית שבה הבלוק הראשון למטה וכל בלוק חדש נכנס לראש השרשרת. כל בלוק יצביע על הבלוק הקודם לו. הבלוק הראשון בשרשרת מכונה ה-Genesis Block והבלוק החדש ביותר מכונה Top או Tip.



מהסיבה הזו משתמשים במושג גובה הבלוק (Block height) כדי לתאר את מיקום הבלוק בשרשרת האנכית הזו. גובה הבלוק הראשון הוא 0, גובה הבלוק הבא הוא 1 וכן הלאה.

כל בלוק מורכב משני חלקים:

Header - מכיל מידע טכני כמו timestamp, nonce, ומזהה הבלוק הקודם

Body - מכיל את רשימת הטרנזקציות שיש בבלוק

לכל בלוק יש מזהה ייחודי המכונה Block ID שהוא תוצאה של פונקציית hash על ה-Header של הבלוק, וכיוון שה-Header כולל גם את ה-Block ID הקודם - כל שינוי ב-Block ID של הבלוק הקודם ישנה את ה-Block ID של הבלוק הנוכחי. 

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

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

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

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

בפרקטיקה:

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

בסכומים בינוניים - מקובל לחכות לכריית 6 בלוקים נוספים על גבי הבלוק שלנו (זמן של שעה בממוצע).

בסכומים גבוהים - ממתינים אפילו ל-100 בלוקים חדשים (ביום יש בממוצע 144 בלוקים) כדי להיות בטוחים באישור הסופי של הטרנזקציה.

מהו סכום קטן, בינוני וגדול? כל אחד יקבע לעצמו.

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

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

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

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

(המשך בספר)


מפתחות וכתובות

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

שלושה מושגים יסודיים בביטקוין הם: 

מפתח פרטי

מפתח ציבורי

כתובת ביטקוין

הארנק יוצר מפתח פרטי ← ממנו נגזר מפתח ציבורי ← ממנו נגזרת כתובת ביטקוין. 

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

המפתח הציבורי נגזר מהמפתח הפרטי בצורה חד-כיוונית: אפשר לחשב את המפתח הציבורי מהפרטי, אך לא להפך. 

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

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

(המשך בספר)


ארנקים

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

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

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

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

נרחיב מעט על כל קריטריון:

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

ארנק קר - מנותק מהאינטרנט (למשל דיסק און קי או אפילו נייר מודפס). הרבה יותר בטוח, אבל פחות נגיש ונוח.

ארנק תוכנה - אפליקציה או תוכנה במחשב.

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

ארנק קסטודיאני - מישהו אחר מחזיק את המפתחות בשבילך (כמו שקורה בבנק). זה סוג הארנק בבורסות הקריפטו המרכזיות כמו Binance, Coinbase או Kraken.

ארנק לא-קסטודיאני - רק אתה שולט במפתחות. זו הדרך לשלוט בעצמך על הביטקוין שלך בלי תלות בגורם אחר. יש משפט מפורסם בקהילת הביטקוין שאומר " Not your keys, not your coins".

(המשך בספר)


כְּרִיַּת ביטקוין

כל עשר דקות בממוצע נוצר בלוק חדש בבלוקצ'יין של ביטקוין. לתהליך הזה ניתן השם "כְּרִיָּה" (mining), בדומה לכריית מתכות מהאדמה. מספר סיבות לשם זה. 

בדומה לכריית מתכות:

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

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

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

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

צילום המסך הבא נלקח מהאתר https://www.blockchain.com ובו רואים את בלוק 937,800 ואת הטרנזקציות הראשונות שנמצאות בבלוק:


(המשך בספר)


4. טרנזקציות

רקע

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

לכל טרנזקציה יש מזהה ייחודי - txid. לפעמים הוא נקרא גם Transaction Hash. המזהה הזה מתקבל ע"י הפעלת פונקציית SHA256 פעמיים על כל תוכן הטרנזקציה. 

txid = SHA256 ( SHA256 ( transaction_data ) )

מקרה מעניין מהעבר: בתחילת ימי הביטקוין בשנת 2010 היו שני מקרים (בלוק 91722 עם 91880, וכן בלוק 91812 עם 91842) שבהם נוצרו טרנזקציות coinbase (טרנזקציה מיוחדת שקיימת בכל בלוק ועליה יוסבר בהמשך) עם txid זהה. זאת משום שהתוכן של הטרנזקציות היה זהה לחלוטין. כדי למנוע מקרים כאלו הוצע תיקון ב-BIP-30. 

התיקון שהוצע היה להכניס חוק חדש לקונצנזוס של ביטקוין, שאסור לכרות בלוק המכיל טרנזקציה עם txid שכבר קיים בבלוקצ'יין, כאשר עדיין נותר בו output שעוד לא נוצל, כלומר, עדיין יש בו UTXO. אם בלוק כזה נכרה ומופץ ברשת - הוא ידחה ע"י שאר הצמתים.

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

טרנזקציה מורכבת מ-inputs (כתובות שמהם נשלח הכסף), ו-outputs (כתובות שאליהם נשלח הכסף):

input - כתובת שמהווה מקור לביטקוין, כלומר מוציאה כסף.

output - כתובת יעד, כלומר מקבלת כסף.

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

הטרנזקציה הבאה היא מבלוק 825,034 (צילומי מסך מהאתר blockchain.com), וניתן לראות שהיא מכילה שתי outputs:


מבנה הטרנזקציה

הטרנזקציה בנויה מהשדות הבאים:
הטבלה הבאה מתארת את גודל השדות ותפקידם:

מיד נעבור על כל שדה ונסביר אותו

(המשך בספר)


6. עמלות

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

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

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

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

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

למרות זאת, קיימת גם אפשרות שהמקבל ישלם את העמלה, אך זו תתבצע באמצעות טרנזקציה נפרדת, כפי שנראה בהמשך (שיטת Child Pays For Parent או בקיצור CPFP). אך כדאי לזכור שהעמלה לא משנה את גודל הטרנזקציה ולכן יעיל יותר לשלם אותה בטרנזקציה אחת ולא בטרנזקציה נפרדת.

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

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

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

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

(המשך בספר)


9. כְּרִיַּת ביטקוין

כל 10 דקות בממוצע נוצר בלוק חדש בבלוקצ'יין של ביטקוין. לתהליך הזה ניתן השם "כְּרִיָּה" (mining), בדומה לכריית מתכות מהאדמה.

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

מי שמצליח לכרות מתוגמל. מי שכורה ביטקוין זוכה בביטקוין, מי שכורה זהב זוכה בזהב.

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

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

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

אז מה הן הפעולות שכורה עושה?

1. אוסף טרנזקציות חדשות

2. בודק את תקינותן

3. אם הן תקינות - מפיץ אותן ברשת

4. בונה מהן בלוק חדש

5. מנסה לפתור "חידה" מתמטית קשה עבור הבלוק החדש

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

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

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

המיוחד בחידה זו הוא:

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

למרות שקשה מאוד לפתור אותה, קל מאוד לבדוק שהפתרון נכון

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

למה כמות הביטקוין מוגבלת?

פרוטוקול הביטקוין בנוי כך שכמות הביטקוין מוגבלת. אז איך זה קורה? 

אי שם בתחילת שנת 2009 כשהתחילה רשת הביטקוין, כל מי שכרה בלוק חדש קיבל בתמורה 50 ביטקוינים חדשים שנוצרו בבלוק החדש. האלגוריתם של רשת הביטקוין עובד כך שכל 210,000 בלוקים (מבחינת זמן, זה בערך כל 4 שנים) התמורה שמקבלים בכריית בלוק קטנה פי 2. ולכן ב-2012 הפרס נחתך ל-25 ביטקוינים, וב-2016 נחתך שוב ל-12.5 ביטקוינים. ב-2020 הוא נחתך ל-6.25 ביטקוינים, והפעם האחרונה שהפרס נחתך הייתה באפריל 2024 והוא הגיע ל-3.125 ביטקוינים.

נכון לינואר 2026 מספר הביטקוינים הקיימים הוא כ-19.98 מיליון. ואנו צפויים להגיע לכמעט 21 מיליון (ליתר דיוק 20.99999998 מיליון) בשנת 2140. 


(המשך בספר)













אין תגובות:

הוסף רשומת תגובה