When verifying a transaction, the Bitcoin node rebuilds the hash-preimage of it from the transaction that has acquired.
With one-input transaction, it’s straightforward to construct the hash-preimage of it:
- Change the scriptSig to the scriptPubKey the place the funds are being spent from.
- Change the sigHash placement.
The results of the steps above is double hashed, then is verified with the general public key and the “r” and “s” worth of the signature.
However with a two-inputs transaction, which is the whole course of?
To confirm every enter, does the hash-preimage embrace the opposite enter?
Thanks prematurely, it will be useful if an instance is supplied.
[Context]
I wrote the next code that verifies utilizing ECDSA math a one-input and one-output transaction, each P2PKH: https://github.com/SalvaZaraes/bitcoin-digital-signatures-article/blob/essential/verify-p2pkh-tx.py
Now I having issues with constructing the hash-preimage of a two-input transaction, that is the explanation behind asking the higher questions.
So, for instance, a transaction like this one:
https://mempool.area/es/tx/592ea2010ec259252959b6047e227ceac6ffd0dbbe20bad71248960c18a5d890
That has two P2PKH inputs and one P2PKH output.
The corresponding Hash-preimage for the primary enter could be like this?:
010000000219f4d40cb4204ad8429ec3d98d240661593edcfcfb8efcb3b684141ceb0df2e4000000001976a914d52c9ce97c8dea0b71df687659a847a62c37732c88acffffffff22d07db06b68e4c15154db0ce0dd9c9dcd683a60a5117490451e0b52743492ca000000001976a91497ccdcca4f494b1bd652ad8f9d816b4bbb1108ac88acffffffff01c047bfe54d0000001976a91492512166101806dd6a695cbe56f883c3bea2a7e488ac0000000001000000
Breakdown:
01000000 – Model
02 – Variety of Inputs
19f4d40cb4204ad8429ec3d98d240661593edcfcfb8efcb3b684141ceb0df2e4 – Earlier Tx-id
00000000 – Enter to be spent, on this case the Enter at place 0 of the earlier tx (First enter on this tx)
1976a914d52c9ce97c8dea0b71df687659a847a62c37732c88ac – First Enter Locking Script (scriptPubKey)
ffffffff – Sequence
22d07db06b68e4c15154db0ce0dd9c9dcd683a60a5117490451e0b52743492ca – Earlier Tx-id
00000000 – Enter to be spent, on this case the Enter at place 0 of the earlier tx (Second enter on this tx)
1976a91497ccdcca4f494b1bd652ad8f9d816b4bbb1108ac88ac – Second Enter Locking Script (scriptPubKey)
ffffffff – Sequence
01 – Variety of Outputs
c047bfe54d000000 – Quantity of Satoshis being locked within the new scriptPubKey
1976a91492512166101806dd6a695cbe56f883c3bea2a7e488ac – new scriptPubKey
00000000 – Locktime
01000000 – SigHash ALL