Re: [bitcoin-dev] Consensus based block size retargeting algorithm (draft)

2015-08-29 Thread Elliot Olds via bitcoin-dev
On Fri, Aug 28, 2015 at 4:46 PM, Btc Drak via bitcoin-dev 
bitcoin-dev@lists.linuxfoundation.org wrote:

 On Sat, Aug 29, 2015 at 12:35 AM, Chris Pacia via bitcoin-dev
  It may be in everyone's collective interest to raise the block size but
 not
  their individual interest.

 It is clear from recent events that miners are willing to collaborate
 together for the greater good of their industry. Miners have also
 publicly shown support for raising the blocksize collaboratively.


When have miners shown a willingness to make sacrifices for miners as a
whole when they've been in a public good[1] situation? Miners
collaborating to release statements to the public about which BIPs they
support is very different from miners incurring costs only to themselves in
order to help the entire group. They might do so, but it isn't clear.

I agree with Jorge and Mark that allowing miners to vote on the block size
is not ideal. Miners interests are somewhat aligned with those of the
broader community, but not perfectly aligned. The block size level that
maximizes miner revenue is not necessarily desirable overall. More miner
revenue is only good if the marginal extra security that it buys is worth
the extra cost. In addition to the cost of higher user fees, there's
another hidden cost. In Bitcoin's early stages trying to maximize revenue
too soon can slow growth and result in less revenue when it's more needed
(when block rewards are much lower).

[1] https://en.wikipedia.org/wiki/Public_good
___
bitcoin-dev mailing list
bitcoin-dev@lists.linuxfoundation.org
https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev


[bitcoin-dev] RFC - BIP: URI scheme for Blockchain exploration

2015-08-29 Thread Marco Pontello via bitcoin-dev
Hi!
My first post here, hope I'm following the right conventions.
I had this humble idea for a while, so I thought to go ahead and propose
it.

BIP: XX
Title: URI scheme for Blockchain exploration
Author: Marco Pontello
Status: Draft
Type: Standards Track
Created: 29 August 2015

Abstract

This BIP propose a simple URI scheme for looking up blocks, transactions,
addresses on a Blockchain explorer.

Motivation
==
The purpose of this URI scheme is to enable users to handle all the
requests for details about blocks, transactions, etc. with their preferred
tool (being that a web service or a local application).

Currently a Bitcoin client usually point to an arbitrary blockchain
explorer when the user look for the details of a transaction (es. Bitcoin
Wallet use BitEasy, Mycelium or Electrum use Blockchain.info, etc.).
Other times resorting to cutpaste is needed.
The same happens with posts and messages that reference some particular
txs or blocks, if they provide links at all.

Specification
=
The URI follow this simple form:

blockchain: hash/string

Examples:

blockchain:1003e880d500968d51157f210c632e08a652af3576600198
blockchain:001949
blockchain:3b95a766d7a99b87188d6875c8484cb2b310b78459b7816d4dfc3f0f7e04281a

Rationale
=
I thought about using some more complex scheme, or adding qualifiers to
distinguish blocks from txs, but in the end I think that keeping it simple
should be practical enough. Blockchain explorers can apply the same
disambiguation rules they are already using to process the usual search
box.

From the point of view of a wallet developer (or other tool that need to
show any kind of Blockchain references), using this scheme mean that he
can simply make it a blockchain: link and be done with it, without having
to worry about any specific Blockchain explorer or provide a means for the
user to select one.

Blockchain explorers in turn will simply offer to handle the blockchain:
URI, the first time the user visit their website, or launch/install the
application, or even set themselves if there isn't already one.

Users get the convenience of using always their preferred explorer, which
can be especially handy on mobile devices, where juggling with cutpaste
is far from ideal.
___
bitcoin-dev mailing list
bitcoin-dev@lists.linuxfoundation.org
https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev


Re: [bitcoin-dev] Consensus based block size retargeting algorithm (draft)

2015-08-29 Thread Eric Lombrozo via bitcoin-dev
In principle I am sympathetic to dynamic block size proposals...but in
practice it seems we're barking up the wrong tree. Without mechanisms for
incentivizing validators...and checks and balances between the interests of
regular users (who want to reduce fees and confirmation time), miners (who
want to balance hashing and propagation time costs with revenue), and
validator nodes (who currrently lack any direct incentives), I think we're
talking about significant protocol complications with potential benefits
that are hard to model at best.

On Sat, Aug 29, 2015, 3:16 AM Btc Drak via bitcoin-dev 
bitcoin-dev@lists.linuxfoundation.org wrote:

 On Sat, Aug 29, 2015 at 1:29 AM, Mark Friedenbach via bitcoin-dev
 bitcoin-dev@lists.linuxfoundation.org wrote:
  Ah, then my mistake. It seemed so similar to an idea that was proposed
  before on this mailing list:
 
 
 http://lists.linuxfoundation.org/pipermail/bitcoin-dev/2015-May/008033.html
 
  that my mind just filled in the gaps. I concur -- having miners -- or any
  group -- vote on block size is not an intrinsically good thing. The the
  original proposal due to Greg Maxwell et al was not a mechanism for
 voting
  but rather a feedback control that made the maximum block size that which
  generated the most fees.

 Mark and Jorge,

 I am very glad you have brought up this particular objection because
 it's something I thought about but was unclear if it was an opinion
 that would be shared by others. I chose to omit it from the proposal
 to see if it would come up during peer review.

 I feel that giving miners a blank cheque to increase blocksize, by any
 means, goes against a key design of bitcoin's security model. Full
 nodes keep miners honest by ensuring by validating their blocks. Under
 any voting-only scheme there is no way for full nodes to keep miners
 in cheque because miner have free reign to increase the blocksize.

 This problem can be solved by introducing a hard cap on blocksize. By
 introducing an upper limit miners now have the freedom to increase
 blocksize but only within defined parameters.  Remember my proposal
 allows blocksize to increase and decrease in such a way that miners
 must collectively agree if they want the size to increase.

 I believe the idea of a hard upper limit has become rather politicised
 but is essential to the security model of bitcoin.

 With respect to the flexicap idea where miners can create a larger
 block by paying extra difficulty, I believe that proposal has a
 critical flaw because, as Gavin pointed out, it makes it very
 expensive (and risky) to include a few extra transactions. I believe
 it suffers from tragedy of the commons because there is no incentive
 for the mining community to reach consensus. Each and every block is
 going to be a gamble, should we include a few extra transactions at
 the risk of losing the block?. Under my proposal miners can
 collectively agree to change the blocksize. Let's say they want a 10%
 increase, they can collude together to make that increase and once
 reached, it remains until they want to change it again. Yet, the upper
 hard limit keeps the ultimate control of the maximum block size
 squarely in the hands of full nodes.

 Whilst the exact number may be up for discussion, I would propose an
 initial upper limit of 8MB, so under my proposal the blocksize would
 be flexible between 1MB and 8MB.

 An alternative methodology to voting in the coinbase would be to
 change the vote to be the blocksize itself

 1. miners pay extra difficulty to create a larger block.
 2. every 2016 blocks the average or median of the last 2016 blocks is
 calculated and becomes the new maximum blocksize limit.

 This would retain incentive to collude to increase blocksize, as well
 as the property of costing to increase while being free to propose
 decrease.

 It would still require an upper blocksize limit in order for full
 nodes to retain control. Without an upper limit, any proposal is going
 to break the security model as full nodes give up some oversight
 control over miners.

 Another way of looking at these ideas is we're raising blocksize hard
 limit (to 8MB or whatever is decided), but making a soft of softer
 or inner limit part of consensus. Such a concept is not really
 departing from the current idea of a soft limit except to make it
 consensus enforced. Obviously it's not identical, but I think you can
 see the similarities.

 Does that make sense?
 ___
 bitcoin-dev mailing list
 bitcoin-dev@lists.linuxfoundation.org
 https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev

___
bitcoin-dev mailing list
bitcoin-dev@lists.linuxfoundation.org
https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev


Re: [bitcoin-dev] RFC - BIP: URI scheme for Blockchain exploration

2015-08-29 Thread Richard Moore via bitcoin-dev
I like the idea of having a standard for this, that all explorers (and even 
core, eventually) would understand.

I would recommend 2 changes though. First, using a real URI scheme, 
blockchain:// so that we can just use normal URL parsing libraries. The 
bitcoin: thing leads to additional code to mutate it into a proper URI before 
passing it to URL parsing. And I think it would be fine to include the type 
looking up. For example:

blockchain://blockhash/1003e880d500968d51157f210c632e08a652af3576600198
blockchain://txid/3b95a766d7a99b87188d6875c8484cb2b310b78459b7816d4dfc3f0f7e04281a
blockchain://block/189000
blockchain://address/1RicMooMWxqKczuRCa5D2dnJaUEn9ZJyn

I think this would help the URI be more human understandable as well as give 
the explorers the ability to optimize a bit what they are looking for when 
hitting various databases.

A possible future path could also include blockchain://tx/123000/4 for block 
height, tx index... Another possibility could be blockchain://version which 
would return a list of supported paths, version of the BIP supported, etc.

The BIP should also specify little endian searching. I'm not sure, but would it 
also make sense for this BIP to include what the return results should look 
like? Maybe another, related BIP.

RicMoo

Sent from my self-aware iPhone

.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸(((º

Richard Moore ~ Founder
Genetic Mistakes Software Inc.
phone: (778) 882-6125
email: ric...@geneticmistakes.com
www: http://GeneticMistakes.com

 On Aug 29, 2015, at 7:48 AM, Marco Pontello via bitcoin-dev 
 bitcoin-dev@lists.linuxfoundation.org wrote:
 
 Hi!
 My first post here, hope I'm following the right conventions.
 I had this humble idea for a while, so I thought to go ahead and propose
 it.
 
 BIP: XX
 Title: URI scheme for Blockchain exploration
 Author: Marco Pontello
 Status: Draft
 Type: Standards Track
 Created: 29 August 2015
 
 Abstract
 
 This BIP propose a simple URI scheme for looking up blocks, transactions,
 addresses on a Blockchain explorer.
 
 Motivation
 ==
 The purpose of this URI scheme is to enable users to handle all the
 requests for details about blocks, transactions, etc. with their preferred
 tool (being that a web service or a local application).
 
 Currently a Bitcoin client usually point to an arbitrary blockchain
 explorer when the user look for the details of a transaction (es. Bitcoin
 Wallet use BitEasy, Mycelium or Electrum use Blockchain.info, etc.).
 Other times resorting to cutpaste is needed.
 The same happens with posts and messages that reference some particular
 txs or blocks, if they provide links at all.
 
 Specification
 =
 The URI follow this simple form:
 
 blockchain: hash/string  
 
 Examples:
 
 blockchain:1003e880d500968d51157f210c632e08a652af3576600198
 blockchain:001949
 blockchain:3b95a766d7a99b87188d6875c8484cb2b310b78459b7816d4dfc3f0f7e04281a
 
 Rationale
 =
 I thought about using some more complex scheme, or adding qualifiers to
 distinguish blocks from txs, but in the end I think that keeping it simple
 should be practical enough. Blockchain explorers can apply the same
 disambiguation rules they are already using to process the usual search
 box. 
 
 From the point of view of a wallet developer (or other tool that need to
 show any kind of Blockchain references), using this scheme mean that he
 can simply make it a blockchain: link and be done with it, without having
 to worry about any specific Blockchain explorer or provide a means for the
 user to select one.
 
 Blockchain explorers in turn will simply offer to handle the blockchain:
 URI, the first time the user visit their website, or launch/install the
 application, or even set themselves if there isn't already one.
 
 Users get the convenience of using always their preferred explorer, which
 can be especially handy on mobile devices, where juggling with cutpaste
 is far from ideal.
 
 
 ___
 bitcoin-dev mailing list
 bitcoin-dev@lists.linuxfoundation.org
 https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
___
bitcoin-dev mailing list
bitcoin-dev@lists.linuxfoundation.org
https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev


Re: [bitcoin-dev] RFC - BIP: URI scheme for Blockchain exploration

2015-08-29 Thread Matt Whitlock via bitcoin-dev
bitcoin:12345 *is* a real URI. It's just not an absolute, hierarchical URI 
(a.k.a. a URL); rather, it's an opaque URI.

And your suggestion is actually in violation of the URI spec, since 
blockhash, txid, block, and address are not host names.

More correct would be:

blockchain:?blockhash=1003e880d500968d51157f210c632e08a652af3576600198
blockchain:?txid=3b95a766d7a99b87188d6875c8484cb2b310b78459b7816d4dfc3f0f7e04281a
blockchain:?block=189000
blockchain:?address=1RicMooMWxqKczuRCa5D2dnJaUEn9ZJyn

You should read the URI syntax RFC: https://tools.ietf.org/html/rfc3986


On Saturday, 29 August 2015, at 12:31 pm, Richard Moore via bitcoin-dev wrote:
 I like the idea of having a standard for this, that all explorers (and even 
 core, eventually) would understand.
 
 I would recommend 2 changes though. First, using a real URI scheme, 
 blockchain:// so that we can just use normal URL parsing libraries. The 
 bitcoin: thing leads to additional code to mutate it into a proper URI before 
 passing it to URL parsing. And I think it would be fine to include the type 
 looking up. For example:
 
 blockchain://blockhash/1003e880d500968d51157f210c632e08a652af3576600198
 blockchain://txid/3b95a766d7a99b87188d6875c8484cb2b310b78459b7816d4dfc3f0f7e04281a
 blockchain://block/189000
 blockchain://address/1RicMooMWxqKczuRCa5D2dnJaUEn9ZJyn
 
 I think this would help the URI be more human understandable as well as give 
 the explorers the ability to optimize a bit what they are looking for when 
 hitting various databases.
 
 A possible future path could also include blockchain://tx/123000/4 for block 
 height, tx index... Another possibility could be blockchain://version which 
 would return a list of supported paths, version of the BIP supported, etc.
 
 The BIP should also specify little endian searching. I'm not sure, but would 
 it also make sense for this BIP to include what the return results should 
 look like? Maybe another, related BIP.
 
  On Aug 29, 2015, at 7:48 AM, Marco Pontello via bitcoin-dev 
  bitcoin-dev@lists.linuxfoundation.org wrote:
  
  Hi!
  My first post here, hope I'm following the right conventions.
  I had this humble idea for a while, so I thought to go ahead and propose
  it.
  
  BIP: XX
  Title: URI scheme for Blockchain exploration
  Author: Marco Pontello
  Status: Draft
  Type: Standards Track
  Created: 29 August 2015
  
  Abstract
  
  This BIP propose a simple URI scheme for looking up blocks, transactions,
  addresses on a Blockchain explorer.
  
  Motivation
  ==
  The purpose of this URI scheme is to enable users to handle all the
  requests for details about blocks, transactions, etc. with their preferred
  tool (being that a web service or a local application).
  
  Currently a Bitcoin client usually point to an arbitrary blockchain
  explorer when the user look for the details of a transaction (es. Bitcoin
  Wallet use BitEasy, Mycelium or Electrum use Blockchain.info, etc.).
  Other times resorting to cutpaste is needed.
  The same happens with posts and messages that reference some particular
  txs or blocks, if they provide links at all.
  
  Specification
  =
  The URI follow this simple form:
  
  blockchain: hash/string  
  
  Examples:
  
  blockchain:1003e880d500968d51157f210c632e08a652af3576600198
  blockchain:001949
  blockchain:3b95a766d7a99b87188d6875c8484cb2b310b78459b7816d4dfc3f0f7e04281a
  
  Rationale
  =
  I thought about using some more complex scheme, or adding qualifiers to
  distinguish blocks from txs, but in the end I think that keeping it simple
  should be practical enough. Blockchain explorers can apply the same
  disambiguation rules they are already using to process the usual search
  box. 
  
  From the point of view of a wallet developer (or other tool that need to
  show any kind of Blockchain references), using this scheme mean that he
  can simply make it a blockchain: link and be done with it, without having
  to worry about any specific Blockchain explorer or provide a means for the
  user to select one.
  
  Blockchain explorers in turn will simply offer to handle the blockchain:
  URI, the first time the user visit their website, or launch/install the
  application, or even set themselves if there isn't already one.
  
  Users get the convenience of using always their preferred explorer, which
  can be especially handy on mobile devices, where juggling with cutpaste
  is far from ideal.

___
bitcoin-dev mailing list
bitcoin-dev@lists.linuxfoundation.org
https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev


Re: [bitcoin-dev] On the Nature of Miner Advantages in Uncapped Block Size Fee Markets

2015-08-29 Thread Jorge Timón via bitcoin-dev
On Aug 29, 2015 9:43 AM, Daniele Pinna via bitcoin-dev 
bitcoin-dev@lists.linuxfoundation.org wrote:

 This work has vacuumed my entire life for the past two weeks leading me
to lag behind on a lot of work. I apologize for typos which I may not have
seen. I stand by for any comments the community may have and look forward
to reigniting consideration of a block size scaling proposal (BIP101)
which, due to the XT fork drama, I believe has been placed hastily and
undeservedly on the chopping block.

I don't like relying on exponential growth (that's why I don't like neither
Gavin's 101 nor Pieter's 103).

But I don't think it's too late to turn bip101 into just another proposal
for an uncontroversial hardfork (changing the 75% to 95% would be the first
step) and xt into just another software fork.

My favorite one so far is bip102 (even though I still consider 2mb now
arbitrary and I'm worried about making mining centralization even worse
than it is now), but if it was framed as a schism hardfork like bip101 I
would also warn about the dangers of a schism hardfork for it.


https://www.scribd.com/doc/276849939/On-the-Nature-of-Miner-Advantages-in-Uncapped-Block-Size-Fee-Markets

I'll read it to try to understand your claims. Are you presentung this in
the scaling workshop?
___
bitcoin-dev mailing list
bitcoin-dev@lists.linuxfoundation.org
https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev


Re: [bitcoin-dev] RFC - BIP: URI scheme for Blockchain exploration

2015-08-29 Thread Andreas Schildbach via bitcoin-dev
On 08/29/2015 06:31 PM, Richard Moore via bitcoin-dev wrote:

 I like the idea of having a standard for this, that all explorers (and
 even core, eventually) would understand.
 
 I would recommend 2 changes though. First, using a real URI scheme,
 blockchain:// so that we can just use normal URL parsing libraries. The
 bitcoin: thing leads to additional code to mutate it into a proper URI
 before passing it to URL parsing. And I think it would be fine to
 include the type looking up. For example:
 
 blockchain://blockhash/1003e880d500968d51157f210c632e08a652af3576600198
 blockchain://txid/3b95a766d7a99b87188d6875c8484cb2b310b78459b7816d4dfc3f0f7e04281a
 blockchain://block/189000
 blockchain://address/1RicMooMWxqKczuRCa5D2dnJaUEn9ZJyn

Good thinking! It might make sense to look at the existing de-facto
standard (e.g. blockexplorer.com, blockchain.info):

/tx/ for transactions
/block/ for blocks, supports both hash or height
/address/ for address


___
bitcoin-dev mailing list
bitcoin-dev@lists.linuxfoundation.org
https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev


Re: [bitcoin-dev] RFC - BIP: URI scheme for Blockchain exploration

2015-08-29 Thread Btc Drak via bitcoin-dev
What about supporting different networks? What if I want to look up
testnet for example?

blockchain://mainnet/txid/3b95a766d7a99b87188d6875c8484cb2b310b78459b7816d4dfc3f0f7e04281a
blockchain://testnet/txid/3b95a766d7a99b87188d6875c8484cb2b310b78459b7816d4dfc3f0f7e04281a

or

blockchain://txid/3b95a766d7a99b87188d6875c8484cb2b310b78459b7816d4dfc3f0f7e04281a
blockchain://txid/3b95a766d7a99b87188d6875c8484cb2b310b78459b7816d4dfc3f0f7e04281a?network=testnet

On Sat, Aug 29, 2015 at 5:31 PM, Richard Moore via bitcoin-dev
bitcoin-dev@lists.linuxfoundation.org wrote:
 I like the idea of having a standard for this, that all explorers (and even
 core, eventually) would understand.

 I would recommend 2 changes though. First, using a real URI scheme,
 blockchain:// so that we can just use normal URL parsing libraries. The
 bitcoin: thing leads to additional code to mutate it into a proper URI
 before passing it to URL parsing. And I think it would be fine to include
 the type looking up. For example:

 blockchain://blockhash/1003e880d500968d51157f210c632e08a652af3576600198
 blockchain://txid/3b95a766d7a99b87188d6875c8484cb2b310b78459b7816d4dfc3f0f7e04281a
 blockchain://block/189000
 blockchain://address/1RicMooMWxqKczuRCa5D2dnJaUEn9ZJyn

 I think this would help the URI be more human understandable as well as give
 the explorers the ability to optimize a bit what they are looking for when
 hitting various databases.

 A possible future path could also include blockchain://tx/123000/4 for block
 height, tx index... Another possibility could be blockchain://version which
 would return a list of supported paths, version of the BIP supported, etc.

 The BIP should also specify little endian searching. I'm not sure, but would
 it also make sense for this BIP to include what the return results should
 look like? Maybe another, related BIP.

 RicMoo

 Sent from my self-aware iPhone

 .·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸(((º

 Richard Moore ~ Founder
 Genetic Mistakes Software Inc.
 phone: (778) 882-6125
 email: ric...@geneticmistakes.com
 www: http://GeneticMistakes.com

 On Aug 29, 2015, at 7:48 AM, Marco Pontello via bitcoin-dev
 bitcoin-dev@lists.linuxfoundation.org wrote:

 Hi!
 My first post here, hope I'm following the right conventions.
 I had this humble idea for a while, so I thought to go ahead and propose
 it.

 BIP: XX
 Title: URI scheme for Blockchain exploration
 Author: Marco Pontello
 Status: Draft
 Type: Standards Track
 Created: 29 August 2015

 Abstract
 
 This BIP propose a simple URI scheme for looking up blocks, transactions,
 addresses on a Blockchain explorer.

 Motivation
 ==
 The purpose of this URI scheme is to enable users to handle all the
 requests for details about blocks, transactions, etc. with their preferred
 tool (being that a web service or a local application).

 Currently a Bitcoin client usually point to an arbitrary blockchain
 explorer when the user look for the details of a transaction (es. Bitcoin
 Wallet use BitEasy, Mycelium or Electrum use Blockchain.info, etc.).
 Other times resorting to cutpaste is needed.
 The same happens with posts and messages that reference some particular
 txs or blocks, if they provide links at all.

 Specification
 =
 The URI follow this simple form:

 blockchain: hash/string

 Examples:

 blockchain:1003e880d500968d51157f210c632e08a652af3576600198
 blockchain:001949
 blockchain:3b95a766d7a99b87188d6875c8484cb2b310b78459b7816d4dfc3f0f7e04281a

 Rationale
 =
 I thought about using some more complex scheme, or adding qualifiers to
 distinguish blocks from txs, but in the end I think that keeping it simple
 should be practical enough. Blockchain explorers can apply the same
 disambiguation rules they are already using to process the usual search
 box.

 From the point of view of a wallet developer (or other tool that need to
 show any kind of Blockchain references), using this scheme mean that he
 can simply make it a blockchain: link and be done with it, without having
 to worry about any specific Blockchain explorer or provide a means for the
 user to select one.

 Blockchain explorers in turn will simply offer to handle the blockchain:
 URI, the first time the user visit their website, or launch/install the
 application, or even set themselves if there isn't already one.

 Users get the convenience of using always their preferred explorer, which
 can be especially handy on mobile devices, where juggling with cutpaste
 is far from ideal.


 ___
 bitcoin-dev mailing list
 bitcoin-dev@lists.linuxfoundation.org
 https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev


 ___
 bitcoin-dev mailing list
 bitcoin-dev@lists.linuxfoundation.org
 https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev

___
bitcoin-dev mailing list

Re: [bitcoin-dev] RFC - BIP: URI scheme for Blockchain exploration

2015-08-29 Thread Richard Moore via bitcoin-dev
Yes! Good point, network should be encoded. Not sure I like this format yet, 
but what if it was part of the authority, like block:testnet. Like http uses 
port 80 by default, you could have block by default refer to block:mainnet.

Eg.
blockchain://tx:testnet3/3b95a766d7a99b87188d6875c8484cb2b310b78459b7816d4dfc3f0f7e04281a

I will read the RFC over more thoroughly tomorrow to get an idea of what types 
of things make more or less sense.

RicMoo

Sent from my self-aware iPhone

.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸(((º

Richard Moore ~ Founder
Genetic Mistakes Software Inc.
phone: (778) 882-6125
email: ric...@geneticmistakes.com
www: http://GeneticMistakes.com

 On Aug 29, 2015, at 2:58 PM, Btc Drak btcd...@gmail.com wrote:
 
 What about supporting different networks? What if I want to look up
 testnet for example?
 
 blockchain://mainnet/txid/3b95a766d7a99b87188d6875c8484cb2b310b78459b7816d4dfc3f0f7e04281a
 blockchain://testnet/txid/3b95a766d7a99b87188d6875c8484cb2b310b78459b7816d4dfc3f0f7e04281a
 
 or
 
 blockchain://txid/3b95a766d7a99b87188d6875c8484cb2b310b78459b7816d4dfc3f0f7e04281a
 blockchain://txid/3b95a766d7a99b87188d6875c8484cb2b310b78459b7816d4dfc3f0f7e04281a?network=testnet
 
 On Sat, Aug 29, 2015 at 5:31 PM, Richard Moore via bitcoin-dev
 bitcoin-dev@lists.linuxfoundation.org wrote:
 I like the idea of having a standard for this, that all explorers (and even
 core, eventually) would understand.
 
 I would recommend 2 changes though. First, using a real URI scheme,
 blockchain:// so that we can just use normal URL parsing libraries. The
 bitcoin: thing leads to additional code to mutate it into a proper URI
 before passing it to URL parsing. And I think it would be fine to include
 the type looking up. For example:
 
 blockchain://blockhash/1003e880d500968d51157f210c632e08a652af3576600198
 blockchain://txid/3b95a766d7a99b87188d6875c8484cb2b310b78459b7816d4dfc3f0f7e04281a
 blockchain://block/189000
 blockchain://address/1RicMooMWxqKczuRCa5D2dnJaUEn9ZJyn
 
 I think this would help the URI be more human understandable as well as give
 the explorers the ability to optimize a bit what they are looking for when
 hitting various databases.
 
 A possible future path could also include blockchain://tx/123000/4 for block
 height, tx index... Another possibility could be blockchain://version which
 would return a list of supported paths, version of the BIP supported, etc.
 
 The BIP should also specify little endian searching. I'm not sure, but would
 it also make sense for this BIP to include what the return results should
 look like? Maybe another, related BIP.
 
 RicMoo
 
 Sent from my self-aware iPhone
 
 .·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸(((º
 
 Richard Moore ~ Founder
 Genetic Mistakes Software Inc.
 phone: (778) 882-6125
 email: ric...@geneticmistakes.com
 www: http://GeneticMistakes.com
 
 On Aug 29, 2015, at 7:48 AM, Marco Pontello via bitcoin-dev
 bitcoin-dev@lists.linuxfoundation.org wrote:
 
 Hi!
 My first post here, hope I'm following the right conventions.
 I had this humble idea for a while, so I thought to go ahead and propose
 it.
 
 BIP: XX
 Title: URI scheme for Blockchain exploration
 Author: Marco Pontello
 Status: Draft
 Type: Standards Track
 Created: 29 August 2015
 
 Abstract
 
 This BIP propose a simple URI scheme for looking up blocks, transactions,
 addresses on a Blockchain explorer.
 
 Motivation
 ==
 The purpose of this URI scheme is to enable users to handle all the
 requests for details about blocks, transactions, etc. with their preferred
 tool (being that a web service or a local application).
 
 Currently a Bitcoin client usually point to an arbitrary blockchain
 explorer when the user look for the details of a transaction (es. Bitcoin
 Wallet use BitEasy, Mycelium or Electrum use Blockchain.info, etc.).
 Other times resorting to cutpaste is needed.
 The same happens with posts and messages that reference some particular
 txs or blocks, if they provide links at all.
 
 Specification
 =
 The URI follow this simple form:
 
 blockchain: hash/string
 
 Examples:
 
 blockchain:1003e880d500968d51157f210c632e08a652af3576600198
 blockchain:001949
 blockchain:3b95a766d7a99b87188d6875c8484cb2b310b78459b7816d4dfc3f0f7e04281a
 
 Rationale
 =
 I thought about using some more complex scheme, or adding qualifiers to
 distinguish blocks from txs, but in the end I think that keeping it simple
 should be practical enough. Blockchain explorers can apply the same
 disambiguation rules they are already using to process the usual search
 box.
 
 From the point of view of a wallet developer (or other tool that need to
 show any kind of Blockchain references), using this scheme mean that he
 can simply make it a blockchain: link and be done with it, without having
 to worry about any specific Blockchain explorer or provide a means for the
 user to select one.
 
 Blockchain explorers in turn will simply offer 

Re: [bitcoin-dev] [Bitcoin-development] [BIP draft] Motivation and deployment of consensus rules changes ([soft/hard]forks)

2015-08-29 Thread Jorge Timón via bitcoin-dev
On Wed, Aug 26, 2015 at 1:20 AM, Andy Chase via bitcoin-dev
bitcoin-dev@lists.linuxfoundation.org wrote:
 As I understand Github is not to be used for the high-level discussion
 of a draft BIP so I will post my thoughts here (is this specified
 somewhere? Can we specify this in BIP-0001?).

As specified in BIP001, there's an optional field to link to the
discussion on the mailing list, which in this case links to this
thread (that's why I'm replying here):

https://github.com/bitcoin/bips/pull/181/files#diff-e331b8631759a4ed6a4cfb4d10f473caR8

 -   I have some concerns about the structure and the wording of this
 proposal. I think both the structure and the internal wording can be
 slimmed down and simplified

You are probably right, but that is too vague for me to take any action.
Can you propose something more concrete as a PR to my branch?

https://github.com/jtimon/bips/tree/bip-forks

 -   I also believe the history lessons should be trimmed out,
 mentioned at best

Can you explain why?
I think they're helpful as examples for the explanations (even though
the concrete texts can probably improved/summarized).

 -   There's separate BIP for at least one of the code forks

I'm not sure I understand this.
What do you mean by code forks?
If you mean software fork (like libcoin or bitcoin xt
[pre-controversial-bip101]) those are completely fine and out of scope
for this BIP, since they don't require coordination by the different
users/implementations to upgrade/re-implement the consensus changes.


 -   BIP-001 specifies that BIP proposals should not be given a BIP
 number until after they have been spelled checked and approved by an
 editor. Greg Maxwell: was this followed?

I don't think the spell checking had been followed at all for this or
any other BIP, but yes, Greg assigned the number 99 (he did so
privately instead of here on this thread, which I find very annoying
because you are the second person who complains about this).

 -   What kind of proposal is this? Informational, Process or Standards
 track?

 -   I believe it should be Standards Track. Include the proposed
 upgrade path as a patch into core as a module that hard forks
 can use in the future. This will also give us some space to work
 through some of the complexities of forks in a definite way.
 -   Alternatively maybe we can split up this BIP into a Standards
 track and a separate Informational BIP?

That is a good question. The proposal currently says informational |
process: 
https://github.com/bitcoin/bips/pull/181/files#diff-e331b8631759a4ed6a4cfb4d10f473caR6
But I wasn't really convinced about this so I'm happy to change it to
whatever it's more appropriate.
The contained code is an example of an uncontroversial hardfork to
create a precedent. I'm not sure I understand your proposal for a
patch into core as a module that hard forks can use in the future.
Can you elaborate what would go in that patch?
___
bitcoin-dev mailing list
bitcoin-dev@lists.linuxfoundation.org
https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev


Re: [bitcoin-dev] Variable Block Size Proposal

2015-08-29 Thread Justin M. Wray via bitcoin-dev

-BEGIN PGP SIGNED MESSAGE-
Hash: SHA512

That's fine too.  Obviously the variable maximum would work just fine
without a minimum.  In fact, with the O(1) propagation proposal, a
minimum number of transactions could be enforced, think - a percentage
of the current mempool.  That's actually far more meaningful to both
miners and consumers.

On 8/29/15 10:22 AM, Jameson Lopp wrote:
 I don't think you'll find much support for introducing a mandatory minimum 
 block size. It's quite
wasteful to pad blocks with transactions that the miner is just
sending back to themself. If you want to solve the block propagation
issue, I'd recommend instead working on O(1) block propagation.

 The Bitcoin Relay Network already allows miners to relay blocks much
faster: http://bitcoinrelaynetwork.org/

 The next step would be getting O(1) block propagation into the Bitcoin
protocol. Check out Gavin's proposal:
https://gist.github.com/gavinandresen/e20c3b5a1d4b97f79ac2

 - Jameson

 On Sat, Aug 29, 2015 at 1:41 AM, Justin M. Wray via bitcoin-dev
bitcoin-dev@lists.linuxfoundation.org
mailto:bitcoin-dev@lists.linuxfoundation.org wrote:

 -BEGIN PGP SIGNED MESSAGE-
 Hash: SHA512

 Hey Bitcoiners!

 While I am an avid Bitcoin supporter, long-term user, and have done
 development work on tools and platforms surrounding Bitcoin, I have
 been very busy these past few weeks and haven't had a chance to fully
 (or closely) monitor the Block Size debate.

 I'm familiar with the basics, and have read abstracts about the
 front-running proposals (BIP 100, 101, and 102). Though I've honestly
 not read those in depth either. With that said, I was driving
 the other day and thought of a potential idea. I'll be clear, this is
 just an idea, and I haven't fully fleshed it out. But I thought I'd
 throw it out there and see what people thought.

 My Goal:

 Provide a variable block size that provides for sustainable, long-term
 growth, and balances the block propagation, while also being mindful
 of potential spam attacks.

 The Proposal:

 Every 2016 blocks (approximately every two weeks, at the same time the
 difficulty is adjusted), the new block size parameters are calculated.

 The calculation determines the average (mean) size of the past 2016
 blocks. This average size is then doubled (200%) and used as the
 maximum block size for the subsequent 2016 blocks. At any point, if
 the new maximum size is calculated to be below 1MB, 1MB is used
 instead (which prevents regression from our current state).

 Introduce a block minimum, the minimum will be 25% of the current
 maximum, calculated at the same time (that is, every 2016 blocks, at
 the same time the maximum is calculated). All blocks must be at least
 this size in order to be valid, for blocks that do not have enough
 transactions to meet the 25%, padding will be used. This devalues the
 incentive to mine empty blocks in either an attempt to deflate the
 block size, or to obtain a propagation advantage. Miners will be
 incentivized to include transactions, as the block must meet the
 minimum. This should ensure that even miners wishing to always mine
 the minimum are still confirming Bitcoin transactions.

 At the block in which this is introduced the maximum would stay at 1MB
 for the subsequent 2016 blocks. With the minimum being enforced of
256KB
 .

 Example:

 * Average Block Size for the last 2016 blocks: 724KB
 * New Maximum: 1448KB
 * New Minimum: 362KB

 Example: (Regression Prevention)

 * Average Block Size for the last 2016 blocks: 250KB
 * New Maximum: 1MB
 * New Minimum: 256KB

 The Future:

 I believe that the 1MB regression prevention might need to be changed
 in the future, to prevent a large mining population from continually
 deflating the block size (and keeping us at the 1MB limit).

 For this, the hard limit could be changed in the future manually,
 through a process similar to the current one, though hopefully with
 far less urgency and hysteria.

 Another option is to add an additional calculation, preventing the new
 maximum from being lower than 75% of the current maximum. This would
 substantially slow down a block-size deflation attack.

  Example of Block-Size Deflation Attack Prevention:

  * Average Block Size for the last 2016 blocks:  4MB
  * New Maximum:  8MB
  * New Minimum:  2MB

  * Average Block Size for the last 2016 blocks:  2MB
  * New Maximum:  6MB  (2 * 200% = 4, 4 75% of 8, So use 8 * .75 = 6)
  * New Minimum:  1.5MB

 This would provide a maximum growth of 200% per recalculation, but a
 maximum shrinkage of 75%.

 Request For Comments:

 I'd love to hear your thoughts. Why wouldn't this work? What portion
 is flawed? Will the miners 

Re: [bitcoin-dev] RFC - BIP: URI scheme for Blockchain exploration

2015-08-29 Thread Matt Whitlock via bitcoin-dev
That's still not right, since mainnet and testnet are not host names.

You'd have to do something like:

blockchain:?network=testnettxid=3b95a766d7a99b87188d6875c8484cb2b310b78459b7816d4dfc3f0f7e04281a


On Saturday, 29 August 2015, at 7:58 pm, Btc Drak via bitcoin-dev wrote:
 What about supporting different networks? What if I want to look up
 testnet for example?
 
 blockchain://mainnet/txid/3b95a766d7a99b87188d6875c8484cb2b310b78459b7816d4dfc3f0f7e04281a
 blockchain://testnet/txid/3b95a766d7a99b87188d6875c8484cb2b310b78459b7816d4dfc3f0f7e04281a
 
 or
 
 blockchain://txid/3b95a766d7a99b87188d6875c8484cb2b310b78459b7816d4dfc3f0f7e04281a
 blockchain://txid/3b95a766d7a99b87188d6875c8484cb2b310b78459b7816d4dfc3f0f7e04281a?network=testnet
 
 On Sat, Aug 29, 2015 at 5:31 PM, Richard Moore via bitcoin-dev
 bitcoin-dev@lists.linuxfoundation.org wrote:
  I like the idea of having a standard for this, that all explorers (and even
  core, eventually) would understand.
 
  I would recommend 2 changes though. First, using a real URI scheme,
  blockchain:// so that we can just use normal URL parsing libraries. The
  bitcoin: thing leads to additional code to mutate it into a proper URI
  before passing it to URL parsing. And I think it would be fine to include
  the type looking up. For example:
 
  blockchain://blockhash/1003e880d500968d51157f210c632e08a652af3576600198
  blockchain://txid/3b95a766d7a99b87188d6875c8484cb2b310b78459b7816d4dfc3f0f7e04281a
  blockchain://block/189000
  blockchain://address/1RicMooMWxqKczuRCa5D2dnJaUEn9ZJyn
 
  I think this would help the URI be more human understandable as well as give
  the explorers the ability to optimize a bit what they are looking for when
  hitting various databases.
 
  A possible future path could also include blockchain://tx/123000/4 for block
  height, tx index... Another possibility could be blockchain://version which
  would return a list of supported paths, version of the BIP supported, etc.
 
  The BIP should also specify little endian searching. I'm not sure, but would
  it also make sense for this BIP to include what the return results should
  look like? Maybe another, related BIP.
 
  RicMoo
 
  Sent from my self-aware iPhone
 
  .·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸(((º
 
  Richard Moore ~ Founder
  Genetic Mistakes Software Inc.
  phone: (778) 882-6125
  email: ric...@geneticmistakes.com
  www: http://GeneticMistakes.com
 
  On Aug 29, 2015, at 7:48 AM, Marco Pontello via bitcoin-dev
  bitcoin-dev@lists.linuxfoundation.org wrote:
 
  Hi!
  My first post here, hope I'm following the right conventions.
  I had this humble idea for a while, so I thought to go ahead and propose
  it.
 
  BIP: XX
  Title: URI scheme for Blockchain exploration
  Author: Marco Pontello
  Status: Draft
  Type: Standards Track
  Created: 29 August 2015
 
  Abstract
  
  This BIP propose a simple URI scheme for looking up blocks, transactions,
  addresses on a Blockchain explorer.
 
  Motivation
  ==
  The purpose of this URI scheme is to enable users to handle all the
  requests for details about blocks, transactions, etc. with their preferred
  tool (being that a web service or a local application).
 
  Currently a Bitcoin client usually point to an arbitrary blockchain
  explorer when the user look for the details of a transaction (es. Bitcoin
  Wallet use BitEasy, Mycelium or Electrum use Blockchain.info, etc.).
  Other times resorting to cutpaste is needed.
  The same happens with posts and messages that reference some particular
  txs or blocks, if they provide links at all.
 
  Specification
  =
  The URI follow this simple form:
 
  blockchain: hash/string
 
  Examples:
 
  blockchain:1003e880d500968d51157f210c632e08a652af3576600198
  blockchain:001949
  blockchain:3b95a766d7a99b87188d6875c8484cb2b310b78459b7816d4dfc3f0f7e04281a
 
  Rationale
  =
  I thought about using some more complex scheme, or adding qualifiers to
  distinguish blocks from txs, but in the end I think that keeping it simple
  should be practical enough. Blockchain explorers can apply the same
  disambiguation rules they are already using to process the usual search
  box.
 
  From the point of view of a wallet developer (or other tool that need to
  show any kind of Blockchain references), using this scheme mean that he
  can simply make it a blockchain: link and be done with it, without having
  to worry about any specific Blockchain explorer or provide a means for the
  user to select one.
 
  Blockchain explorers in turn will simply offer to handle the blockchain:
  URI, the first time the user visit their website, or launch/install the
  application, or even set themselves if there isn't already one.
 
  Users get the convenience of using always their preferred explorer, which
  can be especially handy on mobile devices, where juggling with cutpaste
  is far from ideal.
 
 
  

Re: [bitcoin-dev] Consensus based block size retargeting algorithm (draft)

2015-08-29 Thread Jorge Timón via bitcoin-dev
On Sat, Aug 29, 2015 at 12:15 PM, Btc Drak btcd...@gmail.com wrote:
 On Sat, Aug 29, 2015 at 1:29 AM, Mark Friedenbach via bitcoin-dev
 bitcoin-dev@lists.linuxfoundation.org wrote:
 Ah, then my mistake. It seemed so similar to an idea that was proposed
 before on this mailing list:

 http://lists.linuxfoundation.org/pipermail/bitcoin-dev/2015-May/008033.html

 that my mind just filled in the gaps. I concur -- having miners -- or any
 group -- vote on block size is not an intrinsically good thing. The the
 original proposal due to Greg Maxwell et al was not a mechanism for voting
 but rather a feedback control that made the maximum block size that which
 generated the most fees.

 Mark and Jorge,

 I am very glad you have brought up this particular objection because
 it's something I thought about but was unclear if it was an opinion
 that would be shared by others. I chose to omit it from the proposal
 to see if it would come up during peer review.

 I feel that giving miners a blank cheque to increase blocksize, by any
 means, goes against a key design of bitcoin's security model. Full
 nodes keep miners honest by ensuring by validating their blocks. Under
 any voting-only scheme there is no way for full nodes to keep miners
 in cheque because miner have free reign to increase the blocksize.

 This problem can be solved by introducing a hard cap on blocksize. By
 introducing an upper limit miners now have the freedom to increase
 blocksize but only within defined parameters.  Remember my proposal
 allows blocksize to increase and decrease in such a way that miners
 must collectively agree if they want the size to increase.

Then I only care about the hard cap (for example, to me bip100 is
practically equivalent to just raise the limit to 32 MB directly).
Miners can always produce smaller blocks by modifying their local policy.
So if we need a maximum that cannot be altered by miners anyway, why
take the additional complexity of miners voting on a lower and
changing maximum size?

 With respect to the flexicap idea where miners can create a larger
 block by paying extra difficulty, I believe that proposal has a
 critical flaw because, as Gavin pointed out, it makes it very
 expensive (and risky) to include a few extra transactions. I believe
 it suffers from tragedy of the commons because there is no incentive
 for the mining community to reach consensus. Each and every block is
 going to be a gamble, should we include a few extra transactions at
 the risk of losing the block?.

How expensive it is depends on the concrete function f(extra_nBits) =
extra_size_allowed
But the goal of that proposal is not to raise the size maximum
permanently, but rather temporarily allow bigger blocks when there are
spikes in demand (ie many fees to collect in unconfirmed
transactions).
Yes miners will ask that question to themselves, and the answer will
depend on the concrete function and on the fees of those extra
transactions.
The miner paying for the costs will get the gains: no tragedy of the
commons here.

 Under my proposal miners can
 collectively agree to change the blocksize. Let's say they want a 10%
 increase, they can collude together to make that increase and once
 reached, it remains until they want to change it again. Yet, the upper
 hard limit keeps the ultimate control of the maximum block size
 squarely in the hands of full nodes.

I believe the tragedy of the commons actually happens with your
proposal. Why would I pay alone for something that benefits all
miners?

 An alternative methodology to voting in the coinbase would be to
 change the vote to be the blocksize itself

 1. miners pay extra difficulty to create a larger block.
 2. every 2016 blocks the average or median of the last 2016 blocks is
 calculated and becomes the new maximum blocksize limit.

 This would retain incentive to collude to increase blocksize, as well
 as the property of costing to increase while being free to propose
 decrease.

This seems to solve the tragedy of the commons problem with your
current proposal.
It would be like flexcap but instead of the change in size being
temporary, it affects the next maximum size permanently.
One thing to worry about is miners filling blocks with
pay-to-themselves garbage to avoid reducing the size when they don't
have enough attractive transactions to include (ie it may not be free
for the network for miners to vote on maintain current size).

 It would still require an upper blocksize limit in order for full
 nodes to retain control. Without an upper limit, any proposal is going
 to break the security model as full nodes give up some oversight
 control over miners.

 Another way of looking at these ideas is we're raising blocksize hard
 limit (to 8MB or whatever is decided), but making a soft of softer
 or inner limit part of consensus. Such a concept is not really
 departing from the current idea of a soft limit except to make it
 consensus enforced. Obviously it's not identical, but I 

Re: [bitcoin-dev] Your Gmaxwell exchange

2015-08-29 Thread Gregory Maxwell via bitcoin-dev
On Sun, Aug 30, 2015 at 4:13 AM, Peter R pete...@gmx.com wrote:
 I agree that miners may change their level of centralization.  This neither
 affects the model nor the results presented in the paper.

It has tremdous significance to the real-world impact of your results.

If not for the other errors in your work, this point would make the
take away of your work not a healthy transaction fee market exists
without a block size limit but rather a decenteralized bitcoin
cannot exist-- as, accepting the other errors as fact your model
shows that centralizing mining is always strictly more profitable at
any level of fee demand; because your model equivilent shows that for
any level of fee demand and gamma miners could increase their income
by centeralizing further.

I absolutely agree that simplifications are useful and essential, but
it is critically important to call them out before someone mistakes
theoretical work as useful motivation for policy in the non-simplified
system.

 -- Instead the same information can be transmitted _in advance_, as
 has been previously proposed, and various techniques can make doing
 so arbitrarily efficient.

 I assume, very reasonably, that the block solutions contain information
 about the transactions included in the block.  This is the case today, this
 is the case using the relay network, and this would be the case using any
 compression scheme I can personally imagine actually occurring in the
 future.

This assumption is unreasonable, and does not-- in fact-- accurately
reflect the situation today.

For example it does not reflect how hashers return work to pools
_today_ (and since 2011) as they so to only by referencing the merkel
root... the pool already knows the  transaction set. In that
particular case it knows it because it selected it to begin with, but
the same behavior holds if the hasher selects the transaction set and
sends it first.

It only _very_ weakly reflects how the relay protocol works (only the
selection and permutation is communicated; not the transaction data
itself; for already known transactions). Even if you assume nothing
more than that (in spite of the existing reality) you have not shown
that the compressed data must be linear in the size of the block.

It does not reflect how P2Pool works (which also sends the
transactions in advance).

There is a simple, and intuitive understanding that does not require
any complex supposition:  You argue that the information must be
transfered when a block is found, thus delaying it.  I point out, no,
any required information (to the extent that there is any at all after
efficient encoding) can be sent in advance of the block.

I believe that you've allowed the fact that the specifc example block
relay protocol doesn't bother sending _all_ information in advance to
confuse it for mere compression.

 My public comments have been factual.  I've even gone out of my way in
 several public threads to point out your objection that the coding gain
 could be zero (even though I think it is flawed black-and-white thinking
 about an academic scenario that will never unfold and might actually be
 physically impossible without Bitcoin already being centralized).

I believe my reponses are firmly grounded in the physical reality of
actually deployed systems and constructable protocols.

By comparison, even if I were to agree that the bound is not actually
exactly 0 proporionality  you have already agreed that with
compression the amount sent could be arbritarily low. The result
being that the behavior you're describing would only be asymptoic and
have no relationship to the actual Bitcoin system that exists in a
finite universe.

But you continue to demand debate over this meaningless point.

 I'll end by saying that I am the one describing things as the presently are.
 You are talking about a hypothetical future that may or may not exist (and
 may not even be possible).  The results of my paper logically follow from
 the assumptions made. You think the assumption that block solutions contain
 information about the transactions included in the block will not hold in
 the future.  Can you show:

 (a) Under what assumptions/requirements your communication scheme is
 physically possible.

Pratically every block today is mined under a protocol which does not
need to communicate anything but constant data when a block is found.

I am getting a little tired of people suggesting things which are
widely deployed are not physically possible.

Yes, that particular example is not the most powerful form of that
idea-- but it has the benefit of _universal_ use.

 (b) That such a configuration is not equivalent to a single entity[1]
 controlling 50% of the hash power.

I find this a little amusing. Even in this messsage you defend
ignoring of centeralization considerations in your paper. But here ask
that I address concerns which you refused to suggest. Why do you
demand my correction use weaker assumptions than your work?

That 

Re: [bitcoin-dev] On the Nature of Miner Advantages in Uncapped Block Size Fee Markets

2015-08-29 Thread Peter R via bitcoin-dev
 Of course this assumes the network does not change any as a result of
 such a system. But such a system provides strong incentives for the
 network to centralize in other ways (put all the mining nodes in one DC
 for all miners, etc).

If all the mining nodes are in one data center, and if all the nodes are 
programmed to build blocks in essentially the same way, then I would agree that 
the orphan cost would be negligible!  I will add this as an example of a 
network configuration where the results of my paper would be less relevant.  

Peter  


On 2015-08-29, at 7:35 PM, Matt Corallo lf-li...@mattcorallo.com wrote:

 Of course this assumes the network does not change any as a result of
 such a system. But such a system provides strong incentives for the
 network to centralize in other ways (put all the mining nodes in one DC
 for all miners, etc).
 
 Matt
 
 On 08/30/15 02:33, Matt Corallo via bitcoin-dev wrote:
 It is not a purely academic scenario that blocks contain effectively no
 information (that was not previously relayed). I'm not aware of any
 public code to do so, but I know several large miners who pre-relay the
 block(s) they are working on to other nodes of theirs around the globe.
 This means at announce-time you have only a few bytes to broadcast (way
 less than a packet, and effects of using smaller packets to relay things
 vs larger packets are very small, if anything). After you've broadcast
 to all of your nodes, hops to other mining nodes are probably only a
 handful of ms away with very low packet loss, so relay time is no longer
 connected to transaction inclusion at all (unless you're talking about
 multi-GB blocks). Of course, this is relay time for large miners who can
 invest time and money to build such systems. Small miners are completely
 screwed in such a system.
 
 Thus, the orphan risk for including a transaction is related to the
 validation time (which is only DB modify-utxo-set time, essentially,
 which maybe you can optimize much of that away, too, and only have to
 pass over mempool or so). Anyway, my point, really, is that though
 miners will have an incentive to not include transactions which will
 trigger validation by other nodes (ie things not already in their
 mempool), the incentive to not include transactions which have already
 been relayed around sufficiently is, while not theoretically zero, as
 near to zero in practice as you can get.
 
 Matt
 
 On 08/29/15 23:17, Peter R wrote:
 Hello Matt and Daniele,
 
 this seems to ignore the effects of transaction validation caches and
 *block
 compression protocols. *
 
 The effect of block compression protocols is included.  This is what I
 call the coding gain and use the Greek letter gamma to represent. 
 
 As long as the block solution announcements contain information (i.e.,
 Shannon Entropy) about the transactions included in a block, then the
 fee market will be healthy according to the definitions given in the
 linked paper (see below).  This is the case right now, this is the case
 with your relay network, and this would be the case using any
 implementation of IBLTs that I can imagine, so long as miners can still
 construct blocks according to their own volition.  The healthy fee
 market result follows from the Shannon-Hartley theorem; the SH-theorem
 describes the maximum rate at which information (Shannon Entropy) can be
 transmitted over a physical communication channel.   
 
 https://dl.dropboxusercontent.com/u/43331625/feemarket.pdf
 
 I've exchanged emails with Greg Maxwell about (what IMO is) an academic
 scenario where the block solutions announcements contain *no information
 at all* about the transactions included in the blocks.  Although the fee
 market would not be healthy in such a scenario, it is my feeling that
 this also requires miners to relinquish their ability to construct
 blocks according to their own volition (i.e., the system would already
 be centralized).  I look forward to a white paper demonstrating otherwise!
 
 Best regards,
 Peter
 
 
 
 On 2015-08-29, at 2:07 PM, Matt Corallo via bitcoin-dev
 bitcoin-dev@lists.linuxfoundation.org
 mailto:bitcoin-dev@lists.linuxfoundation.org wrote:
 
 I believe it was pointed out previously in the discussion of the Peter R
 paper, but I'll repeat it here so that its visible - this seems to
 ignore the effects of transaction validation caches and block
 compression protocols. Many large miners already have their own network
 to relay blocks around the globe with only a few bytes on the wire at
 block-time, and there is also the bitcoinrelaynetwork.org
 http://bitcoinrelaynetwork.org network, which
 does the same for smaller miners, albeit with slightly less efficiency.
 Also, transaction validation time upon receiving a block can be rather
 easily made negligible (ie the only validation time you should have is
 the DB modify-utxo-set time). Thus, the increased orphan risk for
 including a transaction can be reduced to a very, very tiny 

Re: [bitcoin-dev] Your Gmaxwell exchange

2015-08-29 Thread Peter R via bitcoin-dev
Hi Greg,

 Unfortunately, your work extensive as it was made at least two
 non-disclosed or poorly-disclosed simplifying assumptions and a significant
 system understanding error which, I believe, undermined it completely.
 
 In short these were:
 
 * You assume miners do not have the ability to change their level
 centralization.
 
 -- In fact they do, not just in theory but in pratice have responded
to orphaning this way in the past; and it is one of the major
concerns in this space.

I agree that miners may change their level of centralization.  This neither 
affects the model nor the results presented in the paper.

 * You assume the supply of bitcoin is infinite (that subsidy never
 declines)
 
 -- It declines geometrically, and must if the 21m limit is to be upheld.
(Though I think this is not equally important as the other concerns)

No I don't.  I assume the inflation rate is R/T, where R is a variable.  

The last paragraph of the conclusion speaks to the paradox of what happens when 
R - 0 as an area for future research. 


 * You argue, incorrectly, that amount of information which must be
 transmitted at the moment a block is discovered is proportional to the
 block's size.
 
 -- Instead the same information can be transmitted _in advance_, as
 has been previously proposed, and various techniques can make doing
 so arbitrarily efficient.

I assume, very reasonably, that the block solutions contain information about 
the transactions included in the block.  This is the case today, this is the 
case using the relay network, and this would be the case using any compression 
scheme I can personally imagine actually occurring in the future.  

(I've always agreed that if block solutions can be communicated to all of the 
hash power in such a way that they don't include any information about the 
transactions they contain, then the conditions for a healthy fee market would 
not be met [this would be gamma -- infinity in my model]). 


 [I would encourage anyone who is interested to read the posted off-list
 discussion]

As would I.  

 I contacted you in private as a courtesy in the hope that it would be
 a more productive pathway to improving our collective understanding; as well
 as a courtesy to the readers of the list in consideration of traffic levels.

I appreciated the discussion we were having and I thought we had come to some 
kind of an understanding.  I acknowledged that when I made the other 
corrections to my paper that I would further clarify the assumptions (I agreed 
that the presentation could be improved).  

What was not courteous was that you forwarded the entire private email chain to 
other people without my permission.

 In one sense, this was a success: Our conversation concluded with you
 enumerating a series of corrective actions that you would take:
 
 
 1.  I will make it more clear that the results of the paper hinge on
 the assumption that block solutions are propagated across channels,
 and that the quantity of pure information communicated per solution
 is proportional to the amount of information contained within the block.
 
 2.  I will add a note [unless you ask me not to] something to the effect
 of Greg Maxwell challenges the claim that the coding gain cannot
 be infinite… followed by a summary of the scenario you described.
 I will reference personal communication.  I will also run the note
 by you before I make the next revision public.
 
 3.  I will point out that if the coding gain can be made spectacularly
 high, that the propagation impedance in my model will become very small,
 and that although a fee market may strictly exist in the asymptotic
 sense, such a fee market may not be relevant (the phenomena in the paper
 would be negligible compared to the dynamics from some other effect).
 
 4. [UNRELATED] I also plan to address Dave Hudson's objections in my
 next revision (the you don't orphan your own block point).
 
 Lastly, thank you for the note about what might happen when fees 
 rewards.  I've have indeed been thinking about this.  I believe it is
 outside the scope of the present paper, although I am doing some work
 on the topic.  (Perhaps I'll add a bit more discussion on this topic
 to the present paper to get the reader thinking in this direction).

I stand by all of these four points.  My paper wasn't perfectly presented.  
Making these clarifications will strengthen the manuscript by showing how 
strong the claim a healthy transaction fee market exists without a block size 
limit is.  


 To the best of my knowledge, you've taken none of these corrective
 actions in the nearly month that has passed.  I certainly understand being
 backlogged, but you've also continued to make public comments about your
 work seemingly (to me) in contradiction with the above corrective actions.

My public comments have been factual.  I've even gone out of my way in several 
public threads to point out your objection that the coding gain 

Re: [bitcoin-dev] RFC - BIP: URI scheme for Blockchain exploration

2015-08-29 Thread Jorge Timón via bitcoin-dev
On Aug 29, 2015 7:02 PM, Chun Wang via bitcoin-dev 
bitcoin-dev@lists.linuxfoundation.org wrote:

 On Sun, Aug 30, 2015 at 4:10 AM, Jorge Timón
 bitcoin-dev@lists.linuxfoundation.org wrote:

/tx/3b95a766d7a99b87188d6875c8484cb2b310b78459b7816d4dfc3f0f7e04281a?chain=0933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943
 
  (a tx in testnet)
 
 
/block/0b0d504d142ac8bdd1a2721d19f423a8146d0d6de882167b?chain=0019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f

 Some altcoins (LTC and FTC for example) have the same genesis block hash.

That's obviously a design mistake in FTC, but it's not unsolvable. FTC
could move their genesis block to the next block (or the first one that is
not identical to LTC's).

Bitcoin and all its test chains have different genesis blocks, so I'm not
sure FTC should be a concern for a BIP anyway...
___
bitcoin-dev mailing list
bitcoin-dev@lists.linuxfoundation.org
https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev


Re: [bitcoin-dev] Your Gmaxwell exchange

2015-08-29 Thread Gregory Maxwell via bitcoin-dev
On Sun, Aug 30, 2015 at 1:43 AM, Peter R pete...@gmx.com wrote:
 Dear Greg,

 I am moving our conversation into public as I've recently learned that
 you've been forwarding our private email conversation verbatim without
 my permission [I received permission from dpinna to share the email
 below that proves this fact].

Unfortunately, your work extensive as it was made at least two
non-disclosed or poorly-disclosed simplifying assumptions and a significant
system understanding error which, I believe, undermined it completely.

In short these were:

* You assume miners do not have the ability to change their level
centralization.

 -- In fact they do, not just in theory but in pratice have responded
to orphaning this way in the past; and it is one of the major
concerns in this space.

* You assume the supply of bitcoin is infinite (that subsidy never
declines)

 -- It declines geometrically, and must if the 21m limit is to be upheld.
(Though I think this is not equally important as the other concerns)

* You argue, incorrectly, that amount of information which must be
transmitted at the moment a block is discovered is proportional to the
block's size.

 -- Instead the same information can be transmitted _in advance_, as
 has been previously proposed, and various techniques can make doing
 so arbitrarily efficient.

[I would encourage anyone who is interested to read the posted off-list
discussion]

I contacted you in private as a courtesy in the hope that it would be
a more productive pathway to improving our collective understanding; as well
as a courtesy to the readers of the list in consideration of traffic levels.

In one sense, this was a success: Our conversation concluded with you
enumerating a series of corrective actions that you would take:


 1.  I will make it more clear that the results of the paper hinge on
 the assumption that block solutions are propagated across channels,
 and that the quantity of pure information communicated per solution
 is proportional to the amount of information contained within the block.

 2.  I will add a note [unless you ask me not to] something to the effect
 of Greg Maxwell challenges the claim that the coding gain cannot
 be infinite… followed by a summary of the scenario you described.
 I will reference personal communication.  I will also run the note
 by you before I make the next revision public.

 3.  I will point out that if the coding gain can be made spectacularly
 high, that the propagation impedance in my model will become very small,
 and that although a fee market may strictly exist in the asymptotic
 sense, such a fee market may not be relevant (the phenomena in the paper
 would be negligible compared to the dynamics from some other effect).

 4. [UNRELATED] I also plan to address Dave Hudson's objections in my
 next revision (the you don't orphan your own block point).

 Lastly, thank you for the note about what might happen when fees 
 rewards.  I've have indeed been thinking about this.  I believe it is
 outside the scope of the present paper, although I am doing some work
 on the topic.  (Perhaps I'll add a bit more discussion on this topic
 to the present paper to get the reader thinking in this direction).


To the best of my knowledge, you've taken none of these corrective
actions in the nearly month that has passed.  I certainly understand being
backlogged, but you've also continued to make public comments about your
work seemingly (to me) in contradiction with the above corrective actions.

Today I discovered that another author spent their time extending your
work and wasn't made aware of these points.  A result was that the other
author's work may require significant revisions.

I complained about this to you, again privately, and your (apparent)
response was to post to that thread stating that there was a
details-unspecified academic disagreement with me and I look forward
to a white paper demonstrating otherwise!, in direct contradiction to
your remarks to me three weeks ago in private correspondence: In private
you said that your model may only hold in an asymptotic sense and that
the phenomena in the paper (may) be negligible compared to the dynamics
from some other effect; but in public you said /my/ position was
academic.

At this point I thought continuing to withhold this information from
the other author was unreasonable and no longer justified by courtesy
to you, and I forwarded our complete discussion to the other author
with the comment I'll forward you a set of private correspondence
that I've had with Peter R.  I would recommend you take the time to
read it and consider it..

I apologize if in doing so I've breached your confidence, none of the
material we discussed was a sort that I would have ordinarily considered
private, and you had already talked about making the product of our
communication published as part of your corrective actions.
I do not think it would be reasonable to demand that I 

Re: [bitcoin-dev] Libconsensus separated repository (was Bitcoin Core and hard forks)

2015-08-29 Thread Jorge Timón via bitcoin-dev
On Sun, Aug 23, 2015 at 8:42 AM, Tamas Blummer ta...@bitsofproof.com wrote:
 I see the huge amount of sweat and love that went into core and it actually
 hurts to see that most is expended in friction and lack of a vision for the
 software architecture.

 To be concrete, this was my plan if dealing with the Core code base:

 1) I'd consider the separation of networking and storage as suggested for a
 future extended libconsensus low priority, as their design should be (are)
 dominated by the need of the consensus logic only.

 2) create an API to the consensus+networking+storage service that is not at
 the C++ language level but some scaleable cross-platform remoting, like eg.
 ZeroMQ.
 This API should be minimal and simple, assuming that one fully trusts the
 node answering it. This API would unlock user land development by distinct
 teams with diverse technologies.

I plan to replicate the RPC API (or a subset of it) using ZMQ's
req/rep pattern, but #6103 comes first.

 3) move the wallet, QT and RPC and other backward compatibility stuff (if
 e.g. there is some mining support) in-top of the new API and into distinct
 source code repositories.

Well, the RPC is the API. For libconsensus, its C API is the API.
We've been talking about separating the wallet and qt to a different
repository for long, but modularization is a prerequisite.
___
bitcoin-dev mailing list
bitcoin-dev@lists.linuxfoundation.org
https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev


Re: [bitcoin-dev] Splitting BIPs

2015-08-29 Thread Jorge Timón via bitcoin-dev
Concept ACK. As suggested in the other thread, maybe it is worth to
start a new BIP draft for this?


On Thu, Aug 27, 2015 at 10:51 PM, Eric Lombrozo via bitcoin-dev
bitcoin-dev@lists.linuxfoundation.org wrote:
 I posted a new draft of the proposal:
 http://blockhawk.net/bitcoin-dev/bipwiki.html

 The subsections still need to be fleshed out a bit more. I'd love any
 comments or suggestions.


 On Mon, Aug 24, 2015, 4:30 PM Eric Lombrozo elombr...@gmail.com wrote:

 Also, the current type attribute needs modification. There are different
 degrees of standard. Just because a lot of people do X doesn't need to
 mean that doing X is officially endorsed by any other devs. At most levels
 below 1, disagreements might be entirely tolerable for many things.


 On Mon, Aug 24, 2015, 2:06 PM Eric Lombrozo elombr...@gmail.com wrote:


 Seems like a lot of effort and goodwill is being wasted on contention
 over things we don't really need to agree upon. In order to help us better
 prioritize, I propose adding an extra attribute to BIPs indicating their
 level which is split into five as follows:

 1. Consensus (hard/soft fork)
 2. Peer Services
 3. RPC
 4. Implementations
 5. Applications

 I posted an example of what such a table might look like here:
 http://blockhawk.net/bitcoin-dev/bipwiki.html

 If other folks also think this is a good idea I'll start working on a BIP
 draft for this.


 ___
 bitcoin-dev mailing list
 bitcoin-dev@lists.linuxfoundation.org
 https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev

___
bitcoin-dev mailing list
bitcoin-dev@lists.linuxfoundation.org
https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev