**כל הנעשה במאמרים אלו הוא על אחריותכם בלבד וכל המלצה כאן היא בגדר הצגה תאורטית בלבד**
מאמר זה הוא חלק קטגוריית מאמרים בתחום מטבעות הקריפטו, לחצו כאן למעבר לקטגוריה
הסבר על כריית ביטקוין Mining in cryptocurrency
Proof of Work
מה אומרת כריית ביטקוין? למה צריך את זה? כיצד מעבירים מטבעות מחשבון לחשבון? על כל השאלות ועוד נענה במאמר זה.
תחילה צריך להבין כי חייבים מנגנון בו אנחנו מוודאים שהעברת מטבעות (טרנזקציה) מארנק לארנק היא לגיטימית.
Prof of work או בקיצור POW הוא תיאור של קונצנזוס אשר משתמשים בו ברשת ה Blockchain והוא מוסיף לרשת טרנזקציות חדשות כל הזמן
הכוונה בטרנזקציה היא העברת מטבעות מארנק לארנק, כל העברה היא למעשה טרנזקציה.
הכורים ב Blockchain חייבים להחזיק חומרה חזקה דיו בשביל להשתתף בצורה אקטיבית ומשתלמת להם בשביל להשתתף בכרייה, למרות שכל אחד יכול להשתתף בכרייה, לרוב כאשר מטבע מבוסס צריך כוח עיבוד גדול בהרבה ממחשב גיימינג בשביל לבצע כריה.
אז למה צריך כריה? המטרה של הכריה היא ליצור מצב שרשת ה Blockchain מעבדת טרנזקציות חדשות כל הזמן והכורים משמשים כאלו אשר מבצעים אותם (במקום בנק או גורם מרכזי אחד), מטרה נוספת היא ליצור מצב בו הכורה שהשקיע בחומרה חזקה מקבל "פרס" או תגמול עבור עבודתו בכך שהוא מכניס בלוקים חדשים .
ב POW הכורה חייב לפתור בעיה מתמטית בשביל לקבל את הפרס \ תגמול, התגמול בתחילתו של ביטקוין עמד על 50 מטבעות על כל בלוק שנכנס לרשת ה Blockchain , כיום התגמול הוא בערך 6 מטבעות.
תגמול נוסף שמקבל הכורה הוא כלל ה fees של כל ההעברות (טרנזקציות) הנמצאות בבלוק, זאת אומרת שאם אדם א' רוצה לשלוח 2 מטבעות ביטקוין לאדם ב' הוא מכניס את הסכום של 2 המטבעות ועוד עמלה.
חשוב לזכור! כורים מבצעים כרייה של בלוקים בצורת עדיפות לטרנזקציות.
קודם כל יוכנסו העמלות (Fees) הגבוהות יותר לבלוק.
ניתן כמובן לבצע העברה ללא תשלום של עמלה כלל, אך קחו בחשבון שבמצב כזה יקח לכם יותר זמן לבצע את העברה או שהעברה לא תבוצע כלל ותיפול (אל דאגה, הכסף לא יאבד, הוא פשוט לא יעבור ליעד שרציתם)
בהתאם לכך לכל טרנזקציה מתווסף עמלה , הכורה בנוסף לתגמול של דחיפת הבלוק החדש, מקבל גם את כלל ה Fees.
בגלל שיש המון כורים, רוב הכורים יעבדו בתצורה הנקראת Pool והתגמולים יחולקו בצורה שווה לפי כוח העיבוד של כל חבר בנפרד.
Difficulty Target ו Block Solution
Nonce
difficulty target הוא פרמטר אשר נקבע ע"י ה Bitcoin Core או במילים אחרות ע"י ה Blockchain Network והוא רמת הקושי של פתרון ה Proof of work, בשפה פשוטה – הקושי של כורה לפתור את הפאזל על מנת שיוכל להכניס בלוק חדש לרשת ה Blockchain
הdifficulty target משתנה כל הזמן וזאת על מנת ליצור מצב בו יקח ממוצע של עד 10 דקות לכורה \ קבוצת כורים אחת לבצע הכנסה של בלוק חדש לBlockchain המטרה כמובן היא להתאים את הפתרון כך שהקושי יעלה ככל שכוח העיבוד למציאת הפתרון הוא חזק יותר וכך נשמור על סוג של שיווין.
החישוב של ה difficulty target הוא כלפי כוח ה Hash rate של הרשת כולה, ככל שה hash rate גדול יותר כך יהיה לכורים קשה יותר לפתור את הפאזל ולמצוא את הBlock Solution ובכך להכניס בלוק חדש
Block Solution = פאזל
אז איך בלוק חדש נכנס ל Blockchain?
difficulty target הוא Hash המתחיל באפסים , ככל שמספר האפסים גדול יותר, כך יותר קשה למצוא את ה Hash הנכון.
אז אך הפאזל עובד?
הdifficulty target הוא Hash מסוג SHA-256bit זאת אומרת שכמות התווים שלו היא 65 תווים.
הוא משתנה כל 2016 בלוקים, ברשת ה Bitcoin Blockchain זה אומר בערך כל שבועיים.
והחישוב הוא פשוט – לוקחים את כל ה 2016 בלוקים, אם החישוב שלהם היה מהיר יותר מיחס זמן ממוצע של 10 דקות
ה2016 בלוקים הבאים יהיו קשים יותר לחישוב כדי שיהיו שווים לזמן ערך של 10 דקות לכל בלוק חדש הנכנס לרשת.
עכשיו נביט בתמונה למטה, כמות האפסים היא 4 זאת אומרת שבהגדרה "זה לא כל כך קשה" ולכן ניתן לפתור את הפאזל מהר יותר
אך זה בדיוק (ק)/(כ)ורה?
הכורה מיצר בלוק חדש על ידי בחירה של טרנזקציות מתוך ה Mempool ומוסיף אותם לבלוק החדש שיצר
Mempool הוא אזור בבלוקציין בו ממתינות הטרנזקציות שהגיעו ורוצות להיכנס לבלוק
הכורה מוסיף את ה Coinbase אל הבלוק
הכורה מייצר Block header בו הוא מכניס את המידע הבא
1. ה Hash של הבלוק הקודם
2. חתימת הזמן של אותו הרגע
3.Merkle Root של כלל הטרנזקציות הקיימות
4. ה Nonce value המתחיל ב0
הכורה מסכם בעזרת Hash את ה Header, ולוקח את ה Hash שנוצר ומשווה ל difficulty target אם ה Hash גדול מה difficulty target הוא יעלה באחד את ה Nonce ויבצע חישוב של ה Header ביחד עם ה Nonce אם ה Hash גדול, ימשיך את הפעולה עד אשר יגיע למצב שה Hash Value קטן או שווה ל difficulty target
ברגע שהכורה מצא את ה Hash הנכון, הוא פתר את ה Block Solution ואז הוא הוא ישדר את הבלוק החדש לרשת ה Blockchain.
Nodes אחרים ברשת יוודאו ויאמתו את הבלוק החדש על ידי כך שיבדקו אם ה Hash של הבלוק קטן או שווה ל difficulty target, ה Nodes יוודאו גם שכל הטרנזקציות חתומות ושאכן המאזן הקיים בכל חשבון וחשבון הוא נכון.
סוגי קונצנזוס
Proof of work הוא סוג של מנגנון קונצנזוס, דרכו מחליטים כיצד יכנס בלוק חדש, שאף אחד לא מבזבז יותר מהמטבעות שיש לו בארנק (Double Spending Problem)
כעת על כל Node לבדוק את אותם הדברים, אם 51 אחוז ומעלה של Nodes מצאו שהבלוק Valid, הבלוק יתווסף ל BlockChain והכורה יקבל פרס- בערך 6BTC ובנוסף יקבל את כלל ה Fees (עמלות) מכלל העברות שבוצעו באותו הבלוק בלבד.
ברשת הבלוקציין זה נקרא Consensus (ממש עברית!) וברגע שרוב ה Nodes מחליטים שהבלוק שהוסיף הכורה הוא תקין, הוא יתווסף אל הבלוקציין.
Blockchain as byzantine General Problem
בשביל להסביר כיצד הרעיון של קונצנזוס התחיל, נסביר על byzantine fault tolerance ובשביל זה צריך לחזור לימי הבניים או לתקופה שבה הגו את הרעיון ב1982.
הבעיה שאותה מתארים היא בעיה בה נמצאים בשדה הקרב גנרלים, נניח ארבע גנרלים.
כל אחד מהארבע גנרלים ברשותו לגיון שלם והם נמצאים בקצה של כל צד בעיר עליה הם צרים, כעת כל אחד מהגנרלים צריך להחליט אם הוא תוקף או נסוג.
לא משנה מה יוחלט, בין אם זה לתקוף או לסגת המטרה היא להשיג את התוצאה הטובה ביותר ובשביל זה הם צריכים לקבל את ההחלטה ביחד ובעונה אחת.
בשביל זה כל אחד המגנרלים צריך להחליט:
- האם לתקוף או ליסוג
- אחרי שההחלטה התקבלה – לא ניתן לבטלה
- ההחלטה צריכה להתבצע בזמן מוגדר ומדויק
- בגלל המרחק, האופציה היחידה לתקשורת היא דרך הודעות – שליח
הבעיות עם השליח הם:
- ההודעה יכולה להימחק
- ההודעה יכולה להגיע באיחור
- ההודעה עלולה להאבד בדרך
- אחד מהגנרלים יכול לשלוח הודעה לביצוע הפוך לחלוטין ממה שכולם מחליטים ובכך ליצור כשל כאשר למשל אחד יתקוף והשאר ימלטו
כעת נשווה את זה ל Blockchain, כל גנרל הוא Node ברשת וכל Node צריך להגיע ל consensus על מצב הרשת , הקונצנזוס הוא שרוב הרשת תגיע להסכמה וכולם יגיעו להחלטה ויבצעו אותה בו זמנית.
byzantine fault tolerance
הוא הפתרון לבעיית הגנרלים שהסברתי למעלה –
- אם אחד מהNode קורס או לא מגיב
- אם אחד מהם שולח Block ערוך או זדוני
הצורה בה יבצעו זאת ברשת הבלוקציין היא השימוש בהצפנות, חתימות דגטליות ובכך שכל Node מוודא שהמידע שהוא מקבל הוא תקין ובכך שהוא יתשאל את ה Node האחרים.
אם ההסכמה שהמידע אמין יגיע מ 51 אחוז ומעלה של Node הרי ההודעה ה(הבלוק) תקין וניתן ל"דחוף" אותו לבלוקציין
וכלל הפתרונות הן השיטות עצמן Proof of work \ proof of stake ועוד
חישול ולא כרייה – Proof of stake
ב Proof of stake אין תחרות בין הכורים מי פותר את הפאזל יותר מהר ומוצא את ה Block Solution , בקונצנזוס מסוג זה משתמשים בהרבה פחות חשמל ואנרגיה.
ב Proof of stake יש "בעלי השליטה" והם למעשה Nodes אשר ברשותם (מה שנקרא בארנקם) מינימום של מטבעות והם למעשה מכניסים לפיקדון מטבעות (הפיקדון נועל את המטבעות כל עוד הם בתפקיד זה.
אפשר להסתכל על זה כריבית, אתם תניחו את המטבעות בפיקדון נעול, תקבלו עליו ריבית אלו הן "העמלות" שמקבלים בעלי השליטה וככל שהסכום גדול יותר כך תקבלו יותר.
באותו הרגע שרוצים להכניס בלוק חדש, ישנה הגרלה שאותו מבצע הבלוקציין עצמו, נניח ואתם נבחרתם , במקרה זה המחשב שלכם יבצע בדיקה של הבלוק ושכל הטרנזקציות תקינות אם תקינות יכניס את הבלוק אל הרשת.
כל מטבע ראשוני (המטבעות הראשונים שנכנסים לסירקולציה בבלוקציין) נמכרים בכסף ע"מ ליצור שווי התחלתי למטבע
הרבה מטבעות כדוגמת איתריום התחילו כ Proof of work (כרייה ומציאת פתרון לפאזל וקבלת תגמול) וכעת עוברים ל Proof of stake
עדכון זה בבלוקציין של אתריום נקרא Ethereum 2.0 ושמו הוא Beacon Chain והוא יצא בדצמבר 2020
כמות המטבעות הקיימים הם קבועים ולא ניתן להוסיף מטבעות חדשים, במצב כזה קשה יותר "לרמות" ולהוסיף מטבעות שאינם קיימים
עכשיו אתם קצת תחמנים ואומרים בצדק, מה אומר שאותו בעל שליטה – שהוחלט בהגרלה לא ירמה וירשום לעצמו באחת העברות עוד 100 מטבעות נוספים?
המנגנון עובד בצורה בה חלק מהכסף בארנק שלכם משתתף בתור "משכון" (ככל ותציעו יותר מטבעות, כך הסיכוי שלכם להיבחר כבעל שליטה עולה, אך לא מובטח! ) לאחר שנבחרתם וניסיתם לרמות או שלא 🙂 במקרה בו תתפסו "מרמים" הכסף יוחרם ממכם ע"י Node אחר שביצע את הבדיקה וגילה כי רימיתם.
זאת אומרת ש Node אחר יכול פתאום לבדוק שאכן הבלוק שהכנסתם הוא Valid וזה ע"י כלל המנגנון של Blockchain שלמדנו.
אסביר זאת שוב בצורה שונה:
- ה Node שיבחר לבצע את האימות (ולדיזציה) של הבלוק נבחר בצורת אלגורתים מסוג pseudo random election process
- ה Node שיבחר צריך להיות זמן רב פועל 24/7, הוא יבחר ע"פ כמות מטבעות יחסית גדולה וכמה זמן הוא מחזיק במטבעות.
- הNode שנחבר לבצע את אימות הטרנזקציות יקבל לאחר הווידוא רק את העמלות ששולמו עבור כל טרנזקציה (לעומת Proof of work ששם יקבל הכורה גם מטבע חדש שנוצר – בביטקוין למשל יקבל נכון להיום 6.5 מטבעות)
- על מנת למנוע מאלו שמחזיקים מטבעות רבים ולמעשה הגדירו Stake גבוהה, ברגע שהם נבחרו להיות ה Valdiate Node לאחר מכן הם ימתינו זמן מה עד שיוכלו שוב להיבחר
- כאשר ה Node שנחבר לבצע את האימות רוצה להפסיק לבצע "אימות" ורוצה למשוך את המטבעות ( אלו שהוא שם ב Stake) הוא ימתין זמן מה עד שיוכל לשחרר את המטבעות הנעולים
כמה יעיל POS לעומת POW – בהודעה שפרסם Ethereum שבצעו את המעבר מ POW ל POS (התמונה למטה) זה חוסך 95.95 אחוז באנרגיה, כיוון שהמחשב צריך להיות רק דלוק ולא לבצע פעולות כרייה ופתרון פאזל כמו ב POW
עדכון שנגחאי EIP-4895 Shanghai
הוא עדכון לרשת הבלוקציין של אתריום , בצדמבר 2020 בוצע שדרוג לרשת הבלוקציין של איתריום Ethereum ממעבר של POW ל POS (שהוסבר למעלה) המון בעלי מטבעות של איתריום הכניסו את הטבעות שלהם למצב של Stake, זה אומר שהכסף נעול – ממש כמו פיקדון בבנק
הסיבה שהם נעלו אותו ואותה הסיבה הוסברה למעלה – היא למעשה שהם רוצים להשתתף ו"לשפר" את הרשת, אך המשמעות היא לבצע סוג של כרייה על מנת לקבל רווחים – כי ככה עובד POS (במקרה הזה זה לא כרייה אלא "חישול" Forged)
עכשיו , כמה מטבעות "נעולים" בפיקדון ? 60 מיליון מטבעות איתריום בשווי של בערך 20 מילארד דולר (סה"כ 30 אחוז מכלל המטבעות בסירקולציה של הבלוקציין)
וכל זה עומד להשתחרר "מנעילה" בשדרוג שנגחאי – השדרוג נקבע לאפריל 2022
עכשיו אם שמעתם על השדרוג בטח אתם חושבים על מה כל הסיפור? אז עכשיו בעלי המטבעות יוכלו למכור או להחזיר את המטבעות ל Stake
ברוב המקרים, מתחיל סחר עצום של מטבעות כיוון שהרבה אנשים אולי רוצים לקנות מטבעות אחרים, לבצע השקעות אחרות וכו' ובמצב בו כמות אדירה של מטבעות מתחילה להימכר, הערך של המטבע יורד.
זה למעשה מפחיד מאוד בעלי מטבעות של אתריום ומשקיעי אתריום שכן הערך יכול לרדת דרסטית
רשת ה Beacon Chain נוצרה בנוסף לרשת ה Mainnet של אתריום בשביל שימוש של POS, הרשת Mainnet נשארה בשימוש רגיל של POS
באפריל 19 2023 רשת הMainnet של אתריום ביצע חיבור אל רשת ה Beacon Chain ובכך הפכה לרשת בלוקציין אחת המשתמשת ב POS
Sharding
בשביל להבין Sharding צריך להבין שכורה או Node ברשת הבלוקציין של אתריום צריך להוריד את כל מסד הנתונים של הבלוקציין, זאת אומרת את כל הטרנזקציות וכל המידע – באיתריום המידע הזה עצום, כמה? 10TB – נכון שזה לא הרבה למחשב בודד, אבל כל Node צריך להוריד כמות כזו של מידע.
לכן המציאו את מנגנון ה Sharding, המנגנון למעשה מחלק את הבלוקציין לכמה חתיכות וכך להגדיל את היכולת העתידית של אתריום או כל בלוקציין לגדול בצורה יותר טובה ( Scalablity )
תתארו לכם מצב בו אין פתרון, כבר עכשיו הבלוקציין של אתריום שוקל מעל 10TB, מה יהיה עוד עשר שנים? ישקול 1PB? ובכל Node או כורה?
Sharding מחלק את הבלוקציין לחתיכות קטנות, כל אחד מהNode מחזיק בחלק קטן מהבלוקציין כולו וע"י הטכנולוגיה Beacon Chain הוא למעשה מבצע "תשאול" כאשר הוא צריך לבדוק Block בלוקים ישנים או חדשים יותר ממה שהוא מחזיק.
בשילוב של POS למעשה אין יותר כרייה ומציאת פתרון של ה Block Solution ולכן בשיטה זו לא רק כוח העיבוד הדרוש יורד בכמעט מאה אחוז אלא גם הנפח הדרוש.
Ethereum משלב את Sharding בבלוקציין