- Nov 19, 2015
- 94
- 191
A big problem with hard fork activation is the "false signaling" problem. This is a miner signaling, but actually doing something contrary to what they are signaling. For instance, a BU node writing EB8 in their blocks, but still rejecting blocks that are 2MB.
A possible solution to this problem is something that I'm calling "Implementation proofs".
Nodes will signal "IP" similar to how they signal EB and AD settings. For instance, a node can signal:
EB8/AD6/IP5f4ef6
The value "5f4ef6" is the "implementation proof". If this proof evaluates as true (in other words, is valid) then this proves that the node has implemented code to read EB values from blocks.
The procedure for generating an "IP" is as follows:
1. Sum the values of all EB values going back 100 blocks. For instance, if in the past 100 blocks, there are 20 blocks that signal EB8, and another 10 blocks that signal EB4, and the rest signaling no EB, then you add all those up and you get a value of 20*8+10*4, which is 560.
2. Validate all signaled IP values. Count each success as 1 and failures as 0. For example, if the last 100 blocks, there are 45 blocks that include an IP value, and only 30 of them are valid, the value 30 is used.
3. Catenate these two values together, and then append the block height. For example: if the block number is 434332, and sum of EB values is 560, and sum of valid IPs is 30, then the resulting string is "56030434332". This string is then ran through the sha256 algorithm, then the first 6 bytes are used.
If a node includes a valid implementation proof, then you can deduce that this node has the ability to parse and read EB values. If 95% of blocks include an IP, and 95% of them are correct, then from this information you can deduce that false signaling is unlikely.
A possible solution to this problem is something that I'm calling "Implementation proofs".
Nodes will signal "IP" similar to how they signal EB and AD settings. For instance, a node can signal:
EB8/AD6/IP5f4ef6
The value "5f4ef6" is the "implementation proof". If this proof evaluates as true (in other words, is valid) then this proves that the node has implemented code to read EB values from blocks.
The procedure for generating an "IP" is as follows:
1. Sum the values of all EB values going back 100 blocks. For instance, if in the past 100 blocks, there are 20 blocks that signal EB8, and another 10 blocks that signal EB4, and the rest signaling no EB, then you add all those up and you get a value of 20*8+10*4, which is 560.
2. Validate all signaled IP values. Count each success as 1 and failures as 0. For example, if the last 100 blocks, there are 45 blocks that include an IP value, and only 30 of them are valid, the value 30 is used.
3. Catenate these two values together, and then append the block height. For example: if the block number is 434332, and sum of EB values is 560, and sum of valid IPs is 30, then the resulting string is "56030434332". This string is then ran through the sha256 algorithm, then the first 6 bytes are used.
If a node includes a valid implementation proof, then you can deduce that this node has the ability to parse and read EB values. If 95% of blocks include an IP, and 95% of them are correct, then from this information you can deduce that false signaling is unlikely.