My calculation of the hash160 doesn't seem to be correct - what are my sins?

'txinwitness': ['3045022100b36d2efceb87bd89466d10ee31e5c76c775d9df71095a39c38bd8c5d64fc78d202201dddf5579d993d013eb73b58110e3d280364ec47b1d7617c2f6d842e7d243d6f01',
  • So the pubkey is '02d0a9b9f420d22e3c1de27e87c6ff2ec33da21302cf07688b53d72c07e88d0422'

My understanding is that the redeem script should be:

  1. 2102d0a9b9f420d22e3c1de27e87c6ff2ec33da21302cf07688b53d72c07e88d0422ac (classic P2SH with OP_CHECKSIG) or

  2. 0002d0a9b9f420d22e3c1de27e87c6ff2ec33da21302cf07688b53d72c07e88d0422 for P2WPKH-nested-in-P2SH. [this is wrong, see below]

The expected hash output of the redeem script is:

032d2c15611c7b4b6941e62011e58cb5e204baa5 (see scriptPubKey above)

My hash outputs:

  1. ripe160(sha256('2102d0a9b9f420d22e3c1de27e87c6ff2ec33da21302cf07688b53d72c07e88d0422ac')) = 9e75bbd28314946ea5bcea5e217982fce698b041

  2. ripe160('0002d0a9b9f420d22e3c1de27e87c6ff2ec33da21302cf07688b53d72c07e88d0422') = 1c868bec66729c87e4cb60ec6d1c8846ad86d0ee

Saw this answer (P2sh redeem script hash), my calculations work fine with those inputs, but not with the above.

Related question: what is the role of the sigScript 0014cc38458a6e5c8c09e1d8fac905fb1024c8678d88 in the input if we have the txinwitness?

EDIT: mystery solved

Since scriptSig was not empty, it means that the transaction was a nested P2SH transaction. In this case it is a P2WPKH nested in BIP16 P2SH.

So in order to get the expected redeem script hash 032d2c15611c7b4b6941e62011e58cb5e204baa5 (which is base58 transformed, with a 0x05 byte appended at the beginning, to obtain the bitcoin address 31yp4jocJSRG4Wa8aV7ocKSXKcdWzkHy61):

using the scriptSig asm = 0014cc38458a6e5c8c09e1d8fac905fb1024c8678d88


ripe160(sha256('0014cc38458a6e5c8c09e1d8fac905fb1024c8678d88')) = 032d2c15611c7b4b6941e62011e58cb5e204baa5 = desired result (which can be base58 transformed into the bitcoin address).

The scriptSig asm is in this case a P2WKH redeem script, which is obtained as from the pubkey:

0x00 + ripe160(sha256('02d0a9b9f420d22e3c1de27e87c6ff2ec33da21302cf07688b53d72c07e88d0422')) = 00 cc38458a6e5c8c09e1d8fac905fb1024c8678d88

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.