Standardizing automatic pre-negotiation of transaction terms with BIP70? (Emulating Amazon one-click purchase at all merchants)

Standardizing automatic pre-negotiation of transaction terms with BIP70? (Emulating Amazon one-click purchase at all merchants)


  2015-02-10 10:34   ` MⒶrtin HⒶboⓋštiak
  2015-02-10 11:08   ` Mike Hearn
  
From: Natanael @ 2015-02-10 10:21 UTC (permalink / raw)
  To: bitcoin-development

[-- Attachment #1: Type: text/plain, Size: 2998 bytes --]

BIP70 is a protocol for getting a user's wallet client communicate with a
merchant's server in order to agree on details like where to send the
payment, how much to send, what the shipping address is, sending a receipt
back, and much more using various extensions that adds more functionality.

There could even be advanced functionality for automatically negotiating
terms. One example could be selecting a multisignature arbitrator both
sides trust. Another could be to agree on the speed and type of delivery.
Many more types of decisions could be automatically agreed upon.

But as it is now, it is designed to be initiated at the time of payment. If
you always want next-day delivery from online stores then you won't always
know if that's an option until you've filled the digital basket and gone
through checkout. If you only want to shop with an arbitrator involved same
thing applies.

Everything that BIP70 enables happens at the last step only, as it is right
now.

If there could be a BIP70 HTML tag on web shops that automatically
triggered your wallet as soon as you visit the page, it would be possible
for a browser extension that talks to your wallet to tell you right away if
the web shop you're currently looking at has terms you consider acceptable
or not (note: if your wallet client isn't installed on or linked to that
same machine, a visible Qr code would be an acceptable alternative which
you can scan in advance before you start shopping). This notification can
even be automatically updated as you add and remove things from your cart
and details like shipping options change.

This would massively simplify the shipping experience and make every web
shop feel like Amazon.

Of course this has privacy implications and increases exposure to potential
wallet exploits, but the wallet can ask you if you intend to shop or not at
each site before it even connects and send any information at all in order
to mitigate both of those problems. This way it should be reasonably safe.

Another option would be to automatically connect but limit what data is
sent in order to remain privacy preserving, until the user agrees to send
private information.

This second method would also open up for the merchant to other send
relevant information such as details about various certifications from
third parties, which can include a certification that shows they have been
been audited and approved by by entity X for purpose Y. If your wallet has
that entity whitelisted it will show you that certificate (for example
"Acme Audits have audited and approves of Merchant M's privacy policy and
data protection"). With a list of predefined types of certifications that
the wallet understand and accepts, it could (by choice of the user) require
a certificate to be present to even allow you to make a purchase (lack of
required certifications would result in automatic denial). No certificate =
your wallet never proceed to send private information.

Thoughts?

- Sent from my tablet

[-- Attachment #2: Type: text/html, Size: 3233 bytes --]

 permalink raw reply	[|nested]
2015-02-10 10:21 ` [Bitcoin-development] Standardizing automatic pre-negotiation of transaction terms with BIP70? (Emulating Amazon one-click purchase at all merchants) Natanael

  2015-02-10 10:41     ` Natanael
  2015-02-10 11:08   ` Mike Hearn
  
From: MⒶrtin HⒶboⓋštiak @ 2015-02-10 10:34 UTC (permalink / raw)
  To: Natanael;  Bitcoin Dev

Why would anyone want to do anything about payment before choosing
what he wants to buy and for what price? I've never used Amazon but
isn't filling a form with shipping information enough?

2015-02-10 11:21 GMT+01:00 Natanael <natanael.l@gmail•com>:
> BIP70 is a protocol for getting a user's wallet client communicate with a
> merchant's server in order to agree on details like where to send the
> payment, how much to send, what the shipping address is, sending a receipt
> back, and much more using various extensions that adds more functionality.
>
> There could even be advanced functionality for automatically negotiating
> terms. One example could be selecting a multisignature arbitrator both sides
> trust. Another could be to agree on the speed and type of delivery. Many
> more types of decisions could be automatically agreed upon.
>
> But as it is now, it is designed to be initiated at the time of payment. If
> you always want next-day delivery from online stores then you won't always
> know if that's an option until you've filled the digital basket and gone
> through checkout. If you only want to shop with an arbitrator involved same
> thing applies.
>
> Everything that BIP70 enables happens at the last step only, as it is right
> now.
>
> If there could be a BIP70 HTML tag on web shops that automatically triggered
> your wallet as soon as you visit the page, it would be possible for a
> browser extension that talks to your wallet to tell you right away if the
> web shop you're currently looking at has terms you consider acceptable or
> not (note: if your wallet client isn't installed on or linked to that same
> machine, a visible Qr code would be an acceptable alternative which you can
> scan in advance before you start shopping). This notification can even be
> automatically updated as you add and remove things from your cart and
> details like shipping options change.
>
> This would massively simplify the shipping experience and make every web
> shop feel like Amazon.
>
> Of course this has privacy implications and increases exposure to potential
> wallet exploits, but the wallet can ask you if you intend to shop or not at
> each site before it even connects and send any information at all in order
> to mitigate both of those problems. This way it should be reasonably safe.
>
> Another option would be to automatically connect but limit what data is sent
> in order to remain privacy preserving, until the user agrees to send private
> information.
>
> This second method would also open up for the merchant to other send
> relevant information such as details about various certifications from third
> parties, which can include a certification that shows they have been been
> audited and approved by by entity X for purpose Y. If your wallet has that
> entity whitelisted it will show you that certificate (for example "Acme
> Audits have audited and approves of Merchant M's privacy policy and data
> protection"). With a list of predefined types of certifications that the
> wallet understand and accepts, it could (by choice of the user) require a
> certificate to be present to even allow you to make a purchase (lack of
> required certifications would result in automatic denial). No certificate =
> your wallet never proceed to send private information.
>
> Thoughts?
>
> - Sent from my tablet
>
>
> ------------------------------------------------------------------------------
> Dive into the World of Parallel Programming. The Go Parallel Website,
> sponsored by Intel and developed in partnership with Slashdot Media, is your
> hub for all things parallel software development, from weekly thought
> leadership blogs to news, videos, case studies, tutorials and more. Take a
> look and join the conversation now. http://goparallel.sourceforge.net/
> _______________________________________________
> Bitcoin-development mailing list
> Bitcoin-development@lists•sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/bitcoin-development
>



 permalink raw reply	[|nested]
2015-02-10 10:34   ` MⒶrtin HⒶboⓋštiak

  2015-02-10 10:48       ` MⒶrtin HⒶboⓋštiak
                         ` (2 more replies)
  
From: Natanael @ 2015-02-10 10:41 UTC (permalink / raw)
  To: MⒶrtin HⒶboⓋštiak;  Bitcoin Dev

[-- Attachment #1: Type: text/plain, Size: 813 bytes --]

Den 10 feb 2015 11:34 skrev "MⒶrtin HⒶboⓋštiak" <martin.habovstiak@gmail•com
>:
>
> Why would anyone want to do anything about payment before choosing
> what he wants to buy and for what price? I've never used Amazon but
> isn't filling a form with shipping information enough?

That's not what this is about.

BIP70 isn't just payment, it is about communication the terms of the sale.

Let's say you're visiting an international webshop. But they don't ship to
your country. Wouldn't you want to know that before your start filling the
cart? With this, your wallet / browser extension could tell you right away
that you can't shop there. No time wasted!

That's just one requirement of many where you would benefit from being told
right away if it is acceptable for both parties or not.

[-- Attachment #2: Type: text/html, Size: 1021 bytes --]

 permalink raw reply	[|nested]
2015-02-10 10:34   ` MⒶrtin HⒶboⓋštiak

  2015-02-10 10:48       ` 
                         ` 
  
From: Natanael @ 2015-02-10 10:41 UTC (permalink / raw)
  To: MⒶrtin HⒶboⓋštiak;  Bitcoin Dev

[-- Attachment #1: Type: text/plain, Size: 813 bytes --]

Den 10 feb 2015 11:34 skrev "MⒶrtin HⒶboⓋštiak" <martin.habovstiak@gmail•com
>:
>
> Why would anyone want to do anything about payment before choosing
> what he wants to buy and for what price? I've never used Amazon but
> isn't filling a form with shipping information enough?

That's not what this is about.

BIP70 isn't just payment, it is about communication the terms of the sale.

Let's say you're visiting an international webshop. But they don't ship to
your country. Wouldn't you want to know that before your start filling the
cart? With this, your wallet / browser extension could tell you right away
that you can't shop there. No time wasted!

That's just one requirement of many where you would benefit from being told
right away if it is acceptable for both parties or not.

[-- Attachment #2: Type: text/html, Size: 1021 bytes --]

 permalink raw reply	[|nested]
2015-02-10 10:41     ` Natanael
  2015-02-10 10:48       ` MⒶrtin HⒶboⓋštiak

  2015-02-10 10:59       ` Eric Voskuil
  
From: Oleg Andreev @ 2015-02-10 10:50 UTC (permalink / raw)
  To: Natanael;  Bitcoin Dev

[-- Attachment #1: Type: text/plain, Size: 794 bytes --]

> Let's say you're visiting an international webshop. But they don't ship to your country. Wouldn't you want to know that before your start filling the cart? With this, your wallet / browser extension could tell you right away that you can't shop there. No time wasted!

Why my wallet has to do anything with me being in some country? The webshop may detect my location and tell me if they ship to where I'm currently in. Why should I associate more private information (my location) with my wallet than strictly necessary? Why should I automatically advertise my shipping address to every webshop without my explicit consent?

The wallet must be convenient only as much as it allows for better security and privacy, but not trading off security and privacy for some unrelated convenience. 

[-- Attachment #2: Type: text/html, Size: 1549 bytes --]

 permalink raw reply	[|nested]
2015-02-10 10:41     ` Natanael
  2015-02-10 10:48       ` MⒶrtin HⒶboⓋštiak
  2015-02-10 10:50       ` Oleg Andreev

  
From: Eric Voskuil @ 2015-02-10 10:59 UTC (permalink / raw)
  To: Natanael, MⒶrtin HⒶboⓋštiak;  Bitcoin Dev

[-- Attachment #1: Type: text/plain, Size: 1336 bytes --]

On 02/10/2015 02:41 AM, Natanael wrote:
> Den 10 feb 2015 11:34 skrev "MⒶrtin HⒶboⓋštiak"
> <martin.habovstiak@gmail•com <mailto:martin.habovstiak@gmail•com>>:
>>
>> Why would anyone want to do anything about payment before choosing
>> what he wants to buy and for what price? I've never used Amazon but
>> isn't filling a form with shipping information enough?
> 
> That's not what this is about.
> 
> BIP70 isn't just payment, it is about communication the terms of the sale.

Hi Natanael,

BIP70 exists for seller non-repudiation (i.e. a cryptographically signed
receipt for payment) and establishing strong seller identity in a
face-to-face or other non-web scenario (since TLS doesn't help).
Anything else is incidental.

> Let's say you're visiting an international webshop. But they don't ship
> to your country. Wouldn't you want to know that before your start
> filling the cart? With this, your wallet / browser extension could tell
> you right away that you can't shop there. No time wasted!
> 
> That's just one requirement of many where you would benefit from being
> told right away if it is acceptable for both parties or not.

There's quite a bit that can be done with wallets and web sites, but
personally I'd freak out if my wallet prompted me because I visited a
web site.

e


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 473 bytes --]

 permalink raw reply	[|nested]
2015-02-10 10:21 ` [Bitcoin-development] Standardizing automatic pre-negotiation of transaction terms with BIP70? (Emulating Amazon one-click purchase at all merchants) Natanael
  2015-02-10 10:34   ` MⒶrtin HⒶboⓋštiak

  2015-02-10 11:19     ` Natanael
  
From: Mike Hearn @ 2015-02-10 11:08 UTC (permalink / raw)
  To: Natanael;  Bitcoin Dev

[-- Attachment #1: Type: text/plain, Size: 733 bytes --]

We can certainly imagine many BIP70 extensions, but for things like
auto-filling shipping addresses, is the wallet the best place to do it? My
browser already knows how to fill out this data in credit card forms, it
would make sense to reuse that for Bitcoin.

It sounds like you want a kind of Star-Trek negotiation agent thing, where
your computer knows how to seek out the best deal because all the metadata
is standardised. Such a thing would be an interesting project, but it's
probably not best done in BIP70 given how it's deployed and used today.
Rather, I'd suggest looking at the various HTML5 data standards which would
allow merchants to advertise things like where they ship to in a machine
readable and crawlable form.

[-- Attachment #2: Type: text/html, Size: 862 bytes --]

 permalink raw reply	[|nested]
2015-02-10 10:48       ` MⒶrtin HⒶboⓋštiak

  2015-02-10 11:21           ` MⒶrtin HⒶboⓋštiak
  
From: Natanael @ 2015-02-10 11:12 UTC (permalink / raw)
  To: MⒶrtin HⒶboⓋštiak;  Bitcoin Dev

[-- Attachment #1: Type: text/plain, Size: 1157 bytes --]

Den 10 feb 2015 11:48 skrev "MⒶrtin HⒶboⓋštiak" <martin.habovstiak@gmail•com
>:
>
> I still don't understand. The website can have this information
> available. This is exactly what e-bay does - it displays shipping
> information to my country before I do anything. What's the problem?
>
> Also with other stuff, website can do it and browser extension can do
> it too without messing with Bitcoin.

1: IP isn't guaranteed to work correctly both because you might be using a
VPN out Tor.

2: Yes, the site can display all options right away, but are you willing to
read all of them too?

3: Detailed information is not necessary, nor does it have to be
unprompted. It doesn't need to tell you more than which country you are in.
It can even prompt you with a popup that has a slider that shows exactly
how much information and of what kind you're about to share (including
none, if that's your choice).

4: It doesn't need to share raw data. Take a look at anonymous credentials:
http://www.zurich.ibm.com/idemix/
https://eprint.iacr.org/2013/622.pdf

5: It can wait for prompting until you add the first item to the cart.

[-- Attachment #2: Type: text/html, Size: 1495 bytes --]

 permalink raw reply	[|nested]
2015-02-10 11:08   ` Mike Hearn

  2015-02-10 11:33       ` MⒶrtin HⒶboⓋštiak
  
From: Natanael @ 2015-02-10 11:19 UTC (permalink / raw)
  To: Mike Hearn;  Bitcoin Dev

[-- Attachment #1: Type: text/plain, Size: 1646 bytes --]

Den 10 feb 2015 12:08 skrev "Mike Hearn" <mike@plan99•net>:
>
> We can certainly imagine many BIP70 extensions, but for things like
auto-filling shipping addresses, is the wallet the best place to do it? My
browser already knows how to fill out this data in credit card forms, it
would make sense to reuse that for Bitcoin.
>
> It sounds like you want a kind of Star-Trek negotiation agent thing,
where your computer knows how to seek out the best deal because all the
metadata is standardised. Such a thing would be an interesting project, but
it's probably not best done in BIP70 given how it's deployed and used
today. Rather, I'd suggest looking at the various HTML5 data standards
which would allow merchants to advertise things like where they ship to in
a machine readable and crawlable form.

BIP70 doesn't have to be the place, but not needing to make sure the device
in question have that information stored already would be an improvement.
What protocol is used doesn't matter much, I just thought reusing BIP70
would simplify implementation.

HTML5 elements could definitely be supported, through adding a tag in the
HTML form that says "prompt the Bitcoin wallet about the following payment
details".

As one example, your browser could ask your hardware wallet over BLE for
this data. This way you barely have to trust the computer you're using at
all, as everything it does is confirmed on the hardware wallet before
payment (assuming it has a screen, which it should). Linking your hardware
wallet over BLE to new devices which you then use for browsing and shopping
could  be trivial and yet allow secure auto-fill of this kind.

[-- Attachment #2: Type: text/html, Size: 1844 bytes --]

 permalink raw reply	[|nested]
2015-02-10 11:12         ` Natanael

  
From: MⒶrtin HⒶboⓋštiak @ 2015-02-10 11:21 UTC (permalink / raw)
  To: Natanael;  Bitcoin Dev

2015-02-10 12:12 GMT+01:00 Natanael <natanael.l@gmail•com>:
> Den 10 feb 2015 11:48 skrev "MⒶrtin HⒶboⓋštiak"
> <martin.habovstiak@gmail•com>:
>>
>> I still don't understand. The website can have this information
>> available. This is exactly what e-bay does - it displays shipping
>> information to my country before I do anything. What's the problem?
>>
>> Also with other stuff, website can do it and browser extension can do
>> it too without messing with Bitcoin.
>
> 1: IP isn't guaranteed to work correctly both because you might be using a
> VPN out Tor.

Still possible using web browser extension.
>
> 2: Yes, the site can display all options right away, but are you willing to
> read all of them too?

Why not? And again, browser extension can do it without bitcoin wallet
- no need to connect unrelated things.
>
> 3: Detailed information is not necessary, nor does it have to be unprompted.
> It doesn't need to tell you more than which country you are in. It can even
> prompt you with a popup that has a slider that shows exactly how much
> information and of what kind you're about to share (including none, if
> that's your choice).
>
> 4: It doesn't need to share raw data. Take a look at anonymous credentials:
> http://www.zurich.ibm.com/idemix/
> https://eprint.iacr.org/2013/622.pdf
>
> 5: It can wait for prompting until you add the first item to the cart.

Everything you described is possible without Bitcoin involved - why
would we mix unrelated things?

P.S.: I believe in Unix philosophy. ;)



 permalink raw reply	[|nested]
2015-02-10 11:19     ` Natanael

  2015-02-10 11:58         ` Natanael
  
From: MⒶrtin HⒶboⓋštiak @ 2015-02-10 11:33 UTC (permalink / raw)
  To: Natanael;  Bitcoin Dev

2015-02-10 12:19 GMT+01:00 Natanael <natanael.l@gmail•com>:
>
> Den 10 feb 2015 12:08 skrev "Mike Hearn" <mike@plan99•net>:
>>
>> We can certainly imagine many BIP70 extensions, but for things like
>> auto-filling shipping addresses, is the wallet the best place to do it? My
>> browser already knows how to fill out this data in credit card forms, it
>> would make sense to reuse that for Bitcoin.
>>
>> It sounds like you want a kind of Star-Trek negotiation agent thing, where
>> your computer knows how to seek out the best deal because all the metadata
>> is standardised. Such a thing would be an interesting project, but it's
>> probably not best done in BIP70 given how it's deployed and used today.
>> Rather, I'd suggest looking at the various HTML5 data standards which would
>> allow merchants to advertise things like where they ship to in a machine
>> readable and crawlable form.
>
> BIP70 doesn't have to be the place, but not needing to make sure the device
> in question have that information stored already would be an improvement.
> What protocol is used doesn't matter much, I just thought reusing BIP70
> would simplify implementation.

In what universe is that simple? Your solution: browser extension +
wallet + comminucation API + all the wallets need to implement it
Our solution: just browser extension.

If you hate writing browser extensions in Javascript, you can say it
directly. ;)

>
> HTML5 elements could definitely be supported, through adding a tag in the
> HTML form that says "prompt the Bitcoin wallet about the following payment
> details".

Just no.

>
> As one example, your browser could ask your hardware wallet over BLE for
> this data. This way you barely have to trust the computer you're using at
> all, as everything it does is confirmed on the hardware wallet before
> payment (assuming it has a screen, which it should). Linking your hardware
> wallet over BLE to new devices which you then use for browsing and shopping
> could  be trivial and yet allow secure auto-fill of this kind.

This looks more interesting but is information about your location
really so secret that you need to hold it in HW wallet? Because if so,
you probably don't want to use untrusted machine anyway. (Or just use
Qubes OS.)

>
>
> ------------------------------------------------------------------------------
> Dive into the World of Parallel Programming. The Go Parallel Website,
> sponsored by Intel and developed in partnership with Slashdot Media, is your
> hub for all things parallel software development, from weekly thought
> leadership blogs to news, videos, case studies, tutorials and more. Take a
> look and join the conversation now. http://goparallel.sourceforge.net/
> _______________________________________________
> Bitcoin-development mailing list
> Bitcoin-development@lists•sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/bitcoin-development
>



 permalink raw reply	[|nested]
2015-02-10 11:33       ` MⒶrtin HⒶboⓋštiak

  
From: Natanael @ 2015-02-10 11:58 UTC ( / )
  To: MⒶrtin HⒶboⓋštiak;  bitcoin-development



> In what universe is that simple? Your solution: browser extension +
> wallet + comminucation API + all the wallets need to implement it
> Our solution: just browser extension.

Browser extension would only be required until browsers add native support
for detecting the tag and prompting a wallet client. This probably won't
happen in the near future, though.

Also, the kind of browser extension you're talking about would be limited
to just one device or require manually configured syncing between your
devices, and would also likely be limited to just a few platforms.

The communication is done between the wallet and merchant the same as
always with BIP70, but with some extra BIP70 extensions for this purpose.
It just starts talking earlier.

It supports graceful degradation just fine, if the browser or wallet don't
support it or the wallet isn't linked to that computer's browser, then
nothing out of the ordinary happens. The browser extension really don't do
anything special, it just relays the details in the HTML tag.

> > As one example, your browser could ask your hardware wallet over BLE for
> > this data. This way you barely have to trust the computer you're using
at
> > all, as everything it does is confirmed on the hardware wallet before
> > payment (assuming it has a screen, which it should). Linking your
hardware
> > wallet over BLE to new devices which you then use for browsing and
shopping
> > could  be trivial and yet allow secure auto-fill of this kind.
>
> This looks more interesting but is information about your location
> really so secret that you need to hold it in HW wallet? Because if so,
> you probably don't want to use untrusted machine anyway. (Or just use
> Qubes OS.)

It isn't necessarily top secret, but why not be protective by default? Your
hardware wallet is already designed to keep secrets. Lets say you're at a
library computer, or at a friend's house, why not let your hardware wallet
deal with all the security?

In this scenario it is likely already functioning as a central point for
all your Bitcoin related purchases anyway, so it might as well be the
device that remembers all your shopping preferences for you. So let's make
it simple to use!