From 0a331b3324217e5a45956d2634035072b201ed1f Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Tue, 19 Aug 2014 16:05:41 +1000 Subject: [PATCH] Begin documenting design and features in README --- README | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/README b/README index e69de29b..bab096da 100644 --- a/README +++ b/README @@ -0,0 +1,62 @@ +CKPOOL + CKDB + libckpool by Con Kolivas and Andrew Smith. + +Ultra low overhead massively scaleable multi-process, multi-threaded modular +bitcoin mining pool, proxy, passthrough, library and database interface in c +for Linux. + + +LICENSE: + +GNU Public license V3. See included COPYING for details. + + +DESIGN: + +Architecture: +- Low level hand coded architecture relying on minimal outside libraries beyond +basic glibc functions for maximum flexibility and minimal overhead that can be +built and deployed on any Linux installation. +- Multiprocess+multithreaded design to scale to massive deployments and +capitalise on modern multicore/multithread CPU designs. +- Minimal memory overhead. +- Utilises ultra reliable unix sockets for communication with dependent +processes. +- Modular code design to streamline further development. +- Standalone library code that can be utilised independently of ckpool. +- Same code can be deployed in many different modes designed to talk to each +other on the same machine, local lan or remote internet locations. + +Modes of deployment: +- Comprehensive pooled mining solution with a postgresql database interface. +- Passthrough node(s) that combine connections to a single socket which can +be used to scale to millions of clients and allow the main pool to be isolated +from direct communication with clients. +- Proxy nodes with a database that act as a single client to the upstream pool +while storing full client data of their own. +- Simple proxy without the limitations of hashrate inherent in other proxy +solutions when talking to ckpool. +- Simple pool without a database. +- Library for use by other software. + +Features: +- Bitcoind communication to unmodified bitcoind with multiple failover to local +or remote locations. +- Local pool instance worker limited only by operating system resources and +can be made virtually limitless through use of multiple downstream passthrough +nodes. +- Proxy and passthrough modes can set up multiple failover upstream pools. +- Optional share logging. +- Virtually seamless restarts for upgrades through socket handover from exiting +instances to new starting instance. +- Configurable custom coinbase signature. +- Configurable instant starting and minimum difficulty. +- Rapid vardiff adjustment with stable unlimited maximum difficulty handling. +- New work generation on block changes incorporate full bitcoind transaction +set without delay or requiring to send transactionless work to miners thereby +providing the best bitcoin network support and rewarding miners with the most +transaction fees. +- Event driven communication based on communication readiness preventing +slow communicating clients from delaying low latency ones. +- Stratum messaging system to running clients. +- Accurate pool and per client statistics. +- Multiple named instances can be run concurrently on the same machine.