<oembed><type>rich</type><version>1.0</version><author_name>npub1r3san9v5njl6798hvauyu9ntm6r9c7u8s0t65wls58gpfdcvqp5sa48d0u</author_name><author_url>https://nostr.ae/npub1r3san9v5njl6798hvauyu9ntm6r9c7u8s0t65wls58gpfdcvqp5sa48d0u</author_url><provider_name>njump</provider_name><provider_url>https://nostr.ae</provider_url><html>📅 Original date posted:2015-06-22&#xA;📝 Original message:Can you please add a discussion of the tradeoffs of decentralization vs&#xA;block size?&#xA;&#xA;On Mon, Jun 22, 2015 at 11:18 AM, Gavin Andresen &lt;gavinandresen at gmail.com&gt;&#xA;wrote:&#xA;&#xA;&gt; I promised to write a BIP after I&#39;d implemented&#xA;&gt; increase-the-maximum-block-size code, so here it is. It also lives at:&#xA;&gt; https://github.com/gavinandresen/bips/blob/blocksize/bip-8MB.mediawiki&#xA;&gt;&#xA;&gt; I don&#39;t expect any proposal to please everybody; there are unavoidable&#xA;&gt; tradeoffs to increasing the maximum block size. I prioritize implementation&#xA;&gt; simplicity -- it is hard to write consensus-critical code, so simpler is&#xA;&gt; better.&#xA;&gt;&#xA;&gt;&#xA;&gt;&#xA;&gt;&#xA;&gt;   BIP: ??&#xA;&gt;   Title: Increase Maximum Block Size&#xA;&gt;   Author: Gavin Andresen &lt;gavinandresen at gmail.com&gt;&#xA;&gt;   Status: Draft&#xA;&gt;   Type: Standards Track&#xA;&gt;   Created: 2015-06-22&#xA;&gt;&#xA;&gt; ==Abstract==&#xA;&gt;&#xA;&gt; This BIP proposes replacing the fixed one megabyte maximum block size with&#xA;&gt; a maximum size that grows over time at a predictable rate.&#xA;&gt;&#xA;&gt; ==Motivation==&#xA;&gt;&#xA;&gt; Transaction volume on the Bitcoin network has been growing, and will soon&#xA;&gt; reach the one-megabyte-every-ten-minutes limit imposed by the one megabyte&#xA;&gt; maximum block size. Increasing the maximum size reduces the impact of that&#xA;&gt; limit on Bitcoin adoption and growth.&#xA;&gt;&#xA;&gt; ==Specification==&#xA;&gt;&#xA;&gt; After deployment on the network (see the Deployment section for details),&#xA;&gt; the maximum allowed size of a block on the main network shall be calculated&#xA;&gt; based on the timestamp in the block header.&#xA;&gt;&#xA;&gt; The maximum size shall be 8,000,000 bytes at a timestamp of 2016-01-11&#xA;&gt; 00:00:00 UTC (timestamp 1452470400), and shall double every 63,072,000&#xA;&gt; seconds (two years, ignoring leap years), until 2036-01-06 00:00:00 UTC&#xA;&gt; (timestamp 2083190400). The maximum size of blocks in between doublings&#xA;&gt; will increase linearly based on the block&#39;s timestamp. The maximum size of&#xA;&gt; blocks after 2036-01-06 00:00:00 UTC shall be 8,192,000,000 bytes.&#xA;&gt;&#xA;&gt; Expressed in pseudo-code, using integer math:&#xA;&gt;&#xA;&gt;     function max_block_size(block_timestamp):&#xA;&gt;&#xA;&gt;         time_start = 1452470400&#xA;&gt;         time_double = 60*60*24*365*2&#xA;&gt;         size_start = 8000000&#xA;&gt;         if block_timestamp &gt;= time_start+time_double*10&#xA;&gt;             return size_start * 2^10&#xA;&gt;&#xA;&gt;         // Piecewise-linear-between-doublings growth:&#xA;&gt;         time_delta = block_timestamp - t_start&#xA;&gt;         doublings = time_delta / time_double&#xA;&gt;         remainder = time_delta % time_double&#xA;&gt;         interpolate = (size_start * 2^doublings * remainder) / time_double&#xA;&gt;         max_size = size_start * 2^doublings + interpolate&#xA;&gt;&#xA;&gt;         return max_size&#xA;&gt;&#xA;&gt; ==Deployment==&#xA;&gt;&#xA;&gt; Deployment shall be controlled by hash-power supermajority vote (similar&#xA;&gt; to the technique used in BIP34), but the earliest possible activation time&#xA;&gt; is 2016-01-11 00:00:00 UTC.&#xA;&gt;&#xA;&gt; Activation is achieved when 750 of 1,000 consecutive blocks in the best&#xA;&gt; chain have a version number with bits 3 and 14 set (0x20000004 in hex). The&#xA;&gt; activation time will be the timestamp of the 750&#39;th block plus a two week&#xA;&gt; (1,209,600 second) grace period to give any remaining miners or services&#xA;&gt; time to upgrade to support larger blocks. If a supermajority is achieved&#xA;&gt; more than two weeks before 2016-01-11 00:00:00 UTC, the activation time&#xA;&gt; will be 2016-01-11 00:00:00 UTC.&#xA;&gt;&#xA;&gt; Block version numbers are used only for activation; once activation is&#xA;&gt; achieved, the maximum block size shall be as described in the specification&#xA;&gt; section, regardless of the version number of the block.&#xA;&gt;&#xA;&gt;&#xA;&gt; ==Rationale==&#xA;&gt;&#xA;&gt; The initial size of 8,000,000 bytes was chosen after testing the current&#xA;&gt; reference implementation code with larger block sizes and receiving&#xA;&gt; feedback from miners stuck behind bandwidth-constrained networks (in&#xA;&gt; particular, Chinese miners behind the Great Firewall of China).&#xA;&gt;&#xA;&gt; The doubling interval was chosen based on long-term growth trends for CPU&#xA;&gt; power, storage, and Internet bandwidth. The 20-year limit was chosen&#xA;&gt; because exponential growth cannot continue forever.&#xA;&gt;&#xA;&gt; Calculations are based on timestamps and not blockchain height because a&#xA;&gt; timestamp is part of every block&#39;s header. This allows implementations to&#xA;&gt; know a block&#39;s maximum size after they have downloaded it&#39;s header, but&#xA;&gt; before downloading any transactions.&#xA;&gt;&#xA;&gt; The deployment plan is taken from Jeff Garzik&#39;s proposed BIP100 block size&#xA;&gt; increase, and is designed to give miners, merchants, and&#xA;&gt; full-node-running-end-users sufficient time to upgrade to software that&#xA;&gt; supports bigger blocks. A 75% supermajority was chosen so that one large&#xA;&gt; mining pool does not have effective veto power over a blocksize increase.&#xA;&gt; The version number scheme is designed to be compatible with Pieter&#39;s&#xA;&gt; Wuille&#39;s proposed &#34;Version bits&#34; BIP.&#xA;&gt;&#xA;&gt; TODO: summarize objections/arguments from&#xA;&gt; http://gavinandresen.ninja/time-to-roll-out-bigger-blocks.&#xA;&gt;&#xA;&gt; TODO: describe other proposals and their advantages/disadvantages over&#xA;&gt; this proposal.&#xA;&gt;&#xA;&gt;&#xA;&gt; ==Compatibility==&#xA;&gt;&#xA;&gt; This is a hard-forking change to the Bitcoin protocol; anybody running&#xA;&gt; code that fully validates blocks must upgrade before the activation time or&#xA;&gt; they will risk rejecting a chain containing larger-than-one-megabyte blocks.&#xA;&gt;&#xA;&gt; Simplified Payment Verification software is not affected, unless it makes&#xA;&gt; assumptions about the maximum depth of a transaction&#39;s merkle branch based&#xA;&gt; on the minimum size of a transaction and the maximum block size.&#xA;&gt;&#xA;&gt; ==Implementation==&#xA;&gt;&#xA;&gt; https://github.com/gavinandresen/bitcoinxt/tree/blocksize_fork&#xA;&gt;&#xA;&gt;&#xA;&gt; _______________________________________________&#xA;&gt; bitcoin-dev mailing list&#xA;&gt; bitcoin-dev at lists.linuxfoundation.org&#xA;&gt; https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#xA;&gt;&#xA;&gt;&#xA;-------------- next part --------------&#xA;An HTML attachment was scrubbed...&#xA;URL: &lt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20150622/fb29411c/attachment.html&gt;</html></oembed>