Ethash
C/C++ implementation of Ethash and ProgPoW – the Ethereum Proof of Work algorithms
Install / Use
/learn @chfast/EthashREADME
Ethash
C/C++ implementation of Ethash – the Ethereum Proof of Work algorithm
Table of Contents
Install
Build from source using CMake.
mkdir build
cd build
cmake ..
cmake --build .
Usage
See ethash.hpp for a list of exported functions and documentation.
Optimizations
This section describes the optimizations, modifications and tweaks applied in this library in relation to Ethash reference implementation.
The library contains a set of micro-benchmarks. Build and run the ethash-bench
tool.
Seed hash is computed on the fly.
Seed hash is a sequence of keccak256 hashes applied the epoch number of times. Time needed to compute seed hash is negligible compared 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.
Dataset size is computed on the fly
Computing the size of the 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 the future.
Maintainer
Paweł Bylica @chfast
License
Licensed under the Apache License, Version 2.0.
Related Skills
node-connect
341.8kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
84.6kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
341.8kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
84.6kCommit, push, and open a PR
