summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Brown <jbrown@bluedroplet.com>2014-03-15 20:29:08 +0100
committerJonathan Brown <jbrown@bluedroplet.com>2014-03-15 20:31:35 +0100
commit7d570d0f0427fbd6291780dd08f1d05518834608 (patch)
treeb19add15b6d33668730b2d28ac2f1bbb1e55fb7a
parentc3c8ef8a339e45f40fc263785fdf4176f4123420 (diff)
Add paymentrequest.proto to BIP 70.
-rw-r--r--bip-0070.mediawiki2
-rw-r--r--bip-0070/paymentrequest.proto46
2 files changed, 47 insertions, 1 deletions
diff --git a/bip-0070.mediawiki b/bip-0070.mediawiki
index fecbbab..4461118 100644
--- a/bip-0070.mediawiki
+++ b/bip-0070.mediawiki
@@ -47,7 +47,7 @@ PaymentRequest message:
==Messages==
-The Protocol Buffer messages are defined here: https://raw.github.com/bitcoin/bitcoin/master/src/qt/paymentrequest.proto
+The Protocol Buffers messages are defined in [[bip-0070/paymentrequest.proto|paymentrequest.proto]].
===Output===
diff --git a/bip-0070/paymentrequest.proto b/bip-0070/paymentrequest.proto
new file mode 100644
index 0000000..9d9a9a3
--- /dev/null
+++ b/bip-0070/paymentrequest.proto
@@ -0,0 +1,46 @@
+//
+// Simple Bitcoin Payment Protocol messages
+//
+// Use fields 100+ for extensions;
+// to avoid conflicts, register extensions at:
+// https://en.bitcoin.it/wiki/Payment_Request
+//
+
+package payments;
+option java_package = "org.bitcoin.protocols.payments";
+option java_outer_classname = "Protos";
+
+// Generalized form of "send payment to this/these bitcoin addresses"
+message Output {
+ optional uint64 amount = 1 [default = 0]; // amount is integer-number-of-satoshis
+ required bytes script = 2; // usually one of the standard Script forms
+}
+message PaymentDetails {
+ optional string network = 1 [default = "main"]; // "main" or "test"
+ repeated Output outputs = 2; // Where payment should be sent
+ required uint64 time = 3; // Timestamp; when payment request created
+ optional uint64 expires = 4; // Timestamp; when this request should be considered invalid
+ optional string memo = 5; // Human-readable description of request for the customer
+ optional string payment_url = 6; // URL to send Payment and get PaymentACK
+ optional bytes merchant_data = 7; // Arbitrary data to include in the Payment message
+}
+message PaymentRequest {
+ optional uint32 payment_details_version = 1 [default = 1];
+ optional string pki_type = 2 [default = "none"]; // none / x509+sha256 / x509+sha1
+ optional bytes pki_data = 3; // depends on pki_type
+ required bytes serialized_payment_details = 4; // PaymentDetails
+ optional bytes signature = 5; // pki-dependent signature
+}
+message X509Certificates {
+ repeated bytes certificate = 1; // DER-encoded X.509 certificate chain
+}
+message Payment {
+ optional bytes merchant_data = 1; // From PaymentDetails.merchant_data
+ repeated bytes transactions = 2; // Signed transactions that satisfy PaymentDetails.outputs
+ repeated Output refund_to = 3; // Where to send refunds, if a refund is necessary
+ optional string memo = 4; // Human-readable message for the merchant
+}
+message PaymentACK {
+ required Payment payment = 1; // Payment message that triggered this ACK
+ optional string memo = 2; // human-readable message for customer
+}