go-pow

module
v0.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 10, 2021 License: GPL-3.0

README

Go PoW

Go Test PkgGoDev

Note: This library is still in active development and is subject to breaking changes

This is a library designed for Proof of Work validation for chains that require a DAG - generally this refers to Ethash or ProgPOW chains.

This was created due to the lack of a Kawpow verification library in native Go. Since the DAG generation component of Kawpow varies only slightly from Ethash, go-etchash was generalized to handle the different requirements of DAG generation and updated to implement Kawpow. Some more significant changes have been made, such as memory mapping the L1 cache for the Kawpow DAG. Before go-pow, the only clean solution for Kawpow hashing was using the RPC call getkawpowhash from the full node.

The DAG code is heavily borrowing from go-etchash (which was actually inspired by ethashproof). The Kawpow code is mostly ported over from cpp-kawpow. There are other small bits taken from elsewhere with sources in the code.

Finally, this library only implements a light DAG - the full DAG is very large and there isn't really a use case for pools to use it during validation. It wouldn't be too difficult to implement though, it exists in go-etchash so it would just be a matter of adding the ProgPOW full DAG implementation.

Directories

Path Synopsis
internal
dag

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL