הצעה לשיפור כספא KIP10

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

תקציר

קיפ10 (KIP10) מציג קודי הפעלה של התבוננות פנימית בטרנזקציות ויכולות אריתמטיות משופרות לשפת הסקריפטים כספא.
התוספות העיקריות כוללות קודי הפעלה לשאילתות מטא-נתונים של טרנזקציות, מאפייני קלט/פלט ותמיכה בפעולות אריתמטיות שלמות של 8 בתים.
שיפורים אלה מאפשרים תנאי סקריפט ותרחישי שימוש מתוחכמים יותר, במיוחד בתמיכה בטרנזקציות הדדיות כפי שנידון ב-KIP-9.

מוטיבציה

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

  1. אפשרות לחוזים חכמים מתוחכמים יותר ותרחישי הוצאה מותנים.
  2. תמיכה ביישום עסקאות הדדיות כפי שנדון ב-KIP-9.
  3. אפשרות חישובים מדויקים עם ערכים מספריים גדולים יותר באמצעות תמיכה במספרים שלמים של 8 בייט.

מפרט

1. קודי פעולה חדשים

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

קודי פעולה ברמת העסקה:

  1. OpTxInputCount (0xb3): מחזיר את המספר הכולל של קלטים בעסקה.
  2. OpTxOutputCount (0xb4): מחזיר את המספר הכולל של פלטים בעסקה.
  3. OpTxInputIndex (0xb9): מחזיר את האינדקס של הקלט הנוכחי המאומת.

קודי פעולה של שאילתות קלט/פלט:

  1. OpTxInputAmount (0xbe): מחזירה את כמות הקלט שצוין
  2. OpTxInputSpk (0xbf): מחזירה את מפתח הסקריפט הציבורי של הקלט שצוין
  3. OpTxOutputAmount (0xc2): מחזירה את כמות הפלט שצוין
  4. OpTxOutputSpk (0xc3): מחזירה את מפתח הסקריפט הציבורי של הפלט שצוין

2. תמיכה משופרת במספרים שלמים

ההצעה מרחיבה פעולות אריתמטיות לתמיכה במספרים שלמים בני 8 בתים
(שהוגבלו בעבר ל-4 בתים). שיפור זה חל על:

  1. פעולות אריתמטיות בסיסיות
  2. השוואות מספריות
  3. פעולות מחסנית הכוללות מספרים
  4. כל קודי ההפעלה המייצרים או צורכים ערכים מספריים

3. התנהגות קוד ההפעלה

3.1 שאילתות קלט/פלט אופקודס (Opcodes)

  • קודי הפעלה אלה מצפים לפרמטר אינדקס על המחסנית.
  • האינדקס חייב להיות בגבולות תקפים (0 עד n-1, כאשר n הוא מספר הקלטים/פלטים).
  • עבור קודי הפעלה מסוג כמות, הערכים מוחזרים ב-sompis.
  • ערכי מפתח ציבורי של סקריפט כוללים גם גרסה וגם בתים של סקריפט.

3.2 קודי הפעלה של מטא-נתונים של עסקאות

  • החזרת ערכים ישירות ללא צורך בפרמטרים
  • ערכים נשלחים כמספרים מקודדים מינימליים
  • תמיד מצליח אם מבוצע (בהנחה ש-KIP-10 פעיל)

4. שינויים בקונצנזוס

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

4. הפעלה

התכונות המוצגות ב-KIP זה מופעלות על סמך ציון DAA:

  1. לפני ההפעלה:
  • קודי פעולה חדשים נחשבים כלא חוקיים
  • פעולות אריתמטיות נותרות מוגבלות ל-4 בתים
  • כל קודי ההפעלה החדשים הופכים לזמינים
  • תמיכה באריתמטיקה של 8 בייט מופעלת
  • סקריפטים קיימים ממשיכים לתפקד כבעבר

2. אחרי ההפעלה:

  • כל קודי ההפעלה החדשים הופכים לזמינים
  • תמיכה באריתמטיקה של 8 בייט מופעלת
  • סקריפטים קיימים ממשיכים לתפקד כבעבר

6. קודי הפעלה שמורים (Opcodes)

קודי ההפעלה הבאים שמורים להרחבה עתידית:

  • גרסה OpTx (0xb2)
  • זמן נעילה OpTx (0xb5)
  • מזהה רשת משנה של OpTx (0xb6)
  • גז OpTx (0xb7)
  • מטען OpTx (0xb8)
  • מזהה נקודת מוצא של OpTx (0xba)
  • אינדקס נקודת מוצא OpTx (0xbb)
  • חתימה על סקריפט OpTx (0xbc)
  • רצף OpTx (0xbd)
  • ציון נתוני בלוק OpTx (0xc0)
  • בסיס מטבעות OpTx (0xc1)

OpTxVersion (0xb2)
OpTxLockTime (0xb5)
OpTxSubnetId (0xb6)
OpTxGas (0xb7)
OpTxPayload (0xb8)
OpOutpointTxId (0xba)
OpOutpointIndex (0xbb)
OpTxInputScriptSig (0xbc)
OpTxInputSeq (0xbd)
OpTxInputBlockDaaScore (0xc0)
OpTxInputIsCoinbase (0xc1)

רציונל

קודי ההפעלה והיכולות האריתמטיות המשופרים עונים על מספר דרישות מרכזיות:

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

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

תאימות לאחור

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

יישום הפניה

יישום עזר של קודי ההפעלה החדשים ודוגמה לשימוש ניתן למצוא בבקשת המשיכה הבאה למאגר rusty-kaspa:

kaspanet/rusty-kaspa#487

הפעלת מיקרו-תשלומים במסגרת אילוצי KIP-9

KIP-9 הציג את נוסחת 'storage_mass' כדי להפחית נפיחות ב-UTXO. נוסחה זו

מעניש עסקאות היוצרות פלטים רבים בעלי ערך קטן, כאשר '|O|' הוא מספר הפלט, '|I|' הוא מספר הקלטים, H(O) הוא הממוצע ההרמוני של ערכי הפלט, A(I) הוא הממוצע האריתמטי של ערכי הקלט, ו-'C' הוא קבוע.

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

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

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

דוגמה לשימוש

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

  1. תרחיש סף

תרחיש זה מדגים סקריפט המאפשר שני סוגים של תנאי הוצאה:

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

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

איך זה עובד והיתרונות

  • משתמש ב-OpTxInputAmount וב-OpTxOutputAmount כדי לאמת את תנאי הסף
  • מתיישר עם מטרת KIP-9 לשלוט בצמיחת UTXO באמצעות אילוצים מבוססי ערך
  • מאפשר שירותים אוטומטיים שיכולים "ללוות" כספים על ידי הוספת ערך
  • מספק הגנה מפני דואר זבל באמצעות דרישת הסף תוך תמריץ צמיחת ערך UTXO

אפליקציות בריכות כרייה

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

  1. לאפשר למשתתפים להשתמש בכתובות P2SH מבוססות סף
  2. לבצע תשלומים אפילו עם קלט יחיד של מטבע על ידי "השאלת" UTXO של המשתתפים
  3. ליצור עסקאות M:N יעילות המשלבות קלט מרוב לתשלומים מרובים של משתתפים
  4. לשמור על תשלומים תכופים ללא קנסות המוניים
  5. לאפשר למשתתפים לשמור על שליטה מלאה על כספם תוך מתן אפשרות לפעולות מאגר

קונספט:

  1. תפעול המאגר: המאגר מנהל כתובת P2SH תואמת KIP-10 עבור כל משתתף, ומבטיח שלכל כתובת תמיד יהיה לפחות UTXO אחד.
  2. תהליך תשלום: כאשר בלוק נכרה, המאגר יכול לחלק תגמולים ביעילות באמצעות עסקה אחת עם מספר קלטים ופלט.

עבודה קשורה: כתובות נוספות

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

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

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

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

2. תרחיש סודי משותף

תרחיש זה מדגים תסריט מורכב יותר המאפשר שני סוגי הוצאות:

  1. הוצאות בעלים: הבעלים יכול להוציא את ה-UTXO על ידי מתן חתימה תקפה.
  2. הוצאה מורשית של לווה: מישהו יכול להוציא את ה-UTXO רק אם הוא:
    א. הכרת סוד מוגדר מראש (מיושמת כזוג מפתחות ומאומתת באמצעות חתימה)
    ב. צור פלטים התואמים או חורגים מערכי הקלט
    ג. שלח כספים בחזרה לאותה כתובת של הסקריפט

איך זה עובד והיתרונות

  • משתמש ב-OpTxInputSpk וב-OpTxOutputSpk לאכיפת תנאי סקריפט וערך
  • מוסיף שכבת אימות באמצעות אימות סודי משותף
  • מגביל את הגישה לגורמים מורשים ספציפיים תוך שמירה על יתרונות האוטומציה

יישומים של ייחוס

ניתן למצוא יישומים של תרחישים אלה ודוגמאות נוספות במאגר rusty-kaspa.

שיקולי אבטחה

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

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

הפניות

  1. KIP-9: נוסחת מסה מורחבת להפחתת נפיחות במצב https://github.com/kaspanet/kips/blob/master/kip-0009.md
  2. דיון על כתובות חיבור אוטומטי
    https://research.kas.pa/t/auto-compounding-additive-addresses-kip10-draft/168
  3. דיון על תשלומים זעירים (מעקב אחר KIP-9) https://research.kas.pa/t/micropayments/20
  4. Cash CHIP-2021-02: קודי הפעלה של התבוננות פנימית מקוריים https://gitlab.com/GeneralProtocols/research/chips/-/blob/master/CHIP-2021-02-Add-Native-Introspection-Opcodes.md

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

  1. מקור יישום BCH
    א. יישום צומת ביטקוין קאש: BCHN MR 1208
    ב. מקרי מבחן: BCHN Native Introspection Tests

נכתב במקור על ידי אורי ניומן, Maxim Biryukov

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

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

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

כתיבת תגובה

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