{"type":"rich","version":"1.0","author_name":"npub1lhe3qfx2q5m7mq5d39waepf9lzhsy0cdey66svn63fyk6rt6n7ps7zg7ed","author_url":"https://nostr.ae/npub1lhe3qfx2q5m7mq5d39waepf9lzhsy0cdey66svn63fyk6rt6n7ps7zg7ed","provider_name":"njump","provider_url":"https://nostr.ae","html":"📅 Original date posted:2015-08-21\n📝 Original message:I wanted to offer a potential way to adjust the block size limit in a\ndemocratic way without making it easy to game. This is meant only as a\nstarting point for a general idea. Thresholds and exact figures and\nthe details of the algorithm are up for debate, and possibly some\nformula based determination.\n\nThe living document is currently a gist available at\nhttps://gist.github.com/btcdrak/1c3a323100a912b605b5\n\n\n\u003cpre\u003e\n  BIP: XX\n  Title: Consensus based block size retargeting algorithm\n  Author: BtcDrak \u003cbtcdrak at gmail.com\u003e\n  Status: Draft\n  Type: Standards Track\n  Created: 2015-08-21\n\u003c/pre\u003e\n\n==Abstract==\n\nA method of altering the maximum allowed block size of the Bitcoin\nprotocol using a consensus based approach.\n\n==Motivation==\n\nThere is a perception that Bitcoin cannot easily respond to raising\nthe blocksize limit if popularity was to suddenly increase due to a\nmass adoption curve, because co-ordinating a hard fork takes\nconsiderable time, and being unable to respond in a timely manner\nwould irreparably harm the credibility of bitcoin.\n\nAdditionally, predetermined block size increases are problematic\nbecause they attempt to predict the future, and if too large could\nhave unintended consequences like damaging the possibility for a fee\nmarket to develop as block subsidy decreases substantially over the\nnext 9 years; introducing or exacerbating mining attack vectors; or\nsomehow affect the network in unknown or unpredicted ways. Since fixed\nchanges are hard to deploy, the damage could be extensive.\n\nDynamic block size adjustments also suffer from the potential to be\ngamed by the larger hash power.\n\n\n==Rationale==\n\nBy introducing a cost to increase the block size ensures the mining\ncommunity will collude to increase it only when there is a clear\nnecessity, and reduce it when it is unnecessary. Rogue miners cannot\nforce their wishes so easily because not only will they have to pay\nextra a difficulty target, then can be downvoted at no cost by the\nobjecting hash power.\n\n\n==Specification==\n\nThe initial \"base block size limit\" shall be 1MB.\n\nMiners can vote for a block size increase by signalling the proposed\npercentage increase of the \"base block size limit\" in the coinbase\nfield. For the vote to be considered valid the block they mine must\nmeets a difficulty target which is proportionally larger than the\nstandard difficulty target based on the percentage increase they voted\nfor. If a miner does not vote, or the vote is invalid, it shall be\ncounted as a vote for no change.\n\nMiners may vote the size down by signalling in the coinbase field\nwithout paying a difficulty penalty.\n\nEvery 2016 blocks, the maximum allowed block size will be recalculated\nby the average of all votes in the last 2016 blocks, i.e. sum each\nvote from each block and divide by 2016 then multiply by the base\nblock size limit. This will redefine the base block size limit for the\nnext 2016 blocks.\n\nBlocks that are larger than the calculated base block size limit are\ninvalid and MUST be rejected.\n\nThe maximum change up or down each retargeting period shall be limited\nto 10% of the base block size limit.\n\nThe maximum block size may not increase above 8MB.\n\nVotes shall be cast by adding the following human readable multiplier\nto the coinbase string “/BXn.nnn/” where valid votes would exist\nbetween the ranges “/BX0.900/” (10% decrease) and “/BX1.100/” (10%\nincrease). “/BX1.000/” would be a vote for no change. Invalid votes\nwill be counted as a vote for no change: “/BX1.000/”.\n\n\n==Acknowledgements==\n\nThis proposal is based on ideas and concepts derived from the writings\nof Meni Rosenfeld and Gregory Maxwell.\n\n\n==Copyright==\n\nThis work is placed in the public domain."}
