 |
May 16, 2015, 04:00:12 AM Last edit: May 17, 2015, 06:26:38 AM by solex |
|
Compromise solution: up to 500 tps on-chain while keeping the 1MB limit, however, a hard-fork is still needed.
This is an idea which I have been mulling over since Gavin came up with IBLT, but have not expounded because, until recently I did not realise the depth of support within Core dev for maintaining the 1MB. If dev are not able to compromise on a can-kick, e.g. 20MB, or an adaptive limit which leverages the demand for larger blocks with pressure to keep a cleaner UTXO set better fees market, then there is an alternative. Also, Pieter's "headers-first" change which went live in version 0.10 makes this alternative safer on resync.
A "third way": Decoupling the size limit check on blocks from new block messages.
Today, the 1MB size limit is bluntly used to check any block which a node sees. It does not matter whether the block being checked is 2 years old and just read from disk, or whether it is a new block announcement to a fully-synced node. The principle here is that the 1MB check would be retained for new block announcement messages, but not when processing old blocks, or applied after a new block is constructed from an announcement message.
A hard-fork is still required, as the window is then opened for blocks to be accepted which are >1MB on disk, and to support compression/decompression of new blocks. All nodes will need to be able to decode blocks which might be compressed by different methods.
Notes:
Bandwidth usage for new blocks is kept to 1MB per 10 minutes. People can continue to mine via TOR.
More than one type of compression would then be supported, e.g. IBLT and transaction hash lists, so miners have a choice of which to use. IBLT could be used on top of hash lists which gives even greater compression. CPU overhead is a consideration.
The network can already handle a much higher tps of real-time unconfirmed tx so block propagation methods which rely on the initial publication of tx are encouraged. e.g. IBLT usage is incentivized for miners wanting to construct blocks larger than 1MB. This also reduces blockchain spam as miners cannot stuff new blocks >1MB with secret transactions. This reduces the rate of increase in UTXO relative to average block size increase.
Fees on a 20MB disk block would approximate the 6.25 reward in 5 years time. This happy state could be reached while retaining the 1MB limit on new block messages.
Resync would still require sending blocks >1MB, however this is not on the critical path for the whole network, just one node.
Current status:
Wladimir has indicated that he wants to close off version 0.11 soon. If nothing is done about the 1MB in version 0.11 then one of the last chances is wasted for achieving a smooth transition to larger tx volumes without a period of serious confirmation delays, (user unhappiness, bad publicity, price hit, harm to the network effect).
I suggest that if no compromise is possible in dev on the 1MB then at the very least version 0.11 should prepare the way for block compression, and provide an incentive for it to be used, incorporating software to decode an IBLT, and be able to use transaction hashes like the block relay service. This might take a number of weeks/months, but far less time than waiting for Lightning Networks, tree-chains, or other off-chain scaling solutions.
IMHO, the safest hard fork uses both a block version transition PLUS a 30 or 60 day grace period. i.e. after the 75% target is reached, a delay occurs before the change becomes effective. This achieves mining consensus and also allows non-mining nodes and laggard miners more time to upgrade.
Have at it!
|