I have some doubts about naming in witness script/transaction.
P2SH-P2WSH (multisig)
WITNESS_SCRIPT = OP_3 <public key1> <public key2> <public key3> <OP_2>
(is it witness script or redeem script? For now I will call Witness script)
SCRIPTHASH= SHA256 (WITNESS_SCRIPT)
is it Witness script Hash or redeem script Hash?
REDEEM_SCRIPT=0020+SCRIPTHASH
is it redeem script? Maybe it's the redeem script because it is in Scriptsig. (Witness version + Witness program)
In scriptPubKey
hash160 of (0020+SCRIPTHASH)
.
What is its name? Hash160 of ?
And We have OP_HASH160 <Redeem script hash?> OP_EQUAL
P2SH-P2WPKH
KEYHASH = hash160(<public key>)
REDEEM_SCRIPT=0014+KEYHASH
is it redeem script or witness script? For now I Will call redeem script.
In scriptPubKey
hash160 of (0020+SCRIPTHASH)
.
What is its name? Hash160 of ?
And We have OP_HASH160 <Redeem script hash?> OP_EQUAL
P2WPKH NATIVE
WITNESS SCRIPT = hash160(<public key>)
In scriptpubkey
0014+WITNESS_SCRIPT
OP_0 <20 bytes witness script hash>
P2WSH NATIVE
WITNESS SCRIPT = <OP_2> <pubkey1><pubkey2><pubkey3><OP_3> <OP_CHECKMULTISIG>
WITNESS_SCRIPT_HASH = HASH160 (WITNESS SCRIPT)
In scriptpubkey
0020+WITNESS_SCRIPT_HASH
OP_0 <32 bytes witness script hash>
P2WPKH NATIVE and P2WSH NATIVE should be ok