@@ -1,13 +1,24 @@ | |||
Credits | |||
=== | |||
Sumokoin fork credits | |||
===================== | |||
The sumo fork; all new features and code improvements have been made | |||
possible by the following team: | |||
* SadBatman | |||
* Mad Jester | |||
* Robert Kesior | |||
Original Credits | |||
================ | |||
* [LucasJones](//github.com/LucasJones) - Co-dev on this project; did tons of debugging for binary structures and fixing them. Pool couldn't have been made without him. | |||
* [surfer43](//github.com/iamasupernova) - Did lots of testing during development to help figure out bugs and get them fixed | |||
* [wallet42](http://moneropool.com) - Funded development of payment denominating and min threshold feature | |||
* [Wolf0](https://bitcointalk.org/index.php?action=profile;u=80740) - Helped try to deobfuscate some of the daemon code for getting a bug fixed | |||
* [Tacotime](https://bitcointalk.org/index.php?action=profile;u=19270) - helping with figuring out certain problems and lead the bounty for this project's creation | |||
* [fancoder] (https://github.com/fancoder) Initial cryptonote-universal-pool creator | |||
* BTC: `1667jMt7NTZDaC8WXAxtMYBR8DPWCVoU4d`- | |||
* [fancoder] (https://github.com/fancoder) Initial cryptonote-universal-pool creator | |||
* BTC: `1667jMt7NTZDaC8WXAxtMYBR8DPWCVoU4d`- | |||
* MRO: `48Y4SoUJM5L3YXBEfNQ8bFNsvTNsqcH5Rgq8RF7BwpgvTBj2xr7CmWVanaw7L4U9MnZ4AG7U6Pn1pBhfQhFyFZ1rL1efL8z` | |||
* [clintar] (https://github.com/clintar) Updates to support nodejs >0.10 and continuing updates | |||
License |
@@ -6,29 +6,38 @@ Comes with lightweight example front-end script which uses the pool's AJAX API. | |||
## Recent changes | |||
##### Health monitoring | |||
**Health monitoring** | |||
A new /health API handler was added and can be called by miners to learn | |||
whether the pool is healthy (e.g wallet is reachable). The UI was also | |||
updated and calles this handler regularly: when the health is not OK a | |||
red message will inform pool visitors about this. | |||
##### Proxy X-Forwarded-For support | |||
**Proxy X-Forwarded-For support** | |||
In the configuration you can indicate whether your pool deployment is | |||
behind a proxy. When you do this than the pool will take the client IP | |||
(which can give unauthenticated access to the admin interface) from the | |||
X-Forwarded-IP header that the proxy sets. | |||
##### Email notifications | |||
**Email notifications** | |||
Miners can configure an email to receive notifications whenever they receive a | |||
payment. More notifications will be added in the future (e.g. when a block is | |||
found). | |||
##### Miner can configure payout minimum | |||
**Miner can configure payout minimum** | |||
Miner can configure the minimum amount of sumo for their payments. | |||
##### Subaddresses support | |||
**Subaddresses support** | |||
You can now mine using a subaddress as your login. | |||
**Payout estimation** | |||
In your mining stats you will now see a payout estimate. This gives an idea what | |||
the payout will be when a next block is found. | |||
**Miner worker statistics** | |||
We added a miner worker statistics page. Instead of viewing hashrate statistics | |||
consolidated per wallet address; you can now view them for each of your | |||
individual worker. | |||
## Basic features | |||
@@ -4,7 +4,7 @@ Usage | |||
#### Requirements | |||
* Coin daemon(s) (find the coin's repo and build latest version from source) | |||
* [Node.js](http://nodejs.org/) v0.10+ ([follow these installation instructions](https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager)) | |||
* [Node.js](http://nodejs.org/) v4+ ([follow these installation instructions](https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager)) | |||
* [Redis](http://redis.io/) key-value store v2.6+ ([follow these instructions](http://redis.io/topics/quickstart)) | |||
* libssl required for the node-multi-hashing module | |||
* For Ubuntu: `sudo apt-get install libssl-dev` | |||
@@ -32,7 +32,7 @@ sudo apt-get install git redis-server libboost1.55-all-dev nodejs-dev nodejs-leg | |||
Clone the repository and run `npm update` for all the dependencies to be installed: | |||
```bash | |||
git clone https://github.com/billaue2/cryptonote-sumokoin-pool.git pool | |||
git clone https://github.com/SadBatman/cryptonote-sumokoin-pool.git pool | |||
cd pool | |||
npm update | |||
``` | |||
@@ -181,7 +181,7 @@ Explanation for each field: | |||
"denomination": 10000000, //truncate to this precision and store remainder | |||
"useDynamicTransferFee": true, // use (simple) dynamic transfer fee | |||
"transferFeePerPayee": 4000000, // dynamic transfer fee per payee/transaction | |||
"minerPayFee": true, // miner pays (dynamic) transfer fee instead of pool owner | |||
"minerPayFee": true, // miner pays (dynamic) transfer fee instead of pool owner | |||
// When the block reward is a non-zero value; it will be used to provide a | |||
// payout estimate in the miner statistics. | |||
"blockReward": 0 | |||
@@ -301,20 +301,19 @@ Explanation for each field: | |||
} | |||
``` | |||
#### 3) [Optional] Configure cryptonote-easy-miner for your pool | |||
Your miners that are Windows users can use [cryptonote-easy-miner](https://github.com/zone117x/cryptonote-easy-miner) | |||
which will automatically generate their wallet address and stratup multiple threads of simpleminer. You can download | |||
it and edit the `config.ini` file to point to your own pool. | |||
Inside the `easyminer` folder, edit `config.init` to point to your pool details | |||
```ini | |||
pool_host=example.com | |||
pool_port=5555 | |||
#### 3) Start the pool | |||
First make sure that the sumokoind and sumo-wallet-rpc daemons are running: | |||
```bash | |||
./sumokoind --detach | |||
./sumo-wallet-rpc --wallet-file=<wallet name> --rpc-bind-port <wallet port> | |||
``` | |||
Rezip and upload to your server or a file host. Then change the `easyminerDownload` link in your `config.json` file to | |||
point to your zip file. | |||
When both are running it's worth to make sure the sumokoind has it's blockchain | |||
synced. If this is not the case your pool will show errors with "Core is busy" | |||
until sumokoind is synchronized. | |||
#### 4) Start the pool | |||
```bash | |||
node init.js | |||
@@ -343,7 +342,7 @@ node init.js -module=api | |||
[Example screenshot](http://i.imgur.com/SEgrI3b.png) of running the pool in single module mode with tmux. | |||
#### 5) Host the front-end | |||
#### 4) Host the front-end | |||
Simply host the contents of the `website_example` directory on file server capable of serving simple static files. | |||
@@ -403,10 +402,9 @@ the Node.js modules, and any config files that may have been changed. | |||
### Setting up Testnet | |||
Monero does have a testnet. Call daemon and simplewallet with --tesnet to connect to it. | |||
Downloading the testnet blockchain may still take a while to start usint testnet, so you can use this excellent | |||
tutorial http://moneroexamples.github.io/private-testnet/ to set up a private testnet. Should work with other | |||
coins, too, but below are original testnet instructions by server43 for reference, too. | |||
Sumokoin does have a testnet. Call daemon and simplewallet with --tesnet to connect to it. | |||
Downloading the testnet blockchain may still take a while to start usint testnet, so you can use this excellent | |||
Monero tutorial, which also applies to Sumokoin, at http://moneroexamples.github.io/private-testnet/ to set up a private testnet. | |||
For cryptonote based coins that don't have a testnet mode (yet), you can effectively create a testnet with the following steps: | |||
@@ -1,189 +0,0 @@ | |||
{ | |||
"coin": "monero", | |||
"symbol": "XMR", | |||
"coinUnits": 100000000, | |||
"coinDifficultyTarget": 120, | |||
"logging": { | |||
"files": { | |||
"level": "info", | |||
"directory": "logs", | |||
"flushInterval": 5 | |||
}, | |||
"console": { | |||
"level": "info", | |||
"colors": true | |||
} | |||
}, | |||
"poolServer": { | |||
"enabled": true, | |||
"clusterForks": "auto", | |||
"poolAddress": "4A2Gv6uMc3vZsGMTEMnBsgaJMtQeEBCzaigneqJN8bzkTit2Di5MVm2fjE9rfWMz4yMVxSBL3Q9QzbafXUBXzUcANNnjjEn", | |||
"blockRefreshInterval": 100, | |||
"blockRefreshForce": 100, | |||
"minerTimeout": 900, | |||
"ports": [ | |||
{ | |||
"port": 443, | |||
"difficulty": 20000, | |||
"desc": "SSL", | |||
"type": "SSL" | |||
}, | |||
{ | |||
"port": 3333, | |||
"difficulty": 1000, | |||
"desc": "Low end hardware" | |||
}, | |||
{ | |||
"port": 5555, | |||
"difficulty": 2000, | |||
"desc": "Mid range hardware" | |||
}, | |||
{ | |||
"port": 7777, | |||
"difficulty": 10000, | |||
"desc": "High end hardware" | |||
}, | |||
{ | |||
"port": 8888, | |||
"difficulty": 10000, | |||
"desc": "Hidden port", | |||
"hidden": true | |||
} | |||
], | |||
"varDiff": { | |||
"minDiff": 100, | |||
"maxDiff": 200000, | |||
"targetTime": 100, | |||
"retargetTime": 30, | |||
"variancePercent": 30, | |||
"maxJump": 100 | |||
}, | |||
"fixedDiff": { | |||
"enabled": true, | |||
"addressSeparator": "." | |||
}, | |||
"shareTrust": { | |||
"enabled": true, | |||
"min": 10, | |||
"stepDown": 3, | |||
"threshold": 10, | |||
"penalty": 30 | |||
}, | |||
"banning": { | |||
"enabled": true, | |||
"time": 600, | |||
"invalidPercent": 25, | |||
"checkThreshold": 30 | |||
} | |||
}, | |||
"payments": { | |||
"enabled": true, | |||
"interval": 600, | |||
"maxAddresses": 50, | |||
"mixin": 3, | |||
"transferFee": 5000000000, | |||
"minPayment": 1000000000000, | |||
"maxTransactionAmount": 0, | |||
"denomination": 100000000000 | |||
}, | |||
"blockUnlocker": { | |||
"enabled": true, | |||
"interval": 30, | |||
"depth": 60, | |||
"poolFee": 2, | |||
"devDonation": 0.1, | |||
"coreDevDonation": 0.1, | |||
"extraFeaturesDevDonation":0.1 | |||
}, | |||
"api": { | |||
"enabled": true, | |||
"hashrateWindow": 600, | |||
"updateInterval": 30, | |||
"port": 8117, | |||
"blocks": 30, | |||
"payments": 30, | |||
"ssl": false, | |||
"sslport": 8119, | |||
"sslcert": "./certs/cert.pem", | |||
"sslkey": "./certs/privkey.pem", | |||
"sslca": "./certs/chain.pem", | |||
"password": "your_password" | |||
}, | |||
"daemon": { | |||
"host": "127.0.0.1", | |||
"port": 18081 | |||
}, | |||
"wallet": { | |||
"host": "127.0.0.1", | |||
"port": 18082 | |||
}, | |||
"redis": { | |||
"host": "127.0.0.1", | |||
"port": 6379 | |||
}, | |||
"monitoring": { | |||
"daemon": { | |||
"checkInterval": 60, | |||
"rpcMethod": "getblockcount" | |||
}, | |||
"wallet": { | |||
"checkInterval": 60, | |||
"rpcMethod": "getbalance" | |||
} | |||
}, | |||
"charts": { | |||
"pool": { | |||
"hashrate": { | |||
"enabled": true, | |||
"updateInterval": 60, | |||
"stepInterval": 1800, | |||
"maximumPeriod": 86400 | |||
}, | |||
"workers": { | |||
"enabled": true, | |||
"updateInterval": 60, | |||
"stepInterval": 1800, | |||
"maximumPeriod": 86400 | |||
}, | |||
"difficulty": { | |||
"enabled": true, | |||
"updateInterval": 1800, | |||
"stepInterval": 10800, | |||
"maximumPeriod": 604800 | |||
}, | |||
"price": { | |||
"enabled": true, | |||
"updateInterval": 1800, | |||
"stepInterval": 10800, | |||
"maximumPeriod": 604800 | |||
}, | |||
"profit": { | |||
"enabled": true, | |||
"updateInterval": 1800, | |||
"stepInterval": 10800, | |||
"maximumPeriod": 604800 | |||
} | |||
}, | |||
"user": { | |||
"hashrate": { | |||
"enabled": true, | |||
"updateInterval": 180, | |||
"stepInterval": 1800, | |||
"maximumPeriod": 86400 | |||
}, | |||
"payments": { | |||
"enabled": true | |||
} | |||
} | |||
} | |||
} |
@@ -57,4 +57,4 @@ for(var configOption in donationAddresses) { | |||
} | |||
} | |||
global.version = "v1.1.5_uni"; | |||
global.version = "v1.2.0_uni"; |