Elycin / Monero-Pool

An open source monero Pool written in C# and C++ for maximum speed and efficiency. Uses Redis as database

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Monero-Pool

An open source Crypto Night Pool written in C# and C++ for maximum speed and efficiency for coins such as Monero and Bytecoin. Uses Redis for a high performance database. Also comes with a full fledged front end.

Index

Features

  • A beautiful front end to amaze your visitors.
  • Highly scalable pool server which tries to get the maximum juice out of multiple cores of your server without using Synchronous blocking.
  • Extremely detailed logging with variable settings.
  • Extremely intricate error management so that the server never crashes out on you.
  • Compatibility with all major OSes.
  • IP banning.
  • Payment processing.
  • Extremely detailed database.
  • Front end with individual miner statistics and beautiful charts.
  • Address validation.
  • Vardiff support
  • Live stats
  • TCP based Stratum like protocol

===

Requirements

  • Coin daemon and wallet daemon

On Linux:

On Windows:

1) Downloading & Installing

Compiling from source
On Linux:

Clone this repository locally and run make

git clone https://github.com/archit120/Monero-Pool.git
cd Monero-Pool
make

The resulting binaries can be found in /build/

On Windows:

Compile the C++ part of the solution then compile the C# project named Monero-Pool. After doing this copy the C++ dll to same folder as your pool binaries.

Binaries

Binary releases can be found on the repository.

2) Configuration

Have a look the sample config.txt given and configure it to your liking.

Sample config

#Daemon RPC address
daemon-json-rpc=http://127.0.0.1:18081
#Wallet RPC address
wallet-json-rpc=http://127.0.0.1:8082
#Http Server address with port
http-server=http://*:7707/
#Pool wallet address
wallet-address=41jhre5xFk92GYaJgxvHuzUC5uZtQ4UDU1APv3aRAc27DWBqKEzubC2WSvmnbxaswLdB1BsQnSfxfYXvEqkXPvcuS4go3aV
#Redis database server address
redis-server=127.0.0.1
#Redis database Id
redis-database=0
#Number of seconds before removing a miner without getting a response
client-timeout-seconds=60
#Starting difficulty for all miners
base-difficulty=150
#Ban when this percentage of shares are invalid
ban-reject-percentage=50
#Minutes to ban the miner for
ban-time-minutes=60
#Block depth required for transactions to occur
block-confirms=60
#Percentage of pool fee
pool-fee=5
#Base 58 prefix for address
base58-prefix=18
#Enable banning after this many shares
ban-after-shares=10
#Target time for shares
vardiff-targettime-seconds=15
#vardiff deviation from target time allowed
vardiff-targettime-deviation-allowed=5
#Percentage of maximum difficulty change in one step
vardiff-targettime-maxdeviation=10
#Maximum difficulty
vardiff-max-difficulty=15000
#Maximum concurrent works to miner
max-concurrent-works=15
#Tcp server port
stratum-server-port=7706
#Retarget difficulty for miners every this seconds
diffiulty-retarget=5

3) Start the pool

On Linux:
mono MoneroPool.exe
On Windows:
MoneroPool.exe

4) Configure the front-end

Edit the config.json

{"scheme":"tcp","host":"192.168.1.4","port":6379}

Download and extract Predis to the root directroy of front end. Host with a webserver capable of serving PHP files.

Upgrading

When upgrading it is highly recommended to wait for an official release. Since the pool is still in extremely beta stage many big changes may be implemented so follow the step listed in release carefully while upgrading.

Setting up Testnet

No cryptonote based coins have a testnet mode (yet) but you can effectively create a testnet with the following steps:

  • Open /src/p2p/net_node.inl and remove lines with ADD_HARDCODED_SEED_NODE to prevent it from connecting to mainnet (Monero example: http://git.io/0a12_Q)
  • Build the coin from source
  • You now need to run two instance of the daemon and connect them to each other (without a connection to another instance the daemon will not accept RPC requests)
    • Run first instance with ./coind --p2p-bind-port 28080 --allow-local-ip
    • Run second instance with ./coind --p2p-bind-port 5011 --rpc-bind-port 5010 --add-peer 0.0.0.0:28080 --allow-local-ip
  • You should now have a local testnet setup. The ports can be changes as long as the second instance is pointed to the first instance, obviously

Credit to surfer43 for these instructions

Credits

  • archit - Developer of the project.
  • zone117x - Difficulty->Target and the README.
  • Everyone who helped me with using Linux on IRC.

About

An open source monero Pool written in C# and C++ for maximum speed and efficiency. Uses Redis as database


Languages

Language:CSS 36.0%Language:C# 31.8%Language:C++ 20.9%Language:C 7.7%Language:HTML 2.3%Language:JavaScript 0.6%Language:PHP 0.5%Language:Makefile 0.1%