(4/28/2021):About a year ago, I was looking into creating my own mining pool in order to test a tool that I was working on, but after some research, realized that there are actually very few good open-source options out there, with YIIMP and CKPool really being the only viable options. Both still aren't great, with the former having issues with being especially difficult to read/understand (at least for me, I dislike PHP), and the latter being limited solely to Bitcoin. I also stumbled upon NOMP, zone117x's open-source JS solution, but it hadn't been maintained in years and has since fallen into disrepair. Even so, this was the one that interested me the most, as I feel much more comfortable with JS.
On top of this, it's no secret that it's not easy for the layman to create, host, and manage their own mining pool. As such, mining pools and the mining process as a whole has been becoming more and more centralized, especially for smaller altcoins, where a single pool is most often responsible for the majority of the hashrate on the network. Viable, easy-to-use open-source mining pool software with extensive documentation would help to solve this, as it would specifically help to simply the process of setting up a pool to the point where anyone could manage it. This was my goal in starting this project.
So for the past six months or so, I've been working on a complete rewrite/update of NOMP. I decided on start to specifically make this source a lot more barebones--to focus on just the pool functionality. This means no UI, no coinswitching, no MPOS, etc. I would really appreciate some feedback--either on the code itself or the idea as a whole, as well as any features that people would want supported. I'm not going to add back any of the features removed, however. A summary of the changes (
https://github.com/blinkhash) thus far is below:
Stratum- Cleaned up/rewrote everything
- Commented everything to improve readability
- Comprehensive testing suite
- Update node version from v0.10.x to v12.x+
- Segwit/Bech32 compliance
- Added/fixed stratum methods according to docs (https://braiins.com/stratum-v1/docs)
- Asicboost support (needs testing)
- Implemented CI/coverage/linting pipelines
- Miscellaneous bugfixes/etc.
Server- Cleaned up/rewrote everything
- Commented everything to improve readability
- Comprehensive testing suite
- Update node version from v0.10.x to v12.x+
- Reorganized configuration files to be more intuitive/cleaner
- Reorganized database scheme to be more intuitive/cleaner
- Added solo-mining functionality for users
- Made PPLNT the default payout scheme (removed PROP)
- Added 'partnering' scheme for usage w/ API to promote advertising
- Reorganized/reworked API entirely
- Implemented CI/coverage/linting pipelines
- Miscellaneous bugfixes/etc.
Note: Neither blinkhash-server nor blinkhash-stratum will work as a drag+drop solution for any other open-source project.
(6/17/2021):Server:
https://github.com/blinkhash/blinkhash-serverStratum:
https://github.com/blinkhash/blinkhash-stratumHashing:
https://github.com/blinkhash/blinkhash-multi-hashingUTXO:
https://github.com/blinkhash/blinkhash-utxo-libI just ended up finishing the initial build of the software and officially released it for testing. Here's the links to each of the individual repositories that are in use. Let me know your thoughts! Here's the link to the discord to stay updated on development or ask me any specific questions:
https://discord.gg/8xtHZFKJQY. For my next steps, I'm currently working on building out documentation and tutorials on how to implement and work with Blinkhash, as well as a separate repository of coin configurations for users to consult. Following that, I'll develop a dashboard/client for the server itself and include support for Equihash coins.
(7/30/2021):Finished up the documentation and made a simple landing page for it. Here's the current site, decided to make it from scratch because I couldn't find a template I liked, which is why it took longer:
https://blinkhash.com/docs. Working on an idea for the landing page now, which might take a bit longer. The repository for the documentation is here if you're interested:
https://github.com/blinkhash/blinkhash-documentation/