Skip to content

Commit f7e08aa

Browse files
author
Matt David
committed
- Add UNKNOWN_TYPE to ProtocolMessageType enum in paymentrequest.proto and BIP75 text (based on suggestions from http://androiddevblog.com/protocol-buffers-pitfall-adding-enum-values/)
- Update BIP75 Motivation and use cases to provide more color around reasoning and use of BIP75 NOTE: The BIP75 language no longer contains a description of the KYC compliance use case, as it is a single, very specific use-case that does not have any bearing on the technical specifications herein. BIP75 extends the original BIP70 Payment Protocol to become a two-way, encrypted messaging process, which can be used for a variety of reasons one of which is regulatory compliance.
1 parent 95df420 commit f7e08aa

File tree

2 files changed

+17
-16
lines changed

2 files changed

+17
-16
lines changed

bip-0075.mediawiki

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -30,20 +30,19 @@ The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "S
3030

3131
==Motivation==
3232

33-
The motivation for defining this extension to the [[bip-0070.mediawiki|BIP70]] Payment Protocol is to allow 2 parties to exchange payment information in a permissioned and encrypted way such that wallet address communication can become a more automated process. Additionally, this extension allows for the requester of a PaymentRequest to supply a certificate and signature in order to facilitate identification for address release. This also allows for automated creation of off blockchain transaction logs that are human readable, containing who you transacted with, in addition to the information that it contains today.
33+
The motivation for defining this extension to the [[bip-0070.mediawiki|BIP70]] Payment Protocol is to allow two parties to exchange payment information in a permissioned and encrypted way, such that wallet address communication can become a more automated process. This extension also expands the types of PKI (public-key infrastructure) data that is supported, and allows it to be shared by both parties (with [[bip-0070.mediawiki|BIP70]], only the receiver could provide PKI information). This allows for automated creation of off-blockchain transaction logs that are human readable, now including information about the sender and not just the recipient.
3434

3535
The motivation for this extension to [[bip-0070.mediawiki|BIP70]] is threefold:
3636

3737
# Ensure that the payment details can only be seen by the participants in the transaction, and not by any third party.
3838
3939
# Enhance the Payment Protocol to allow for store and forward servers in order to allow, for example, mobile wallets to sign and serve Payment Requests.
4040
41-
# Allow a sender of funds the option of sharing their identity with the receiver. This information could then be used to:
41+
# Allow a sender of funds the option of sharing their identity with the receiver. This information could then be used to:
4242
43-
#* Make Bitcoin logs more human readable
44-
#* Give the user the ability to decide who to release payment details to
45-
#* Allow an entity such as a political campaign to ensure donors match regulatory and legal requirements
46-
#* Allow for an open standards based way for regulated financial entities to meet regulatory requirements
43+
#* Make Bitcoin logs (wallet transaction history) more human readable
44+
#* Give the user the ability to decide whether or not they share their Bitcoin address and other payment details when requested
45+
#* Allow for an open standards based way for businesses to keep verifiable records of their financial transactions, to better meet the needs of accounting practices or other reporting and statutory requirements
4746
#* Automate the active exchange of payment addresses, so static addresses and BIP32 X-Pubs can be avoided to maintain privacy and convenience
4847
4948
In short we wanted to make Bitcoin more human, while at the same time improving transaction privacy.
@@ -58,9 +57,9 @@ With this BIP, Bitcoin wallets could maintain an "address book" that only needs
5857

5958
2. Individual Permissioned Address Release
6059

61-
A Bitcoin wallet developer would like to allow users to view a potential sending party's identifying information before deciding whether or not to share payment information with them. Currently, [[bip-0070.mediawiki|BIP70]] specifies that the Merchant Server respond to a "pay now" style request with a PaymentRequest, releasing address and X.509 certificate identity information of the potential receiving party.
60+
A Bitcoin wallet developer would like to allow users to view a potential sending party's identifying information before deciding whether or not to share payment information with them. Currently, [[bip-0070.mediawiki|BIP70]] shares the receiver’s payment address and identity information with anyone who requests it.
6261

63-
With this BIP, Bitcoin wallets could prompt a wallet user to release payment information while displaying identity information about the potential sending party via an included certificate. This gives the receiving party more control over who receives their payment and identity information, and could be helpful for businesses that need to follow KYC policies or wallets that want to focus on privacy.
62+
With this BIP, Bitcoin wallets could use the sender’s identifying information to make a determination of whether or not to share their own information. This gives the receiving party more control over who receives their payment and identity information. Additionally, this could be used to automatically provide new payment addresses to whitelisted senders, or to protect users’ privacy from unsolicited payment requests.
6463

6564
3. Using Store & Forward Servers
6665

@@ -110,10 +109,11 @@ message InvoiceRequest {
110109
This enum is used in the newly defined [[#ProtocolMessage|ProtocolMessage]] and [[#EncryptedProtocolMessage|EncryptedProtocolMessage]] messages to define the serialized message type. The '''ProtocolMessageType''' enum is defined in an extensible way to allow for new message type additions to the Payment Protocol.
111110
<pre>
112111
enum ProtocolMessageType {
113-
INVOICE_REQUEST = 0;
114-
PAYMENT_REQUEST = 1;
115-
PAYMENT = 2;
116-
PAYMENT_ACK = 3;
112+
UNKNOWN_TYPE = 0;
113+
INVOICE_REQUEST = 1;
114+
PAYMENT_REQUEST = 2;
115+
PAYMENT = 3;
116+
PAYMENT_ACK = 4;
117117
}
118118
</pre>
119119

bip-0075/paymentrequest.proto

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,10 +57,11 @@ message InvoiceRequest {
5757
}
5858

5959
enum ProtocolMessageType {
60-
INVOICE_REQUEST = 0;
61-
PAYMENT_REQUEST = 1;
62-
PAYMENT = 2;
63-
PAYMENT_ACK = 3;
60+
UNKNOWN_TYPE = 0;
61+
INVOICE_REQUEST = 1;
62+
PAYMENT_REQUEST = 2;
63+
PAYMENT = 3;
64+
PAYMENT_ACK = 4;
6465
}
6566

6667
message ProtocolMessage {

0 commit comments

Comments
 (0)