From ba12a1188e01a16f4b3b5a4f817f2e613b9e3c97 Mon Sep 17 00:00:00 2001 From: "judymcconville@roadrunner.com" <judymcconville@roadrunner.com> Date: Mon, 1 May 2017 10:27:34 -0700 Subject: [PATCH] Edited ch07.asciidoc with Atlas code editor --- ch07.asciidoc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ch07.asciidoc b/ch07.asciidoc index ce14e41e..ba792e44 100644 --- a/ch07.asciidoc +++ b/ch07.asciidoc @@ -12,7 +12,7 @@ First, we will look at _multisignature_ scripts. Next we will examine the second [[multisig]] === Multisignature -((("transactions", "advanced", "multisignature scrips")))((("transactions", "advanced", id="Tadv07")))Multisignature scripts set a condition where N public keys are recorded in the script and at least M of those must provide signatures to release the encumbrance. This is also known as an M-of-N scheme, where N is the total number of keys and M is the threshold of signatures required for validation. For example, a 2-of-3 multisignature is one where three public keys are listed as potential signers and at least two of those must be used to create signatures for a valid transaction to spend the funds. At this time, standard multisignature scripts are limited to at most 15 listed public keys, meaning you can do anything from a 1-of-1 to a 15-of-15 multisignature or any combination within that range. The limitation to 15 listed keys might be lifted by the time this book is published, so check the +isStandard()+ function to see what is currently accepted by the network. +((("transactions", "advanced", "multisignature scrips")))((("transactions", "advanced", id="Tadv07")))((("scripting", "multisgnature scripts", id="Smulti07")))Multisignature scripts set a condition where N public keys are recorded in the script and at least M of those must provide signatures to release the encumbrance. This is also known as an M-of-N scheme, where N is the total number of keys and M is the threshold of signatures required for validation. For example, a 2-of-3 multisignature is one where three public keys are listed as potential signers and at least two of those must be used to create signatures for a valid transaction to spend the funds. At this time, standard multisignature scripts are limited to at most 15 listed public keys, meaning you can do anything from a 1-of-1 to a 15-of-15 multisignature or any combination within that range. The limitation to 15 listed keys might be lifted by the time this book is published, so check the +isStandard()+ function to see what is currently accepted by the network. The general form of a locking script setting an M-of-N multisignature condition is: @@ -46,7 +46,7 @@ When executed, this combined script will evaluate to TRUE if, and only if, the u [[multisig_bug]] ===== A bug in CHECKMULTISIG execution -There is a bug in ++CHECKMULTISIG++'s execution that requires a slight workaround. When +CHECKMULTISIG+ executes, it should consume M+N+2 items on the stack as parameters. However, due to the bug, +CHECKMULTISIG+ will pop an extra value or one value more than expected. +((("scripting", "multisgnature scripts", "CHECKMULTISIG bug")))((("CHECKMULTISIG bug workaround")))There is a bug in ++CHECKMULTISIG++'s execution that requires a slight workaround. When +CHECKMULTISIG+ executes, it should consume M+N+2 items on the stack as parameters. However, due to the bug, +CHECKMULTISIG+ will pop an extra value or one value more than expected. Let's look at this in greater detail using the previous validation example: @@ -74,7 +74,7 @@ but instead it is: 0 <Signature B> <Signature C> ---- -From now on, if you see a multisig unlocking script, you should expect to see an extra +0+ in the beginning, whose only purpose is as a workaround to a bug that accidentally became a consensus rule. +From now on, if you see a multisig unlocking script, you should expect to see an extra +0+ in the beginning, whose only purpose is as a workaround to a bug that accidentally became a consensus rule.((("", startref="Smulti07"))) [[p2sh]] === Pay-to-Script-Hash (P2SH)