-
Notifications
You must be signed in to change notification settings - Fork 494
Master Plan
In this document we'll be addressing the motivation behind CoiniumServ and present a basic road-map of the development process.
So you'll be most likely asking the reasoning behind yet another pool-server when there exists lovely ones like python-stratum, python-stratum-continued, nomp and side-projects like mpos. First of all we already love those projects (especially Open Source ones that contributed the community) and using them.
Though for us today Bitcoin is just like the Internet in 1996, so we expect a huge evolution if in upcoming years. Said so, Bitcoins and alternative crypto currencies deserves a better pool-software that has a proper development model and plan.
Although python and javascript (node.js) are great choices, we feel they are a bit hacky and instead decided to go for a more conservative and dictative language - C#. With the Rosyln and .net native on the horizon, we think C# has great potential that we can use within the project.
CoiniumServ is built from ground up with the idea of supporting both .Net and Mono frameworks. Basically you can run CoiniumServ over any platform that has .Net or Mono support; Windows, Linux, MacOS and so on.
We want CoiniumServ to support as many possible platform as possible and supports these frameworks;
- Mono 3.x - covered by travis with MacOS builds
- .Net 4.5.x - covered by appveyor with Windows 2012 builds
The project follows Test Driven Development in which we have implemented extensive tests for all important functionality and never merge in code that breaks tests and stuff. Yet again, when a new functionality is introduced we also expect proper tests to be implemented within the PR.
CoiniumServ uses a layered architecture with multiple layers of functionality that you can replace / use.
Modularity is one of the important concepts we follow within the code - which basically allows us to write coded that is independent of each other. This will allow you to write new modules of functionality or extend existing ones.
We want CoiniumServ support every available mining protocol that exists on the planet and once we achieve this target, we have plans to develop new protocols with extended functionality.
CoiniumServ uses a layered architecture for persistance & storage systems and you'll be able to use your choise of database engine.
We build the CoiniumServ from the start with the idea of supporting multipools and automatic trading support. We'll have a basic trading engine module that you can extend for your needs.
We eventually want to implement support for unified ports which the code will just identify the user supplied wallet address to determine the coin he wants to mine. This will allow easier configuration of the server.
We want to implement such functionality that CoiniumServ will identify if the miner is using getwork, stratum or some other protocol and able to operate them over a single network port.
CoiniumServ by default will have it's own payment processor and web-frontend module but additionally, we'll support MPOS mode to let you handle payments using it.
You'll be route the worker hashes to another pool just to get started your pool or build a service like betarigs.
We want to implement merged-mining support once we are all done with the base work.