כיצד SHA256 וכרייה מגנים על רשת הביטקוין PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

כיצד SHA256 וכרייה מגנים על רשת הביטקוין

איך ביטקוין מוגן על ידי אנרגיה? ומה זה נון? שאלות אלו ועוד נענות בפנים!

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

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

אתה לא צריך להבין איך עובד ביטקוין כדי ליהנות ממנו, בדיוק כמו איך אתה לא צריך להבין איך TCP/IP עובד כדי להשתמש באינטרנט. אבל תמשיך, כי זה די מעניין ואני אעשה את זה קל להבנה, אני מבטיח.

פונקציות Hash

נתחיל עם סכימה שאסביר להלן...

כיצד SHA256 וכרייה מגנים על רשת הביטקוין PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.
(גרפי/@jirols_btc)

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

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

עבור SHA256, הפלט הוא מספר של 256 סיביות (לא צירוף מקרים).

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

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

הקסדצימלי פירושו שבמקום 10 סימנים אפשריים כמו שאנחנו רגילים עם עשרוני (0 עד 9), יש לנו 16 סימנים (העשרה שאנחנו רגילים אליהם, 0-9, בתוספת האותיות a, b, c, d, e, ו-f; בעלי הערכים 11 עד 15). כדוגמה, כדי לייצג את הערך של 15 עשרוני בהקסדצימלי, אנחנו פשוט כותבים "f" וזה אותו ערך. יש הרבה מידע זמין באינטרנט עם חיפוש מהיר בגוגל אם אתה צריך פירוט נוסף.

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

כיצד SHA256 וכרייה מגנים על רשת הביטקוין PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

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

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

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

48,635,463,943,209,834,798,109,814,161,294,753,926,839,975,257,569,795,305,637,098,542,720,658,922,315

ומומר לבינארי זה:

11010111000011010110010011100111111111100110100111111001110000110011101011010111000000001001110111111110101101000111111010101110100011110101101101001001110101010100010001011110001110101001001110000000001111001010010110111011011011110000111010110110100101111010111001101011100110101110011010111001101011100110101110011010111001101011100111

רק מתוך עניין, הנה אותו ערך ב בסיס 64.

1w1k5/5p+cM61wCd/rR+ro9bSdVEXjqTgDylu28OtpY=

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

0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

והערך הגדול ביותר האפשרי הוא:

1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111

בעשרוניות, זה:

115,792,089,237,316,195,423,570,985,008,687,907,853,269,984,665,640,564,039,457,584,007,913,129,639,935

בהקסדצימלי, זה:

פפפפפפפפפפפפפפפפפפפפפפפפפפפפפפפ

שימו לב שיש בדיוק 64 F.

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

0000000000000000000000000000000000000000000000000000000000000000

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

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

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

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

כרייה

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

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

הקלד אותו בדיוק, תלוי רישיות, כולל הנקודה. אתה אמור לקבל את הפלט הזה:

כיצד SHA256 וכרייה מגנים על רשת הביטקוין PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

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

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

המילה "Nonce" אמורה להיגזר מ"מספר בשימוש פעם אחת בלבד", אבל אני לא רואה אותה.

שימו לב להלן כיצד רק הוספת "Nonce:" ככותרת שדה נוספת משנה את פלט ה-hash.

כיצד SHA256 וכרייה מגנים על רשת הביטקוין PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

הפלט עדיין לא מתחיל עם "0", אז בואו נוסיף קצת שטויות (הוספתי "x" חסר משמעות):

כיצד SHA256 וכרייה מגנים על רשת הביטקוין PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

זה עדיין לא מתחיל באפס. ניסיתי עוד כמה תווים עד שה-hash התחיל באפס:

כיצד SHA256 וכרייה מגנים על רשת הביטקוין PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

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

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

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

כיצד SHA256 וכרייה מגנים על רשת הביטקוין PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

ה-hash מתחיל עם "f" ולא "0", אז אני אצטרך לנסות כמה ערכים בשדה nonce:

כיצד SHA256 וכרייה מגנים על רשת הביטקוין PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

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

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

אני אוסיף שדה זמן לבלוק הבא כי אני צריך את זה כדי להסביר את "התאמת הקושי" הבא:

כיצד SHA256 וכרייה מגנים על רשת הביטקוין PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

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

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

מנצח בלוק

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

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

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

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

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

התאמת הקושי

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

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

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

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

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

הנה הבלוק הבא:

כיצד SHA256 וכרייה מגנים על רשת הביטקוין PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

שימו לב לשעה. חלפו יותר מ-10 דקות מהחסימה הקודמת (רק הקדשתי את הזמן להדגמה). היעד של 10 דקות הוא הסתברותי; לעולם לא ידוע מתי בדיוק יימצא הבלוק הבא.

התעסקתי במקלדת דקה עד שהופיעו שני אפסים. זה היה קשה יותר באופן אקספוננציאלי מאשר למצוא אפס בודד. הסיכוי למצוא שני אפסים ברצף הוא 1 ל-162, או סיכוי של 1 ל-256.

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

בדיוק חיפשתי את בלוק הביטקוין האמיתי האחרון, שמכיל את ה-hash של הבלוק הקודם. ה-hash היה:

000000000000000000084d31772619ee08e21b232f755a506bc5d09f3f1a43a1

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

מספר הניסיונות לשנייה ידוע כ"קצב הגיבוב". נכון לעכשיו, שיעור ה-hash העולמי המוערך הוא קצת פחות מ-200 מיליון טרהאש לשנייה (טרהאש אחד הוא טריליון חשיש). עם כל כך הרבה ניסיונות לשנייה, בלוק עם hash שמתחיל ב-19 אפסים נמצא בערך כל 10 דקות.

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

המחצית

כשהביטקוין התחיל לראשונה, יוצרו 50 ביטקוין עם כל בלוק. הכללים של הבלוקצ'יין של ביטקוין קובעים שאחרי כל 210,000 חסימות התגמול יקצץ בחצי. הרגע הזה מכונה "החצייה", ומתרחש בערך כל ארבע שנים. החצייה, בשילוב עם הקושי בהתאמה לשמור על בלוקים במרווחים של 10 דקות, פירושו שבסביבות שנת 2140, תגמול הבלוק יהיה 0.00000001, או 1 סאטושי, היחידה הקטנה ביותר של ביטקוין, ואי אפשר להפחית אותו בחצי יותר. הכרייה לא תיפסק, אבל תגמול החסימה יהיה אפס. מאותו רגע לא ייווצר ביטקוין חדש בהמשך ומספר הביטקוין ניתן לחישוב מתמטי וקרוב מספיק ל-21 מיליון מטבעות. כך ידוע ההיצע הכולל - הוא מוגדר באופן תוכניתי.

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

איך בדיוק נחתך פרס הבלוק בחצי? זה נמצא בקוד המוחזק על ידי הצמתים. הם יודעים לדחות כל בלוק חדש אחרי 210,000 שבו כורה משלם לעצמו מעל 25 ביטקוין. ואז לדחות כל חסימה אחרי 420,000 שבו כורה משלם לעצמו מעל 12.5 ביטקוין, וכן הלאה.

עמלות על העסקה

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

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

בנוסף לעסקת המטבעות, יש עסקאות של אנשים שמשלמים זה לזה. הנה דוגמה דמיונית:

כיצד SHA256 וכרייה מגנים על רשת הביטקוין PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

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

סאטושיס כללה את המילים, "קנצלר על סף חילוץ שני לבנקים" בבלוק הביטקוין הראשון (The Genesis Block), אחרי כותרת העיתון של היום.

כיצד SHA256 וכרייה מגנים על רשת הביטקוין PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

הנקודה כאן היא שיש 132 עסקאות כלולות (לא כולן מוצגות). תסתכל על עסקה מס' 132 – 2.3 ביטקוין מכתובת משלם 2.1 ביטקוין לכתובת אחרת וגם לכתובת שנייה סכום 0.1 ביטקוין (השתמשתי בנקודות כדי לקצר את אורך הכתובת).

אז מקור של 2.3 ביטקוין משלם בסך הכל 2.2 ביטקוין (2.2 + 0.1 = 2.2). האם חסר 0.1 ביטקוין? לא, ההבדל נתבע על ידי הכורה, כפי שאסביר.

הכורה רשאי לשלם לעצמו 25 ביטקוין כפרס הבלוק (מכיוון ש-210,000 בלוקים עברו כך שהתגמול ירד בחצי מ-50 ל-25). אבל אם תסתכל, עסקת המטבעות היא 27.33880022. תוספת 2.33880022 הביטקוין מגיעה מ-132 העסקאות האחרות בבלוק - התשומות כולן יהיו מעט גדולות יותר מסך התפוקות. אז הכורה זוכה לתבוע את הביטקוין ה"נטוש" הזה כתשלום לעצמו. אלה נחשבים עמלות עסקה המשולמות לכורה.

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

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

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

האם ניתן לכתוב בלוק מחדש?

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

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

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

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

מה קורה אם שני כורים מוצאים בלוק בו זמנית?

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

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

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

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

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

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

נספח

מדוע בלוק של כורה מהשני אינו חוקי

נניח שבלוק 700,000 נכרה זה עתה על ידי MINER-A. שלושים שניות לאחר מכן, MINER-B יצרה גם גרסה אחרת של בלוק 700,000. כאשר MINER-B משדר את החלופה הזו, כל צומת עומד לדחות אותה מכיוון שהם כבר ראו וקיבלו את החסימה של MINER-A. מה שכן, ב-30 השניות האלה, נניח ש-MINER-C מצא בלוק 700,001. בהתחשב בכך שהגוש ה-700,000 המתחרה של MINER-B אינו מאריך את השרשרת הנוכחית (שעד 700,001), הוא נדחה גם מסיבה זו.

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

עם זאת, אם Miner-B מצא את הבלוק 700,000 שנייה אחת לאחר ש-MINER-A מצא, אז יתכן שצמתים מסוימים רואים את הבלוק של MINER-A תחילה בעוד שאחרים רואים את הבלוק של MINER-B ראשון, בהתאם למיקומים גיאוגרפיים ולמהירות האינטרנט. במקרה כזה, יש מזלג זמני, וכמה כורים יפעלו להרחבת גרסה אחת בעוד כורים אחרים יעבדו על הארכת הגרסה השנייה. כפי שהוסבר קודם לכן תוך שימוש במתאר "שרשרת כחולה" ו"שרשרת אדומה", בסופו של דבר אחת מהגרסאות תרחיב עוד לפני השנייה ותהפוך לגרסה התקפה פה אחד.

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

בול זמן:

עוד מ מגזין Bitcoin