From cf87badbd25445b4b725cb01fba455e5fe03a884 Mon Sep 17 00:00:00 2001 From: theStack Date: Mon, 5 Feb 2018 14:23:38 -0500 Subject: [PATCH] script opcode count IF vs. VERIFY: diff is two ops v1: HASH160 EQUALVERIFY CHECKSIG v2: HASH160 EQUAL IF CHECKSIG ENDIF ignoring the push-data ops (hash, pubkey), v1 consists of [HASH160, EQUALVERIFY, CHECKSIG] -> 3 opcodes, v2 consists of [HASH160, EQUAL, IF, CHECKSIG, ENDIF] -> 5 opcodes, hence the difference is two opcodes. --- ch07.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ch07.asciidoc b/ch07.asciidoc index a7bcbe48..f6038901 100644 --- a/ch07.asciidoc +++ b/ch07.asciidoc @@ -498,7 +498,7 @@ Bob's unlocking script is identical: ---- -The script with +IF+ does the same thing as using an opcode with a +VERIFY+ suffix; they both operate as guard clauses. However, the +VERIFY+ construction is more efficient, using one fewer opcode. +The script with +IF+ does the same thing as using an opcode with a +VERIFY+ suffix; they both operate as guard clauses. However, the +VERIFY+ construction is more efficient, using two fewer opcodes. So, when do we use +VERIFY+ and when do we use +IF+? If all we are trying to do is to attach a precondition (guard clause), then +VERIFY+ is better. If, however, we want to have more than one execution path (flow control), then we need an +IF...ELSE+ flow control clause.