Skip to content

Commit 283aa14

Browse files
committed
add version 2 section for bloom filter-based notifications
1 parent 37a35b5 commit 283aa14

File tree

1 file changed

+44
-1
lines changed

1 file changed

+44
-1
lines changed

bip-0047.mediawiki

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
RECENT CHANGES:
2+
* (19 Apr 2016) Define version 2 payment codes
23
* (17 Apr 2016) Clarify usage of outpoints in notification transactions
34
* (18 Dec 2015) Update explanations to resolve FAQs
4-
* (12 Oct 2015) Revise blinding method for notification transactions
55
66
<pre>
77
BIP: 47
@@ -95,6 +95,14 @@ Currently specified versions:
9595
* Version 1
9696
** Address type: P2PKH
9797
** Notification type: address
98+
* Version 2
99+
** Address type: P2PKH
100+
** Notification type: bloom-multisig
101+
102+
===Recommended Versions===
103+
104+
* Wallets which have bloom filtering capabilities SHOULD create version 2 payment codes instead of version 1 payment codes.
105+
* Version 1 payment codes are only recommended for wallets which lack access to bloom filtering capability.
98106
99107
==Version 1==
100108

@@ -319,6 +327,41 @@ The sender transmits their payment code in base58 form to the calculated Bitmess
319327

320328
In order to use Bitmessage notification, the recipient must have a Bitmessage client which listens at the address which the senders will derive and is capable of relaying received payment codes to the Bitcoin wallet.
321329

330+
==Version 2==
331+
332+
Version 2 payment codes behave identifically to version 1 payment codes, except as modified below.
333+
334+
===Representation===
335+
336+
====Binary Serialization====
337+
338+
* Byte 0: version. required value: 0x02
339+
340+
===Protocol===
341+
342+
====Definitions====
343+
344+
* Notification change output: the change output from a notification transaction which which resides in the sender's wallet, but can be automatically located by the intended recipient
345+
* Payment code identifier: a 33 byte representation of a payment code constructed by prepending 0x02 to the SHA256 hash of the binary serialization of the payment code
346+
347+
====Notification Transaction====
348+
349+
Note: this procedure is used if Bob uses a version 2 payment code (regardless of the the version of Alice's payment code). If Bob's payment code is not version 2, see the appropriate section in this specification.
350+
351+
# Construct a notification transaction as per the version 1 instructions, except do not create the output to Bob's notification address
352+
# Create a notification change address as follows:
353+
## Obtain the pubkey corresponding to the next change address
354+
## Construct a multisig output in the form:
355+
<pre>OP_1 <Bob's payment code identifier> <change address pubkey> OP_2 OP_CHECKMULTISIG</pre>
356+
357+
The relative ordering of the payment code identifier and change address pubkey in the above script MAY be randomized
358+
359+
Bob detects notification transactions by adding his payment code identifier to his bloom filter.
360+
361+
# When the filter returns a notification transaction, the sender's payment code is unblinded using the same procedure as for version 1 notification transactions.
362+
363+
Alice's wallet should spend the notification change output at the next appropriate opportunity.
364+
322365
==Test Vectors==
323366

324367
* [[https://gist.github.com/SamouraiDev/6aad669604c5930864bd|BIP47 Reusable Payment Codes Test Vectors]]

0 commit comments

Comments
 (0)