Skip to content

Master Plan

Hüseyin Uslu edited this page May 19, 2014 · 20 revisions

Master Plan

In this document we'll be addressing the motivation behind CoiniumServ and present a basic road-map of the development process.

The motivation

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.

Internet vs Bitcoin

The language choice - C#

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.

The framework - Mono vs dotNet

CoiniumServ is built from ground up with the idea of supporting both DotNet and Mono frameworks. Basically you can run CoiniumServ over any platform that has Mono or dotNet support; Windows, Linux, MacOS and so on.

LINQ usage

We want CoiniumServ to support as many possible platform as possible, so just in order to be able to target Mono 2.8, we strictly don't use LINQ. Even more as LINQ adds another layer of computing, this decision has performance-wise outcomes too.

Right now, CoiniumServ supports these frameworks and our continous integration systems covers these;

  • Mono 2.8 - covered by travis with MacOS builds
  • Mono 3.x - covered by travis with MacOS builds
  • dotNet 4.x & 4.5.x - covered by appveyor with Windows 2012 builds
Layered Architecture

CoiniumServ uses a layered architecture with multiple layers of functionality that you can replace / use.

Modularity

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.

Protocols

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.

Persistance & Storage

CoiniumServ uses a layered architecture for persistance & storage systems and you'll be able to use your choise of database engine.

Multipool & Automatic Trading Support

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.