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.

117 lines
3.3 KiB

6 years ago
# monero-pool
A Monero mining pool server written in C.
5 years ago
Design decisions are focused on performance and efficiency, hence the use of
libevent and LMDB. Currently it uses only two threads (one for the stratum
clients and one for the web UI clients). It gets away with this thanks to the
efficiency of libevent (for the stratum clients) and some sensible
proxying/caching being placed in front of the [web UI](#web-ui).
6 years ago
The single payout mechanism is PPLNS, which favors loyal pool miners.
I have no plans to add any other payout mechanisms or other coins. Work should
5 years ago
stay focussed on performance, efficiency and stability.
6 years ago
## Project status
5 years ago
I have tested this quite a bit on the Monero testnet (if you plan
6 years ago
to do the same, ensure to use `--testnet` flag when starting your wallet and
5 years ago
daemon) and mainnet, but there is always room for improvement. Please see the
6 years ago
[TODO](./TODO) file for the current list of things that could do with looking
at.
5 years ago
There is also a reference mainnet pool setup and running at
[http://monerop.com](http://monerop.com).
6 years ago
If you want to help with testing or help setting up your own pool, give me a
shout on IRC: jtgrassie on Freenode.
## Compiling from source
### Dependencies
- liblmdb
- libevent
- json-c
- boost
- openssl
- libmicrohttpd
- uuid
5 years ago
- libsodium
6 years ago
As an example, on Ubuntu, the dependencies can be installed with the following
command:
```
sudo apt-get install libjson-c-dev uuid-dev libevent-dev libmicrohttpd-dev \
5 years ago
liblmdb-dev libboost-all-dev openssl libsodium-dev
6 years ago
```
5 years ago
There may also be other [Monero
dependencies](https://github.com/monero-project/monero#dependencies) needed, so
it doesn't hurt to install those too.
6 years ago
Another obvious dependency is to have a running Monero daemon (`monerod`) and a
running wallet RPC (`monero-wallet-rpc`) for the pool wallet. It is highly
recommended to run these on the same host as the pool server to avoid network
5 years ago
latency when their RPC methods are called.
6 years ago
### Compile
First install all the dependencies.
Then to compile the pool as a release build, run:
```
5 years ago
make release
6 years ago
```
The application will be built in `build/release/`.
Optionally you can compile a debug build by simply running:
```
make
```
Debug builds are output in `build/debug/`.
## Configuration
Copy and edit the `pool.conf` file to either the same directory as the compiled
binary `monero-pool`, or place it in your home directory or launch `monero-pool`
with the flag `--config-file path/to/pool.conf` to use a custom location. The
5 years ago
configuration options should be self explanatory.
6 years ago
## Running
5 years ago
Ensure you have your Monero daemon (`monerod`) and wallet RPC
(`monero-wallet-rpc`) up and running with the correct host and port settings as
defined in the pool config file.
6 years ago
5 years ago
Then simply `cd build/debug|release` and run `./monero-pool`.
6 years ago
5 years ago
## Web UI
There is a minimal web UI that gets served on the port specified in the config
file. It's advisable to use either Apache or Nginx as a proxy in front of this
with some appropriate caching.
6 years ago
## Supporting the project
This mining pool has **no built-in developer donation** (like *other* mining
pool software has), so if you use it and want to donate, XMR donations to:
```
451ytzQg1vUVkuAW73VsQ72G96FUjASi4WNQse3v8ALfjiR5vLzGQ2hMUdYhG38Fi15eJ5FJ1ZL4EV1SFVi228muGX4f3SV
```
would be very much appreciated.
## License
Please see the [LICENSE](./LICENSE) file.
[//]: # ( vim: set tw=80: )