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

קלט (Input)

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

פלט (Output)

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

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

קלט ופלט בקצרה

  • קלט (Input): הפניה לפלט מעסקה קודמת.
  • פלט (Output): הוראות שליחת המטבעות בעסקה נוכחית.

עסקה ברשת ביטקוין עם קלט יחיד ופלט יחיד:

Input:

Previous tx: f5d8ee39a430901c91a5917b9f2dc19d6d1a0e9cea205b009ca73dd04470b9a6

Index: 0

scriptSig: 304502206e21798a42fae0e854281abd38bacd1aeed3ee3738d9e1446618c4571d10 90db022100e2ac980643b0b82c0e88ffdfec6b64e3e6ba35e7ba5fdd7d5d6cc8d25c6b241501

Output:

Value: 5000000000

scriptPubKey: OP_DUP OP_HASH160 404371705fa9bd789a2fcd52d2c580b65d35549d OP_EQUALVERIFY OP_CHECKSIG

ניתוח מבנה העסקה הנ"ל שורה אחר שורה

Input:

תחילת המידע על הקלט בלבד. מתחת לכותרת זו (Input) ועד הכותרת Output.

Previous tx

  • Previous tx, קיצור של: Previous transaction
  • f5d8ee39a430901c91a5917b9f2dc19d6d1a0e9cea205b009ca73dd04470b9a6 : תמצות(SHA-256) העסקה הקודמת.

Index

  • פלט ספציפי בפניה/סימוכין של העסקה הזו.

ScriptSig

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

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

Output

  • תחילת המידע על הפלט בלבד מכאן והלאה.

Value

  • ערך. כמות ה'סטושי' (1 BTC = 100,000,000 Satoshi) בפלט זה.

scriptPubKey

סקריפט מפתח ציבורי, החצי השני של הסקריפט (החצי הראשון נמצא בחלק של הקלט).

  • OP_DUP OP_HASH160 404371705fa9bd789a2fcd52d2c580b65d35549d OP_EQUALVERIFY OP_CHECKSIG

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

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

היכן למעשה מטבעות ביטקוין?

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