בעת אימות עסקה, צומת ביטקוין בונה מחדש את ה-hash-preimage המשמשת ליצירת כל חתימה.
לאחר הסדרת ה-hash-preimage עבור כל קלט, השלב הבא הוא לבצע גיבוב כפול ואימות החתימה עבור כל קלט באמצעות המפתח הציבורי המתאים.
השאלה שלי היא: מהי ה-hash-preimage המדויק בסידרה עבור כל קלט? לא מצאתי הנחיות ברורות איך זה צריך להיות בנוי.
לדוגמה, קח את העסקה הזו: https://mempool.space/es/tx/592ea2010ec259252959b6047e227ceac6ffd0dbbe20bad71248960c18a5d890
עסקה זו משתמשת בדגל SIGHASH_ALL, כלומר כל חתימה חותמת על כל הכניסות והיציאות.
האם ה-hash-preimage צריכה לכלול את scriptPubKey של כל קלט, או רק את scriptPubKey של הקלט הנחתם, ולהשאיר את הקלט האחר עם סקריפט ריק (0x00)?
דוגמה לניסיון שלי: הנה הניסיון שלי לבנות את ה-hash-preimage לחתימה על שתי הכניסות:
01000000 - Version
02 - Number of inputs
19f4d40cb4204ad8429ec3d98d240661593edcfcfb8efcb3b684141ceb0df2e4 - First UTXO txid
00000000 - First UTXO output index
1976a914d52c9ce97c8dea0b71df687659a847a62c37732c88ac - scriptPubKey of first UTXO
ffffffff - Sequence for first input
22d07db06b68e4c15154db0ce0dd9c9dcd683a60a5117490451e0b52743492ca - Second UTXO txid
00000000 - Second UTXO output index
1976a91497ccdcca4f494b1bd652ad8f9d816b4bbb1108ac88ac - scriptPubKey of second UTXO
ffffffff - Sequence for second input
01 - Number of outputs
c047bfe54d000000 - Amount in satoshis
1976a91492512166101806dd6a695cbe56f883c3bea2a7e488ac - Output's scriptPubKey
00000000 - Locktime
01000000 - SIGHASH_ALL flag
כאשר אני מנסה לבנות את התמונה המוקדמת עבור קלט אחד בלבד (כאשר ה-scriptSig של הקלט השני מוגדר ל-0x00):
01000000 - Version
02 - Number of inputs
19f4d40cb4204ad8429ec3d98d240661593edcfcfb8efcb3b684141ceb0df2e4 - First UTXO txid
00000000 - First UTXO output index
1976a914d52c9ce97c8dea0b71df687659a847a62c37732c88ac - scriptPubKey of first UTXO
ffffffff - Sequence for first input
00 - Empty scriptSig for second input (set to 0x00)
ffffffff - Sequence for second input
01 - Number of outputs
c047bfe54d000000 - Amount in satoshis
1976a91492512166101806dd6a695cbe56f883c3bea2a7e488ac - Output's scriptPubKey
00000000 - Locktime
01000000 - SIGHASH_ALL flag
האם אני מבין נכון כיצד להגדיר את ה-scriptPubKey לכניסות ללא חתימה בתמונה ה-hash-preimage? האם עלי לנקות את scriptSig מכניסות אחרות כ-0x00?
תודה על כל הדרכה!