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 d2a769e093 Revert "Remove nonsensical code" 8 years ago
cnutil Fix cmake and linking 8 years ago
go-pool Revert "Remove nonsensical code" 8 years ago
hashing Revert "Remove nonsensical code" 8 years ago
www Tidy up fractionDigits in Web-UI 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 disable Web-UI 8 years ago
main.go Fix stratum init 8 years ago

README.md

go-cryptonote-pool

High performance CryptoNote mining stratum with Web-interface written in Golang.

Stratum feature list:

  • Be your own pool
  • Rigs availability monitoring
  • Keep track of accepts, rejects, blocks stats
  • Easy detection of sick rigs
  • Daemon failover list
  • Concurrent shares processing
  • Beautiful Web-interface

Installation

Dependencies:

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

Linux

Use Ubuntu 16.04 LTS.

Compile Monero source (with shared libraries option):

cmake -DBUILD_SHARED_LIBS=1 .
make

Install Golang and packages:

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

Build CGO extensions:

MONERO_DIR=/opt/src/monero cmake .
make

Build stratum:

go build -o pool main.go

Mac OS X

Install Golang and packages packages:

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

Compile Monero source:

cmake .
make

Now clone stratum repo and compile it:

MONERO_DIR=/opt/src/monero cmake .
make

Build stratum:

go build -o pool main.go

Running Stratum

./pool config.json

If you need to bind to privileged ports and don't want to run from root:

sudo apt-get install libcap2-bin
sudo setcap 'cap_net_bind_service=+ep' pool

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 for block rewards
  "address": "46BeWrHpwXmHDpDEUmZBWZfoQpdc6HaERCNmx1pEYL2rAcuwufPN9rXHHtyUA4QVy66qeFQkn6sfK8aHYjA3jk3o1Bv16em",
  // Don't validate address
  "bypassAddressValidation": true,
  // Don't validate shares
  "bypassShareValidation": true,

  "threads": 2,

  "estimationWindow": "15m",
  "luckWindow": "24h",
  "largeLuckWindow": "72h",

  // Interval to poll daemon for new jobs
  "blockRefreshInterval": "1s",

  "stratum": {
    // Socket timeout
    "timeout": "15m",

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

  "frontend": {
    "enabled": true,
    "listen": "0.0.0.0:8082",
    "login": "admin",
    "password": "",
    "hideIP": false
  },

  "upstreamCheckInterval": "5s",

  "upstream": [
    {
      "name": "Main",
      "host": "127.0.0.1",
      "port": 18081,
      "timeout": "10s"
    }
  ]
}

Donations

License

Released under the GNU General Public License v2.

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