<oembed><type>rich</type><version>1.0</version><author_name>npub1f2nvlx49er5c7sqa43src6ssyp6snd4qwvtkwm5avc2l84cs84esecrwet</author_name><author_url>https://nostr.ae/npub1f2nvlx49er5c7sqa43src6ssyp6snd4qwvtkwm5avc2l84cs84esecrwet</author_url><provider_name>njump</provider_name><provider_url>https://nostr.ae</provider_url><html>📅 Original date posted:2015-05-09&#xA;📝 Original message:On Fri, May 8, 2015 at 8:33 PM, Mark Friedenbach &lt;mark at friedenbach.org&gt; wrote:&#xA;&gt; These rules create an incentive environment where raising the block size has&#xA;&gt; a real cost associated with it: a more difficult hashcash target for the&#xA;&gt; same subsidy reward. For rational miners that cost must be counter-balanced&#xA;&gt; by additional fees provided in the larger block. This allows block size to&#xA;&gt; increase, but only within the confines of a self-supporting fee economy.&#xA;&gt;&#xA;&gt; When the subsidy goes away or is reduced to an insignificant fraction of the&#xA;&gt; block reward, this incentive structure goes away. Hopefully at that time we&#xA;&gt; would have sufficient information to soft-fork set a hard block size&#xA;&gt; maximum. But in the mean time, the block size limit controller constrains&#xA;&gt; the maximum allowed block size to be within a range supported by fees on the&#xA;&gt; network, providing an emergency relief valve that we can be assured will&#xA;&gt; only be used at significant cost.&#xA;&#xA;Though I&#39;m a fan of this class of techniques(*) and think using something&#xA;in this space is strictly superior to not, and I think it makes larger&#xA;sizes safer long term;  I do not think it adequately obviates the need&#xA;for a hard upper limit for two reasons:&#xA;&#xA;(1) for software engineering and operational reasons it is very&#xA;difficult to develop, test for, or provision for something without&#xA;knowing limits. There would in fact be hard limits on real deployments&#xA;but they&#39;d be opaque to their operators and you could easily imagine&#xA;the network forking by surprise as hosts crossed those limits.&#xA;&#xA;(2)  At best this approach mitigates the collective action problem between&#xA;miners around fees;  it does not correct the incentive alignment between&#xA;miners and everyone else (miners can afford huge node costs because they&#xA;have income; but the full-node-using-users that need to exist in plenty&#xA;to keep miners honest do not), or the centralization pressures (N miners&#xA;can reduce their storage/bandwidth/cpu costs N fold by centralizing).&#xA;&#xA;A dynamic limit can be combined with a hard upper to at least be no&#xA;worse than a hard upper with respect to those two points.&#xA;&#xA;&#xA;Another related point which has been tendered before but seems to have&#xA;been ignored is that changing how the size limit is computed can help&#xA;better align incentives and thus reduce risk.  E.g. a major cost to the&#xA;network is the UTXO impact of transactions, but since the limit is blind&#xA;to UTXO impact a miner would gain less income if substantially factoring&#xA;UTXO impact into its fee calculations; and without fee impact users have&#xA;little reason to optimize their UTXO behavior.   This can be corrected&#xA;by augmenting the &#34;size&#34; used for limit calculations.   An example would&#xA;be tx_size = MAX( real_size &gt;&gt; 1,  real_size + 4*utxo_created_size -&#xA;3*utxo_consumed_size).   The reason for the MAX is so that a block&#xA;which cleaned a bunch of big UTXO could not break software by being&#xA;super large, the utxo_consumed basically lets you credit your fees by&#xA;cleaning the utxo set; but since you get less credit than you cost the&#xA;pressure should be downward but not hugely so. The 1/2, 4, 3 I regard&#xA;as parameters which I don&#39;t have very strong opinions on which could be&#xA;set based on observations in the network today (e.g. adjusted so that a&#xA;normal cleaning transaction can hit the minimum size).  One way to think&#xA;about this is that it makes it so that every output you create &#34;prepays&#34;&#xA;the transaction fees needed to spend it by shifting &#34;space&#34; from the&#xA;current block to a future block. The fact that the prepayment is not&#xA;perfectly efficient reduces the incentive for miners to create lots of&#xA;extra outputs when they have room left in their block in order to store&#xA;space to use later [an issue that is potentially less of a concern with a&#xA;dynamic size limit].  With the right parameters there would never be such&#xA;at thing as a dust output (one which costs more to spend than its worth).&#xA;&#xA;(likewise the sigops limit should be counted correctly and turned into&#xA;size augmentation (ones that get run by the txn); which would greatly&#xA;simplify selection rules: maximize income within a single scalar limit)&#xA;&#xA;(*) I believe my currently favored formulation of general dynamic control&#xA;idea is that each miner expresses in their coinbase a preferred size&#xA;between some minimum (e.g. 500k) and the miner&#39;s effective-maximum;&#xA;the actual block size can be up to the effective maximum even if the&#xA;preference is lower (you&#39;re not forced to make a lower block because you&#xA;stated you wished the limit were lower).  There is a computed maximum&#xA;which is the 33-rd percentile of the last 2016 coinbase preferences&#xA;minus computed_max/52 (rounding up to 1) bytes-- or 500k if thats&#xA;larger. The effective maximum is X bytes more, where X on the range&#xA;[0, computed_maximum] e.g. the miner can double the size of their&#xA;block at most. If X &gt; 0, then the miners must also reach a target&#xA;F(x/computed_maximum) times the bits-difficulty; with F(x) = x^2+1  ---&#xA;so the maximum penalty is 2, with a quadratic shape;  for a given mempool&#xA;there will be some value that maximizes expected income.  (obviously all&#xA;implemented with precise fixed point arithmetic).   The percentile is&#xA;intended to give the preferences of the 33% least preferring miners a&#xA;veto on increases (unless a majority chooses to soft-fork them out). The&#xA;minus-comp_max/52 provides an incentive to slowly shrink the maximum&#xA;if its too large-- x/52 would halve the size in one year if miners&#xA;were doing the lowest difficulty mining. The parameters 500k/33rd,&#xA;-computed_max/52 bytes, and f(x)  I have less strong opinions about;&#xA;and would love to hear reasoned arguments for particular parameters.</html></oembed>