Re: instant confirmation via payment protocol backwards compatible proto buffer extension

Re: instant confirmation via payment protocol backwards compatible proto buffer extension
2014-06-14 12:57 ` Andreas Schildbach
  2014-06-16 12:19 ` Mike Hearn
  
From: Lawrence Nahum @ 2014-06-14 12:00 UTC (permalink / raw)
  To: bitcoin-development

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

Hello,

I had the pleasure to meet some of you in Amsterdam and/or to speak on
#bitcoin-dev but this is actually my first message to the mailing list - I
feel a bit clumsy so apologies in advance if I make any mistake :)

Quick introduction/background: my name is Lawrence Nahum and I'm the
founder of GreenAddress, a BIP32 multisignature service and instant
confirmation platform available in form of web socket APIs and Wallet for
mobile, desktop and web. My background is in CS with distributed systems
and I've worked most of my career in the City on OTC financial services
like confirmation and clearing platforms.

This post is to gather feedback, comments and reviews about a BIP70 payment
protocol proto buffer extension proposal.

https://github.com/greenaddress/bips/blob/bip-payment-request-instant-confirmations/bip-payment-request-instant-confirmations.mediawiki

If you are interested in GreenAddress design or for more information on
GreenAddress you can find the white paper here
http://ghgreenaddress.files.wordpress.com/2014/04/greenaddressp2sh2of2hd-61.pdf
and our homepage on https://greenaddress.it

Cheers,
Lawrence

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

 permalink raw reply	[|nested]
2014-06-14 12:00 Lawrence Nahum

  2014-06-15  9:22   ` Lawrence Nahum
  2014-06-16 12:19 ` Mike Hearn
  
From: Andreas Schildbach @ 2014-06-14 12:57 UTC (permalink / raw)
  To: bitcoin-development

Just a quick comment:

The supports_instant field seems redundant to me. First, as per your
spec, you can derive it from trusted_instant_providers. And second, why
do you need it at all? Protobuf is designed so it will simply ignore
fields you don't know. So you can just send the instant_* fields in the
Payment message without harm.


On 06/14/2014 02:00 PM, Lawrence Nahum wrote:
> Hello,
> 
> I had the pleasure to meet some of you in Amsterdam and/or to speak on
> #bitcoin-dev but this is actually my first message to the mailing list -
> I feel a bit clumsy so apologies in advance if I make any mistake :)
> 
> Quick introduction/background: my name is Lawrence Nahum and I'm the
> founder of GreenAddress, a BIP32 multisignature service and instant
> confirmation platform available in form of web socket APIs and Wallet
> for mobile, desktop and web. My background is in CS with distributed
> systems and I've worked most of my career in the City on OTC financial
> services like confirmation and clearing platforms.
> 
> This post is to gather feedback, comments and reviews about a BIP70
> payment protocol proto buffer extension proposal.
> 
> https://github.com/greenaddress/bips/blob/bip-payment-request-instant-confirmations/bip-payment-request-instant-confirmations.mediawiki
> 
> If you are interested in GreenAddress design or for more information on
> GreenAddress you can find the white paper
> here http://ghgreenaddress.files.wordpress.com/2014/04/greenaddressp2sh2of2hd-61.pdf
> and our homepage on https://greenaddress.it
> 
> Cheers,
> Lawrence
> 
> 
> ------------------------------------------------------------------------------
> HPCC Systems Open Source Big Data Platform from LexisNexis Risk Solutions
> Find What Matters Most in Your Big Data with HPCC Systems
> Open Source. Fast. Scalable. Simple. Ideal for Dirty Data.
> Leverages Graph Analysis for Fast Processing & Easy Data Exploration
> http://p.sf.net/sfu/hpccsystems
> 
> 
> 
> _______________________________________________
> Bitcoin-development mailing list
> Bitcoin-development@lists•sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/bitcoin-development
> 





 permalink raw reply	[|nested]
2014-06-14 12:57 ` Andreas Schildbach

  2014-06-15 12:46     ` Andreas Schildbach
  
From: Lawrence Nahum @ 2014-06-15  9:22 UTC (permalink / raw)
  To: bitcoin-development

Andreas Schildbach <andreas <at> schildbach.de> writes:
 
> Just a quick comment:
> 
> The supports_instant field seems redundant to me. First, as per your
> spec, you can derive it from trusted_instant_providers. And second, why
> do you need it at all? Protobuf is designed so it will simply ignore
> fields you don't know. So you can just send the instant_* fields in the
> Payment message without harm.



Agreed, supports_instant is redundant and can/should/will go.

trusted_instant_providers on the other hand I think is needed.

Sometimes the providers will charge fees for instant.

While the software can ignore the fields, 
users may not want to pay for instant when the merchant may not accept it or 
care (even if it would not break the protocol it would still be a waste of 
fees)

Does it make sense? 

Not all transactions from GreenAddress provide double spend protection, there 
are additional checks on prevout that are normally not done when spending 
normally, etc




 permalink raw reply	[|nested]
2014-06-15  9:22   ` Lawrence Nahum

  2014-06-15 14:09       ` Lawrence Nahum
  2014-06-18 12:09       ` Lawrence Nahum
  
From: Andreas Schildbach @ 2014-06-15 12:46 UTC (permalink / raw)
  To: bitcoin-development

Yes I meant only the "supports_instant" is not needed.
"trusted_instant_providers" makes sense to me.

Generally I like the simplicity of this BIP. Still, I have more questions:

What is the use of the Transactions message? Note the Payment message
already contains a transactions field that could be signed. Can you
briefly describe the whole flow of messages on an example, including the
BIP70 messages?

Should we allow adding multiple signatures (from different instant
providers or maybe while transitioning to another PKI)?


On 06/15/2014 11:22 AM, Lawrence Nahum wrote:
> Andreas Schildbach <andreas <at> schildbach.de> writes:
>  
>> Just a quick comment:
>>
>> The supports_instant field seems redundant to me. First, as per your
>> spec, you can derive it from trusted_instant_providers. And second, why
>> do you need it at all? Protobuf is designed so it will simply ignore
>> fields you don't know. So you can just send the instant_* fields in the
>> Payment message without harm.
> 
> 
> 
> Agreed, supports_instant is redundant and can/should/will go.
> 
> trusted_instant_providers on the other hand I think is needed.
> 
> Sometimes the providers will charge fees for instant.
> 
> While the software can ignore the fields, 
> users may not want to pay for instant when the merchant may not accept it or 
> care (even if it would not break the protocol it would still be a waste of 
> fees)
> 
> Does it make sense? 
> 
> Not all transactions from GreenAddress provide double spend protection, there 
> are additional checks on prevout that are normally not done when spending 
> normally, etc
> 
> 
> ------------------------------------------------------------------------------
> HPCC Systems Open Source Big Data Platform from LexisNexis Risk Solutions
> Find What Matters Most in Your Big Data with HPCC Systems
> Open Source. Fast. Scalable. Simple. Ideal for Dirty Data.
> Leverages Graph Analysis for Fast Processing & Easy Data Exploration
> http://p.sf.net/sfu/hpccsystems
> 





 permalink raw reply	[|nested]
2014-06-15 12:46     ` Andreas Schildbach

  2014-06-18 12:09       ` Lawrence Nahum
  
From: Lawrence Nahum @ 2014-06-15 14:09 UTC (permalink / raw)
  To: bitcoin-development

Andreas Schildbach <andreas <at> schildbach.de> writes:

> Generally I like the simplicity of this BIP. Still, I have more questions:
> 
> What is the use of the Transactions message? Note the Payment message
> already contains a transactions field that could be signed.

 

Transactions message sole purpose is to allow easy signing of all 
transactions
i don't think you can serialise a single field
maybe i missed something, not sure

> Can you
> briefly describe the whole flow of messages on an example, including the
> BIP70 messages?

I'll get back to the list with something tomorrow, 
can be useful in the BIP as an example anyway I guess.

> Should we allow adding multiple signatures (from different instant
> providers


maybe in some different scheme of "instantness" that could be useful, 
although i wonder if it's possible to keep the BIP simple with 
such non immediately obvious use cases.


> or maybe while transitioning to another PKI)?

another PKI, not sure, I understand there are already somewhat weak industry 
schemes to revoke.
I do wonder if there's any better and more "future proof" way.
I'll think about it but for now I hope someone with more experience can 
share some insight. 





 permalink raw reply	[|nested]
From: Daniel Rice @ 2014-06-16  8:53 UTC (permalink / raw)
  To: bitcoin-development

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

Jumping in on this conversation because I've been doing research in this
area. Using a list of trusted providers in the payment details will be very
limiting and not scalable. I understand the reason for wanting the
supports_instant field, but I think that's a bad idea because the list
could literally be a million providers. Secondly, some merchants already
support instant transactions without any trust signature, so they should
also be able to advertise that as well.

I also don't believe that trusted or not trusted is a valid on and off
switch. For example, I might trust an instant provider for a 1 btc
transaction, but not 1,000,000 btc. Trust is all about the risk involved.
We can definitely learn from the current financial system in this realm.

I 100% agree with the In Payment Message portion of the BIP extension.
Here's how I think this will practically shake out in an automated way:
Anyone can become an instant provider, but nobody will trust them at first.
As that particular instant provider processes more and more transactions
without any double spends, they essentially build up trust. Based on the
past history of a particular instant provider a risk factor could be
calculated for a given transaction. This would also factor in the size of
the transaction. It would be very similar to a credit file showing the past
history of that particular instant provider based on all the transactions
they signed.

Andreas Schildbach <andreas <at> schildbach.de> writes:

> Just a quick comment:
>
> The supports_instant field seems redundant to me. First, as per your
> spec, you can derive it from trusted_instant_providers. And second, why
> do you need it at all? Protobuf is designed so it will simply ignore
> fields you don't know. So you can just send the instant_* fields in the
> Payment message without harm.



Agreed, supports_instant is redundant and can/should/will go.

trusted_instant_providers on the other hand I think is needed.

Sometimes the providers will charge fees for instant.

While the software can ignore the fields,
users may not want to pay for instant when the merchant may not accept it or
care (even if it would not break the protocol it would still be a waste of
fees)

Does it make sense?

Not all transactions from GreenAddress provide double spend protection, there
are additional checks on prevout that are normally not done when spending
normally, etc

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

 permalink raw reply	[|nested]
2014-06-14 12:00 Lawrence Nahum
  2014-06-14 12:57 ` Andreas Schildbach

  2014-06-16 12:25   ` Mike Hearn
                     ` (2 more replies)
  
From: Mike Hearn @ 2014-06-16 12:19 UTC (permalink / raw)
  To: Lawrence Nahum;  Bitcoin Dev

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

Looking good! I think this is much better than the original draft. Agree
with Andreas that supports_instant is simply equal to
(supported_instant_providers.size() > 1) which makes it redundant.

Daniel is right that putting every possible provider in the Payment message
might not scale in a world where there are huge numbers of
instant-confirmation providers, but I'm hoping that we never have to scale
to that size, because if we did that'd rather imply that Bitcoin has become
useless for in-person payments without trusted third parties and avoiding
that is rather the whole point of the project :) So I'm OK with some
theoretical lack of scalability for now.

A more scalable approach would be for the user to send the name and
signature of their "instant provider" every time and the merchant just
chooses whether to ignore it or not, but as Lawrence points out, this is
incompatible with the provider charging extra fees for "instantness". But
should we care? I'm trying to imagine what the purchasing experience is
like with optional paid-for third party anti-double-spend protection.
Ultimately it's the merchant who cares about this, not me, so why would I
ever pay? It makes no sense for me to pay for double spend protection for
the merchant: after all, I'm honest. This is why it doesn't make sense for
me to pay miners fees either, it's the *receiver* who cares about
confirmations, not the sender.

So I wonder if a smarter design is that the user always submits the details
of their instantness provider and we just don't allow for optional
selection of instantness. I'm not sure that works, UX wise, so is having a
less scalable design to support it worthwhile?

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

 permalink raw reply	[|nested]
2014-06-16 12:19 ` Mike Hearn

  2014-06-16 15:09   ` Daniel Rice
  2014-06-16 15:28   ` Lawrence Nahum
  
From: Mike Hearn @ 2014-06-16 12:25 UTC (permalink / raw)
  To: Lawrence Nahum;  Bitcoin Dev

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

Oh yes the other thing we need to decide is how to extend BIP70.

Protocol buffers have an extend keyword. But I'm not sure it's what we
really want. IMHO a simpler solution is to have a single "living" version
of the protobuf (where? in a new git repo?) which has all the fields
defined by all the accepted BIPs in a single place. Otherwise the build
process and so on for wallet implementors would get unnecessarily
complicated for no real reason. Also if you wanted to pick a new number for
fields, you'd end up having to read *all* BIPs to figure out what is
available. Simpler seems better.

If we do that then I suggest just using field number 8 or 9 or whatever
rather than 1000. IMHO fields 1000+ should be for private extensions that
are unlikely to collide with other users.

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

 permalink raw reply	[|nested]
2014-06-16 12:19 ` Mike Hearn
  2014-06-16 12:25   ` Mike Hearn

  2014-06-16 15:26     ` Lawrence Nahum
                       ` (3 more replies)
  2014-06-16 15:28   ` Lawrence Nahum
  
From: Daniel Rice @ 2014-06-16 15:09 UTC (permalink / raw)
  To: Mike Hearn;  Bitcoin Dev, Lawrence Nahum

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

If you're hoping the instant providers list won't need to scale then you're
essentially saying that we need a solution to the double spend problem.
That is a good point. Double spends are one of the biggest issues remaining
in the protocol. I've seen so many people talk about bad experiences trying
to spend Bitcoin at a restaurant and waiting an hour for confirmations.
This entire BIP extension is a band aid for double spends. If double spends
are not resolved, there will be a million instant providers in the long run
and if double spends are resolved then this BIP extension is completely
unnecessary. Is solving doublespends off the table?

What if we solved doublespends like this: If a node receives 2 transactions
that use the same input, they can put both of them into the new block as a
proof of double spend, but the bitcoins are not sent to the outputs of
either transactions. They are instead treated like a fee and given to the
block solver node. This gives miners the needed incentive and tools to end
doublespends instead of being forced to favor one transaction over the
other.

I will write up a BIP if this seems like a practical approach.


On Mon, Jun 16, 2014 at 5:19 AM, Mike Hearn <mike@plan99•net> wrote:

> Looking good! I think this is much better than the original draft. Agree
> with Andreas that supports_instant is simply equal to
> (supported_instant_providers.size() > 1) which makes it redundant.
>
> Daniel is right that putting every possible provider in the Payment
> message might not scale in a world where there are huge numbers of
> instant-confirmation providers, but I'm hoping that we never have to scale
> to that size, because if we did that'd rather imply that Bitcoin has become
> useless for in-person payments without trusted third parties and avoiding
> that is rather the whole point of the project :) So I'm OK with some
> theoretical lack of scalability for now.
>
> A more scalable approach would be for the user to send the name and
> signature of their "instant provider" every time and the merchant just
> chooses whether to ignore it or not, but as Lawrence points out, this is
> incompatible with the provider charging extra fees for "instantness". But
> should we care? I'm trying to imagine what the purchasing experience is
> like with optional paid-for third party anti-double-spend protection.
> Ultimately it's the merchant who cares about this, not me, so why would I
> ever pay? It makes no sense for me to pay for double spend protection for
> the merchant: after all, I'm honest. This is why it doesn't make sense for
> me to pay miners fees either, it's the *receiver* who cares about
> confirmations, not the sender.
>
> So I wonder if a smarter design is that the user always submits the
> details of their instantness provider and we just don't allow for optional
> selection of instantness. I'm not sure that works, UX wise, so is having a
> less scalable design to support it worthwhile?
>
>
> ------------------------------------------------------------------------------
> HPCC Systems Open Source Big Data Platform from LexisNexis Risk Solutions
> Find What Matters Most in Your Big Data with HPCC Systems
> Open Source. Fast. Scalable. Simple. Ideal for Dirty Data.
> Leverages Graph Analysis for Fast Processing & Easy Data Exploration
> http://p.sf.net/sfu/hpccsystems
> _______________________________________________
> Bitcoin-development mailing list
> Bitcoin-development@lists•sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/bitcoin-development
>
>

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

 permalink raw reply	[|nested]
2014-06-16 15:09   ` Daniel Rice

  2014-06-16 16:00       ` Daniel Rice
  2014-06-16 15:41     ` Paul Goldstein
                       ` (2 subsequent siblings)
  
From: Lawrence Nahum @ 2014-06-16 15:26 UTC (permalink / raw)
  To: bitcoin-development

Daniel Rice <drice <at> greenmangosystems.com> writes:

>  If double spends are not resolved, there will be a million instant 
providers in the long run and if double spends are resolved then this BIP 
extension is completely unnecessary.

I am not sure if double spends can be resolved, at the moment they are not 
and I highly doubt you will see millions instant providers just like I don't 
see millions Certificate Authorities and I don't see Million Credit Card 
networks.

Any reason you think people will spread trust instead of consolidating of a 
bunch of instant transaction providers when time is critical?





 permalink raw reply	[|nested]
2014-06-16 12:19 ` Mike Hearn
  2014-06-16 12:25   ` Mike Hearn
  2014-06-16 15:09   ` Daniel Rice

  2014-06-16 15:43     ` Mike Hearn
  
From: Lawrence Nahum @ 2014-06-16 15:28 UTC (permalink / raw)
  To: bitcoin-development

Mike Hearn <mike <at> plan99.net> writes:
[snip]
> Daniel is right that putting every possible provider in the Payment 
message might not scale in a world where there are huge numbers of instant-
confirmation providers, but I'm hoping that we never have to scale to that 
size, because if we did that'd rather imply that Bitcoin has become useless 
for in-person payments without trusted third parties and avoiding that is 
rather the whole point of the project :) So I'm OK with some theoretical 
lack of scalability for now. 

Hard to say for now. I like the current simplicity but if someone can come 
up with some use case for other options we should discuss and investigate 
them. I don't see more than a bunch of accepted payment methods anywhere I 
ever been in my life, I don't see merchants trusting more than a handful of 
third parties.

> A more scalable approach would be for the user to send the name and 
signature of their "instant provider" every time and the merchant just 
chooses whether to ignore it or not, but as Lawrence points out, this is 
incompatible with the provider charging extra fees for "instantness". But 
should we care? I'm trying to imagine what the purchasing experience is like 
with optional paid-for third party anti-double-spend protection. Ultimately 
it's the merchant who cares about this, not me, so why would I ever pay?

I think you are wrong here.
Just because up to date credit cards charged the merchant which in turn 
charged you and the ordinary cash payer doesn't mean a newer and better 
system can't be transparent from day one.

Ultimately you care because the alternative is to wait.

> It makes no sense for me to pay for double spend protection for the 
merchant: after all, I'm honest.

It's quite simple, in a low amounts world people will probably accept zero 
confs, just like occasionally people can walk out with a bag of crisps 
without paying from a Pret in London. Guards would cost more than what 
they'd save from thefts.

With higher amounts they will either not accept bitcoin unless instant 
confirmed or they will make you wait if that's even feasible (unlikely in a 
supermarket or petrol station but perfectly fine at the restaurant maybe).

> This is why it doesn't make sense for me to pay miners fees either, it's 
the receiver who cares about confirmations, not the sender.

You care too: time and money, or just money if you want to use the old 
simplification.

> So I wonder if a smarter design is that the user always submits the 
details of their instantness provider and we just don't allow for optional 
selection of instantness. I'm not sure that works, UX wise, so is having a 
less scalable design to support it worthwhile?

We would not support that I think. Explicit is better than implicit.

We will charge for instant confirmation and wouldn't want the user charged 
unless pre-agreed, especially if then they also have to wait because the 
instant tx was not recognized as such.

Yeah we can charge the merchant that can then in turn charge you, we may as 
well charge you and be transparent about it but also have deals with 
merchant where they pay fixed amounts per month for unlimited tx and make it 
free for their users.

Perhaps just like today people ask you which card you are going to use and 
they may not accept Amex or Diners the same will go for instant and they, 
the merchants, will just pick the instant provider from a touch screen 
before allowing the payment in. 





 permalink raw reply	[|nested]
2014-06-16 15:09   ` Daniel Rice
  2014-06-16 15:26     ` Lawrence Nahum

  2014-06-16 15:48       ` Mike Hearn
  2014-06-17 15:58     ` Isidor Zeuner
  2014-06-18  2:01     ` Tom Harding
  
From: Paul Goldstein @ 2014-06-16 15:41 UTC (permalink / raw)
  To: Mike Hearn;  Bitcoin Dev

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

Mike Hearn, why don't we just have all nodes report attempted double spends
through the node network. No need to involve the miners at all really, or
do your suggestion but also report the double spend attempt. By waiting
maybe 10-60 seconds (instead of 10 minutes for first conf), merchants can
be more sure that a double spend attack was not tried. Attacker would have
to hold back second tx by 10-60 seconds and hope that that second tx (with
higher fee) get's into a solved block before the first one. This forced
delay time ought to make the attack less successful (but not impossible).

Paul G.


On Mon, Jun 16, 2014 at 11:09 AM, Daniel Rice <drice@greenmangosystems•com>
wrote:

> If you're hoping the instant providers list won't need to scale then
> you're essentially saying that we need a solution to the double spend
> problem. That is a good point. Double spends are one of the biggest issues
> remaining in the protocol. I've seen so many people talk about bad
> experiences trying to spend Bitcoin at a restaurant and waiting an hour for
> confirmations. This entire BIP extension is a band aid for double spends.
> If double spends are not resolved, there will be a million instant
> providers in the long run and if double spends are resolved then this BIP
> extension is completely unnecessary. Is solving doublespends off the table?
>
> What if we solved doublespends like this: If a node receives 2
> transactions that use the same input, they can put both of them into the
> new block as a proof of double spend, but the bitcoins are not sent to the
> outputs of either transactions. They are instead treated like a fee and
> given to the block solver node. This gives miners the needed incentive and
> tools to end doublespends instead of being forced to favor one transaction
> over the other.
>
> I will write up a BIP if this seems like a practical approach.
>
>
> On Mon, Jun 16, 2014 at 5:19 AM, Mike Hearn <mike@plan99•net> wrote:
>
>> Looking good! I think this is much better than the original draft. Agree
>> with Andreas that supports_instant is simply equal to
>> (supported_instant_providers.size() > 1) which makes it redundant.
>>
>> Daniel is right that putting every possible provider in the Payment
>> message might not scale in a world where there are huge numbers of
>> instant-confirmation providers, but I'm hoping that we never have to scale
>> to that size, because if we did that'd rather imply that Bitcoin has become
>> useless for in-person payments without trusted third parties and avoiding
>> that is rather the whole point of the project :) So I'm OK with some
>> theoretical lack of scalability for now.
>>
>> A more scalable approach would be for the user to send the name and
>> signature of their "instant provider" every time and the merchant just
>> chooses whether to ignore it or not, but as Lawrence points out, this is
>> incompatible with the provider charging extra fees for "instantness". But
>> should we care? I'm trying to imagine what the purchasing experience is
>> like with optional paid-for third party anti-double-spend protection.
>> Ultimately it's the merchant who cares about this, not me, so why would I
>> ever pay? It makes no sense for me to pay for double spend protection for
>> the merchant: after all, I'm honest. This is why it doesn't make sense for
>> me to pay miners fees either, it's the *receiver* who cares about
>> confirmations, not the sender.
>>
>> So I wonder if a smarter design is that the user always submits the
>> details of their instantness provider and we just don't allow for optional
>> selection of instantness. I'm not sure that works, UX wise, so is having a
>> less scalable design to support it worthwhile?
>>
>>
>> ------------------------------------------------------------------------------
>> HPCC Systems Open Source Big Data Platform from LexisNexis Risk Solutions
>> Find What Matters Most in Your Big Data with HPCC Systems
>> Open Source. Fast. Scalable. Simple. Ideal for Dirty Data.
>> Leverages Graph Analysis for Fast Processing & Easy Data Exploration
>> http://p.sf.net/sfu/hpccsystems
>> _______________________________________________
>> Bitcoin-development mailing list
>> Bitcoin-development@lists•sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/bitcoin-development
>>
>>
>
>
> ------------------------------------------------------------------------------
> HPCC Systems Open Source Big Data Platform from LexisNexis Risk Solutions
> Find What Matters Most in Your Big Data with HPCC Systems
> Open Source. Fast. Scalable. Simple. Ideal for Dirty Data.
> Leverages Graph Analysis for Fast Processing & Easy Data Exploration
> http://p.sf.net/sfu/hpccsystems
> _______________________________________________
> Bitcoin-development mailing list
> Bitcoin-development@lists•sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/bitcoin-development
>
>

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

 permalink raw reply	[|nested]
2014-06-16 15:28   ` Lawrence Nahum

  2014-06-16 17:05       ` Lawrence Nahum
  
From: Mike Hearn @ 2014-06-16 15:43 UTC (permalink / raw)
  To: Lawrence Nahum;  Bitcoin Dev

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

>
> I don't see more than a bunch of accepted payment methods anywhere I
> ever been in my life, I don't see merchants trusting more than a handful of
> third parties.
>

Sure. I buy this. Although the credit card market is a great example of
what we *don't* want: a stagnant duopoly of trusted third parties who
rampantly abuse their position. So I'd hope we see either (a) nobody really
caring about this BIP because Bitcoin gives good enough double spend
protection or (b) lots of anti-double-spend providers (hundreds seems fine).


> Ultimately you care because the alternative is to wait.
>

No, I will never wait. Neither me nor the merchant wants to me to be
pointlessly hanging around for an hour. The alternative is to pay by credit
card or cash. Outside of experiments there is no such thing as a shop that
only accepts only Bitcoin and will require me to wait for a block because I
didn't use a TTP to guarantee anti-double spends.

So this seems like a fundamental problem to me: having the ability to say,
"here is a proof I won't double spend" is fine, but it doesn't achieve
anything if the merchant would have sold me the goods in return for a
normal Bitcoin tx anyway, which in practice they always will because this
system starts out from zero users and would have to work upwards. I
*especially* will never use this system if I have to pay for it - I'd much
rather just put my money into a wallet that can't generate these proofs and
pay the sticker price.

Maybe what this BIP needs is an extra field that lets the merchant say, I
will give you a discount of X satoshis if you give me a no-double-spends
proof. In other words invert it: the sticker price is what normal Bitcoin
transactions cost, and then your wallet shows you the regular BIP70 price
minus the discount plus the third parties fee as what you finally pay. I
compare it to the sticker price the merchant is asking and if it's lower
I'm happy, and if it's higher my wallet would automatically avoid using the
TTP because I don't want to ever pay more, only less.

The market would then figure out if the fees the TTP charges are worth the
lower losses due to double spending fraud.

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

 permalink raw reply	[|nested]
2014-06-16 15:41     ` Paul Goldstein

  2014-06-16 16:30         ` Lawrence Nahum
  2014-06-18  1:39         ` Tom Harding
  
From: Mike Hearn @ 2014-06-16 15:48 UTC (permalink / raw)
  To: Paul Goldstein;  Bitcoin Dev

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

>
> Mike Hearn, why don't we just have all nodes report attempted double
> spends through the node network.
>

Please see https://github.com/bitcoin/bitcoin/pull/3883 which implements
this exact scheme. It can solve some kinds of double spends (probably), but
others - like ones done by corrupt miners (see bitundo) - can't be solved
this way.

Lawrence's motivation for this BIP is essentially to act as a backup in
case the Bitcoin native double spending protections end up being too weak
to be useful. It reintroduces a notion of centralised trust as a layer on
top of the Bitcoin protocol, but only for cases where the seller/recipient
feels it'd be useful. In this way it gives us slack: if someone is able to
reliably double spend and the merchants losses due to payment fraud go up,
we can fall back to TTPs for a while until someone finds a solution for
Bitcoin, or we just give up on the Bitcoin experiment, but hey - at least
we now have a better intermediary protocol than SWIFT :-)

In practice of course this is something payment processors like Bitpay and
Coinbase will think about. Individual cafes etc who are just using mobile
wallets won't be able to deal with this complexity: if we can't make native
Bitcoin work well enough there, we're most likely to just lose that market
or watch it become entirely centralised around a handful of payment
processing companies.

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

 permalink raw reply	[|nested]
2014-06-16 15:26     ` Lawrence Nahum

  2014-06-16 16:07         ` Mike Hearn
  
From: Daniel Rice @ 2014-06-16 16:00 UTC (permalink / raw)
  To: Lawrence Nahum;  Bitcoin Dev

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

> Any reason you think people will spread trust instead of consolidating of
a
bunch of instant transaction providers when time is critical?

Maybe you're right, but if you are, that's a huge reason not to implement
this. We should encourage proliferation of instant providers otherwise we
start becoming VISA all over again. That's a future for Bitcoin I'm not
excited about: "Use one of these 4 companies, or you need to wait an
impractical amount of time before your transaction will go through."

Come to think of it, is the payment protocol really the place to put this
instant provider signature or should it be in the actual Bitcoin
transaction? If we don't believe there is a valid practical solution to
doublespends (some people have already emailed me critical feedback on my
proposal) then we absolutely need a trust network, but we would also want
it to be part of the public ledger for everyone to see.


On Mon, Jun 16, 2014 at 8:26 AM, Lawrence Nahum <lawrence@greenaddress•it>
wrote:

> Daniel Rice <drice <at> greenmangosystems.com> writes:
>
> >  If double spends are not resolved, there will be a million instant
> providers in the long run and if double spends are resolved then this BIP
> extension is completely unnecessary.
>
> I am not sure if double spends can be resolved, at the moment they are not
> and I highly doubt you will see millions instant providers just like I
> don't
> see millions Certificate Authorities and I don't see Million Credit Card
> networks.
>
> Any reason you think people will spread trust instead of consolidating of a
> bunch of instant transaction providers when time is critical?
>
>
>
>
> ------------------------------------------------------------------------------
> HPCC Systems Open Source Big Data Platform from LexisNexis Risk Solutions
> Find What Matters Most in Your Big Data with HPCC Systems
> Open Source. Fast. Scalable. Simple. Ideal for Dirty Data.
> Leverages Graph Analysis for Fast Processing & Easy Data Exploration
> http://p.sf.net/sfu/hpccsystems
> _______________________________________________
> Bitcoin-development mailing list
> Bitcoin-development@lists•sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/bitcoin-development
>

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

 permalink raw reply	[|nested]
2014-06-16 16:00       ` Daniel Rice

  
From: Mike Hearn @ 2014-06-16 16:07 UTC (permalink / raw)
  To: Daniel Rice;  Bitcoin Dev, Lawrence Nahum

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

>
> Come to think of it, is the payment protocol really the place to put this
> instant provider signature
>

Yes it's the right place. The original attempt at this concept was in fact
called *green addresses* and the idea was you could identify a spend from a
trusted wallet by checking which keys were being used to sign. But the
problem is, lack of privacy. Everyone can see what wallet provider you use.

Also it'd be inefficient to have in the chain. There's no reason for the
extra signatures to be there: double spend risk is something only the
recipient cares about.

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

 permalink raw reply	[|nested]
2014-06-16 15:48       ` Mike Hearn

  2014-06-16 16:45           ` Mike Hearn
  2014-06-18  1:39         ` Tom Harding
  
From: Lawrence Nahum @ 2014-06-16 16:30 UTC (permalink / raw)
  To: bitcoin-development

Mike Hearn <mike <at> plan99.net> writes:

> Please see https://github.com/bitcoin/bitcoin/pull/3883 which implements 
this exact scheme. It can solve some kinds of double spends (probably), but 
others - like ones done by corrupt miners (see bitundo) - can't be solved 
this way.

I read the comments on the PR. I mean no disrespect but this patch can't 
prevent double spends minutes apart and a solution is as good as it's 
weakest link.

It also seems to suffer from potential ddos and otherwise may provide a 
false sense of security. I wouldn't call it a solution in sight just yet.


> Lawrence's motivation for this BIP is essentially to act as a backup in 
case the Bitcoin native double spending protections end up being too weak to 
be useful. It reintroduces a notion of centralised trust as a layer on top 
of the Bitcoin protocol, but only for cases where the seller/recipient feels 
it'd be useful. In this way it gives us slack: if someone is able to 
reliably double spend and the merchants losses due to payment fraud go up, 
we can fall back to TTPs for a while until someone finds a solution for 
Bitcoin, or we just give up on the Bitcoin experiment, but hey - at least we 
now have a better intermediary protocol than SWIFT 

I wouldn't put it just like that. Sure, it's a backup to the double spend 
solution in case we don't reach one - but also, even if you reach some 
reasonable compromise I assume it won't be instant and instant confirmation 
between exchanges can create huge arbitrage opportunities and as such 
liquidity.

It's not really aimed at the merchant but more at service providers and 
payment processors - or simply, between users that don't know each other in 
local traders environments/squares, assuming they are ok trusting a 
known/respected/reputable third party.

> In practice of course this is something payment processors like Bitpay and 
Coinbase will think about. Individual cafes etc who are just using mobile 
wallets won't be able to deal with this complexity: if we can't make native 
Bitcoin work well enough there, we're most likely to just lose that market 
or watch it become entirely centralised around a handful of payment 
processing companies.


What do you expect for e-commerce and escrow to happen? Don't you think the 
market will naturally converge to a handful of hubs that will helps with 
refunds and things like that? Or do you expect to just 'trust' all people on  
online markets and smaller unknown online shops?

I mean, the beauty of Bitcoin is that it brings much more transparency and 
the tools to build such things without huge barriers to entry and without 
using closed protocols - not that it solves _every_ problem.




 permalink raw reply	[|nested]
2014-06-16 16:30         ` Lawrence Nahum

  2014-06-16 16:56             ` Lawrence Nahum
  
From: Mike Hearn @ 2014-06-16 16:45 UTC (permalink / raw)
  To: Lawrence Nahum;  Bitcoin Dev

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

>
> I read the comments on the PR. I mean no disrespect but this patch can't
> prevent double spends minutes apart and a solution is as good as it's
> weakest link.
>

Actually Tom is running a page where he shows double spends detected by his
node or relayed by mine (there are only two nodes in this little detection
network currently), and it does show double spends that occur seconds,
minutes or even days apart.

Regardless, whether that approach helps or not is off topic for this
thread. Let's all hope it does and discuss the details in some other
thread, or on the pull request.


> instant confirmation between exchanges can create huge arbitrage
> opportunities and as such
> liquidity.
>

Yes indeed, if you want to do high frequency trading then every millisecond
counts and you probably don't want to rely on watching transactions
propagate across the block chain. For inter-exchange traffic this BIP would
probably be useful. I've been talking about the consumer case.


> What do you expect for e-commerce and escrow to happen? Don't you think the
> market will naturally converge to a handful of hubs that will helps with
> refunds and things like that?


No, I expect there to be many kinds of trades where dispute mediation is
unnecessary, e.g. when I buy a drink at Starbucks or a burger at McDonalds
the chances of me wanting to charge it back is basically zero. Same for
sending between people who know each other, large corporate transactions
where the threat of a lawsuit is more useful than mediation, etc.

But for transactions where third parties are needed for dispute mediation,
yes, I'd expect there to be a handful of well known trusted names for the
majority of such transactions, and then a long tail of specialists who only
mediate e.g. purchases of rare Aztec artifacts or other things where a
generic company might be easily fooled.

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

 permalink raw reply	[|nested]
2014-06-16 16:45           ` Mike Hearn

  2014-06-16 17:01               ` Mike Hearn
  
From: Lawrence Nahum @ 2014-06-16 16:56 UTC (permalink / raw)
  To: bitcoin-development

Mike Hearn <mike <at> plan99.net> writes:

> Actually Tom is running a page where he shows double spends detected by 
his node or relayed by mine (there are only two nodes in this little 
detection network currently), and it does show double spends that occur 
seconds, minutes or even days apart.

I only meant that double spends minutes apart are possible and that by then 
the sole use of a monitor is too late even if it will tell you.

> Regardless, whether that approach helps or not is off topic for this 
thread. Let's all hope it does and discuss the details in some other thread, 
or on the pull request.

Fair enough.

> Yes indeed, if you want to do high frequency trading then every 
millisecond counts and you probably don't want to rely on watching 
transactions propagate across the block chain. For inter-exchange traffic 
this BIP would probably be useful. I've been talking about the consumer 
case.

That's quite different, granted.

> No, I expect there to be many kinds of trades where dispute mediation is 
unnecessary, e.g. when I buy a drink at Starbucks or a burger at McDonalds 
the chances of me wanting to charge it back is basically zero. Same for 
sending between people who know each other, large corporate transactions 
where the threat of a lawsuit is more useful than mediation, etc.

I wouldn't assume that if bitcoin alone (i.e. without third parties) can't 
be used for medium-high value purchases then it's useless. 

> But for transactions where third parties are needed for dispute mediation, 
yes, I'd expect there to be a handful of well known trusted names for the 
majority of such transactions, and then a long tail of specialists who only 
mediate e.g. purchases of rare Aztec artifacts or other things where a 
generic company might be easily fooled.

Agreed.




 permalink raw reply	[|nested]
2014-06-16 16:56             ` Lawrence Nahum

  2014-06-16 17:16                 ` Lawrence Nahum
                                   ` (2 more replies)
  
From: Mike Hearn @ 2014-06-16 17:01 UTC (permalink / raw)
  To: Lawrence Nahum;  Bitcoin Dev

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

>
> I only meant that double spends minutes apart are possible and that by then
> the sole use of a monitor is too late even if it will tell you.
>

As long as miners stick to Satoshi's first seen rule, which is the default,
it's useful:

https://bitcointalk.org/index.php?topic=423.msg3819#msg3819

(this is the famous "snack machine" thread from 2010)

If they decide to change to something like highest-fee-always-wins, then
they (again) centralise things by forcing all instant transactions to pay
GreenAddress and its competitors money - much though I like your product
Lawrence, let's hope they don't collectively lemming us all off a cliff by
doing that ;)

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

 permalink raw reply	[|nested]
2014-06-16 15:43     ` Mike Hearn

  
From: Lawrence Nahum @ 2014-06-16 17:05 UTC (permalink / raw)
  To: bitcoin-development

Mike Hearn <mike <at> plan99.net> writes:

> Sure. I buy this. Although the credit card market is a great example of 
what we don't want: a stagnant duopoly of trusted third parties who 
rampantly abuse their position. So I'd hope we see either (a) nobody really 
caring about this BIP because Bitcoin gives good enough double spend 
protection or (b) lots of anti-double-spend providers (hundreds seems fine).

Maybe hundreds, maybe less. I can imagine there would/could be local ones.
It's not the same as credit cards though: it's an open protocol with 
explicit intent from all parties and no forced fees for normal transactions 
- just for instant ones.

> No, I will never wait. Neither me nor the merchant wants to me to be 
pointlessly hanging around for an hour. The alternative is to pay by credit 
card or cash. Outside of experiments there is no such thing as a shop that 
only accepts only Bitcoin and will require me to wait for a block because I 
didn't use a TTP to guarantee anti-double spends.

I tend to agree but _today_ people are trying to use bitcoin and are waiting 
and waiting ..


> So this seems like a fundamental problem to me: having the ability to say, 
"here is a proof I won't double spend" is fine, but it doesn't achieve 
anything if the merchant would have sold me the goods in return for a normal 
Bitcoin tx anyway, which in practice they always will because this system 
starts out from zero users and would have to work upwards. I especially will 
never use this system if I have to pay for it - I'd much rather just put my 
money into a wallet that can't generate these proofs and pay the sticker 
price.

This is a cultural thing. In some places if you pay by cards you pay extra.
I think it may be good to support both models but I like better the 
transparent one even if I'm going to admit that the least transparent one 
may be more attractive as it fools consumers.

> Maybe what this BIP needs is an extra field that lets the merchant say, I 
will give you a discount of X satoshis if you give me a no-double-spends 
proof. In other words invert it: the sticker price is what normal Bitcoin 
transactions cost, and then your wallet shows you the regular BIP70 price 
minus the discount plus the third parties fee as what you finally pay. I 
compare it to the sticker price the merchant is asking and if it's lower I'm 
happy, and if it's higher my wallet would automatically avoid using the TTP 
because I don't want to ever pay more, only less.
> The market would then figure out if the fees the TTP charges are worth the 
lower losses due to double spending fraud.

I think this is worth discussing further. Would love also more input from 
other people on this.







 permalink raw reply	[|nested]
2014-06-16 17:01               ` Mike Hearn

  2014-06-16 18:02                   ` Alex Kotenko
  2014-06-16 17:44                 ` Jorge Timón
  2014-06-17 15:58                 ` Isidor Zeuner
  
From: Lawrence Nahum @ 2014-06-16 17:16 UTC (permalink / raw)
  To: bitcoin-development

Mike Hearn <mike <at> plan99.net> writes:

> As long as miners stick to Satoshi's first seen rule, which is the 
default, it's useful:
> 
> 
> https://bitcointalk.org/index.php?topic=423.msg3819#msg3819
> 
> 
> 
> 
> (this is the famous "snack machine" thread from 2010)
> 
> If they decide to change to something like highest-fee-always-wins, then 
they (again) centralise things by forcing all instant transactions to pay 
GreenAddress and its competitors money - much though I like your product 
Lawrence, let's hope they don't collectively lemming us all off a cliff by 
doing that ;)


I assume we can't enforce to miners rules about which tx will go in and 
which won't and therefore whether this will cause more or less double 
spends.


I mean, you can try but I would rather have to option to pick an third party 
instant provider explicitly than  enforce bigger rules on mining which would 
IMHO lead to implicit centralization.








 permalink raw reply	[|nested]
2014-06-16 17:01               ` Mike Hearn
  2014-06-16 17:16                 ` Lawrence Nahum

  2014-06-17 15:58                 ` Isidor Zeuner
  
From: Jorge Timón @ 2014-06-16 17:44 UTC (permalink / raw)
  To: Mike Hearn;  Bitcoin Dev, Lawrence Nahum

On 6/16/14, Mike Hearn <mike@plan99•net> wrote:
> If they decide to change to something like highest-fee-always-wins, then
> they (again) centralise things by forcing all instant transactions to pay
> GreenAddress and its competitors money - much though I like your product
> Lawrence, let's hope they don't collectively lemming us all off a cliff by
> doing that ;)

Replace-by-fee doesn't imply the use of green addresses (there's other
solutions to 0 conf transactions in that context, for example,
"scorched earth"). And giving up the non-enforceable first-seen
default mining policy doesn't mean "giving up on the Bitcoin
experiment" either.



 permalink raw reply	[|nested]
2014-06-16 17:16                 ` Lawrence Nahum

  2014-06-16 18:09                     ` Mike Hearn
  
From: Alex Kotenko @ 2014-06-16 18:02 UTC (permalink / raw)
  To: Lawrence Nahum;  Bitcoin Dev

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

Hi Lawrence/All


I'm afraid with this BIP for TTP of instant transactions we will end up in
VISA world again. As I see it - it's not about if the TTPs will centralize,
it's only when. Simply because if economy of scales makes growth profitable
and coming into this market is at least a little expensive - this
(centralization, VISA world) will happen, sooner rather than later.
And while some may argue that coming to market in Bitcoin world is cheap so
the crowd will always have a chance to come in and beat the monopolists -
think of one thing. Right now Bitcoin is not seen as money and not
regulated accordingly anywhere in the world, thanks God, but how many years
away we are from the point when it will start to be regulated that way? And
once it is - the monopolies will make sure that rules are restrictive
enough to prevent competition, especially in conjunction with economy of
scales playing against the small newcomers.
The "instant providers list" is susceptible to regulatory influence, and
once in place and widespread - it will be a timebomb under Bitcoin. We need
to solve the doublespend issue without TTP involvement, or at least without
even a slight chance of making this involvement regulateable. Otherwise I
think the Bitcoin experiment will fail.


Best regards,
Alex Kotenko


2014-06-16 18:16 GMT+01:00 Lawrence Nahum <lawrence@greenaddress•it>:

> Mike Hearn <mike <at> plan99.net> writes:
>
> > As long as miners stick to Satoshi's first seen rule, which is the
> default, it's useful:
> >
> >
> > https://bitcointalk.org/index.php?topic=423.msg3819#msg3819
> >
> >
> >
> >
> > (this is the famous "snack machine" thread from 2010)
> >
> > If they decide to change to something like highest-fee-always-wins, then
> they (again) centralise things by forcing all instant transactions to pay
> GreenAddress and its competitors money - much though I like your product
> Lawrence, let's hope they don't collectively lemming us all off a cliff by
> doing that ;)
>
>
> I assume we can't enforce to miners rules about which tx will go in and
> which won't and therefore whether this will cause more or less double
> spends.
>
>
> I mean, you can try but I would rather have to option to pick an third
> party
> instant provider explicitly than  enforce bigger rules on mining which
> would
> IMHO lead to implicit centralization.
>
>
>
>
>
>
>
> ------------------------------------------------------------------------------
> HPCC Systems Open Source Big Data Platform from LexisNexis Risk Solutions
> Find What Matters Most in Your Big Data with HPCC Systems
> Open Source. Fast. Scalable. Simple. Ideal for Dirty Data.
> Leverages Graph Analysis for Fast Processing & Easy Data Exploration
> http://p.sf.net/sfu/hpccsystems
> _______________________________________________
> Bitcoin-development mailing list
> Bitcoin-development@lists•sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/bitcoin-development
>

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

 permalink raw reply	[|nested]
2014-06-16 18:02                   ` Alex Kotenko

  2014-06-16 20:29                       ` Daniel Rice
  2014-06-16 20:32                       ` Alex Kotenko
  
From: Mike Hearn @ 2014-06-16 18:09 UTC (permalink / raw)
  To: Alex Kotenko;  Bitcoin Dev, Lawrence Nahum

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

I think many of us feel it'd be better if this kind of thing were not
needed at all, however, the best way to ensure it doesn't end up being used
is to write code, not to try and block alternative approaches. If Bitcoin
is robust the market should sort it out. If it's robust for some
transactions and not others, that makes for a fun project for a future
generation of hackers to sort out.

OK, enough philosophy - let's try and keep this thread just for discussion
of the BIP itself from now on. If you'd like to continue debating the
Future of Bitcoin please change the subject line and break it out into a
new thread.

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

 permalink raw reply	[|nested]
2014-06-16 18:09                     ` Mike Hearn

  2014-06-16 20:32                         ` Mike Hearn
  2014-06-16 21:02                         ` Daniel Rice
  2014-06-16 20:32                       ` Alex Kotenko
  
From: Daniel Rice @ 2014-06-16 20:29 UTC (permalink / raw)
  To: Mike Hearn;  Bitcoin Dev, Lawrence Nahum

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

I'm trying to think through how to encourage the maximum number of instant
signature providers and avoid the VISA monopoly. Ideal case would be that
people can even be their own instant provider.

What if the protocol allowed multiple instant signatures on a transaction?
Would it encourage more instant providers? For example, a new instant
provider could bootstrap their own trust by paying an already trusted
instant provider to co-sign the same transaction. This would be useful in
the case that a new company tries to release a new wallet once the trust
ring is already established. Nobody will use that wallet because it does
not have the trusted history to do instant transactions, but if they can
pay a small amount per transaction to a third party to cosign, they can
build trust in their own signature till they can eventually have enough
trust on their own. This could be how an individual user could grow trust
in their own instant signature as well.


On Mon, Jun 16, 2014 at 11:09 AM, Mike Hearn <mike@plan99•net> wrote:

> I think many of us feel it'd be better if this kind of thing were not
> needed at all, however, the best way to ensure it doesn't end up being used
> is to write code, not to try and block alternative approaches. If Bitcoin
> is robust the market should sort it out. If it's robust for some
> transactions and not others, that makes for a fun project for a future
> generation of hackers to sort out.
>
> OK, enough philosophy - let's try and keep this thread just for discussion
> of the BIP itself from now on. If you'd like to continue debating the
> Future of Bitcoin please change the subject line and break it out into a
> new thread.
>
>
> ------------------------------------------------------------------------------
> HPCC Systems Open Source Big Data Platform from LexisNexis Risk Solutions
> Find What Matters Most in Your Big Data with HPCC Systems
> Open Source. Fast. Scalable. Simple. Ideal for Dirty Data.
> Leverages Graph Analysis for Fast Processing & Easy Data Exploration
> http://p.sf.net/sfu/hpccsystems
> _______________________________________________
> Bitcoin-development mailing list
> Bitcoin-development@lists•sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/bitcoin-development
>
>

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

 permalink raw reply	[|nested]
2014-06-16 20:29                       ` Daniel Rice

  2014-06-16 20:37                           ` Daniel Rice
  2014-06-16 21:02                         ` Daniel Rice
  
From: Mike Hearn @ 2014-06-16 20:32 UTC (permalink / raw)
  To: Daniel Rice;  Bitcoin Dev, Lawrence Nahum

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

On Mon, Jun 16, 2014 at 10:29 PM, Daniel Rice <drice@greenmangosystems•com>
wrote:

> I'm trying to think through how to encourage the maximum number of instant
> signature providers and avoid the VISA monopoly. Ideal case would be that
> people can even be their own instant provider.
>

A provider does not have to be an interactive third party. One reason I
suggested using X.509 is so secure hardware devices like the TREZOR could
also be instant providers. The hardware would be tamperproof and assert
using a secret key embedded in it that the tx came from a genuine,
unflashed TREZOR. The the server can know the device won't double spend.

In this way you have decentralised anti-double spending. Of course, it's an
old solution. MintChip sort of worked a bit like this.

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

 permalink raw reply	[|nested]
2014-06-16 18:09                     ` Mike Hearn
  2014-06-16 20:29                       ` Daniel Rice

  
From: Alex Kotenko @ 2014-06-16 20:32 UTC (permalink / raw)
  To: Mike Hearn;  Bitcoin Dev, Lawrence Nahum

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

True, enough philosophy. Once this BIP will be finalized - we will it's
schedule implementation in XBTerminal. This is a solution to the problem we
have, probably best one we have to date, so we will use it.


2014-06-16 19:09 GMT+01:00 Mike Hearn <mike@plan99•net>:

> I think many of us feel it'd be better if this kind of thing were not
> needed at all, however, the best way to ensure it doesn't end up being used
> is to write code, not to try and block alternative approaches. If Bitcoin
> is robust the market should sort it out. If it's robust for some
> transactions and not others, that makes for a fun project for a future
> generation of hackers to sort out.
>
> OK, enough philosophy - let's try and keep this thread just for discussion
> of the BIP itself from now on. If you'd like to continue debating the
> Future of Bitcoin please change the subject line and break it out into a
> new thread.
>

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

 permalink raw reply	[|nested]
2014-06-16 20:32                         ` Mike Hearn

  2014-06-16 20:46                             ` Mike Hearn
  
From: Daniel Rice @ 2014-06-16 20:37 UTC (permalink / raw)
  To: Mike Hearn;  Bitcoin Dev, Lawrence Nahum

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

True, that would work, but still how are you going to bootstrap the trust?
TREZOR is well known, but in a future where there could be 100 different
companies trying to release a similar product to TREZOR it seems like one
company could corner the market by being the only one that is an accepted
instant provider at most vendors. It seems to encourage monopoly unless
there is a standard way to bootstrap trust in your signature.


On Mon, Jun 16, 2014 at 1:32 PM, Mike Hearn <mike@plan99•net> wrote:

> On Mon, Jun 16, 2014 at 10:29 PM, Daniel Rice <drice@greenmangosystems•com
> > wrote:
>
>> I'm trying to think through how to encourage the maximum number of
>> instant signature providers and avoid the VISA monopoly. Ideal case would
>> be that people can even be their own instant provider.
>>
>
> A provider does not have to be an interactive third party. One reason I
> suggested using X.509 is so secure hardware devices like the TREZOR could
> also be instant providers. The hardware would be tamperproof and assert
> using a secret key embedded in it that the tx came from a genuine,
> unflashed TREZOR. The the server can know the device won't double spend.
>
> In this way you have decentralised anti-double spending. Of course, it's
> an old solution. MintChip sort of worked a bit like this.
>

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

 permalink raw reply	[|nested]
2014-06-16 20:37                           ` Daniel Rice

  2014-06-16 20:53                               ` Daniel Rice
  
From: Mike Hearn @ 2014-06-16 20:46 UTC (permalink / raw)
  To: Daniel Rice;  Bitcoin Dev, Lawrence Nahum

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

On Mon, Jun 16, 2014 at 10:37 PM, Daniel Rice <drice@greenmangosystems•com>
wrote:

> True, that would work, but still how are you going to bootstrap the trust?
> TREZOR is well known, but in a future where there could be 100 different
> companies trying to release a similar product to TREZOR it seems like one
> company could corner the market by being the only one that is an accepted
> instant provider at most vendors
>

It's no different to the CA problem. People can only mentally handle a few
trust anchors, so for SSL it goes:

   1 User -> 2-3 browser makers -> 100's of CAs -> millions of websites

The trust starts out narrowly funnelled and grows outwards as things get
outsourced.

For this it'd go

   1 merchant -> 4-5 payment processing engines -> dozens of hardware
manufacturers -> hundreds of thousands of devices

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

 permalink raw reply	[|nested]
2014-06-16 20:46                             ` Mike Hearn

  2014-06-16 20:55                                 ` Mike Hearn
  
From: Daniel Rice @ 2014-06-16 20:53 UTC (permalink / raw)
  To: Mike Hearn;  Bitcoin Dev, Lawrence Nahum

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

The trust can be more automated in this case than it can with CAs. The
difference is that when a CA does something it shouldn't, like generates an
extra cert for a government to use in spoofing a site, nobody knows about
it, unless they mess up. Double spends on the network can be monitored and
stored for history. Merchants can and will share information on instant
provider trust with eachother, so they will essentially be able to build up
a credit history on a given instant provider without really knowing who
they are.


On Mon, Jun 16, 2014 at 1:46 PM, Mike Hearn <mike@plan99•net> wrote:

> On Mon, Jun 16, 2014 at 10:37 PM, Daniel Rice <drice@greenmangosystems•com
> > wrote:
>
>> True, that would work, but still how are you going to bootstrap the
>> trust? TREZOR is well known, but in a future where there could be 100
>> different companies trying to release a similar product to TREZOR it seems
>> like one company could corner the market by being the only one that is an
>> accepted instant provider at most vendors
>>
>
> It's no different to the CA problem. People can only mentally handle a few
> trust anchors, so for SSL it goes:
>
>    1 User -> 2-3 browser makers -> 100's of CAs -> millions of websites
>
> The trust starts out narrowly funnelled and grows outwards as things get
> outsourced.
>
> For this it'd go
>
>    1 merchant -> 4-5 payment processing engines -> dozens of hardware
> manufacturers -> hundreds of thousands of devices
>
>
>

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

 permalink raw reply	[|nested]
2014-06-16 20:53                               ` Daniel Rice

  
From: Mike Hearn @ 2014-06-16 20:55 UTC (permalink / raw)
  To: Daniel Rice;  Bitcoin Dev, Lawrence Nahum

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

Yes that's true. Though it's off topic, check out
http://www.certificate-transparency.org/  .... it's a project to force CA's
to publish all certs they make publicly.

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

 permalink raw reply	[|nested]
2014-06-16 20:29                       ` Daniel Rice
  2014-06-16 20:32                         ` Mike Hearn

  
From: Daniel Rice @ 2014-06-16 21:02 UTC (permalink / raw)
  To: Mike Hearn;  Bitcoin Dev, Lawrence Nahum

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

Mike Hearn <mike@plan99•net> wrote:
>> A more scalable approach would be for the user to send the name and
>> signature of their "instant provider" every time and the merchant just
>> chooses whether to ignore it or not, but as Lawrence points out, this is
>> incompatible with the provider charging extra fees for "instantness". But
>> should we care? I'm trying to imagine what the purchasing experience is
like
>> with optional paid-for third party anti-double-spend protection.
Ultimately
>> it's the merchant who cares about this, not me, so why would I ever pay?

Lawrence Nahum <lawrence@greenaddress•it> wrote:
> I think you are wrong here.
> Just because up to date credit cards charged the merchant which in turn
> charged you and the ordinary cash payer doesn't mean a newer and better
> system can't be transparent from day one.

I don't think a whitelist of trust is a practical approach because you are
going to want to have varying levels of trust in different instant
providers. This would be based on how large their past transaction volume
has been. For that reason maybe another approach is an additional
negotiation message between the merchant and wallet. Merchant sends payment
details -> wallet responds with their instant information requesting if an
instant transaction will be accepted for this transaction. Merchant weighs
the risk based on historical data about this particular instant provider
and the amount of the requested transaction -> Merchant responds yes or no.

That approach avoids the scaling issue, but also allows for Lawrence's use
case of charging the user a fee only in the case where the instant
transaction is supported.


On Mon, Jun 16, 2014 at 1:29 PM, Daniel Rice <drice@greenmangosystems•com>
wrote:

> I'm trying to think through how to encourage the maximum number of instant
> signature providers and avoid the VISA monopoly. Ideal case would be that
> people can even be their own instant provider.
>
> What if the protocol allowed multiple instant signatures on a transaction?
> Would it encourage more instant providers? For example, a new instant
> provider could bootstrap their own trust by paying an already trusted
> instant provider to co-sign the same transaction. This would be useful in
> the case that a new company tries to release a new wallet once the trust
> ring is already established. Nobody will use that wallet because it does
> not have the trusted history to do instant transactions, but if they can
> pay a small amount per transaction to a third party to cosign, they can
> build trust in their own signature till they can eventually have enough
> trust on their own. This could be how an individual user could grow trust
> in their own instant signature as well.
>
>
> On Mon, Jun 16, 2014 at 11:09 AM, Mike Hearn <mike@plan99•net> wrote:
>
>> I think many of us feel it'd be better if this kind of thing were not
>> needed at all, however, the best way to ensure it doesn't end up being used
>> is to write code, not to try and block alternative approaches. If Bitcoin
>> is robust the market should sort it out. If it's robust for some
>> transactions and not others, that makes for a fun project for a future
>> generation of hackers to sort out.
>>
>> OK, enough philosophy - let's try and keep this thread just for
>> discussion of the BIP itself from now on. If you'd like to continue
>> debating the Future of Bitcoin please change the subject line and break it
>> out into a new thread.
>>
>>
>> ------------------------------------------------------------------------------
>> HPCC Systems Open Source Big Data Platform from LexisNexis Risk Solutions
>> Find What Matters Most in Your Big Data with HPCC Systems
>> Open Source. Fast. Scalable. Simple. Ideal for Dirty Data.
>> Leverages Graph Analysis for Fast Processing & Easy Data Exploration
>> http://p.sf.net/sfu/hpccsystems
>> _______________________________________________
>> Bitcoin-development mailing list
>> Bitcoin-development@lists•sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/bitcoin-development
>>
>>
>

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

 permalink raw reply	[|nested]
2014-06-16 17:01               ` Mike Hearn
  2014-06-16 17:16                 ` Lawrence Nahum
  2014-06-16 17:44                 ` Jorge Timón

  
From: Isidor Zeuner @ 2014-06-17 15:58 UTC (permalink / raw)
  To: Jorge Timón;  Bitcoin Dev, Lawrence Nahum

quote:
> On 6/16/14, Mike Hearn <mike@plan99•net> wrote:
> > If they decide to change to something like highest-fee-always-wins, then
> > they (again) centralise things by forcing all instant transactions to pay
> > GreenAddress and its competitors money - much though I like your product
> > Lawrence, let's hope they don't collectively lemming us all off a cliff by
> > doing that ;)
>
> Replace-by-fee doesn't imply the use of green addresses (there's other
> solutions to 0 conf transactions in that context, for example,
> "scorched earth"). And giving up the non-enforceable first-seen
> default mining policy doesn't mean "giving up on the Bitcoin
> experiment" either.
>

If something means "giving up on the Bitcoin experiment", then for
sure it's not one mining policy or another, but the assumption
that we should have one uniform mining policy. If we had a community
where enough miners had their own opinion about the best mining
policy, and expressed it by choosing an appropriate mining pool, then
we would have better decentralized mining based on selfish motives of
the miners, rather than based on an abstract thought of
"centralization is bad, so I will consider how much mining profit
from qualitatively interchangable mining pools I'm willing to
sacrifice in order to ease my centralization fears".

Best regards,

Isidor



 permalink raw reply	[|nested]
* 
  2014-06-16 15:09   ` Daniel Rice
                       ` 
  2014-06-17 15:58     ` 

  3 siblings, 0 replies; 45+ messages in thread
From: Tom Harding @ 2014-06-18  2:01 UTC (permalink / raw)
  To: bitcoin-development

On 6/16/2014 8:09 AM, Daniel Rice wrote:
> What if we solved doublespends like this: If a node receives 2 
> transactions that use the same input, they can put both of them into 
> the new block as a proof of double spend, but the bitcoins are not 
> sent to the outputs of either transactions. They are instead treated 
> like a fee and given to the block solver node. This gives miners the 
> needed incentive and tools to end doublespends instead of being forced 
> to favor one transaction over the other.

Before considering a hard fork with unpredictable effects on the 
uncertainty window, it would be interesting to look at a soft fork that 
would directly target the goal of reducing the uncertainty window, like 
treating locally-detected double-spends aged > T as invalid (see earlier 
message "A statistical consensus rule for reducing 0-conf double-spend 
risk").

If anything is worth a soft fork, wouldn't reducing the double-spend 
uncertainty window by an order of magnitude be in the running?

Reducing the reasons that transactions don't get relayed, which actually 
seems to have a shot of happening pretty soon, would also make this kind 
of thing work better.




^ permalink raw reply	[|nested] 45+ messages in thread
2014-06-16 15:48       ` Mike Hearn
  2014-06-16 16:30         ` Lawrence Nahum

  
From: Tom Harding @ 2014-06-18  1:39 UTC (permalink / raw)
  To: bitcoin-development

On 6/16/2014 8:48 AM, Mike Hearn wrote:
> In practice of course this is something payment processors like Bitpay 
> and Coinbase will think about. Individual cafes etc who are just using 
> mobile wallets won't be able to deal with this complexity: if we can't 
> make native Bitcoin work well enough there, we're most likely to just 
> lose that market or watch it become entirely centralised around a 
> handful of payment processing companies.

I have trouble seeing how could the real-time anonymous payments market 
can be cleanly separated from everything else.  If trusted third parties 
become the norm for that market, there will inevitably be a huge overlap 
effect on other markets that bitcoin can serve best, even today.  I 
don't see how any currency, any cash, can concede this market.




 permalink raw reply	[|nested]
2014-06-16 15:09   ` Daniel Rice
                       ` 
  2014-06-17 15:58     ` 

  
From: Tom Harding @ 2014-06-18  2:01 UTC (permalink / raw)
  To: bitcoin-development

On 6/16/2014 8:09 AM, Daniel Rice wrote:
> What if we solved doublespends like this: If a node receives 2 
> transactions that use the same input, they can put both of them into 
> the new block as a proof of double spend, but the bitcoins are not 
> sent to the outputs of either transactions. They are instead treated 
> like a fee and given to the block solver node. This gives miners the 
> needed incentive and tools to end doublespends instead of being forced 
> to favor one transaction over the other.

Before considering a hard fork with unpredictable effects on the 
uncertainty window, it would be interesting to look at a soft fork that 
would directly target the goal of reducing the uncertainty window, like 
treating locally-detected double-spends aged > T as invalid (see earlier 
message "A statistical consensus rule for reducing 0-conf double-spend 
risk").

If anything is worth a soft fork, wouldn't reducing the double-spend 
uncertainty window by an order of magnitude be in the running?

Reducing the reasons that transactions don't get relayed, which actually 
seems to have a shot of happening pretty soon, would also make this kind 
of thing work better.




 permalink raw reply	[|nested]
2014-06-17 15:58     ` Isidor Zeuner

  2014-06-18 20:47       ` Natanael
  
From: Mike Hearn @ 2014-06-18  9:15 UTC (permalink / raw)
  To: Isidor Zeuner;  Bitcoin Dev

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

Please, let's talk about other anti-double spend things on a separate
thread.

On Tue, Jun 17, 2014 at 5:58 PM, Isidor Zeuner <cryptocurrencies@quidecco•de
> wrote:

> What prevents the following steps from happening:
>

I linked to Satoshi's post on this earlier, he explains why it works there,
assuming people follow the original protocol rules.

Your analysis holds as long as network abandons the original Bitcoin
design. Obviously, we hope people won't do that. If everyone decides not to
do things how Satoshi laid out then things will break, although whether we
have a failure of "Bitcoin" at that point is debatable.

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

 permalink raw reply	[|nested]
2014-06-15 12:46     ` Andreas Schildbach
  2014-06-15 14:09       ` Lawrence Nahum

  2014-06-18 13:25         ` Mike Hearn
  2014-06-25 14:01         ` sebastien requiem
  
From: Lawrence Nahum @ 2014-06-18 12:09 UTC (permalink / raw)
  To: bitcoin-development

Andreas Schildbach <andreas <at> schildbach.de> writes:

> 
> What is the use of the Transactions message? Note the Payment message
> already contains a transactions field that could be signed. Can you
> briefly describe the whole flow of messages on an example, including the
> BIP70 messages?

Updated the BIP draft with an example and a few corrections (like the 
redundant parameter).

You can see the diff here 
https://github.com/greenaddress/bips/commit/636d5819c1be9cc099dca0a47a3148332
522a3d4


Allow me to recap BIP changes in discussion:

- making some changes to allow merchants to offer discounts in case of 
instant ?
- allowing multiple signatures ?

Did I miss anything? Thoughts on the above from others?




 permalink raw reply	[|nested]
2014-06-18 12:09       ` Lawrence Nahum

  2014-06-18 15:59           ` Daniel Rice
  2014-06-25 14:01         ` sebastien requiem
  
From: Mike Hearn @ 2014-06-18 13:25 UTC (permalink / raw)
  To: Lawrence Nahum;  Bitcoin Dev

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

>
> - allowing multiple signatures ?


I'm not sure this is actually important or useful; trusting someone not to
double spend is a pretty binary thing. I'm not sure saying "you need to get
three independent parties to sign off on this" is worth the hassle,
especially because the first signature is obvious (your risk analysis
provider or hardware) but the second and third are ..... who? Special
purpose services you have to sign up for? Seems like a hassle.

But it's up to you.

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

 permalink raw reply	[|nested]
2014-06-18 13:25         ` Mike Hearn

  2014-06-18 16:09             ` Mike Hearn
  
From: Daniel Rice @ 2014-06-18 15:59 UTC (permalink / raw)
  To: Mike Hearn;  Bitcoin Dev, Lawrence Nahum

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

> I'm not sure this is actually important or useful; trusting someone not
to double spend is a pretty binary thing

I think that's true if you assume that the instant provider list is based
on a by hand created list of accepted instant providers. That's how VISA
works now and that's why I was asking for an approach where the
trusted_instant_providers list is scalable because that seems very
dangerous.

Since you can detect when a double spend happens, the entire instant
provider list could be automatically generated based on a 3rd party network
that shares information between vendors and also monitors double spends. In
that scenario, there is no hand written exclusive list of accepted instant
providers. There is just a database of past history on all instant
providers. That database can be used to give a confidence score for a
specific instant provider for a given transaction amount. In this scenario,
a new wallet company would be able to earn trust over time. If the list is
made by hand, "Bitpay accepts Circle, Coinbase, and GreenAddress for
instant transactions", then new wallet providers have to go around bribing
Bitpay and the other large merchant transaction providers to get on their
instant provider list.

Allowing more than one instant signature on a transaction is supposed to
help avoid that scenario. For example, lets say I want to establish my own
instant signature. I use a wallet that already has an accepted instant
signature, but it also allows me to add my own instant signature. I do this
so that I can start establishing trust in my own instant signature while
relying on their instant signature.


On Wed, Jun 18, 2014 at 6:25 AM, Mike Hearn <mike@plan99•net> wrote:

> - allowing multiple signatures ?
>
>
> I'm not sure this is actually important or useful; trusting someone not to
> double spend is a pretty binary thing. I'm not sure saying "you need to get
> three independent parties to sign off on this" is worth the hassle,
> especially because the first signature is obvious (your risk analysis
> provider or hardware) but the second and third are ..... who? Special
> purpose services you have to sign up for? Seems like a hassle.
>
> But it's up to you.
>
>
> ------------------------------------------------------------------------------
> HPCC Systems Open Source Big Data Platform from LexisNexis Risk Solutions
> Find What Matters Most in Your Big Data with HPCC Systems
> Open Source. Fast. Scalable. Simple. Ideal for Dirty Data.
> Leverages Graph Analysis for Fast Processing & Easy Data Exploration
> http://p.sf.net/sfu/hpccsystems
> _______________________________________________
> Bitcoin-development mailing list
> Bitcoin-development@lists•sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/bitcoin-development
>
>

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

 permalink raw reply	[|nested]
2014-06-18 15:59           ` Daniel Rice

  2014-06-19 17:36               ` Daniel Rice
  
From: Mike Hearn @ 2014-06-18 16:09 UTC (permalink / raw)
  To: Daniel Rice;  Bitcoin Dev, Lawrence Nahum

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

>
> I think that's true if you assume that the instant provider list is based
> on a by hand created list of accepted instant providers. That's how VISA
> works now and that's why I was asking for an approach where the
> trusted_instant_providers list is scalable because that seems very
> dangerous.
>

Supporting it in the protocol is easy. Building such a thing: that's hard.
Decentralised automated reputation systems are complex and subtle.

I don't feel strongly about whether the field should be "optional" or
"repeated", 100% of implementations in the forseeable future would just
look at the first item and ignore the rest. But if later someone did crack
this problem it would lead to a simple upgrade path. So perhaps you're
right and the protobuf should allow multiple signatures. It means a new
sub-message to wrap the pki_type, pki_data and signature fields into one,
and then making that repeated.

Up to Lawrence.

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

 permalink raw reply	[|nested]
2014-06-17 15:58     ` Isidor Zeuner
  2014-06-18  9:15       ` Mike Hearn

  
From: Natanael @ 2014-06-18 20:47 UTC (permalink / raw)
  To: Isidor Zeuner;  bitcoin-development

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

Den 17 jun 2014 17:59 skrev "Isidor Zeuner" <cryptocurrencies@quidecco•de>:
>
> quote:
> > Mike Hearn, why don't we just have all nodes report attempted double
spends
> > through the node network. No need to involve the miners at all really,
or
> > do your suggestion but also report the double spend attempt. By waiting
> > maybe 10-60 seconds (instead of 10 minutes for first conf), merchants
can
> > be more sure that a double spend attack was not tried. Attacker would
have
> > to hold back second tx by 10-60 seconds and hope that that second tx
(with
> > higher fee) get's into a solved block before the first one. This forced
> > delay time ought to make the attack less successful (but not
impossible).
> >
>
> What prevents the following steps from happening:
>
> 1. attacker sends first transaction, paying to the merchant
>
> 2. merchant waits 10-60 seconds
>
> 3. merchant confirms the payment as received
>
> 4. attacker sees merchant's confirmation
>
> 5. attacker sends double spend
>
> The security improvement seems to be pretty much exactly the chance
> that during the 10-60 seconds, a block is solved. Am I missing
> something?
>
> Regarding "reporting double spends", this would only help if it comes
> with some kind of penalty for the double spend. Now what if the double
> spend was not done on malicious motives? Maybe someone posted a
> transaction which does not confirm for some reason, and wants to
> recover his funds? Should we regard transactions which do not confirm
> as forever lost, in order to get to an "every double spend is a
> misbehaviour" policy?
>
> Best regards,
>
> Isidor

With 2-of-2 multisignature notaries, the doublespend (the set of
conflicting transactions) would be published and propagated together as
evidence of the notary being malicious. This is trivial and self-evident
self-contained proof.

But there should be no direct penalty IMHO in the Bitcoin protocol itself.

If a transaction would have to be replaced honestly because of being wrong
or simply not confirming, then I think there should be some means of
showing the second transaction is "legitimate". Don't ask me how exactly it
would work in practice, but one method could be through showing the
original recipients have signed off on it (showing they agree it should be
reversed).

If you can't get the original recipient to sign, then you're stuck with
either not replacing it or the notary trying to prove the replacing
transaction was legitimate.

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

 permalink raw reply	[|nested]
2014-06-18 16:09             ` Mike Hearn

  
From: Daniel Rice @ 2014-06-19 17:36 UTC (permalink / raw)
  To: Mike Hearn;  Bitcoin Dev, Lawrence Nahum

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

> Supporting it in the protocol is easy. Building such a thing: that's
hard. Decentralised automated reputation systems are complex and subtle.

Bitcoin is valuable as a protocol because it is truly decentralized. The
complexity involved in building this system was expansive, but I think we
can all agree it was worth the trouble. With this particular topic of
instant transactions it seems we have to be very careful about pushing
Bitcoin in a centralized direction for the sake of a simple quick solution.
Building an automated system to solve the instant transaction problem will
be difficult, but also well worth the effort, and exactly like you're
saying Mike, I just want to make sure the door is left open protocol wise
for a robust solution in the future.


On Wed, Jun 18, 2014 at 9:09 AM, Mike Hearn <mike@plan99•net> wrote:

> I think that's true if you assume that the instant provider list is based
>> on a by hand created list of accepted instant providers. That's how VISA
>> works now and that's why I was asking for an approach where the
>> trusted_instant_providers list is scalable because that seems very
>> dangerous.
>>
>
> Supporting it in the protocol is easy. Building such a thing: that's hard.
> Decentralised automated reputation systems are complex and subtle.
>
> I don't feel strongly about whether the field should be "optional" or
> "repeated", 100% of implementations in the forseeable future would just
> look at the first item and ignore the rest. But if later someone did crack
> this problem it would lead to a simple upgrade path. So perhaps you're
> right and the protobuf should allow multiple signatures. It means a new
> sub-message to wrap the pki_type, pki_data and signature fields into one,
> and then making that repeated.
>
> Up to Lawrence.
>

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

 permalink raw reply	[|nested]
2014-06-18 12:09       ` Lawrence Nahum
  2014-06-18 13:25         ` Mike Hearn

  
From: sebastien requiem @ 2014-06-25 14:01 UTC (permalink / raw)
  To: Lawrence Nahum;  Bitcoin Dev

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

On Wed, Jun 18, 2014 at 2:09 PM, Lawrence Nahum <lawrence@greenaddress•it>
wrote:

> [snip]
>
> Allow me to recap BIP changes in discussion:
>
> - making some changes to allow merchants to offer discounts in case of
> instant ?
> - allowing multiple signatures ?
>
> Did I miss anything? Thoughts on the above from others?
>

Jumping on this thread after reading it all. I am in favor of the
discount offered by the merchant.

Ideally the merchant could get the amount of the wallet *fee*
for instant payment (privacy leak?). That way, the merchant
could decide to support the instant payment at 100% (better
user experience after all) or at 50% only or at 0%.

This would encourage instant payment for merchants and buyers without
(re-)creating a non-transparent system.

regards,


-- 
sebastien requiem - bendingspoons.com

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

 permalink raw reply	[|nested]