סקירת פיתוחים עתידיים בביטקוין (2018)

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

Lightning Network

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

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

Rootstock

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

MAST

ראשי תיבות של Merkelized Abstract Syntax Tree. אם אתם מכירים את התפקיד של Merkle Trees עבור הטרנסאקציות בביטקוין, אז זה אותו דבר, אבל לסקריפטים.

במילים אחרות – הרעיון הוא לחסוך מקום בטרנסאקציות שיש להן סקריפטים מורכבים. לדוגמא, נגיד שאנחנו רוצים ליצור כתובת מולטיסיג 2 מתוך 10 (כלומר 10 אנשים בעלי מפתח, שכל 2 מתוכם יכולים לאשר העברת כסף מהכתובת). הדרך המקובלת לעשות את זה היא באמצעות P2SH (Pay to Script Hash) – הכתובת היא למעשה האש של הסקריפט שמתאר את כל המפתחות הפומביים ואיזה צירוף שלהם מספיק להוצאת כספים. במעמד הכנסת כספים לכתובת, רק ההאש מופיע. כשרוצים להוציא כספים מהכתובת, חושפים את הסקריפט המלא, ואת החתימות משני מפתחות ממנו.

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

Confidential Transactions

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

Bullet Proofs

שכלול של מנגנון ה – CT, שמקטין משמעותית את הגודל שלהן, והופך את השימוש בהן למעשי.

Schnorr Signatures

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

Simplicity

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

Mimbewimble

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

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

TumbleBit

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

Atomic Swaps

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

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

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

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

GHOST / SPECTRE / PHANTOM

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

GHOST זה ראשי תיבות של Greedy Heaviest Observed SubTree.

SPECTRE זה ראשי תיבות של Serialization of Proof-of-Work Events, Confirming Transactions via Recursive Elections.

נראה שעבור PHANTOM הם ויתרו על הניסיון להפוך את זה לראשי תיבות.

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

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

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

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

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

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


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