how generate <sig> part of scriptSig in bitcoin transactions

1

1

I studied many links about bitcoin trxs and about generating scriptSig. Finally I couldn't understand how to make this part.

for example I read this links:

What is relation between scriptSig and scriptPubKey?

https://bitcoin.org/en/developer-guide#transactions

How do you create a scriptsig for a new raw tx?

How to redeem a basic Tx?

How to create the <sig> <PubK> part in "scriptSig"?

http://www.righto.com/2014/02/bitcoins-hard-way-using-raw-bitcoin.html

https://en.bitcoin.it/wiki/Protocol_documentation#tx

https://en.bitcoin.it/wiki/Transaction

I found that I must sign a thing but whats that thing ?

exactly and step by step What should I put together and then sign it?

specially if I had more than 1 input how make sigscript ?

I have a library that does the sign operation for me. however, I don't know what structure I need to use for the message that is going to be signed especially when there are multiple outputs.

saeid ezzati

Posted 2018-08-18T21:02:15.067

Reputation: 123

Answers

1

The data to be signed is called Hash Preimage. Then you sign the double SHA256 of hash preimage, which is 256-bits long. Before hashing, the data must be formed as shown in this answer. If you're signing a SegWit transaction, the contents of the preimage changes, as defined in BIP 143.

Then you can use the formulae here, Eq. 2:

(x1, y1) = k × G(x, y) mod p
r = x1 mod n

k is a random number, G is the generator, p is the prime modulo, etc.

Then,

s = (k^-1 (h(m) + d * r)) mod n

d is the private key, h(m) is the double SHA256 result. Now, you can use r, s to create the DER-encoded signature.

MCCCS

Posted 2018-08-18T21:02:15.067

Reputation: 5 827

I read this but this solution was for only a transaction with one output. if my outputs becomes 2 or 3 now how must make scriptsig?

saeid ezzati 2018-08-19T10:38:17.480

Here's an example with multiple outputs. Here's the specification for outputs in BIP143, scroll down to hashOutputs.

MCCCS 2018-08-19T13:42:16.557

I read this link But it's not explained at all about how the script signature section was created !!

saeid ezzati 2018-08-19T16:22:37.757

After you formed the data in the examples, you double sha256 it and use the equations above. Do you want to learn how to do that using libsecp256k1?MCCCS 2018-08-19T19:18:22.033

no. I have a library that do the sign operation for me. I only want to know exactly which parts of the transaction do I need to put together, and what order should I use before sign operation with more than one input and one output ?saeid ezzati 2018-08-21T07:30:16.597