Kevacoin stratum server for solo-mining
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
Sammy Libre b42684e4ca Update README.md 8 years ago
cnutil Update CMakeLists.txt for 0.10.0 8 years ago
go-pool Add option to bypass share validation 8 years ago
hashing Update CMakeLists.txt 8 years ago
.gitignore Update .gitignore 8 years ago
CMakeLists.txt Update CMakeLists.txt 8 years ago
LICENSE Initial import 10 years ago
README.md Update README.md 8 years ago
config.example.json Add option to bypass share validation 8 years ago
main.go Temporarily drop redis and policy 8 years ago

README.md

go-cryptonote-pool

High performance CryptoNote mining stratum written in Golang.

Stratum feature list:

  • Concurrent shares processing
  • AES-NI enabled share validation code with fallback to slow implementation provided by linking with Monero libraries
  • Integrated NewRelic performance monitoring plugin

Installation

Dependencies:

  • go-1.6
  • Everything required to build monero
  • Monero v0.10.0

Mac OS X

Install required packages:

brew update && brew install go
export GOPATH=~/go
go get github.com/yvasiyarov/gorelic

Download and compile Monero v0.9.4.

Now clone stratum repo and compile it:

git clone https://github.com/sammy007/go-cryptonote-pool.git
cmake .
make

Notice that for share validation stratum requires monero source tree where .a libs already compiled. By default stratum will use ../monero directory. You can override this behavior by passing MONERO_DIR env variable:

MONERO_DIR=/path/to/monero cmake .
make

Build stratum:

go build -o pool main.go

Linux

I would recommend you to use Ubuntu 16.04 LTS.

Install required packages:

sudo apt-get install golang
export GOPATH=~/go
go get github.com/yvasiyarov/gorelic

In order to successfully link with monero libs, recompile monero with:

cmake .
CXXFLAGS="-fPIC" CFLAGS="-fPIC" make

Build CGO extensions:

MONERO_DIR=/opt/src/monero cmake .
make

Build stratum:

go build -o pool main.go

Running Stratum

./pool config.json

Configuration

Configuration is self-describing, just copy config.example.json to config.json and run stratum with path to config file as 1st argument.

{
    // Address to where mined blocks will rain
    "address": "46BeWrHpwXmHDpDEUmZBWZfoQpdc6HaERCNmx1pEYL2rAcuwufPN9rXHHtyUA4QVy66qeFQkn6sfK8aHYjA3jk3o1Bv16em",
    // Don't validate login, useful for other CN coins
    "bypassAddressValidation": false,
    // Don't validate shares for efficiency
    "bypassShareValidation": false,

    "threads": 2,

    // Mining endpoints
    "stratum": {
        // TCP timeout for miner, better keep default
        "timeout": "15m",
        // Interval to poll monero node for new jobs
        "blockRefreshInterval": "1s",

        "listen": [
            {
                "host": "0.0.0.0",
                "port": 1111,
                // Stratum port static difficulty
                "diff": 5000,
                "maxConn": 32768
            },
            {
                "host": "0.0.0.0",
                "port": 3333,
                "diff": 10000,
                "maxConn": 32768
            }
        ]
    },

    // Monero daemon connection options
    "daemon": {
        "host": "127.0.0.1",
        // Monero RPC port, default is 18081
        "port": 18081,
        "timeout": "10s"
    }
}

Private Pool Guidelines

For personal private pool you can use DigitalOcean droplet. With recent blockchain-db merged into Monero it's ok to run it even on 5 USD plan. You will receive 10 USD free credit there.

TODO

In-RAM stats with a simple self hosted frontend.

Donations

License

Released under the GNU General Public License v2.

http://www.gnu.org/licenses/gpl-2.0.html