user57339: I don't understand what the 'ScriptCode' thing is. Is it a part of transaction format? The wiki https://en.bitcoin.it/wiki/Transaction describes scriptPubKey and scriptSig, mentioning nothing about 'ScriptCode'. 
When viewing an example P2WPKH transaction here http://n.bitcoin.ninja/checktx?txid=d869f854e1f8788bcff294cc83b280942a8c728de71eb709a2c29d10bfe21b7c
The "Script Code" field is displayed as "OP_DUP OP_HASH160 1d7cd6c75c2e86f4cbf98eaed221b30bd9a0b928 OP_EQUALVERIFY OP_CHECKSIG"(so the standard script used by ordinary P2PKH transactions), but these are not given by scriptSig or scriptPubKey(obviously, since those two have a very specific form required for SegWit transactions). Can someone explain where this stuff comes from?

user48884: The ScriptCode is the script that is evaluated for a witness program type. Each witness program type has a specific template for the ScriptCode. That is simply part of its definition.
For a Pay-to-Witness-Pubkey-Hash output the ScriptCode is
OP_DUP OP_HASH160 <pubkey hash> OP_EQUALVERIFY OP_CHECKSIG

The <pubkey hash> for the ScriptCode is taken from the witness program.

57339: <p>I don't understand what the 'ScriptCode' thing is. Is it a part of transaction format? The wiki <a href="https://en.bitcoin.it/wiki/Transaction" rel="noreferrer">https://en.bitcoin.it/wiki/Transaction</a> describes scriptPubKey and scriptSig, mentioning nothing about 'ScriptCode'. </p>

<p>When viewing an example P2WPKH transaction here <a href="http://n.bitcoin.ninja/checktx?txid=d869f854e1f8788bcff294cc83b280942a8c728de71eb709a2c29d10bfe21b7c" rel="noreferrer">http://n.bitcoin.ninja/checktx?txid=d869f854e1f8788bcff294cc83b280942a8c728de71eb709a2c29d10bfe21b7c</a></p>

<p>The "Script Code" field is displayed as "OP_DUP OP_HASH160 1d7cd6c75c2e86f4cbf98eaed221b30bd9a0b928 OP_EQUALVERIFY OP_CHECKSIG"(so the standard script used by ordinary P2PKH transactions), but these are not given by scriptSig or scriptPubKey(obviously, since those two have a very specific form required for SegWit transactions). Can someone explain where this stuff comes from?</p>
 48884: <p>The <code>ScriptCode</code> is the script that is evaluated for a witness program type. Each witness program type has a specific template for the <code>ScriptCode</code>. That is simply part of its definition.</p>

<p>For a Pay-to-Witness-Pubkey-Hash output the ScriptCode is</p>

<pre><code>OP_DUP OP_HASH160 &lt;pubkey hash&gt; OP_EQUALVERIFY OP_CHECKSIG
</code></pre>

<p>The <code>&lt;pubkey hash&gt;</code> for the ScriptCode is taken from the witness program.</p>
