A functional prototype of Cuckaroo, a memory-bound PoW algorithm and a variant of John Tromp’s Cuckoo Cycle, implemented in OCaml. It follows the fundamental principles of the original algorithm design but adapts it for experimental purposes in a functional context.
This implementation is not optimized for performance and is intended solely for experimentation and learning purposes. Running it with standard parameters, such as edge_bits = 29 (i.e., 2^29 edges) may result in significantly slow execution times. For quicker testing, it’s recommended to use lower values for edge_bits and reduce the easiness percentage.
- Key Generation via BLAKE2b
- SipHash-Derived Edge Generation
- Bipartite Graph Construction
- DFS-Based Cycle Detection Algorithm
- Proof-of-Work Verification
- Customizable Mining Parameters
- Command-Line Interface
- Performance Benchmarking
-
John Tromp, Cuckoo Cycle: A memory bound graph-theoretic proof-of-work.
Whitepaper (PDF) -
Official Cuckoo Cycle implementation by John Tromp
GitHub Repository