user38458: A transaction output can have the type

Pay to public key hash, P2PKH, where the ScriptPubKey field has the format:
76 a9 14 <20-byte hash of pubkey> 88 ac
Pay to script hash, P2SH, used for e.g. multisig:
a9 14 <20-byte hash of script> 87

There is also something called P2WPKH and P2WSH. Can you show me how these outputs are formatted, and are there any more possible output formats than these four?

user30668: AFAIK there are 5 different standard non-SegWit transaction types, and 4 SegWit ones.
Non-SegWit:
Pay to public key (P2PK)
PUSH (1 byte) + <compressed/uncompressed_pk> (33/65 bytes) + OP_CHECKSIG (1 byte)

Pay to public key hash (P2PKH)
OP_DUP (1 byte) + OP_HASH160 (1 byte) + PUSH (1 byte) + <hash_160(PK)> (20 bytes) + OP_EQUALVERIFY (1 byte) + OP_CHECKSIG (1 byte)

Multisig (P2MS)
<number_of_PKs> (1 byte) PUSH (1 byte) <PK_0> (33/65 bytes) PUSH (1 byte) <PK_1> (33/65 bytes)  ... PUSH (1 byte) <PK_n-1> (33/65 bytes) OP_CHECKMULTISIG (1 byte)

P2MS allow up to 15-15 scripts, however only up to 3-3 are standard. 
Pay to script hash (P2SH)
OP_HASH160 (1 byte) + PUSH (1 byte) + <hash160(redeem_script)> (20 bytes) + OP_EQUAL (1 byte)

OP_Return
OP_RETURN (1 byte) PUSH (1 byte) <0 to 83 bytes of data>

SegWit:
Regarding segwit types, there are two non-native and two native ones.
Native Pay to witness public key hash (P2WPKH)
OP_0 (1 byte) PUSH (1 byte) <hash 160(PK*)> (20 bytes)

Native Pay to witness script hash (P2WSH)
OP_0 (1 byte) PUSH (1 byte) <script_hash> (32 bytes)

Pay to witness public key hash encapsulated in a pay to script hash (P2SH-P2WPKH)
The redeem script follows the same structure than native P2WPKH:
redeem_script = OP_0 (1 byte) PUSH (1 byte) <hash_160(PK*)> (20 bytes)
While the external structure of the script (scriptPubKey) is as any other P2SH:
OP_HASH160 (1 byte) + PUSH (1 byte) + <hash_160(redeeem_script)> (20 bytes) + OP_EQUAL (1 byte)

Pay to witness script hash encapsulated in a pay to script hash (P2SH-P2WSH)
The redeem script follows the same structure than native P2WSH:
redeem_script = OP_0 (1 byte) PUSH (1 byte) <script_hash> (32 bytes)
While the external structure of the script (scriptPubKey) is as any other P2SH:
OP_HASH160 (1 byte) + PUSH (1 byte) + <hash_160(redeeem_script)> (20 bytes) + OP_EQUAL (1 byte)

*In P2WPKH scripts the hash 160 should correspond to a compressed public key, otherwise the funds will be lost.

38458: <p>A transaction output can have the type</p>

<ul>
<li><p>Pay to public key hash, P2PKH, where the ScriptPubKey field has the format:</p>

<p>76 a9 14 &lt;20-byte hash of pubkey> 88 ac</p></li>
<li><p>Pay to script hash, P2SH, used for e.g. multisig:</p>

<p>a9 14 &lt;20-byte hash of script> 87</p></li>
</ul>

<p>There is also something called P2WPKH and P2WSH. Can you show me how these outputs are formatted, and are there any more possible output formats than these four?</p>
 30668: <p>AFAIK there are 5 different standard non-SegWit transaction types, and 4 SegWit ones.</p>

<p>Non-SegWit:</p>

<p><strong>Pay to public key (P2PK)</strong></p>

<pre><code>PUSH (1 byte) + &lt;compressed/uncompressed_pk&gt; (33/65 bytes) + OP_CHECKSIG (1 byte)
</code></pre>

<p><strong>Pay to public key hash (P2PKH)</strong></p>

<pre><code>OP_DUP (1 byte) + OP_HASH160 (1 byte) + PUSH (1 byte) + &lt;hash_160(PK)&gt; (20 bytes) + OP_EQUALVERIFY (1 byte) + OP_CHECKSIG (1 byte)
</code></pre>

<p><strong>Multisig (P2MS)</strong></p>

<pre><code>&lt;number_of_PKs&gt; (1 byte) PUSH (1 byte) &lt;PK_0&gt; (33/65 bytes) PUSH (1 byte) &lt;PK_1&gt; (33/65 bytes)  ... PUSH (1 byte) &lt;PK_n-1&gt; (33/65 bytes) OP_CHECKMULTISIG (1 byte)
</code></pre>

<p>P2MS allow up to 15-15 scripts, however only up to 3-3 are standard. </p>

<p><strong>Pay to script hash (P2SH)</strong></p>

<pre><code>OP_HASH160 (1 byte) + PUSH (1 byte) + &lt;hash160(redeem_script)&gt; (20 bytes) + OP_EQUAL (1 byte)
</code></pre>

<p><strong>OP_Return</strong></p>

<pre><code>OP_RETURN (1 byte) PUSH (1 byte) &lt;0 to 83 bytes of data&gt;
</code></pre>

<p>SegWit:</p>

<p>Regarding segwit types, there are two non-native and two native ones.</p>

<p><strong>Native Pay to witness public key hash (P2WPKH)</strong></p>

<pre><code>OP_0 (1 byte) PUSH (1 byte) &lt;hash 160(PK*)&gt; (20 bytes)
</code></pre>

<p><strong>Native Pay to witness script hash (P2WSH)</strong></p>

<pre><code>OP_0 (1 byte) PUSH (1 byte) &lt;script_hash&gt; (32 bytes)
</code></pre>

<p><strong>Pay to witness public key hash encapsulated in a pay to script hash (P2SH-P2WPKH)</strong></p>

<p>The redeem script follows the same structure than native P2WPKH:</p>

<p><code>redeem_script = OP_0 (1 byte) PUSH (1 byte) &lt;hash_160(PK*)&gt; (20 bytes)</code></p>

<p>While the external structure of the script (<code>scriptPubKey</code>) is as any other P2SH:</p>

<pre><code>OP_HASH160 (1 byte) + PUSH (1 byte) + &lt;hash_160(redeeem_script)&gt; (20 bytes) + OP_EQUAL (1 byte)
</code></pre>

<p><strong>Pay to witness script hash encapsulated in a pay to script hash (P2SH-P2WSH)</strong></p>

<p>The redeem script follows the same structure than native P2WSH:</p>

<p><code>redeem_script = OP_0 (1 byte) PUSH (1 byte) &lt;script_hash&gt; (32 bytes)</code></p>

<p>While the external structure of the script (<code>scriptPubKey</code>) is as any other P2SH:</p>

<pre><code>OP_HASH160 (1 byte) + PUSH (1 byte) + &lt;hash_160(redeeem_script)&gt; (20 bytes) + OP_EQUAL (1 byte)
</code></pre>

<p>*In P2WPKH scripts the hash 160 should correspond to a compressed public key, otherwise the funds will be lost.</p>
