Author: Alan Reiner 2014-07-04 11:22:19
Published on: 2014-07-04T11:22:19+00:00
In an email exchange, Andy Parkins and Alan Reiner discuss the workings of a hashing algorithm called ROMix. ROMix stores N sequential hashes into a single N*32 byte lookup table, which could require 32,000,000 sequential bytes of RAM for N=1,000,000. Based on the hash function, it is impossible to know in advance what needs to be available in RAM to lookup, so holding all 32,000,000 bytes in RAM might be the easiest solution. However, this would make the system memory hungry, not IO-hungry, as Parkins suggests.ROMix-like algorithm requires a different 32 MB of blockchain for each hash, uniformly distributed throughout the blockchain. There is no way to predict which 32 MB until the algorithm is executed. If the difficulty is high enough, the miner may end up searching through the entire X GB blockchain while other nodes only need to do 32 MB worth of disk accesses to verify the answer. This approach strikes a compromise that requires access to 100% of the blockchain without reading 20 GB to verify a block.
Updated on: 2023-06-09T00:41:24.460376+00:00