The Bitcoin wiki has a page that summarizes OP_EQUAL and OP_EQUALVERIFY:


  • Opcode (Hex): 135 (0x87)
  • Input: x1 x2
  • Output: True / false
  • Summary: Returns 1 if the inputs are exactly equal, 0 otherwise.


  • Opcode (Hex): 136 (0x88)
  • Input: x1 x2
  • Output: True / false
  • Summary: Same as OP_EQUAL, but runs OP_VERIFY afterward.

OP_EQUALVERIFY is listed as having a return code, when it doesn't seem like it should. (OP_EQUAL OP_VERIFY wouldn't leave anything on the stack.)


If the execution of OP_EQUAL gives true, then it does not leave true/false on the stack. If it is false then it leaves false on top of the stack and stops executing.

Bstack.push_back(fEqual ? vchTrue : vchFalse);
if (opcode == OP_EQUALVERIFY)
if (fEqual)
    return set_error(serror, SCRIPT_ERR_EQUALVERIFY);


  • Is the Bitcoin wiki wrong on this one, then?
    – Nick ODell
    Apr 4 '15 at 19:30
  • 1
    I would say so. I think it should be Nothing / False, just like OP_VERIFY.
    – morsecoder
    Apr 4 '15 at 19:35

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.