I have a little confusion about naming in Bitcoin.

Redeem script is the conditions that will be satisfy. For example P2PKH inside P2SH


In P2SH-P2WPKH the redeem script is:

The P2SH redeemScript is always 22 bytes. It starts with a OP_0, followed by a canonical push of the keyhash (i.e. 0x0014{20-byte keyhash}).

Sometime It call script hash, and during the transaction I need to insert the redeem script in witnessScript. "witnessScript": "hex", (string) (required for P2WSH or P2SH-P2WSH) witness script

Then the redeem script in segwit environment is called redeem script, script hash or witness script?

Witness program

A scriptPubKey (or redeemScript as defined in BIP16/P2SH) that consists of a 1-byte push opcode (for 0 to 16) followed by a data push between 2 and 40 bytes gets a new special meaning.

Witness program depends on script could be scriptPubkey or redeem script?

1 Answer 1

  • The scriptPubKey is the script as it is placed in the transaction output.
  • The redeemScript (P2SH only) is the script pushed as the last scriptSig item. In P2SH scripts, the scriptPubKey is equal to OP_HASH160 <Hash160(redeemScript)> OP_EQUAL.
  • The witness script (P2WSH only) is the script in the last witness stack position.
  • The witness program is Hash160(pubkey) for P2WPKH, and SHA256(witness_script) (not Hash256(witness_script)!) for P2WSH. For native segwit outputs the scriptPubKey is OP_0 <witness_program>; for P2SH-wrapped segwit outputs the redeemScript is OP_0 <witness_program> (and thus the scriptPubKey is OP_HASH160 <Hash160(OP_0 <witness_script>)> OP_EQUAL.
  • In P2SH-wrapper is OP_0 <witness_program> where OP_0 is the witness version?
    – monkeyUser
    Commented Apr 12, 2020 at 10:53
  • 1
    Yes, indeed. The OP_0 is the witness version. So far only witness v0 is defined. Commented Apr 12, 2020 at 17:08
  • the fourth bullet point. The witness program is Hash160(pubkey) for P2WPKH, and Hash256(witness_script) for P2WPKH maybe I think you mean The witness program is Hash160(pubkey) for P2WPKH, and Hash256(witness_script) for P2WSH ?
    – monkeyUser
    Commented Apr 13, 2020 at 10:52
  • 1
    Yes indeed, fixed. Commented Apr 13, 2020 at 15:56
  • 1
    @PieterWuille I caught what monkeyUser caught too. It doesn't look like the post has been edited with the fix.
    – Sam
    Commented Mar 8, 2022 at 19:54

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.