483cb5ee1312b72fd25093fc78c2761df601db
1 Received: from sog-mx-4.v43.ch3.sourceforge.com ([172.29.43.194] 2 helo=mx.sourceforge.net) 3 by sfs-ml-3.v29.ch3.sourceforge.com with esmtp (Exim 4.76) 4 (envelope-from <me@thomaskerin.io>) id 1YM1Wx-0007rJ-FJ 5 for bitcoin-development@lists.sourceforge.net; 6 Thu, 12 Feb 2015 21:42:39 +0000 7 X-ACL-Warn: 8 Received: from static.204.212.9.5.clients.your-server.de ([5.9.212.204] 9 helo=thelaboratory.tk) 10 by sog-mx-4.v43.ch3.sourceforge.com with esmtps (TLSv1:AES256-SHA:256) 11 (Exim 4.76) id 1YM1Ws-00045C-NX 12 for bitcoin-development@lists.sourceforge.net; 13 Thu, 12 Feb 2015 21:42:39 +0000 14 Received: from [192.168.0.222] (unknown [89.100.72.228]) 15 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) 16 (No client certificate requested) 17 (Authenticated sender: me@thomaskerin.io) 18 by thelaboratory.tk (Postfix) with ESMTPSA id 489829BA084E; 19 Thu, 12 Feb 2015 21:42:25 +0000 (UTC) 20 Message-ID: <54DD1E3F.60006@thomaskerin.io> 21 Date: Thu, 12 Feb 2015 21:42:23 +0000 22 From: Thomas Kerin <me@thomaskerin.io> 23 User-Agent: Mozilla/5.0 (X11; Linux x86_64; 24 rv:31.0) Gecko/20100101 Thunderbird/31.4.0 25 MIME-Version: 1.0 26 To: bitcoin-development@lists.sourceforge.net, root@haskoin.com, 27 ruben@blocktrail.com 28 OpenPGP: url=http://pgp.mit.edu/pks/lookup?op=get&search=0x3F0D2F83A2966155 29 Content-Type: multipart/mixed; boundary="------------080200060808050806080104" 30 X-Spam-Score: 1.0 (+) 31 X-Spam-Report: Spam Filtering performed by mx.sourceforge.net. 32 See http://spamassassin.org/tag/ for more details. 33 1.0 HTML_MESSAGE BODY: HTML included in message 34 0.0 T_FILL_THIS_FORM_SHORT Fill in a short form with personal 35 information 36 X-Headers-End: 1YM1Ws-00045C-NX 37 Subject: [Bitcoin-development] BIP for deterministic pay-to-script-hash 38 multi-signature addresses 39 X-BeenThere: bitcoin-development@lists.sourceforge.net 40 X-Mailman-Version: 2.1.9 41 Precedence: list 42 List-Id: <bitcoin-development.lists.sourceforge.net> 43 List-Unsubscribe: <https://lists.sourceforge.net/lists/listinfo/bitcoin-development>, 44 <mailto:bitcoin-development-request@lists.sourceforge.net?subject=unsubscribe> 45 List-Archive: <http://sourceforge.net/mailarchive/forum.php?forum_name=bitcoin-development> 46 List-Post: <mailto:bitcoin-development@lists.sourceforge.net> 47 List-Help: <mailto:bitcoin-development-request@lists.sourceforge.net?subject=help> 48 List-Subscribe: <https://lists.sourceforge.net/lists/listinfo/bitcoin-development>, 49 <mailto:bitcoin-development-request@lists.sourceforge.net?subject=subscribe> 50 X-List-Received-Date: Thu, 12 Feb 2015 21:42:39 -0000 51 52 This is a multi-part message in MIME format. 53 --------------080200060808050806080104 54 Content-Type: multipart/alternative; 55 boundary="------------030101090601090800080704" 56 57 58 --------------030101090601090800080704 59 Content-Type: text/plain; charset=utf-8 60 Content-Transfer-Encoding: quoted-printable 61 62 63 -----BEGIN PGP SIGNED MESSAGE----- 64 Hash: SHA512 65 66 Hi all, 67 68 I have drafted a BIP with Jean Pierre and Ruben after the last 69 discussion, related to a standard for deriving a canonical 70 pay-to-script-hash address given a set of public keys and the number of 71 signatures required. There have been two or three discussions about it 72 on the mailing list to date, and various services already carry out this 73 process. I hope a BIP to describe this process will allow services to 74 declare themselves as BIPXX compliant, working towards interoperability 75 of services and simplifying the derivation of scripts and their 76 addresses by all parties. 77 78 79 BIP: XX 80 Title: Deterministic Pay-to-script-hash multi-signature addresses 81 through public key sorting 82 Author: Thomas Kerin, Jean-Pierre Rupp, Ruben de Vries 83 Status: Draft 84 Type: Standards Track 85 Created: 8 February 2015 86 87 =3D=3DAbstract=3D=3D 88 89 This BIP describes a method to deterministically generate 90 multi-signature transaction scripts. It focuses on defining how the 91 public keys must be encoded and sorted so that the redeem script and 92 corresponding P2SH address are always the same for a given set of keys 93 and number of required signatures. 94 95 =3D=3DMotivation=3D=3D 96 97 Most multi-signature transactions are addressed to P2SH 98 (pay-to-script-hash) addresses, as defined in BIP-0016. 99 100 Multi-signature redeem scripts do not require a particular ordering or 101 encoding for public keys. This means that for a given set of keys and 102 number of required signatures, there are as many as 2(n!) possible 103 standard redeem scripts, each with its separate P2SH address. Adhering 104 to a an ordering scheme and key encoding would ensure that a 105 multi-signature =E2=80=9Caccount=E2=80=9D (set of public keys and require= 106 d signature 107 count) has a canonical P2SH address. 108 109 By adopting a sorting and encoding standard, compliant wallets will 110 always produce the same P2SH address for the same given set of keys and 111 required signature count, making it easier to recognize transactions 112 involving that multi-signature account. This is particularly attractive 113 for multisignature hierarchical-deterministic wallets, as less state is 114 required to setup multi-signature accounts: only the number of required 115 signatures and master public keys of participants need to be shared, and 116 all wallets will generate the same addresses. 117 118 While most web wallets do not presently facilitate the setup of 119 multisignature accounts with users of a different service, conventions 120 which ensure cross-compatibility should make it easier to achieve this. 121 122 Many wallet as a service providers use a 2of3 multi-signature schema 123 where the user stores 1 of the keys (offline) as backup while using the 124 other key for daily use and letting the service cosign his transactions. 125 This standard will help in enabling a party other than the service 126 provider to recover the wallet without any help from the service provider= 127 =2E 128 129 =3D=3DImplementation=3D=3D 130 131 For a set of public keys, ensure that they have been received in 132 compressed form, sort them lexicographically according to their binary 133 representation before using the resulting list of keys in a standard 134 multisig redeem script. Hash the redeem script according to BIP-0016 to 135 get the P2SH address. 136 137 =3D=3DCompatibility=3D=3D 138 139 * Uncompressed keys are incompatible with this specificiation. A 140 compatible implementation should not automatically compress keys.=20 141 Receiving an uncompressed key from a multisig participant should be 142 interpreted as a sign that the user has an incompatible implementation. 143 * P2SH addressses do not reveal information about the script that is 144 receiving the funds. For this reason it is not technically possible to 145 enforce this BIP as a rule on the network. Also, it would cause a hard 146 fork. 147 * Implementations that do not conform with this BIP will have 148 compatibility issues with strictly-compliant wallets. 149 * Implementations which do adopt this standard will be cross-compatible 150 when choosing multisig addressses. 151 * If a group of users were not entirely compliant, there is the 152 possibility that a participant will derive an address that the others 153 will not recognize as part of the common multisig account. 154 155 =3D=3DTest vectors=3D=3D 156 The required number of signatures in each case is 2. 157 158 Vector 1 159 * List 160 ** 02ff12471208c14bd580709cb2358d98975247d8765f92bc25eab3b2763ed605f8 161 ** 02fe6f0a5a297eb38c391581c4413e084773ea23954d93f7753db7dc0adc188b2f 162 * Sorted 163 ** 02fe6f0a5a297eb38c391581c4413e084773ea23954d93f7753db7dc0adc188b2f 164 ** 02ff12471208c14bd580709cb2358d98975247d8765f92bc25eab3b2763ed605f8 165 * Script 166 ** 167 522102fe6f0a5a297eb38c391581c4413e084773ea23954d93f7753db7dc0adc188b2f210= 168 2ff12471208c14bd580709cb2358d98975247d8765f92bc25eab3b2763ed605f852ae 169 * Address 170 ** 39bgKC7RFbpoCRbtD5KEdkYKtNyhpsNa3Z 171 172 Vector 2 (Already sorted, no action required) 173 * List: 174 ** 02632b12f4ac5b1d1b72b2a3b508c19172de44f6f46bcee50ba33f3f9291e47ed0 175 ** 027735a29bae7780a9755fae7a1c4374c656ac6a69ea9f3697fda61bb99a4f3e77 176 ** 02e2cc6bd5f45edd43bebe7cb9b675f0ce9ed3efe613b177588290ad188d11b404 177 * Sorted: 178 ** 02632b12f4ac5b1d1b72b2a3b508c19172de44f6f46bcee50ba33f3f9291e47ed0 179 ** 027735a29bae7780a9755fae7a1c4374c656ac6a69ea9f3697fda61bb99a4f3e77 180 ** 02e2cc6bd5f45edd43bebe7cb9b675f0ce9ed3efe613b177588290ad188d11b404 181 * Script 182 ** 183 522102632b12f4ac5b1d1b72b2a3b508c19172de44f6f46bcee50ba33f3f9291e47ed0210= 184 27735a29bae7780a9755fae7a1c4374c656ac6a69ea9f3697fda61bb99a4f3e772102e2cc= 185 6bd5f45edd43bebe7cb9b675f0ce9ed3efe613b177588290ad188d11b40453ae 186 * Address 187 ** 3CKHTjBKxCARLzwABMu9yD85kvtm7WnMfH 188 189 Vector 3: 190 * List: =20 191 ** 030000000000000000000000000000000000004141414141414141414141414141 192 ** 020000000000000000000000000000000000004141414141414141414141414141 193 ** 020000000000000000000000000000000000004141414141414141414141414140 194 ** 030000000000000000000000000000000000004141414141414141414141414140 195 * Sorted: 196 ** 020000000000000000000000000000000000004141414141414141414141414140 197 ** 020000000000000000000000000000000000004141414141414141414141414141 198 ** 030000000000000000000000000000000000004141414141414141414141414140 199 ** 030000000000000000000000000000000000004141414141414141414141414141 200 * Script 201 ** 202 5221020000000000000000000000000000000000004141414141414141414141414140210= 203 2000000000000000000000000000000000000414141414141414141414141414121030000= 204 0000000000000000000000000000000041414141414141414141414141402103000000000= 205 000000000000000000000000000414141414141414141414141414154ae 206 * Address 207 ** 32V85igBri9zcfBRVupVvwK18NFtS37FuD 208 209 Vector 4: (from bitcore) 210 * List: 211 ** 022df8750480ad5b26950b25c7ba79d3e37d75f640f8e5d9bcd5b150a0f85014da 212 ** 03e3818b65bcc73a7d64064106a859cc1a5a728c4345ff0b641209fba0d90de6e9 213 ** 021f2f6e1e50cb6a953935c3601284925decd3fd21bc445712576873fb8c6ebc18 214 * Sorted: 215 ** 021f2f6e1e50cb6a953935c3601284925decd3fd21bc445712576873fb8c6ebc18 216 ** 022df8750480ad5b26950b25c7ba79d3e37d75f640f8e5d9bcd5b150a0f85014da 217 ** 03e3818b65bcc73a7d64064106a859cc1a5a728c4345ff0b641209fba0d90de6e9 218 * Script 219 ** 220 5221021f2f6e1e50cb6a953935c3601284925decd3fd21bc445712576873fb8c6ebc18210= 221 22df8750480ad5b26950b25c7ba79d3e37d75f640f8e5d9bcd5b150a0f85014da2103e381= 222 8b65bcc73a7d64064106a859cc1a5a728c4345ff0b641209fba0d90de6e953ae 223 * Address 224 ** 3Q4sF6tv9wsdqu2NtARzNCpQgwifm2rAba 225 226 =3D=3DUsage & Implementations=3D=3D 227 * BIP45 - Structure for Deterministic P2SH Multisignature Wallets - 228 https://github.com/bitcoin/bips/blob/master/bip-0045.mediawiki#address-ge= 229 neration-procedure 230 * Bitcore - 231 https://github.com/bitpay/bitcore/blob/50a868cb8cdf2be04bb1c5bf4bcc064cc0= 232 6f5888/lib/script/script.js#L541 233 * Haskoin - 234 https://github.com/haskoin/haskoin/blob/master/Network/Haskoin/Script/Par= 235 ser.hs#L112-122 236 * Armory - 237 https://github.com/etotheipi/BitcoinArmory/blob/268db0f3fa20c989057bd4334= 238 3a43b2edbe89aeb/armoryengine/ArmoryUtils.py#L1441 239 * Multisignature Brainwallet - http://ms-brainwallet.org/ 240 =20 241 For now, the BIP will live here: 242 https://github.com/afk11/bips/blob/bip0090/bip-0090.mediawiki/ 243 244 Looking forward to any feedback and discussions that arise! 245 246 247 - --=20 248 Thomas Kerin 249 - ------------------------- 250 251 My PGP key can be found here 252 <http://pgp.mit.edu/pks/lookup?op=3Dget&search=3D0x3F0D2F83A2966155> 253 -----BEGIN PGP SIGNATURE----- 254 Version: GnuPG v1 255 256 iQJ8BAEBCgBmBQJU3R43XxSAAAAAAC4AKGlzc3Vlci1mcHJAbm90YXRpb25zLm9w 257 ZW5wZ3AuZmlmdGhob3JzZW1hbi5uZXQ2MzI1MzM4QjJGOTU5OEUzREMzQzc0MzAz 258 RjBEMkY4M0EyOTY2MTU1AAoJED8NL4OilmFVKwUP/3MS++5D+YJAPZG/a7PhY3hf 259 8UvBkaAp7YqCVvZkHhpQ3+7AF+c6nAfu9JRFSdGP5hNvApagbZoC2oeLQ5rHBfXC 260 MbkbqOSp0z7C4MvEqmncTSgqNykxanVfiypV2S7hU2fbiylVi2jIaGrjqQt32jT7 261 kdFw5wqAS3zVHJVZhnUufLj/VYC94vdfrgpL22WI9oNH/nOvO6uG3YwZ9rc63ZH/ 262 cwTmUnjOqDUlJWtYsfcoDL41RkmeBtGqD+6gTe3BtVHJQqlsEWpB1hsucOv5XdEk 263 V0teRUQ8+hFnU86+S4VJ8+qy/QjYflHnfy7vcA3M6LhAkle3scCs7ZCpDb9EGFM+ 264 yAZivS4vrcVaYgY+oBdSnMEyvudwDKHwdy/rNjTskCLsHzcZX5jAoIxT2XskAXMD 265 UcWRelpN7Wth5jnSXeB89Wg1DqBwyl0LF7ZXepglopfHbAIsZ1oms252f5G7cfFq 266 +11HR3JswvVN4otqNAZzYaN7wEBEZwlcD+a/VKoNE0uPVuBS08phhNGjHmidXCOZ 267 wC11biStwjt1tv1lUNcK0HkkNReuUrUDK1dNKxGGfUHk+Qcka+cQ1ap47lLx06+U 268 LskPwJKR1tvoHkVMLy4UutX8bIRtXE3WbSOQlV9Q/4/os3tTpVlH5AX47W+2CikV 269 t3pTmdJy0FubCrHSJ63C 270 =3D5H5A 271 -----END PGP SIGNATURE----- 272 273 274 --------------030101090601090800080704 275 Content-Type: text/html; charset=utf-8 276 Content-Transfer-Encoding: quoted-printable 277 278 <html> 279 <head> 280 281 <meta http-equiv=3D"content-type" content=3D"text/html; charset=3Dutf= 282 -8"> 283 </head> 284 <body bgcolor=3D"#FFFFFF" text=3D"#000000"> 285 <br> 286 -----BEGIN PGP SIGNED MESSAGE-----<br> 287 Hash: SHA512<br> 288 <br> 289 Hi all,<br> 290 <br> 291 I have drafted a BIP with Jean Pierre and Ruben after the last 292 discussion, related to a standard for deriving a canonical 293 pay-to-script-hash address given a set of public keys and the number 294 of signatures required. There have been two or three discussions 295 about it on the mailing list to date, and various services already 296 carry out this process. I hope a BIP to describe this process will 297 allow services to declare themselves as BIPXX compliant, working 298 towards interoperability of services and simplifying the derivation 299 of scripts and their addresses by all parties.<br> 300 <br> 301 <br> 302 =C2=A0 BIP: XX<br> 303 =C2=A0 Title: Deterministic Pay-to-script-hash multi-signature addres= 304 ses 305 through public key sorting<br> 306 =C2=A0 Author: Thomas Kerin, Jean-Pierre Rupp, Ruben de Vries<br> 307 =C2=A0 Status: Draft<br> 308 =C2=A0 Type: Standards Track<br> 309 =C2=A0 Created: 8 February 2015<br> 310 <br> 311 =3D=3DAbstract=3D=3D<br> 312 <br> 313 This BIP describes a method to deterministically generate 314 multi-signature transaction scripts.=C2=A0 It focuses on defining how= 315 the 316 public keys must be encoded and sorted so that the redeem script and 317 corresponding P2SH address are always the same for a given set of 318 keys and number of required signatures.<br> 319 <br> 320 =3D=3DMotivation=3D=3D<br> 321 <br> 322 Most multi-signature transactions are addressed to P2SH 323 (pay-to-script-hash) addresses, as defined in BIP-0016.<br> 324 <br> 325 Multi-signature redeem scripts do not require a particular ordering 326 or encoding for public keys.=C2=A0 This means that for a given set of 327 keys and number of required signatures, there are as many as 2(n!) 328 possible standard redeem scripts, each with its separate P2SH 329 address.=C2=A0 Adhering to a an ordering scheme and key encoding woul= 330 d 331 ensure that a multi-signature =E2=80=9Caccount=E2=80=9D (set of publi= 332 c keys and 333 required signature count) has a canonical P2SH address.<br> 334 <br> 335 By adopting a sorting and encoding standard, compliant wallets will 336 always produce the same P2SH address for the same given set of keys 337 and required signature count, making it easier to recognize 338 transactions involving that multi-signature account.=C2=A0 This is 339 particularly attractive for multisignature 340 hierarchical-deterministic wallets, as less state is required to 341 setup multi-signature accounts:=C2=A0 only the number of required 342 signatures and master public keys of participants need to be shared, 343 and all wallets will generate the same addresses.<br> 344 <br> 345 While most web wallets do not presently facilitate the setup of 346 multisignature accounts with users of a different service, 347 conventions which ensure cross-compatibility should make it easier 348 to achieve this.<br> 349 <br> 350 Many wallet as a service providers use a 2of3 multi-signature schema 351 where the user stores 1 of the keys (offline) as backup while using 352 the other key for daily use and letting the service cosign his 353 transactions.<br> 354 This standard will help in enabling a party other than the service 355 provider to recover the wallet without any help from the service 356 provider.<br> 357 <br> 358 =3D=3DImplementation=3D=3D<br> 359 <br> 360 For a set of public keys, ensure that they have been received in 361 compressed form, sort them lexicographically according to their 362 binary representation before using the resulting list of keys in a 363 standard multisig redeem script.=C2=A0 Hash the redeem script accordi= 364 ng 365 to BIP-0016 to get the P2SH address.<br> 366 <br> 367 =3D=3DCompatibility=3D=3D<br> 368 <br> 369 * Uncompressed keys are incompatible with this specificiation. A 370 compatible implementation should not automatically compress keys.=C2=A0 371 Receiving an uncompressed key from a multisig participant should be 372 interpreted as a sign that the user has an incompatible 373 implementation.<br> 374 * P2SH addressses do not reveal information about the script that is 375 receiving the funds. For this reason it is not technically possible 376 to enforce this BIP as a rule on the network.=C2=A0 Also, it would ca= 377 use 378 a hard fork.<br> 379 * Implementations that do not conform with this BIP will have 380 compatibility issues with strictly-compliant wallets.<br> 381 * Implementations which do adopt this standard will be 382 cross-compatible when choosing multisig addressses.<br> 383 * If a group of users were not entirely compliant, there is the 384 possibility that a participant will derive an address that the 385 others will not recognize as part of the common multisig account.<br> 386 <br> 387 =3D=3DTest vectors=3D=3D<br> 388 The required number of signatures in each case is 2.<br> 389 <br> 390 Vector 1<br> 391 * List<br> 392 ** 393 02ff12471208c14bd580709cb2358d98975247d8765f92bc25eab3b2763ed605f8<br= 394 > 395 ** 396 02fe6f0a5a297eb38c391581c4413e084773ea23954d93f7753db7dc0adc188b2f<br= 397 > 398 * Sorted<br> 399 ** 400 02fe6f0a5a297eb38c391581c4413e084773ea23954d93f7753db7dc0adc188b2f<br= 401 > 402 ** 403 02ff12471208c14bd580709cb2358d98975247d8765f92bc25eab3b2763ed605f8<br= 404 > 405 * Script<br> 406 ** 407 522102fe6f0a5a297eb38c391581c4413e084773ea23954d93f7753db7dc0adc188b2f210= 408 2ff12471208c14bd580709cb2358d98975247d8765f92bc25eab3b2763ed605f852ae<br> 409 * Address<br> 410 ** 39bgKC7RFbpoCRbtD5KEdkYKtNyhpsNa3Z<br> 411 <br> 412 Vector 2 (Already sorted, no action required)<br> 413 * List:<br> 414 ** 415 02632b12f4ac5b1d1b72b2a3b508c19172de44f6f46bcee50ba33f3f9291e47ed0<br= 416 > 417 ** 418 027735a29bae7780a9755fae7a1c4374c656ac6a69ea9f3697fda61bb99a4f3e77<br= 419 > 420 ** 421 02e2cc6bd5f45edd43bebe7cb9b675f0ce9ed3efe613b177588290ad188d11b404<br= 422 > 423 * Sorted:<br> 424 ** 425 02632b12f4ac5b1d1b72b2a3b508c19172de44f6f46bcee50ba33f3f9291e47ed0<br= 426 > 427 ** 428 027735a29bae7780a9755fae7a1c4374c656ac6a69ea9f3697fda61bb99a4f3e77<br= 429 > 430 ** 431 02e2cc6bd5f45edd43bebe7cb9b675f0ce9ed3efe613b177588290ad188d11b404<br= 432 > 433 * Script<br> 434 ** 435 522102632b12f4ac5b1d1b72b2a3b508c19172de44f6f46bcee50ba33f3f9291e47ed0210= 436 27735a29bae7780a9755fae7a1c4374c656ac6a69ea9f3697fda61bb99a4f3e772102e2cc= 437 6bd5f45edd43bebe7cb9b675f0ce9ed3efe613b177588290ad188d11b40453ae<br> 438 * Address<br> 439 ** 3CKHTjBKxCARLzwABMu9yD85kvtm7WnMfH<br> 440 <br> 441 Vector 3:<br> 442 * List:=C2=A0 =C2=A0<br> 443 ** 444 030000000000000000000000000000000000004141414141414141414141414141<br= 445 > 446 ** 447 020000000000000000000000000000000000004141414141414141414141414141<br= 448 > 449 ** 450 020000000000000000000000000000000000004141414141414141414141414140<br= 451 > 452 ** 453 030000000000000000000000000000000000004141414141414141414141414140<br= 454 > 455 * Sorted:<br> 456 ** 457 020000000000000000000000000000000000004141414141414141414141414140<br= 458 > 459 ** 460 020000000000000000000000000000000000004141414141414141414141414141<br= 461 > 462 ** 463 030000000000000000000000000000000000004141414141414141414141414140<br= 464 > 465 ** 466 030000000000000000000000000000000000004141414141414141414141414141<br= 467 > 468 * Script<br> 469 ** 470 5221020000000000000000000000000000000000004141414141414141414141414140210= 471 2000000000000000000000000000000000000414141414141414141414141414121030000= 472 0000000000000000000000000000000041414141414141414141414141402103000000000= 473 000000000000000000000000000414141414141414141414141414154ae<br> 474 * Address<br> 475 ** 32V85igBri9zcfBRVupVvwK18NFtS37FuD<br> 476 <br> 477 Vector 4: (from bitcore)<br> 478 * List:<br> 479 ** 480 022df8750480ad5b26950b25c7ba79d3e37d75f640f8e5d9bcd5b150a0f85014da<br= 481 > 482 ** 483 03e3818b65bcc73a7d64064106a859cc1a5a728c4345ff0b641209fba0d90de6e9<br= 484 > 485 ** 486 021f2f6e1e50cb6a953935c3601284925decd3fd21bc445712576873fb8c6ebc18<br= 487 > 488 * Sorted:<br> 489 ** 490 021f2f6e1e50cb6a953935c3601284925decd3fd21bc445712576873fb8c6ebc18<br= 491 > 492 ** 493 022df8750480ad5b26950b25c7ba79d3e37d75f640f8e5d9bcd5b150a0f85014da<br= 494 > 495 ** 496 03e3818b65bcc73a7d64064106a859cc1a5a728c4345ff0b641209fba0d90de6e9<br= 497 > 498 * Script<br> 499 ** 500 5221021f2f6e1e50cb6a953935c3601284925decd3fd21bc445712576873fb8c6ebc18210= 501 22df8750480ad5b26950b25c7ba79d3e37d75f640f8e5d9bcd5b150a0f85014da2103e381= 502 8b65bcc73a7d64064106a859cc1a5a728c4345ff0b641209fba0d90de6e953ae<br> 503 * Address<br> 504 ** 3Q4sF6tv9wsdqu2NtARzNCpQgwifm2rAba<br> 505 <br> 506 =3D=3DUsage & Implementations=3D=3D<br> 507 * BIP45 - Structure for Deterministic P2SH Multisignature Wallets - 508 <a class=3D"moz-txt-link-freetext" href=3D"https://github.com/bitcoin/bip= 509 s/blob/master/bip-0045.mediawiki#address-generation-procedure">https://gi= 510 thub.com/bitcoin/bips/blob/master/bip-0045.mediawiki#address-generation-p= 511 rocedure</a><br> 512 * Bitcore - 513 <a class=3D"moz-txt-link-freetext" href=3D"https://github.com/bitpay/bitc= 514 ore/blob/50a868cb8cdf2be04bb1c5bf4bcc064cc06f5888/lib/script/script.js#L5= 515 41">https://github.com/bitpay/bitcore/blob/50a868cb8cdf2be04bb1c5bf4bcc06= 516 4cc06f5888/lib/script/script.js#L541</a><br> 517 * Haskoin - 518 <a class=3D"moz-txt-link-freetext" href=3D"https://github.com/haskoin/has= 519 koin/blob/master/Network/Haskoin/Script/Parser.hs#L112-122">https://githu= 520 b.com/haskoin/haskoin/blob/master/Network/Haskoin/Script/Parser.hs#L112-1= 521 22</a><br> 522 * Armory - 523 <a class=3D"moz-txt-link-freetext" href=3D"https://github.com/etotheipi/B= 524 itcoinArmory/blob/268db0f3fa20c989057bd43343a43b2edbe89aeb/armoryengine/A= 525 rmoryUtils.py#L1441">https://github.com/etotheipi/BitcoinArmory/blob/268d= 526 b0f3fa20c989057bd43343a43b2edbe89aeb/armoryengine/ArmoryUtils.py#L1441</a= 527 ><br> 528 * Multisignature Brainwallet - <a class=3D"moz-txt-link-freetext" hre= 529 f=3D"http://ms-brainwallet.org/">http://ms-brainwallet.org/</a><br> 530 =C2=A0 =C2=A0<br> 531 For now, the BIP will live here: 532 <a class=3D"moz-txt-link-freetext" href=3D"https://github.com/afk11/b= 533 ips/blob/bip0090/bip-0090.mediawiki/">https://github.com/afk11/bips/blob/= 534 bip0090/bip-0090.mediawiki/</a><br> 535 <br> 536 Looking forward to any feedback and discussions that arise!<br> 537 <br> 538 <br> 539 - -- <br> 540 Thomas Kerin<br> 541 - -------------------------<br> 542 <br> 543 My PGP key can be found here 544 <a class=3D"moz-txt-link-rfc2396E" href=3D"http://pgp.mit.edu/pks/lookup?= 545 op=3Dget&search=3D0x3F0D2F83A2966155"><http://pgp.mit.edu/pks/look= 546 up?op=3Dget&search=3D0x3F0D2F83A2966155></a><br> 547 -----BEGIN PGP SIGNATURE-----<br> 548 Version: GnuPG v1<br> 549 <br> 550 iQJ8BAEBCgBmBQJU3R43XxSAAAAAAC4AKGlzc3Vlci1mcHJAbm90YXRpb25zLm9w<br> 551 ZW5wZ3AuZmlmdGhob3JzZW1hbi5uZXQ2MzI1MzM4QjJGOTU5OEUzREMzQzc0MzAz<br> 552 RjBEMkY4M0EyOTY2MTU1AAoJED8NL4OilmFVKwUP/3MS++5D+YJAPZG/a7PhY3hf<br> 553 8UvBkaAp7YqCVvZkHhpQ3+7AF+c6nAfu9JRFSdGP5hNvApagbZoC2oeLQ5rHBfXC<br> 554 MbkbqOSp0z7C4MvEqmncTSgqNykxanVfiypV2S7hU2fbiylVi2jIaGrjqQt32jT7<br> 555 kdFw5wqAS3zVHJVZhnUufLj/VYC94vdfrgpL22WI9oNH/nOvO6uG3YwZ9rc63ZH/<br> 556 cwTmUnjOqDUlJWtYsfcoDL41RkmeBtGqD+6gTe3BtVHJQqlsEWpB1hsucOv5XdEk<br> 557 V0teRUQ8+hFnU86+S4VJ8+qy/QjYflHnfy7vcA3M6LhAkle3scCs7ZCpDb9EGFM+<br> 558 yAZivS4vrcVaYgY+oBdSnMEyvudwDKHwdy/rNjTskCLsHzcZX5jAoIxT2XskAXMD<br> 559 UcWRelpN7Wth5jnSXeB89Wg1DqBwyl0LF7ZXepglopfHbAIsZ1oms252f5G7cfFq<br> 560 +11HR3JswvVN4otqNAZzYaN7wEBEZwlcD+a/VKoNE0uPVuBS08phhNGjHmidXCOZ<br> 561 wC11biStwjt1tv1lUNcK0HkkNReuUrUDK1dNKxGGfUHk+Qcka+cQ1ap47lLx06+U<br> 562 LskPwJKR1tvoHkVMLy4UutX8bIRtXE3WbSOQlV9Q/4/os3tTpVlH5AX47W+2CikV<br> 563 t3pTmdJy0FubCrHSJ63C<br> 564 =3D5H5A<br> 565 -----END PGP SIGNATURE-----<br> 566 <br> 567 </body> 568 </html> 569 570 --------------030101090601090800080704-- 571 572 --------------080200060808050806080104 573 Content-Type: application/pgp-keys; 574 name="0xA2966155.asc" 575 Content-Transfer-Encoding: quoted-printable 576 Content-Disposition: attachment; 577 filename="0xA2966155.asc" 578 579 -----BEGIN PGP PUBLIC KEY BLOCK----- 580 Version: GnuPG v1 581 582 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 668 JDB0hVaFYV98nLJ9V9LtEA9P 669 =3DntkV 670 -----END PGP PUBLIC KEY BLOCK----- 671 672 --------------080200060808050806080104 673 Content-Type: application/pgp-signature; 674 name="0xA2966155.asc.sig" 675 Content-Transfer-Encoding: base64 676 Content-Disposition: attachment; 677 filename="0xA2966155.asc.sig" 678 679 iQJ8BAABCgBmBQJU3R4+XxSAAAAAAC4AKGlzc3Vlci1mcHJAbm90YXRpb25zLm9wZW5wZ3Au 680 ZmlmdGhob3JzZW1hbi5uZXQ2MzI1MzM4QjJGOTU5OEUzREMzQzc0MzAzRjBEMkY4M0EyOTY2 681 MTU1AAoJED8NL4OilmFVyzwP+QExYi/C7FhTr6zhSMYs+QMi37SNCxCadapZm3CTY4S8+i6e 682 /5hMCgGMr81GqchshD6rDojth7qJYiDqT16MW20/a+kPvIBchfMOBZHumWMAVUx3sk+ENVpm 683 v0uYAMgGs0YjijtUThkXOolY/yswDDQSKV0XgR0okxwBrKPARYp2B+aA/jL84rqIah1zsJG6 684 yoWwj8Md3UNO09szDayWDtRNy4G5GQOeSGq+5VNvT0yYfg6aI7WwNEfz/wC24UIkMhILeU8/ 685 hxPe6tuJDhkf+XDKhKLQ2hazqYVbTeYqP+INa21DUvFaszPbz3VN97g0bdBr1CKKZ+vKwOxc 686 4HkQp7XfYEI0GT9Yu0Ky3w4K20JsXkNkYVaLoC+VBWtAc1tpPKtvXtUMqPgIKvpZ5Juzeqfe 687 heYYSzxBRuQycj1GDZl7ucL4Wpiy+audLyfBiURXTl/m6SfKvLV9WZX7kPV1vFVVx5RHnUZy 688 LPsuV2aeSx57N2wQ8BP2CpsI4p4sgU/sCF7DlwkFdIoBSEPVT17lmHRZnuNDDnJ/BoxgsSfz 689 C3eV0uzxGiUP80r3io0Nw8tFgvDBJL5N8JPQWBImeooJvlVQL7z256T944qJ4YviJD93nK0e 690 u4kEicMuMAYXBoBXRkbkJRFCbha6VcOcYacPr5GXHKg/gx9I5apLPrzziwCm 691 --------------080200060808050806080104-- 692 693