חזרה להתחלה
חמישה רעיונות. אפשר להתחיל מכל אחד.

02 · Bitcoin

איך Bitcoin מאפשר למחשבים רבים להסכים מה נרשם?

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

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

Bitcoin משתמש בשיטה שמאפשרת למחשבים רבים להגיע בסופו של דבר לאותו רישום - בלי גוף אחד מרכזי.

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

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

היא מנסה להשתמש באותו כסף פעם אחת כדי לשלם לדן ופעם אחת כדי לשלם למאיה.

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

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

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

עסקאות נכנסות לרישום בתוך בלוקים

עסקה היא בקשה לשנות את הרישום. למשל: נועה מעבירה 30 ש״ח לדן.

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

החבילה הזאת נקראת בלוק - Block.

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

אבל אם אין מנהל שמחליט מה יהיה העדכון הבא - מי יוצר אותו?

כורים מנסים ליצור את הבלוק הבא

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

כל כורה מכין בלוק אפשרי ומנסה שוב ושוב חישוב שקשור אליו.

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

כורה שמוצא תוצאה מתאימה יכול לפרסם את הבלוק שלו לרשת.

החיפוש החישובי הזה נקרא Proof of Work - הוכחת עבודה.

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

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

הצמתים עדיין בודקים כל בלוק

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

הם בודקים שהתשלומים שבו עומדים בכללים, שלא נעשה שימוש בכסף שכבר הוצא, ושגם ה-Proof of Work תקין.

אם משהו לא תקין - הם דוחים את הבלוק.

אז יש כאן שני תפקידים שונים:

כורים מנסים ליצור ולהציע את הבלוק הבא.

צמתים בודקים אם אפשר לקבל אותו.

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

כל בלוק חדש מתחבר למה שכבר נרשם

בלוק חדש לא עומד בפני עצמו.

הוא כולל הפניה לבלוק שקדם לו. הבלוק הבא יפנה אליו, וכן הלאה.

כך נוצר רצף של בלוקים מחוברים.

לרצף הזה קוראים Blockchain - בלוקצ׳יין.

במילים פשוטות, כל בלוק אומר:

„אני ממשיך מכאן.”

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

מידע ברשת לוקח זמן לעבור ממחשב למחשב.

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

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

לרגע יש שני המשכים אפשריים לאותה שרשרת.

שני הבלוקים יכולים להיות תקינים.

מצב כזה נקרא Fork - הסתעפות זמנית.

אז על איזה ענף ממשיכים?

הצמתים ממשיכים בענף הכבד יותר

כל בלוק דורש Proof of Work.

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

מבין הענפים התקינים, Bitcoin מגדיר לצמתים להמשיך עם הענף שבו הצטברה יותר Proof of Work.

אפשר לחשוב עליו כעל הענף הכבד יותר.

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

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

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

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

ככל שמצטברת יותר עבודה, קשה יותר לשנות את העבר

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

אחריו מצטברת עוד עבודה, ואז עוד עבודה.

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

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

מכאן מגיע גם הרעיון של אישורים - Confirmations.

אין מספר קסם שהופך תשלום ל-100% בלתי הפיך. הביטחון מתחזק בהדרגה.

אז מה Bitcoin בעצם עושה?

צמתים בודקים עסקאות ובלוקים בעצמם.

כורים מתחרים באמצעות Proof of Work על ההזדמנות להציע את הבלוק הבא.

הבלוקים מתחברים זה לזה ויוצרים Blockchain.

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

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

ומה אם רוצים שהרשת תעשה יותר מאשר לרשום מי שילם למי?

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

אבל מה אם אפשר לקבוע מראש גם מה יקרה לכסף אם תנאי מסוים מתקיים?

למשל:

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

ומה אם המחשבים ברשת יכולים לבצע את הכלל הזה בעצמם?

המשך: Ethereum
קצת יותר עומק - אופציונלי

דוגמה לערך שאפשר להוציא

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

איך בודקים הרשאה?

חתימה דיגיטלית מאפשרת לבדוק שבקשה מורשית, בלי לחשוף את המפתח הפרטי.

שני ענפים יכולים להיות תקינים

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

אישורים מחזקים את הביטחון בהדרגה

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

מקורות

המקורות החיצוניים באנגלית.