From: Trevor Groves <gurvy51@gmail.com>
To: Dev Mailing list <bitcoin-dev@lists.linuxfoundation.org>
Subject: [bitcoin-dev] Dynamic MaxBlockSize - 3 Byte Solution
Date: Wed, 6 Nov 2019 20:33:36 -0700 [thread overview]
Message-ID: <CAN+Of7A9pmrhEma49cQ0eP7vn50WxFemAEvztFxhgX2om_8Dpw@mail.gmail.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 4300 bytes --]
Dynamic MaxBlockSize - 3 Byte Solution
"DMBS"
If
(Last TOTAL Block Trans fees) > (AVG (Last 100 Blocks Trans Fees))
AND
current MaxBlockSize => 0.99 MB
AND
MaxBlockSize has not changed in 10 Blocks
** see error catch below
Then
ON (Current Block # + 9) Set MaxBlockSize = (MaxBlockSize x 1.1)
ELSE
AT (Current Block # + 9) Set MaxBlockSize = (MaxBlockSize / 1.1)
ELSEIF
(current MaxBlockSize =< 0.99 or current MaxBlockSize > 6553.5 MB)
Null (no action taken)
**where 9 above represents the ActivateONBlock (software side) Variable
-------------
We add this 3 Byte Variable Factor to the white space in the Current Block.
eg. this 3 byte HEX 19000A
the first bit "1" can be 1,2 or 0
1 = increase future block (9 blocks ahead)
2 decrease future block (9 blocks ahead)
0 No Action (rules evaluate to null)
**where 9 above represents the ActivateONBlock (software side) Variable
--------------
The Second bit is a Global Variable "9" represents a countdown to the set
value action, placed to synchronize network forward changes in "x" blocks.
software lowers value if evaluates to True a second time and so on.
("Count down" if you will)
the last 2 bytes represent the globally accepted "MaxBlockSize" Variable,
and is distributed within each block moving forward in this rightmost (2
byte) factor. In this case above,
The variable portion "000A" (32 Bit value) represents decimal value 10
being 1.0 MB block.
the decimal place is Always Assumed, and must be hard coded
Because this presents a theoretical Max limit of "FFFF" or 6553.5 MB, We
would
have to add a last rule "only as a error catch"
** AND IF MaxBlockSize < 6553.5
---
Increasing and decreasing
On Every Block mined or distributed, the software can run the above rule
set, Change the Variable and Distribute the next block " In Synchronized
fashion". The above rules when combined evaluate to a YES or NO, This
translates to a market reflection of increased system pressure or decreased
market pressure. I think we can agree, at peak periods the system chokes
itself off with fees and this is always only temporarily. So we can have
the block, analyse system demand dynamically, and adjust on a globally
agreed rule dynamically by market driven demand.
Considering the ruleset above also Decreases the Block ONLY if its greater
than 0.99mb this brings size back to a competitive state /and size once
market demand pressures subside, yet achieves the smallest market feasible
block size while also maintaining all current rule sets.
An attacker would have to affect all block fees over the last 16 hours
worth of transactions to affect a 10% max block size increase but then only
after waiting 1.5 hours, so long as nothing has changed in the last 1.5
hours and only for a limited amount of time. This approach also limits
bloat. This safety block window of 9 blocks provides a look forward and
look behind value, in turn provides the network time to synchronize.
10 block sync window. This, by design, also limits changes to one change
every 3 hours (20 blocks), if there is a market pressure "STATE" occurring.
My Question to the community is. Will our current Block accommodate the 3
Byte
Variable, Is solving the Scaling issue worth using the 3 Bytes of space?
I believe it is.
--
Software, Will need to Evaluate MaxBlockSize Variable, and
ActivateONBlock Variable from the most recent distributed blocks DMBS 3
byte value.
Run the rules , get the answer set the now known MaxBlockSize Var and
Propegate the "DMBS" value.
As capacity limits are breached, I think the majority agree "we need to
agree".
MaxBlockSize would provide a suitable middle ground and address concerns in
a dynamic fashion, without compromising or changing existing security.
Examples reflected in the blockchain 19000A rules has evaluates to
true, increase expected in 9 blocks.1.0mb increases to 1.1mb
if true for 9 more blocks MaxBlockSize Var becomes 18000A..
17000A..,16000A ..and so on if still true at 10000A var written becomes
00000B when read from left to right, 0-no change, in 0 blocks current "
DMBS" value 000B or 1.1MB and stays that way 00000B until MaxBlockSize
evaluates to "True" under a market pressure/ relief situation.
I hope this makes sense, I would appreciate some feedback.
TG
[-- Attachment #2: Type: text/html, Size: 4855 bytes --]
next reply other threads:[~2019-11-07 3:34 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-11-07 3:33 Trevor Groves [this message]
2019-11-08 14:36 ` [bitcoin-dev] Dynamic MaxBlockSize - 3 Byte Solution Emil Engler
2019-11-08 15:19 ` Joachim Strömbergson
2019-11-08 17:04 ` Alberto Aldave
2019-11-11 16:08 ` Hampus Sjöberg
2019-11-11 16:47 ` Luke Dashjr
2019-11-11 17:10 ` Hampus Sjöberg
2019-11-11 19:56 ` Luke Dashjr
2019-11-11 13:52 ` ZmnSCPxj
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CAN+Of7A9pmrhEma49cQ0eP7vn50WxFemAEvztFxhgX2om_8Dpw@mail.gmail.com \
--to=gurvy51@gmail.com \
--cc=bitcoin-dev@lists.linuxfoundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox