למדתי חתימות של עסקאות ביטקוין ושמתי לב לכמה דפוסים מעניינים בעת ניתוח עסקאות הכוללות אותה כתובת בהקשרים שונים. הנה התצפיות שלי.
מקרה 1: אותה כתובת, שתי עסקאות שונות (T1 ו-T2)
כצפוי, עבור שתי עסקאות נפרדות שמקורן ב אותה כתובתהבחנתי בדברים הבאים עֵד נְתוּנִים:
30450221008dbd2c3c33413a58d0217897daa9cfe75a7aaad3d80d915ed74dbfbc7dc70d 43022034a8328a99065ff8f47acb9da4ce213ee6bf90448580cfd5129e36f39a985c3801 023b6bdc0869a329e9d0cb036257eff362aeab11512668090746bf31647a42039e
3045022100cc584f8b3c0a23d5531d1e46b15e10be7138409c46c04a16716af89ea8a653 ec02202a1e364f7c2b0f4f6e995bf73b65a4ed86e5166f9c7544a397a6c38b8db4a43301 023b6bdc0869a329e9d0cb036257eff362aeab11512668090746bf31647a42039e
הנה, אני מניח/מנחש ש:
- ה המחרוזת ההקסדצימלית הראשונה בעד היא החתימהו
- ה מחרוזת הקסדצימלית שנייה היא המפתח הציבורי.
כצפוי:
- ה החתימות שונות כי כל חתימה קשורה לעסקה הספציפית.
- ה המפתח הציבורי זהה מכיוון שהוא מתאים לכתובת.
זה הגיוני מכיוון שתהליך יצירת החתימה משלב את נתוני העסקאות (או ה-hash שלהם)…. אבל:
מקרה 2: עסקה (T3) עם שתי כניסות מאותה כתובת
כשניתחתי עסקה אחת עם שתי תשומות, שניהם מקורם ב- אותה כתובתהבחנתי בדברים הבאים עֵד נְתוּנִים:
30450221008dbd2c3c33413a58d0217897daa9cfe75a7aaad3d80d915ed74dbfbc7dc70d 43022034a8328a99065ff8f47acb9da4ce213ee6bf90448580cfd5129e36f39a985c3801 023b6bdc0869a329e9d0cb036257eff362aeab11512668090746bf31647a42039e
3045022100cc584f8b3c0a23d5531d1e46b15e10be7138409c46c04a16716af89ea8a653 ec02202a1e364f7c2b0f4f6e995bf73b65a4ed86e5166f9c7544a397a6c38b8db4a43301 023b6bdc0869a329e9d0cb036257eff362aeab11512668090746bf31647a42039e
במקרה זה:
- ה החתימות שונותלמרות ששתי הכניסות הן מאותה כתובת.
- ה המפתח הציבורי זהה עבור שתי התשומות, כצפוי.
זה מצביע על כך שהחתימה אינה עבור העסקה כולה אלא עבור כל קלט בנפרד. נראה שכל קלט חותם על "הודעה" ספציפית.
שאלות:
- מדוע החתימות שונות עבור כל קלט בתוך אותה עסקה?
- האם זה אומר שלא נוצרת חתימה לכל העסקה אלא לכל קלט באופן עצמאי?
- מה בדיוק נחתם בכל קלט, ואיזה תפקיד ממלא UTXO בתהליך זה? האם לחתימה יש התייחסות בדרך כלשהי ל-UTXO ספציפי?
- מדוע נתוני העד מיוצגים רק על ידי hex בינארי? לא הצלחתי למצוא שום הוראות ממיר לסקריפט "אנושי". האם יש?
- אז בעצם, האם זה נכון לומר שעבור אותה כתובת, סקריפט הנעילה יהיה זהה, בעוד שסקריפט הנעילה (עד) יהיה שונה מכיוון שהוא תלוי בקלט הבודד הספציפי של עסקה?
כל הבהרה לגבי התנהגות זו והמנגנונים הבסיסיים תתקבל בברכה. תודה לך!