user91116: 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

user208: P2SH-P2WSH:

Witness script: OP_3 <public key1> <public key2> <public key3> OP_2 OP_CHECKMULTSIG
Witness program: SHA256(witness script)
redeemScript: OP_0 <witness program>
Script hash: Hash160(redeemScript)
scriptPubKey: OP_HASH160 <script hash> OP_EQUAL

P2SH-P2WPKH (I believe that's what you meant instead of "P2WSH-P2PKH"):

Witness program: Hash160(public key)
redeemScript: OP_0 <witness program>
Script hash: Hash160(redeemScript)
scriptPubKey: OP_HASH160 <script hash> OP_EQUAL

P2WSH-P2PKH (native P2WSH, but with a P2PKH script inside):

Witness script: OP_DUP OP_HASH160 <Hash160(pubkey)> OP_EQUALVERIFY OP_CHECKSIG
Witness program: SHA256(witness script)
scriptPubKey: OP_0 <witness program>

Note that you should use P2WPKH instead of this.
Native P2WPKH

Witness program: Hash160(public key)
scriptPubKey: OP_0 <witness program>

Native P2WSH

Witness script: OP_3 <public key1> <public key2> <public key3> OP_2 OP_CHECKMULTISIG
Witness program: SHA256(witness script)
scriptPubKey: OP_0 <witness program>


91116: <p>I have some doubts about naming in witness script/transaction.</p>

<p><strong>P2SH-P2WSH (multisig)</strong></p>

<p><code>WITNESS_SCRIPT = OP_3 &lt;public key1&gt; &lt;public key2&gt; &lt;public key3&gt; &lt;OP_2&gt;</code></p>

<p>(is it witness script or redeem script? For now I will call Witness script)</p>

<p><code>SCRIPTHASH= SHA256 (WITNESS_SCRIPT)</code></p>

<p>is it Witness script Hash or redeem script Hash?</p>

<p><code>REDEEM_SCRIPT=0020+SCRIPTHASH</code></p>

<p>is it redeem script? Maybe it's the redeem script because it is in Scriptsig. (Witness version + Witness program)</p>

<p>In scriptPubKey 
hash160 of <code>(0020+SCRIPTHASH)</code>.</p>

<p>What is its name? Hash160 of ?</p>

<p>And We have <code>OP_HASH160 &lt;Redeem script hash?&gt; OP_EQUAL</code></p>

<p><strong>P2SH-P2WPKH</strong></p>

<p><code>KEYHASH = hash160(&lt;public key&gt;)</code></p>

<p><code>REDEEM_SCRIPT=0014+KEYHASH</code></p>

<p>is it redeem script or witness script? For now I Will call redeem script.</p>

<p>In scriptPubKey
hash160 of <code>(0020+SCRIPTHASH)</code>.</p>

<p>What is its name? Hash160 of ?</p>

<p>And We have <code>OP_HASH160 &lt;Redeem script hash?&gt; OP_EQUAL</code></p>

<p><strong>P2WPKH NATIVE</strong></p>

<p>WITNESS SCRIPT = <code>hash160(&lt;public key&gt;)</code></p>

<p>In scriptpubkey
<code>0014+WITNESS_SCRIPT</code></p>

<p><code>OP_0 &lt;20 bytes witness script hash&gt;</code></p>

<p><strong>P2WSH NATIVE</strong></p>

<p>WITNESS SCRIPT = <code>&lt;OP_2&gt; &lt;pubkey1&gt;&lt;pubkey2&gt;&lt;pubkey3&gt;&lt;OP_3&gt; &lt;OP_CHECKMULTISIG&gt;</code></p>

<p>WITNESS_SCRIPT_HASH = <code>HASH160 (WITNESS SCRIPT)</code></p>

<p>In scriptpubkey</p>

<p><code>0020+WITNESS_SCRIPT_HASH</code></p>

<p><code>OP_0 &lt;32 bytes witness script hash&gt;</code></p>

<p>P2WPKH NATIVE and P2WSH NATIVE should be ok</p>
 208: <p><strong>P2SH-P2WSH:</strong></p>

<ul>
<li>Witness script: <code>OP_3 &lt;public key1&gt; &lt;public key2&gt; &lt;public key3&gt; OP_2 OP_CHECKMULTSIG</code></li>
<li>Witness program: <code>SHA256(witness script)</code></li>
<li>redeemScript: <code>OP_0 &lt;witness program&gt;</code></li>
<li>Script hash: <code>Hash160(redeemScript)</code></li>
<li>scriptPubKey: <code>OP_HASH160 &lt;script hash&gt; OP_EQUAL</code></li>
</ul>

<p><strong>P2SH-P2WPKH</strong> (I believe that's what you meant instead of "P2WSH-P2PKH"):</p>

<ul>
<li>Witness program: <code>Hash160(public key)</code></li>
<li>redeemScript: <code>OP_0 &lt;witness program&gt;</code></li>
<li>Script hash: <code>Hash160(redeemScript)</code></li>
<li>scriptPubKey: <code>OP_HASH160 &lt;script hash&gt; OP_EQUAL</code></li>
</ul>

<p><strong>P2WSH-P2PKH</strong> (native P2WSH, but with a P2PKH script inside):</p>

<ul>
<li>Witness script: <code>OP_DUP OP_HASH160 &lt;Hash160(pubkey)&gt; OP_EQUALVERIFY OP_CHECKSIG</code></li>
<li>Witness program: <code>SHA256(witness script)</code></li>
<li>scriptPubKey: <code>OP_0 &lt;witness program&gt;</code></li>
</ul>

<p>Note that you should use P2WPKH instead of this.</p>

<p><strong>Native P2WPKH</strong></p>

<ul>
<li>Witness program: <code>Hash160(public key)</code></li>
<li>scriptPubKey: <code>OP_0 &lt;witness program&gt;</code></li>
</ul>

<p><strong>Native P2WSH</strong></p>

<ul>
<li>Witness script: <code>OP_3 &lt;public key1&gt; &lt;public key2&gt; &lt;public key3&gt; OP_2 OP_CHECKMULTISIG</code></li>
<li>Witness program: <code>SHA256(witness script)</code></li>
<li>scriptPubKey: <code>OP_0 &lt;witness program&gt;</code></li>
</ul>
