Return-Path: Received: from smtp1.linuxfoundation.org (smtp1.linux-foundation.org [172.17.192.35]) by mail.linuxfoundation.org (Postfix) with ESMTPS id C7483FE7 for ; Sat, 29 Aug 2015 18:25:39 +0000 (UTC) X-Greylist: whitelisted by SQLgrey-1.7.6 Received: from mail-qg0-f41.google.com (mail-qg0-f41.google.com [209.85.192.41]) by smtp1.linuxfoundation.org (Postfix) with ESMTPS id 484E8126 for ; Sat, 29 Aug 2015 18:25:38 +0000 (UTC) Received: by qgeh99 with SMTP id h99so47939644qge.0 for ; Sat, 29 Aug 2015 11:25:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=message-id:date:from:user-agent:mime-version:to:cc:subject :references:in-reply-to:content-type; bh=PYgWrErZtVRUB6pTbUBSCNmqW/xyUBi5OVrHZebcNU0=; b=sMNcNHTpHS9Ncn5p5CfaPjgHl4GPf/295M4qBI7LszvfDN8UetYw77lxotyoEOb2M9 IG5t7l1riARXD5stWz5ryKG+OPejudEMUVuHei/OS7Y3ZPiLqr6hPnefe2FpR+c8X29y wZng5/w05Uqc70oEdDJcAW116Iftylg/VDx0Pye0urIF7YYj3ifcdWBNBv2zY+Y58CKe AdqPIwbRPHNgdohnguFlQ/D0vWru/4FpF9oj7+ecVeH4h6OCcjQnKNZjL0eSuaEkGBiS Ql/OOKijgJ4bzx/DcKWBULOgNU0+azWN4+Lb5RMwM6h7nq+ZT42JnxWn0zi+1gzuIF73 sHGA== X-Received: by 10.140.152.203 with SMTP id 194mr26814141qhy.47.1440872737499; Sat, 29 Aug 2015 11:25:37 -0700 (PDT) Received: from justin-mbp.local (c-98-237-121-184.hsd1.pa.comcast.net. [98.237.121.184]) by smtp.googlemail.com with ESMTPSA id n23sm5673995qkl.17.2015.08.29.11.25.24 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 29 Aug 2015 11:25:25 -0700 (PDT) Message-ID: <55E1F914.5040309@gmail.com> Date: Sat, 29 Aug 2015 14:25:24 -0400 From: "Justin M. Wray" User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:31.0) Gecko/20100101 Thunderbird/31.6.0 MIME-Version: 1.0 To: Jameson Lopp References: <55E145EF.3060801@gmail.com> In-Reply-To: Content-Type: multipart/alternative; boundary="------------020104050406080005020204" X-Spam-Status: No, score=-2.7 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,HTML_MESSAGE,RCVD_IN_DNSWL_LOW autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on smtp1.linux-foundation.org Cc: Bitcoin Dev Subject: Re: [bitcoin-dev] Variable Block Size Proposal X-BeenThere: bitcoin-dev@lists.linuxfoundation.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: Bitcoin Development Discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 29 Aug 2015 18:25:39 -0000 This is a multi-part message in MIME format. --------------020104050406080005020204 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable -----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 mini= mum 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 > 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 ful= ly > (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 honest= ly > 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-t= erm > growth, and balances the block propagation, while also being mindfu= l > 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 calculat= ed. > > 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, a= t > the same time the maximum is calculated). All blocks must be at lea= st > 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 t= he > 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 chang= ed > in the future, to prevent a large mining population from continuall= y > 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 woul= d > 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% =3D 4, 4< 75% of 8, So use 8 * .75 = =3D 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 portio= n > is flawed? Will the miners support such a proposal? Would this even= > solve the block size issue? > > I will note that I don't find the 100% and 25% to be hard and fast = in > my idea. Those we're just the values that initially jumped out at m= e. > I could easily see the minimum being anything below 50% (above 50% = and > the network can never adjust to smaller block sizes). I could also = see > the maximum being anything over 100%. Lastly, if a inflation attac= k > is a valid concern, a hard upper limit could be set (or the histori= cal > 32MB limit could remain). > > I think the great part about this variable approach is that the > network can adjust to address spikes in volume and readjust once th= ose > spikes dissipate. > > - -- > Thanks! > > - ----- > Justin M. Wray > -----BEGIN PGP SIGNATURE----- > Comment: GPGTools - https://gpgtools.org > > iQIcBAEBCgAGBQJV4UXvAAoJENo/Q5Xwcn83ZWEP/iXAlNk5p9OlOPNSoHkECcxe > AcartxMLrmOvAZVudU4+239TEvwPydmYX/ptmBYgrvRJfm/TWmi0ZbTioxbxTIWM > IlNta1Y8IOHOEgBCtSW01j1PFHIzkBHQGIuqrKHhjcNVGbegXlPm3Da0gjNuTBIe > IV58gf1OfYK2XjuCMQMvo3VyXUKhqbOvBNnZXr+Qo2sAtanmxHQ+TU/gjA02L9LO > bb8WqQDj/veGnMexGh/X58tfQ5KCfLO401F7KnConDaFdKVDikp32zaSXZ7JWf/K > OeseHW1OHHVdYpHvh5VG5GLtYYB5rnq8g7B0/kyx5n4ldB6GkLxzH9CPB0vxpMnZ > dVCS/+EUe/wkHrpRVNhMwP8XfG+8gv9upKg6H/u39XmpL2H2G4cKeot5xRiWRNqY > oJclAeIhDTL1bx/9e/VqvM91ESWpBLs+O8Mh9OzgfbN3gKR6BuoWHNwM9jSMDAT1 > YzwdneSvAEFzgELMlae2QIzAUHno9qkHMkDVbdY3bBtSM9Xz4ditGgnq1D40ZZ+J > zx5WVY7HCebgbk7T35xgKzSKQSEG9zFNW5Dvq66Se3Zpc5vCPw7Q2xwjjPz3zdXQ > Lub0ohVWTzKr05tN1e/nu6keiY5cXRZ0w2MtHb19jtdWyoHEWWHanfOZjgbVSsuA > saFCydA7O4E4BFxgtNze > =3DJthX > -----END PGP SIGNATURE----- > _______________________________________________ > bitcoin-dev mailing list > bitcoin-dev@lists.linuxfoundation.org > https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev > > - --=20 Thanks! - ----- Justin M. Wray -----BEGIN PGP SIGNATURE----- Comment: GPGTools - https://gpgtools.org iQIcBAEBCgAGBQJV4fkUAAoJENo/Q5Xwcn834OIP/3A/tZGM0csz5QkJKW9jyyPN yaewQ4CpP6N/y1g7YOXm4kwvCqofzbM++yeiBVN6pW+q7EyZr7vf6V8MYvRbhjAN GxYxNWFAkSIcOFa3E92O4eGx7eG5Pn5bw0NWN2QHnmo8doPX/iwzOnv+l+yLQM5L dcml0Bg2Gj2F5BLhS04XsgcqaZ+maUzmP27niVHYHF1qhSr2JmwWnHJ6u3Zp6Mb1 J7/tkm10p0PMNhnukMqrm9merC77mhBPQ40GXJSlIwXUNjZh6/7fbIP9hSUv4+HJ K5IX+0gVAUlt2A6bTmswDDJLQGp/hnjKNMNsGIXy2/IZLRgmo3h83q+xZSAaDl9P 21QArg3Js5LIMwDZdOvhqcmfm5mShEa08UUo0rceGvg6YVQjPpHdPO9LjcUzoFoq sD5UgCUuHCLwfk6AKS4L+NJU+Z9LyuQiLR5Of59Wn8Ri4viE2HecKWkZk8W9T1Ko a1Juyg+7njFePrpQN7ck2twyrkhZo6vcRlo+VGaliCzMatl0aifEm1hrOlP/uEFj B8vJP+kscbHagmUBDEZFcnlEKt46xEW6TxxXYkfGyyDJ7SyOzmKbtYJGkqAfWZLQ 93W6nHmnhjpVSrA1yWjka0gllt56izzMrG/5i7PlAQnocQhQGh0u/X7qdkrYezZH 5Fp416atfYdigXclXT00 =3Dz9Sx -----END PGP SIGNATURE----- --------------020104050406080005020204 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: 8bit
-----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 support such a proposal? Would this even
>     solve the block size issue?
>
>     I will note that I don't find the 100% and 25% to be hard and fast in
>     my idea. Those we're just the values that initially jumped out at me.
>     I could easily see the minimum being anything below 50% (above 50% and
>     the network can never adjust to smaller block sizes). I could also see
>     the maximum being anything over 100%.  Lastly, if a inflation attack
>     is a valid concern, a hard upper limit could be set (or the historical
>     32MB limit could remain).
>
>     I think the great part about this variable approach is that the
>     network can adjust to address spikes in volume and readjust once those
>     spikes dissipate.
>
>     - --
>     Thanks!
>
>     - -----
>     Justin M. Wray
>     -----BEGIN PGP SIGNATURE-----
>     Comment: GPGTools - https://gpgtools.org
>
>     iQIcBAEBCgAGBQJV4UXvAAoJENo/Q5Xwcn83ZWEP/iXAlNk5p9OlOPNSoHkECcxe
>     AcartxMLrmOvAZVudU4+239TEvwPydmYX/ptmBYgrvRJfm/TWmi0ZbTioxbxTIWM
>     IlNta1Y8IOHOEgBCtSW01j1PFHIzkBHQGIuqrKHhjcNVGbegXlPm3Da0gjNuTBIe
>     IV58gf1OfYK2XjuCMQMvo3VyXUKhqbOvBNnZXr+Qo2sAtanmxHQ+TU/gjA02L9LO
>     bb8WqQDj/veGnMexGh/X58tfQ5KCfLO401F7KnConDaFdKVDikp32zaSXZ7JWf/K
>     OeseHW1OHHVdYpHvh5VG5GLtYYB5rnq8g7B0/kyx5n4ldB6GkLxzH9CPB0vxpMnZ
>     dVCS/+EUe/wkHrpRVNhMwP8XfG+8gv9upKg6H/u39XmpL2H2G4cKeot5xRiWRNqY
>     oJclAeIhDTL1bx/9e/VqvM91ESWpBLs+O8Mh9OzgfbN3gKR6BuoWHNwM9jSMDAT1
>     YzwdneSvAEFzgELMlae2QIzAUHno9qkHMkDVbdY3bBtSM9Xz4ditGgnq1D40ZZ+J
>     zx5WVY7HCebgbk7T35xgKzSKQSEG9zFNW5Dvq66Se3Zpc5vCPw7Q2xwjjPz3zdXQ
>     Lub0ohVWTzKr05tN1e/nu6keiY5cXRZ0w2MtHb19jtdWyoHEWWHanfOZjgbVSsuA
>     saFCydA7O4E4BFxgtNze
>     =JthX
>     -----END PGP SIGNATURE-----
>     _______________________________________________
>     bitcoin-dev mailing list
>     bitcoin-dev@lists.linuxfoundation.org <mailto:bitcoin-dev@lists.linuxfoundation.org>
>     https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
>
>


- --
Thanks!

- -----
Justin M. Wray
-----BEGIN PGP SIGNATURE-----
Comment: GPGTools - https://gpgtools.org

iQIcBAEBCgAGBQJV4fkUAAoJENo/Q5Xwcn834OIP/3A/tZGM0csz5QkJKW9jyyPN
yaewQ4CpP6N/y1g7YOXm4kwvCqofzbM++yeiBVN6pW+q7EyZr7vf6V8MYvRbhjAN
GxYxNWFAkSIcOFa3E92O4eGx7eG5Pn5bw0NWN2QHnmo8doPX/iwzOnv+l+yLQM5L
dcml0Bg2Gj2F5BLhS04XsgcqaZ+maUzmP27niVHYHF1qhSr2JmwWnHJ6u3Zp6Mb1
J7/tkm10p0PMNhnukMqrm9merC77mhBPQ40GXJSlIwXUNjZh6/7fbIP9hSUv4+HJ
K5IX+0gVAUlt2A6bTmswDDJLQGp/hnjKNMNsGIXy2/IZLRgmo3h83q+xZSAaDl9P
21QArg3Js5LIMwDZdOvhqcmfm5mShEa08UUo0rceGvg6YVQjPpHdPO9LjcUzoFoq
sD5UgCUuHCLwfk6AKS4L+NJU+Z9LyuQiLR5Of59Wn8Ri4viE2HecKWkZk8W9T1Ko
a1Juyg+7njFePrpQN7ck2twyrkhZo6vcRlo+VGaliCzMatl0aifEm1hrOlP/uEFj
B8vJP+kscbHagmUBDEZFcnlEKt46xEW6TxxXYkfGyyDJ7SyOzmKbtYJGkqAfWZLQ
93W6nHmnhjpVSrA1yWjka0gllt56izzMrG/5i7PlAQnocQhQGh0u/X7qdkrYezZH
5Fp416atfYdigXclXT00
=z9Sx
-----END PGP SIGNATURE-----

--------------020104050406080005020204--