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