I'm proposing a small change to the PoW algorithm to be implemented at the next hard fork (together with Seraphis).
As opposed to the previous PoW changes, this one is completely unrelated to ASIC resistance.
The purpose of the change is to enable a very fast partial verification of the PoW. Essentially, my proposal is to replace the final Blake2b hash with a double Blake2b hash. Technical details are in this issue: tevador/RandomX#258
Additionally, a new 32-byte field (the intermediate hash) would be added to the block header. This would increase the blockchain size by about 8 MB per year, which is negligible given the large benefits that this change would bring.
What are the benefits?
-
Enhanced denial-of-service (DoS) protection of all nodes in the network. PoW verification typically consumes about 15 milliseconds of CPU time and can become a DoS vector if a malicious actor started flooding the network with invalid blocks. My proposal allows for pre-verification that takes only 300 nanoseconds and makes such DoS attacks ineffective.
-
Significant performance boost for light nodes that rely solely on PoW verification. Light nodes could only verify the PoW partially and do full RandomX validation only for the top N blocks. This would reduce their CPU demands by up to 4 orders of magnitude.
-
Better security for wallets using untrusted remote nodes. Malicious remote nodes can feed wallets fake blockchain data. With this proposal, wallets could partially verify the integrity of the blocks received from untrusted remote nodes with the cost of a few hashes.
I'm proposing a small change to the PoW algorithm to be implemented at the next hard fork (together with Seraphis).
As opposed to the previous PoW changes, this one is completely unrelated to ASIC resistance.
The purpose of the change is to enable a very fast partial verification of the PoW. Essentially, my proposal is to replace the final Blake2b hash with a double Blake2b hash. Technical details are in this issue: tevador/RandomX#258
Additionally, a new 32-byte field (the intermediate hash) would be added to the block header. This would increase the blockchain size by about 8 MB per year, which is negligible given the large benefits that this change would bring.
What are the benefits?
Enhanced denial-of-service (DoS) protection of all nodes in the network. PoW verification typically consumes about 15 milliseconds of CPU time and can become a DoS vector if a malicious actor started flooding the network with invalid blocks. My proposal allows for pre-verification that takes only 300 nanoseconds and makes such DoS attacks ineffective.
Significant performance boost for light nodes that rely solely on PoW verification. Light nodes could only verify the PoW partially and do full RandomX validation only for the top N blocks. This would reduce their CPU demands by up to 4 orders of magnitude.
Better security for wallets using untrusted remote nodes. Malicious remote nodes can feed wallets fake blockchain data. With this proposal, wallets could partially verify the integrity of the blocks received from untrusted remote nodes with the cost of a few hashes.