ביטקוין העברה מיידית? בואו נדבר על זה

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

בואו נדבר על זה.

מהו ניצול כפול?

ניצול כפול, או באנגלית “double spend”, היא הבעיה הגדולה שביטקוין פתר במערכות מבוזרות. ככל קובץ דיגיטלי, קשה עד בלתי אפשרי לתת לו ערך שניתן לסחור איתו שהרי מחשבים עושים copy-paste בקלות יתר. פעולות בביטקוין הן קצת כמו צ’ק שמציין מהיכן הכסף מגיע ולאן הוא הולך (וחתום קריפטוגרפית) – ואת הצ’ק ניתן לבדוק שתקין בקלות ובמיידיות, אך ההכנסה שלה אל תוך שרשרת הבלוקים היא מה שנותנת לה את התוקף – כי תיאורטית אפשר לחתום על מאות צ’קים כאלה שכולם משתמשים “באותו כסף” אבל רק אחד מהם יוכל להיכנס לשרשרת הבלוקים.

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

האם ממליצים להסתמך על זה?

האמת, אני אחד מאלה שעד היום המליצו להסתמך על זה – עבור סכומים קטנים בלבד יש לציין! הכוונה היא שעבור סכומים קטנים, תוקף שרוצה להונות על פעולה ללא אישור צריך לבצע מתקפה מורכבת שדורשת מניפולציה או שוחד, וזה לא סביר עבור סכומים קטנים. אבל המציאות היא שקבלת תשלומים ללא אישורים לא מקבלים את “הברכה” של שרשרת הבלוקים, ולא חל עליהם ההבטחות של ביטקוין; תיאורטית ניתן לבטל אותם. אז האם זה אומר שפעולות בביטקוין לא יכולות להיות גם בלתי ניתנות לביטול וגם מיידיות? התשובה הקצרה היא כן: הפעולות הסטנדרטיות של ביטקוין לא נהנות משני התכונות האלה. התשובה הארוכה מורכבת יותר כמובן.

הסקים מהפרוטוקול של פעולות ביטקוין: CPFP, RBF

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

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

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

אדמה חרוכה – Scorched Earth

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

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

כורה שמסתכל על מה שקורה רואה מצד אחד זוג פעולות שסך העמלה היא 0.2, ופעולה חדשה שסך העמלה היא 0.3. אי אפשר לקבל את שני הפעולות, אך ניתן לבחור ביניהם. כורה חכם בעל תמריץ לרווח יעדיף כמובן את הפעולה “המבטלת” של בני שהרי יש עמלה גבוהה יותר. מוטב לציין שכרגע אבי המוכר מתפשר ומוכן בעצם לקבל רק 0.8 מילי (מילי אחד פחות עמלה של 0.2), ובני הקונה מתפשר ומוכן לקבל חזרה רק 0.7 מילי (מילי אחד פחות עמלה של 0.3).

הארנק של אבי רואה את הניסיון ביטול ואוטומטית יוצר פעולה חדשה, רק הפעם עם עמלה גבוהה יותר של 0.4 מילי. עדיף לקבל 0.6 מילי מאשר לא לקבל כלום… בני הקונה רואה את זה ויוצר שוב פעולה סותרת עם עמלה של 0.5 מילי. כך זה ממשיך עד שבני מציע עמלה של 0.9 מילי לכורה “שיחזיר” לו את העודף של 0.1 מילי. אבי המוכר עצבני מאוד וכבר יודע שהוא לא יראה את הכסף שלו, יוצר פעולה עם עמלה של מילי שלם ובכך לא אבי המוכר ולא בני הקונה יוצאים עם כסף כלל. במירוץ הזה אבי ובני פשוט שרפו את כל ערך הפעולה בנסיון לקבל את העודף, עד שלא היה עודף. מי הרוויח? הכורה, שבמקום לקבל עמלה פשוטה וסטנדרטית של 0.1 מילי על פעולה של מילי, קיבל את כל התשלום בתור עמלה. וכך הגענו לאדמה חרוכה, “אם אני לא מקבל גם אתה לא תקבל”.

נשמע מפחיד.

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

אז זהו? אין פעולות מיידיות בביטקוין?

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

ערוצי תשלום – כל הגמישות וכל המהירות

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

Leave a Reply

Your email address will not be published.


+ 9 = 13

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>