C/C++ implementation of Etchash – the Ethereum Classic Proof of Work algorithm
This branch is configured for Ethereum Classic mainnet. For mordor use the mordor branch.
Build from source using CMake.
mkdir build
cd build
cmake ..
cmake --build .
See ethash.hpp for list of exported function and documentation.
This section decscribes the optimizations, modification and tweaks applied in this library in relation to Ethash reference implementation.
The library contains a set of micro-benchmarks. Build and run bench
tool.
Seed hash is sequence of keccak256 hashes applied the epoch number of times. Time needed to compute seed hash is negligible comparing to time needed to build light cache. Computing seed hash for epoch 10000 takes ~ 5 ms, building light cache for epoch 1 takes ~ 500 ms.
Computing the size of full dataset and light cache requires finding the largest prime number given an upper bound. For similar reasons as with seed hash, this is computed on the fly. The procedure used is quite naive and forks well only up to 40-bit number, so some additional improvement can be done in future.
Paweł Bylica @chfast
Licensed under the Apache License, Version 2.0.