This releases fixes a template block bug. There was a logic error in the left shift function of the uint1024 class that only shows up when the difficulty level is +1/+2 more than a multiple of 64. Currently the difficulty is 257. The template block function creates a place holder number of the right expected bitsize for any prime factor that solves the block so that miners are rewarded accordingly after they solve the block. Should this number not have the expected bitsize for any reason, the blockchain will reward zero coins as a defensive mechanism (See #23 ).
The bug was in the left shift operator performed on this place holder number to get the right bitsize. This bug was observed yesterday afternoon, but it began yesterday morning at block height 18144 where the first block of difficulty 257 was mined. The expected prime factor size of 129 for the place holder number was observed to have a value of 193. Here are all the values for which this bug would occur:
Expected: 1 Actual: 65 <- Below lowest difficulty of mainnet
Expected: 1 Actual: 65 <- Below lowest difficulty of mainnet
Expected: 65 Actual: 129 <- Below lowest difficulty of mainnet
Expected: 65 Actual: 129 <- Below lowest difficulty of mainnet
Expected: 129 Actual: 193 <- Observed yesterday
Expected: 129 Actual: 193
Expected: 193 Actual: 257
Expected: 193 Actual: 257
Expected: 257 Actual: 321
Expected: 257 Actual: 321
Expected: 321 Actual: 385
Expected: 321 Actual: 385
Expected: 385 Actual: 449
Expected: 385 Actual: 449
Expected: 449 Actual: 513
Expected: 449 Actual: 513
Expected: 513 Actual: 577
Expected: 513 Actual: 577
Expected: 577 Actual: 641
Expected: 577 Actual: 641
Expected: 641 Actual: 705
Expected: 641 Actual: 705
Expected: 705 Actual: 769
Expected: 705 Actual: 769
Expected: 769 Actual: 833
Expected: 769 Actual: 833
Expected: 833 Actual: 897
Expected: 833 Actual: 897
Expected: 897 Actual: 961
Expected: 897 Actual: 961
Expected: 961 Actual: 965
Expected: 961 Actual: 965
This issue has been corrected and tested for all the expected bitsizes at every level. All miners who mine blocks at difficulty level 257 before it gets to 258 will be rewarded the coins they have earned unless they waived this right. So far, the breakdown is as follows:
fact1qrq9jz638mrxlucludwa8jj4rgg0l85au6x0dd8 : 32.89946079258
Sometime next week this wallet (plus any other that show up at this difficulty level affected by this bug), which received 0 coins as rewards, will be rewarded what they should have been rewarded by the system from coins I have mined myself.
Note 1: This will only be done for blocks mined at difficulty level 257 before it gets to 258. You should nonetheless update to the latest node version.
Note 2: For miners who do not update you will continue to receive 0 rewards for difficulty level 258 but will start getting the rewards as they should be beginning on difficulty level 259.
File hashes:
f6b5592e5e98b6bab5d92c31c9f6c8a64cab56cc71455332357cf2fba8778f05 factorn-f597273f3bdc-x86_64-linux-gnu-debug.tar.gz
de8f42d2d481aa3711f4a4e23c17b2c334e4e63ccd2a6be8046d1ffedd6f5bd1 factorn-f597273f3bdc-x86_64-linux-gnu.tar.gz
0b9361d52dcf0d4be791cb8e56deb450861d954b9d4c8f8e5180a6f3e11d3188 SHA256SUMS.part