From: William Madden <will.madden@novauri.com>
To: bitcoin-dev@lists.linuxfoundation.org
Subject: Re: [bitcoin-dev] Draft BIP : fixed-schedule block size increase
Date: Tue, 23 Jun 2015 23:05:50 -0400 [thread overview]
Message-ID: <558A1E8E.30306@novauri.com> (raw)
In-Reply-To: <558A0B4A.7090205@riseup.net>
Here are refutations of the approach in BIP-100 here:
http://gtf.org/garzik/bitcoin/BIP100-blocksizechangeproposal.pdf
To recap BIP-100:
1) Hard form to remove static 1MB block size limit
2) Add new floating block size limit set to 1MB
3) Historical 32MB message limit remains
4) Hard form on testnet 9/1/2015
5) Hard form on main 1/11/2016
6) 1MB limit changed via one-way lock in upgrade with a 12,000 block
threshold by 90% of blocks
7) Limit increase or decrease may not exceed 2x in any one step
8) Miners vote by encoding 'BV'+BlockSizeRequestValue into coinbase
scriptSig, e.g. "/BV8000000/" to vote for 8M.
9) Votes are evaluated by dropping bottom 20% and top 20%, and then the
most common floor (minimum) is chosen.
8MB limits doubling just under every 2 years makes a static value grow
in a predictable manner.
BIP-100 makes a static value grow (or more importantly potentially
shrink) in an unpredictable manner based on voting mechanics that are
untested in this capacity in the bitcoin network. Introducing a highly
variable and untested dynamic into an already complex system is
unnecessarily risky.
For example, the largely arbitrary voting rules listed in 9 above can be
gamed. If I control pools or have affiliates involved in pools that
mine slightly more than 20% of blocks, I could wait until block sizes
are 10MB, and then suddenly vote "/BV5000000/" for 20% of blocks and
"/BV5000001/" for the remaining 10%. If others don't consistently vote
for the same "/BV#/" value, vote too consistently and have their value
thrown out as the top 20%, I could win the resize to half capacity
"/BV5000001/" because it was the lowest repeated value not in the bottom
20%.
I could use this to force an exodus to my sidechain/alt coin, or to
choke out the bitcoin network. A first improvement would be to only let
BIP-100 raise the cap and not lower it, but if I can think of a
vulnerability off the top of my head, there will be others on the other
side of the equation that have not been thought of. Why bother
introducing a rube goldberg machine like voting when a simple 8mb cap
with predictable growth gets the job done, potentially permanently?
On 6/23/2015 9:43 PM, odinn wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> 1) Hard fork not (necessarily) needed
> 2) See Garzik's BIP 100, better (this is not meant to say "superior to
> your stuff," but rather simply to say, "Better you should work with
> Garzik to implement BIP-100, that would be good")
> 3) See points 1 and 2 above
> 4) If still reading... changes should be (as you seem to have been
> trying to lean towards)... lean towards gradual change; hence, changes
> that would flow from this BIP would be better off oriented in a
> process that dies not require the "way you have done it."
>
> You did address that, to be fair - in your TODO, this link:
> http://gavinandresen.ninja/time-to-roll-out-bigger-blocks
>
> contained the following link:
>
> http://gavinandresen.ninja/bigger-blocks-another-way
>
> However, in reading that, I didn't see any meaningful statements that
> would refute the approach in Garzik's BIP-100.
>
> Maybe a better way to say this is,
>
> Work with Jeff Garzik (which I am sure you are already having such
> discussions in private) as well as the list discussions,
> Move forward on BIP-100 with Garzik and other developers (not such a
> bad plan really) and don't get caught up in XT. (If you feel you can
> develop XT further, that is your thing but it would perhaps make you
> lose focus, work together with other developers.)
>
> Relax into the process. Things will be ok.
>
> Respectfully,
>
> - -O
>
> On 06/22/2015 11:18 AM, Gavin Andresen wrote:
>> I promised to write a BIP after I'd implemented
>> increase-the-maximum-block-size code, so here it is. It also lives
>> at:
>> https://github.com/gavinandresen/bips/blob/blocksize/bip-8MB.mediawiki
>>
>> I don't expect any proposal to please everybody; there are
>> unavoidable tradeoffs to increasing the maximum block size. I
>> prioritize implementation simplicity -- it is hard to write
>> consensus-critical code, so simpler is better.
>>
>>
>>
>>
>> BIP: ?? Title: Increase Maximum Block Size Author: Gavin Andresen
>> <gavinandresen@gmail.com <mailto:gavinandresen@gmail.com>> Status:
>> Draft Type: Standards Track Created: 2015-06-22
>>
>> ==Abstract==
>>
>> This BIP proposes replacing the fixed one megabyte maximum block
>> size with a maximum size that grows over time at a predictable
>> rate.
>>
>> ==Motivation==
>>
>> Transaction volume on the Bitcoin network has been growing, and
>> will soon reach the one-megabyte-every-ten-minutes limit imposed by
>> the one megabyte maximum block size. Increasing the maximum size
>> reduces the impact of that limit on Bitcoin adoption and growth.
>>
>> ==Specification==
>>
>> After deployment on the network (see the Deployment section for
>> details), the maximum allowed size of a block on the main network
>> shall be calculated based on the timestamp in the block header.
>>
>> The maximum size shall be 8,000,000 bytes at a timestamp of
>> 2016-01-11 00:00:00 UTC (timestamp 1452470400), and shall double
>> every 63,072,000 seconds (two years, ignoring leap years), until
>> 2036-01-06 00:00:00 UTC (timestamp 2083190400). The maximum size of
>> blocks in between doublings will increase linearly based on the
>> block's timestamp. The maximum size of blocks after 2036-01-06
>> 00:00:00 UTC shall be 8,192,000,000 bytes.
>>
>> Expressed in pseudo-code, using integer math:
>>
>> function max_block_size(block_timestamp):
>>
>> time_start = 1452470400 time_double = 60*60*24*365*2 size_start =
>> 8000000 if block_timestamp >= time_start+time_double*10 return
>> size_start * 2^10
>>
>> // Piecewise-linear-between-doublings growth: time_delta =
>> block_timestamp - t_start doublings = time_delta / time_double
>> remainder = time_delta % time_double interpolate = (size_start *
>> 2^doublings * remainder) / time_double max_size = size_start *
>> 2^doublings + interpolate
>>
>> return max_size
>>
>> ==Deployment==
>>
>> Deployment shall be controlled by hash-power supermajority vote
>> (similar to the technique used in BIP34), but the earliest possible
>> activation time is 2016-01-11 00:00:00 UTC.
>>
>> Activation is achieved when 750 of 1,000 consecutive blocks in the
>> best chain have a version number with bits 3 and 14 set (0x20000004
>> in hex). The activation time will be the timestamp of the 750'th
>> block plus a two week (1,209,600 second) grace period to give any
>> remaining miners or services time to upgrade to support larger
>> blocks. If a supermajority is achieved more than two weeks before
>> 2016-01-11 00:00:00 UTC, the activation time will be 2016-01-11
>> 00:00:00 UTC.
>>
>> Block version numbers are used only for activation; once activation
>> is achieved, the maximum block size shall be as described in the
>> specification section, regardless of the version number of the
>> block.
>>
>>
>> ==Rationale==
>>
>> The initial size of 8,000,000 bytes was chosen after testing the
>> current reference implementation code with larger block sizes and
>> receiving feedback from miners stuck behind bandwidth-constrained
>> networks (in particular, Chinese miners behind the Great Firewall
>> of China).
>>
>> The doubling interval was chosen based on long-term growth trends
>> for CPU power, storage, and Internet bandwidth. The 20-year limit
>> was chosen because exponential growth cannot continue forever.
>>
>> Calculations are based on timestamps and not blockchain height
>> because a timestamp is part of every block's header. This allows
>> implementations to know a block's maximum size after they have
>> downloaded it's header, but before downloading any transactions.
>>
>> The deployment plan is taken from Jeff Garzik's proposed BIP100
>> block size increase, and is designed to give miners, merchants,
>> and full-node-running-end-users sufficient time to upgrade to
>> software that supports bigger blocks. A 75% supermajority was
>> chosen so that one large mining pool does not have effective veto
>> power over a blocksize increase. The version number scheme is
>> designed to be compatible with Pieter's Wuille's proposed "Version
>> bits" BIP.
>>
>> TODO: summarize objections/arguments from
>> http://gavinandresen.ninja/time-to-roll-out-bigger-blocks.
>>
>> TODO: describe other proposals and their advantages/disadvantages
>> over this proposal.
>>
>>
>> ==Compatibility==
>>
>> This is a hard-forking change to the Bitcoin protocol; anybody
>> running code that fully validates blocks must upgrade before the
>> activation time or they will risk rejecting a chain containing
>> larger-than-one-megabyte blocks.
>>
>> Simplified Payment Verification software is not affected, unless
>> it makes assumptions about the maximum depth of a transaction's
>> merkle branch based on the minimum size of a transaction and the
>> maximum block size.
>>
>> ==Implementation==
>>
>> https://github.com/gavinandresen/bitcoinxt/tree/blocksize_fork
>>
>>
>>
>> _______________________________________________ bitcoin-dev mailing
>> list bitcoin-dev@lists.linuxfoundation.org
>> https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
>>
>
> - --
> http://abis.io ~
> "a protocol concept to enable decentralization
> and expansion of a giving economy, and a new social good"
> https://keybase.io/odinn
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1
>
> iQEcBAEBAgAGBQJVigtJAAoJEGxwq/inSG8CqZwIAIG3ZQzekfccPxBOMqtim175
> Crov6hrO9FaIzbLljECpUi60RKuDM/fs09ZJsKKIaJPkB5dlJjs4huc206veAIO+
> K2h3DmAcA6W/Thk0C2cV3ewv+OiELDOhpeoddBBLPadAfaBGr4l9ltqWLdBtMCmw
> OtmiWstEuXTao9ApgoFOmybdmCjbfrfhejOOHs/pMiSn5xVE60RK4x2HFTFsHfAN
> fZAeLCuwuN2qWMrVrr+cbpCXjEuE1xZG3WEj7ppYoGR+AgF/Y5/U1j7S4PVpk85s
> CgMkpcWvLnBMmSCrllnRZy1Gfrwk36Pg0rXD/l/NNd0/KTpmPSvkX/bCyzFwbzo=
> =ft62
> -----END PGP SIGNATURE-----
> _______________________________________________
> bitcoin-dev mailing list
> bitcoin-dev@lists.linuxfoundation.org
> https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
>
next prev parent reply other threads:[~2015-06-24 3:05 UTC|newest]
Thread overview: 62+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-06-22 18:18 [bitcoin-dev] Draft BIP : fixed-schedule block size increase Gavin Andresen
2015-06-22 18:33 ` Tier Nolan
2015-06-22 18:46 ` Gavin Andresen
2015-06-22 19:10 ` Martin Schwarz
2015-06-22 19:28 ` Tier Nolan
2015-06-22 19:54 ` Gavin Andresen
2015-06-22 20:12 ` Peter Todd
2015-06-22 19:23 ` Peter Todd
2015-06-23 7:35 ` Ross Nicoll
2015-08-17 15:58 ` Jorge Timón
2015-06-23 19:16 ` Peter Todd
2015-06-22 20:27 ` Kalle Rosenbaum
2015-06-22 20:46 ` Gavin Andresen
2015-06-22 20:51 ` Gavin Andresen
2015-06-22 21:52 ` Mark Friedenbach
2015-06-23 19:28 ` Peter Todd
2015-06-23 20:12 ` Gavin Andresen
2015-06-23 20:26 ` Pieter Wuille
2015-06-23 20:50 ` Peter Todd
2015-06-24 6:14 ` grarpamp
2015-06-23 20:46 ` Peter Todd
2015-06-23 21:24 ` Gavin Andresen
2015-06-26 19:08 ` Peter Todd
2015-06-26 22:01 ` Ivan Brightly
2015-06-26 19:25 ` Peter Todd
2015-06-26 22:16 ` Simon Liu
2015-06-27 2:14 ` Milly Bitcoin
2015-06-23 20:55 ` Roy Badami
2015-06-24 1:43 ` odinn
2015-06-24 3:05 ` William Madden [this message]
2015-06-24 3:49 ` Jeff Garzik
2015-06-24 13:06 ` Will
2015-06-24 13:44 ` Gavin Andresen
2015-06-25 0:32 ` Pindar Wong
2015-06-25 13:50 ` Gareth Williams
2015-06-25 14:07 ` Adam Back
2015-06-26 13:47 ` Tier Nolan
2015-06-26 15:13 ` Will
2015-06-26 17:39 ` Gavin Andresen
2015-06-26 19:07 ` Will
2015-07-01 22:49 ` odinn
2015-08-17 13:15 ` Tier Nolan
2015-08-17 13:18 ` Clément Elbaz
2015-08-19 3:45 ` odinn
2015-08-17 16:11 ` Jorge Timón
2015-06-26 21:07 ` Carsten Otto
2015-06-22 19:32 Jean-Paul Kogelman
2015-06-22 20:43 ` Tier Nolan
2015-06-22 20:54 ` Peter Todd
2015-06-22 21:04 ` Stephen Morse
2015-06-22 21:32 ` Ross Nicoll
2015-08-17 15:54 ` Jorge Timón
2015-06-22 21:21 ` Gavin Andresen
2015-06-22 21:39 ` Patrick Strateman
2015-06-22 21:48 ` Tier Nolan
2015-06-23 7:59 Ross Nicoll
2015-06-24 4:31 Raystonn
2015-06-24 17:05 ` Mark Friedenbach
2015-06-24 17:24 ` Roy Badami
2015-06-24 17:23 Raystonn
2015-06-24 17:24 ` Allen Piscitello
2015-06-24 17:28 ` Roy Badami
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=558A1E8E.30306@novauri.com \
--to=will.madden@novauri.com \
--cc=bitcoin-dev@lists.linuxfoundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox