energicryptocurrency / gen2-energihash Goto Github PK
View Code? Open in Web Editor NEWEnergi cryptocurrency hash algorithm
License: MIT License
Energi cryptocurrency hash algorithm
License: MIT License
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.
If the CPU supports vector instructions (for example, mmx) we should use them to perform operations faster.
Current implementation makes use of C++14 features decltype(auto) and std::make_unique()
These should be downgraded to C++11 compliant for portability
Should be flexible for easy use from within C++ but also somewhat reflect the C API. In namespace egihash {}
Unit testing should be sufficient to verify functionality & correctness for common & edge cases as well as compatibility with the currently supported ethash revision
Seedhashes and cache's should be cached the same way as DAG's.
Boost compile flags should be reduced in scope for the unit tests as they are not necessary for libegihash
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++
Via comments in source
Hide all symbols which are not necessary to be exported
Documentation needs to be written
We should have a Makefile target for check which runs the unit tests
The autotools build system generates a lot of outputs that should be in the .gitignore file
the DAG cache cache currently has no mechanism to unload entries, causing memory to grow.
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
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:
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.
We need a .travis.yml file added to the repo to run the build & tests, result should be displayed in README.md file
A proper cmake build system would be nice
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.