- Mar 13, 2016
- 1,206
- 2,650
Problem:
BUIP038 outlines an attack in which BU's flexibility is exploited in order to inject arbitrarily large blocks, unwanted by the majority of nodes.
the attack is performed as follows:
- with 40% hashrate the cost of the attack is minimal ( any amount will do, but the higher the hash rate the less expensive the attack is ) and will probably prove profitable once mining rewards are negligible and including as many paying fees as the network will allow you too, will be the name of the game.
- create an excessive block
- create AD confirming blocks,
- well done you've introduced a VERY VERY large block and made mad profits including the entire TX backlog of paying fees. effectively you steal potential fees from other miners.
one BUIP solves the problem by saying AD is proportional to the EB weight, thereby making it more expensive to pull off the attack. this BUIP is just a another option.
Root of the problem:
The root of the problem here is that nodes all act independently when it comes to enforcing blocksize limits. There is no universally accepted and known blocksize limit, only individualistic limits set by individual nodes. This means that AD is required, since a node will never be able to orphen a block and know for sure if the rest of the network will do the same, and so if AD is reached the individual's attempt at enforcing his individual limit has failed, and at a cost! ( i think its likely that some mining nodes will not be willing to orphan blocks without any guarantee that the rest of the network will also orphan that block, these miners will set AD at 0 or 1? )
Solution:
Introduce a new concept called "Implicit blocksize limit". every block has with it the miners MG, EB, and AD settings (Slush signals /MG1.0/EB16.0/AD4 ViaBTC signals /EB1/AD6/) with that info nodes can calculate an "Implicit Blocksize Limit". This IBL would be used by all nodes as an upper limit which if violated all nodes will simply orphen the block no questions asked.
the calculation would be some variation of : " highest EB value from the bottom 50% of EB values set on the last 1000blocks "
with the current BU nodes (Slush signals /MG1.0/EB16.0/AD4 ViaBTC signals /EB1/AD6/) "Implicit blocksize limit" (IBL) would probably be 16mb thanks to Slush.
ViaBTC would still be able ( and probably end up winning the fight ) to orphan this block, but worst case the attacker can not ever produce a block so big that it would violate >50% of EB values.
Notes:
I chose the calculation " highest EB value from the bottom 50% of EB values set on the last 1000blocks " so that BU's Emergent Consensus isn't compromised and miners can still choose to individually defened what they consider EB. they simply have an added guarantee that if the block has a size > IBL, there's no point worrying about anything futher ALL nodes will orphen this block.
I am open to any other type of IBL calculation, the basic idea is that the nodes require a way of knowing what the network itself considers EB, and thats what Implicit Blocksize Limit IBL is meant to provide.
highest EB from bottom 50% was chosen for the following reasons.
1) pissing off >=50% of hashing power is clearly an attack.
2) minners looking to"game the system" and set a very high IBL would require 50% hashing power.
3) if it was any more inclusive( like 15% ) it would render AD totally useless
BUIP038 outlines an attack in which BU's flexibility is exploited in order to inject arbitrarily large blocks, unwanted by the majority of nodes.
the attack is performed as follows:
- with 40% hashrate the cost of the attack is minimal ( any amount will do, but the higher the hash rate the less expensive the attack is ) and will probably prove profitable once mining rewards are negligible and including as many paying fees as the network will allow you too, will be the name of the game.
- create an excessive block
- create AD confirming blocks,
- well done you've introduced a VERY VERY large block and made mad profits including the entire TX backlog of paying fees. effectively you steal potential fees from other miners.
one BUIP solves the problem by saying AD is proportional to the EB weight, thereby making it more expensive to pull off the attack. this BUIP is just a another option.
Root of the problem:
The root of the problem here is that nodes all act independently when it comes to enforcing blocksize limits. There is no universally accepted and known blocksize limit, only individualistic limits set by individual nodes. This means that AD is required, since a node will never be able to orphen a block and know for sure if the rest of the network will do the same, and so if AD is reached the individual's attempt at enforcing his individual limit has failed, and at a cost! ( i think its likely that some mining nodes will not be willing to orphan blocks without any guarantee that the rest of the network will also orphan that block, these miners will set AD at 0 or 1? )
Solution:
Introduce a new concept called "Implicit blocksize limit". every block has with it the miners MG, EB, and AD settings (Slush signals /MG1.0/EB16.0/AD4 ViaBTC signals /EB1/AD6/) with that info nodes can calculate an "Implicit Blocksize Limit". This IBL would be used by all nodes as an upper limit which if violated all nodes will simply orphen the block no questions asked.
the calculation would be some variation of : " highest EB value from the bottom 50% of EB values set on the last 1000blocks "
with the current BU nodes (Slush signals /MG1.0/EB16.0/AD4 ViaBTC signals /EB1/AD6/) "Implicit blocksize limit" (IBL) would probably be 16mb thanks to Slush.
ViaBTC would still be able ( and probably end up winning the fight ) to orphan this block, but worst case the attacker can not ever produce a block so big that it would violate >50% of EB values.
Notes:
I chose the calculation " highest EB value from the bottom 50% of EB values set on the last 1000blocks " so that BU's Emergent Consensus isn't compromised and miners can still choose to individually defened what they consider EB. they simply have an added guarantee that if the block has a size > IBL, there's no point worrying about anything futher ALL nodes will orphen this block.
I am open to any other type of IBL calculation, the basic idea is that the nodes require a way of knowing what the network itself considers EB, and thats what Implicit Blocksize Limit IBL is meant to provide.
highest EB from bottom 50% was chosen for the following reasons.
1) pissing off >=50% of hashing power is clearly an attack.
2) minners looking to"game the system" and set a very high IBL would require 50% hashing power.
3) if it was any more inclusive( like 15% ) it would render AD totally useless
Last edited: