Coder Social home page Coder Social logo

gen2-energihash's People

Contributors

levongh avatar rsdevgun16e avatar ryanlucchese avatar sedraksofthenge avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gen2-energihash's Issues

Rebranding to nrghash

Initially the ticker symbol for Energi was going to be EGI thus the name egihash. By community poll the community would prefer the ticker symbol NRG - so we should rebrand this entire repo (repo name, C++ namespaces, etc) to be nrghash and not egihash.

The magic bytes in the DAG file can remain the same for now until we change final parameters for the main net.

vectorization optimization

If the CPU supports vector instructions (for example, mmx) we should use them to perform operations faster.

C++11 compliance

Current implementation makes use of C++14 features decltype(auto) and std::make_unique()

These should be downgraded to C++11 compliant for portability

Implement C++ API

Should be flexible for easy use from within C++ but also somewhat reflect the C API. In namespace egihash {}

Implement unit tests

Unit testing should be sufficient to verify functionality & correctness for common & edge cases as well as compatibility with the currently supported ethash revision

Implement C API

Should be compatible with ethash API, described here: https://github.com/ethereum/wiki/wiki/Ethash

However all ethash_ prefixes should be instead egihash_ and further the value of this "namespace" prefix should be controllable by macro. Header should be properly extern "C" {} for the C API from use within C++

README.md

Documentation needs to be written

Low memory generate&save DAG function

In order to facilitate pre-computing the next DAG, we should have a function which amounts to a "Generate & Save" that doesn't require the entire DAG in memory - so the current epoch DAG can be kept in memory, and the next epoch can be generated with low memory

Review egihash parameters

egihash has some tunable parameters that should be reviewed. The mostly have to do with keeping up with hardware advancements by growing the DAG.

However, Energi is starting later than Ethereum and has a different block emission rate. Therefore, the following parameters should be tuned to make more sense:

  • egihash::constants::EPOCH_LENGTH (tune to correct emission length)
  • egihash::constants::DATASET_BYTES_INIT (tune to current ethereum value)
  • egihash::constants::CACHE_BYTES_INIT (tune to current ethereum value)

Only egihash.h header should be installed

Current build system installs egihash.h secure_memzero.h and keccak-tiny.h headers - secure_memzero.h and keccak-tiny.h are internal dependencies and should not be installed.

Travis CI

We need a .travis.yml file added to the repo to run the build & tests, result should be displayed in README.md file

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.