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

01 · מתחילים מאפס

איך מנהלים רישום של מי שילם למי - בלי גוף אחד שמנהל אותו?

נועה רוצה להעביר לדן 30 ש״ח.

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

אבל האם חייב להיות גוף אחד שמחזיק ומנהל את הרישום הזה?

כל תשלום משנה את הרישום

נניח שלנועה יש 50 ש״ח והיא מעבירה 30 ש״ח לדן.

אחרי התשלום, הרישום צריך להראות שלנועה נשארו 20 ש״ח ולדן נוספו 30 ש״ח.

לפני התשלום

נועה
50 ש״ח
דן
0 ש״ח

אחרי התשלום

נועה
20 ש״ח
דן
30 ש״ח

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

פעולה כזאת נקראת עסקה.

כשגוף אחד מנהל את הרישום, הוא גם מעדכן אותו

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

נועה: 50 → 20 דן: 0 → 30

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

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

בלי גוף אחד, אפשר לשמור עותקים של הרישום אצל מחשבים רבים ברחבי העולם

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

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

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

שינוי בעותק אחד לא הופך אותו לאמת.

כשמישהו רוצה לשלם, הבקשה נשלחת לרשת

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

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

כל מחשב ששומע על הבקשה יכול להסתכל במה שכבר רשום אצלו ולשאול שאלה פשוטה:

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

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

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

הבעיה: לא כולם שומעים על כל תשלום בדיוק באותו רגע

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

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

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

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

אותו רישום התחלתי

נועה
50
דן
0
מאיה
0
תמונה מקומית זמנית, לפי המידע שהגיע למחשב עד עכשיו.

מחשב 1 שמע קודם על דן

רישום התחלתי
נועה
50
דן
0
מאיה
0
  1. נועה → דן 30עובר את הבדיקה
  2. נועה → מאיה 30נדחה - נשארו רק 20

תוצאה מקומית

נועה
20
דן
30
מאיה
0

מחשב 2 שמע קודם על מאיה

רישום התחלתי
נועה
50
דן
0
מאיה
0
  1. נועה → מאיה 30עובר את הבדיקה
  2. נועה → דן 30נדחה - נשארו רק 20

תוצאה מקומית

נועה
20
דן
0
מאיה
30

אותו רישום התחלתי. אותה בדיקה. סדר הגעה שונה. תוצאה שונה.

אז איך כולם ממשיכים מאותו רישום?

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

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

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

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

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

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

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

לכן צריך משהו מעבר ל-„הרוב אמר”.