user133289: scriptSig: <pubKey>
scriptPubKey: <pubKey> OP_EQUALVERIFY

The stack has <pubKey>, <pubKey> and then OP_EQUALVERIFY. So why, does it not return TRUE, even when the recent two elements in the stack are equal?

user208: OP_EQUALVERIFY has two possible outcomes:

In case the last two items on the stack are different, it aborts script execution.
In case the last two items on the stack are equal, both are removed. Nothing is put back on the stack.

For a script execution to be treated as successful, it must end with a non-empty stack whose top element is not 0. In your case, the stack is empty after execution, and thus the script execution is treated as failed.
You probably want to use OP_EQUAL instead, which puts 0 or 1 on the stack (rather than aborting or doing nothing).

133289: <pre><code>scriptSig: &lt;pubKey&gt;
scriptPubKey: &lt;pubKey&gt; OP_EQUALVERIFY
</code></pre>
<p>The stack has &lt;pubKey&gt;, &lt;pubKey&gt; and then OP_EQUALVERIFY. So why, does it not return TRUE, even when the recent two elements in the stack are equal?</p>
 208: <p><code>OP_EQUALVERIFY</code> has two possible outcomes:</p>
<ul>
<li>In case the last two items on the stack are different, it aborts script execution.</li>
<li>In case the last two items on the stack are equal, both are removed. Nothing is put back on the stack.</li>
</ul>
<p>For a script execution to be treated as successful, it must end with a non-empty stack whose top element is not 0. In your case, the stack is empty after execution, and thus the script execution is treated as failed.</p>
<p>You probably want to use <code>OP_EQUAL</code> instead, which puts 0 or 1 on the stack (rather than aborting or doing nothing).</p>
