upstart.conf.
-### Install go lang
+### Building Frontend
- $ sudo apt-get install -y build-essential golang-1.10-go unzip
- $ sudo ln -s /usr/lib/go-1.10/bin/go /usr/local/bin/go
+Install nodejs. I suggest using LTS version >= 4.x from https://github.com/nodesource/distributions or from your Linux distribution or simply install nodejs on Ubuntu Xenial 16.04.
-### Install redis-server
+> NOTE: at this point keep your nodejs version <= 10.x.
- $ sudo apt-get install redis-server
+The frontend is a single-page Ember.js application that polls the pool API to render miner stats.
+
+ cd www
-It is recommended to bind your DB address on 127.0.0.1 or on internal ip. Also, please set up the password for advanced security!!!
+Change ApiUrl: '//example.net/' in www/config/environment.js to match your domain name. Also don't forget to adjust other options.
-### Install nginx
+Install deps
- $ sudo apt-get install nginx
+ sudo npm install -g ember-cli@2.13
+ npm install -g bower
+ sudo chown -R $USER:$GROUP ~/.npm
+ sudo chown -R $USER:$GROUP ~/.config
+ npm install
+ bower install
-sample config located at configs/nginx.default.example (HINT, edit and move to /etc/nginx/sites-available/default)
+Build.
-### Install NODE
+ ./build.sh
-This will install the latest nodejs
+Configure nginx to serve API on /api subdirectory.
+Configure nginx to serve www/dist as static website.
- $ curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
- $ sudo apt-get install -y nodejs
+#### Serving API using nginx
-### Install Perkle Node
-See https://github.com/esprezzo/perkle
+Create an upstream for API:
-### Install Perkle Pool
+ upstream api {
+ server 127.0.0.1:8080;
+ }
- $ git clone https://github.com/yuriy0803/open-etc-pool-friends
- $ cd open-etc-pool-friends
- $ make all
+and add this setting after location /:
-If you see open-perkle-pool after ls ~/open-etc-pool-friends/build/bin/, the installation has completed.
+ location /api {
+ proxy_pass http://api;
+ }
- $ ls ~/open-etc-pool-friends/build/bin/
+#### Customization
-### Set up Perkle pool
+You can customize the layout using built-in web server with live reload:
- $ mv config.example.json config.json
- $ nano config.json
+ ember server --port 8082 --environment development
-Set up based on commands below.
+**Don't use built-in web server in production**.
+
+Check out www/app/templates directory and edit these templates
+in order to customise the frontend.
+
+### Configuration
+
+Configuration is actually simple, just read it twice and think twice before changing defaults.
+
+**Don't copy config directly from this manual. Use the example config from the package,
+otherwise you will get errors on start because of JSON comments.**
```javascript
{
- // The number of cores of CPU.
+ // Set to the number of CPU cores of your server
"threads": 2,
// Prefix for keys in redis store
"coin": "etc",
// Give unique name to each instance
"name": "main",
- // PPLNS rounds
- "pplns": 9000,
-
+ // mordor OR classic
+ "network": "classic",
"proxy": {
"enabled": true,
@@ -120,7 +145,7 @@ Set up based on commands below.
// Try to get new job from geth in this interval
"blockRefreshInterval": "120ms",
"stateUpdateInterval": "3s",
- // If there are many rejects because of heavy hash, difficulty should be increased properly.
+ // Require this share difficulty from miners
"difficulty": 2000000000,
/* Reply error to miner instead of job if redis is unavailable.
@@ -182,11 +207,6 @@ Set up based on commands below.
"payments": 50,
// Max numbers of blocks to display in frontend
"blocks": 50,
- // Frontend Chart related settings
- "poolCharts":"0 */20 * * * *",
- "poolChartsNum":74,
- "minerCharts":"0 */20 * * * *",
- "minerChartsNum":74
/* If you are running API node on a different server where this module
is reading data from redis writeable slave, you must run an api instance with this option enabled in order to purge hashrate stats from main redis node.
@@ -206,12 +226,12 @@ Set up based on commands below.
"upstream": [
{
"name": "main",
- "url": "http://127.0.0.1:8501",
+ "url": "http://127.0.0.1:8545",
"timeout": "10s"
},
{
"name": "backup",
- "url": "http://127.0.0.2:8501",
+ "url": "http://127.0.0.2:8545",
"timeout": "10s"
}
],
@@ -219,10 +239,9 @@ Set up based on commands below.
// This is standard redis connection options
"redis": {
// Where your redis instance is listening for commands
- // NOTE THAT THE POOL IS CONFIGURED FOR Redis database "1"
"endpoint": "127.0.0.1:6379",
"poolSize": 10,
- "database": 1,
+ "database": 0,
"password": ""
},
@@ -231,9 +250,9 @@ Set up based on commands below.
"enabled": false,
// Pool fee percentage
"poolFee": 1.0,
- // the address is for pool fee. Personal wallet is recommended to prevent from server hacking.
+ // Pool fees beneficiary address (leave it blank to disable fee withdrawals)
"poolFeeAddress": "",
- // Amount of donation to a pool maker. 10 percent of pool fee is donated to a pool maker now. If pool fee is 1 percent, 0.1 percent which is 10 percent of pool fee should be donated to a pool maker.
+ // Donate 10% from pool fees to developers
"donate": true,
// Unlock only if this number of blocks mined back
"depth": 120,
@@ -244,34 +263,33 @@ Set up based on commands below.
// Run unlocker in this interval
"interval": "10m",
// Geth instance node rpc endpoint for unlocking blocks
- "daemon": "http://127.0.0.1:8501",
+ "daemon": "http://127.0.0.1:8545",
// Rise error if can't reach geth in this amount of time
"timeout": "10s"
},
// Pay out miners using this module
"payouts": {
- "enabled": true,
+ "enabled": false,
// Require minimum number of peers on node
- "requirePeers": 5,
+ "requirePeers": 25,
// Run payouts in this interval
"interval": "12h",
// Geth instance node rpc endpoint for payouts processing
- "daemon": "http://127.0.0.1:8501",
+ "daemon": "http://127.0.0.1:8545",
// Rise error if can't reach geth in this amount of time
"timeout": "10s",
- // Address with pool coinbase wallet address.
+ // Address with pool balance
"address": "0x0",
// Let geth to determine gas and gasPrice
"autoGas": true,
// Gas amount and price for payout tx (advanced users only)
"gas": "21000",
"gasPrice": "50000000000",
- // The minimum distribution of mining reward. It is 1 CLO now.
- "threshold": 1000000000,
+ // Send payment only if miner's balance is >= 0.5 Ether
+ "threshold": 500000000,
// Perform BGSAVE on Redis after successful payouts session
"bgsave": false
- "concurrentTx": 10
}
}
```
@@ -285,142 +303,6 @@ I recommend this deployment strategy:
* Unlocker and payouts instance - 1x each (strict!)
* API instance - 1x
-
-### Run Pool
-It is required to run pool by serviced. If it is not, the terminal could be stopped, and pool doesn’t work.
-
- $ sudo nano /etc/systemd/system/etherpool.service
-
-Copy the following example
-
-```
-[Unit]
-Description=Etherpool
-After=perkle.target
-
-[Service]
-Type=simple
-ExecStart=/home/| ID | -{{t "account.hashrate"}} ({{t "account.short_average_abbrv"}} / {{t "account.short_average_abbrv"}}) | -{{t "account.earnings.worker"}} | -{{t "account.difficulty"}} | -{{t "account.server"}} | -{{t "account.valid"}} | -{{t "account.last_share"}} | +Hashrate (rough, short average) | +Hashrate (accurate, long average) | +Last Share |
|---|---|---|---|---|---|---|---|---|---|
| {{k}} | -{{format-hashrate v.hr}} / {{format-hashrate v.hr2}} | -{{format-number (worker-earnperday v.hr netstats.hashrate)}} {{config.Unit}} | -{{format-difficulty v.difficulty}} | -{{v.hostname}} | -{{v.valid}} | +{{format-hashrate v.hr}} | +{{format-hashrate v.hr2}} | {{format-relative (seconds-to-ms v.lastBeat)}} |
| {{t "payout.time"}} | -{{t "payout.txid"}} | -{{t "payout.amount"}} {{config.Unit}} | +Time | +Tx ID | +Amount |
|---|---|---|---|---|---|
| {{format-date-locale tx.timestamp}} | - {{tx.tx}} + {{tx.tx}} | {{format-balance tx.amount}} |
{{t "error.message"}}
+Usually it's just a temporal issue and mining is not affected.
{{t "block.pool_rewards"}}
- - {{format-html-message "block.pool_notice.html" success=520}} - +Pool always pays full block rewards including TX fees and uncle rewards.
+ + Block maturity requires up to 520 blocks. + Usually it's less indeed. +| {{t "block.height"}} | -{{t "block.hash"}} | -{{t "block.time_found"}} | -{{t "block.variance"}} | -{{t "block.reward"}} | -
|---|
| Height | +Block Hash | +Time Found | +Variance | +Reward | +Type | +
|---|
| {{t "block.height"}} | -{{t "block.hash"}} | -{{t "block.time_found"}} | -{{t "block.variance"}} | -{{t "block.reward"}} | -
|---|
| Height | +Block Hash | +Time Found | +Variance | +Reward | +Type | +
|---|
| {{t "block.height"}} | -{{t "block.time_found"}} | -{{t "block.variance"}} | +Height | +Time Found | +Variance |
|---|---|---|---|---|---|
| {{format-number block.height}} | +{{format-number block.height}} | {{format-date-locale block.timestamp}} | {{#if block.isLucky}} @@ -27,5 +27,5 @@ |
Download one of the following GPU miners. -
In order to mine etchash you need + lolMiner v1.12+ +
+./lolMiner --pool {{config.StratumHost}}:{{config.StratumPort}} --user [YOUR_ETC_ADDRESS] -c ETC {{if (equals config.Network 'mordor') "--ecip1099-activation 84"}} --ethstratum=ETHPROXY
0xd92fa5a9732a0aec36dc8d5a6a1305dc2d3e09e6.
+
+ Full example:
+ ./lolMiner --pool {{config.StratumHost}}:{{config.StratumPort}} --user 0xd92fa5a9732a0aec36dc8d5a6a1305dc2d3e09e6 -c ETC {{if (equals config.Network 'mordor') "--ecip1099-activation 84"}} --ethstratum=ETHPROXY.
+
$ geth account new> geth account newIn order to mine etchash you need + nanominer v1.12.0+ +
++; Address to send funds to. Change this address to yours! +wallet = 0xd92fa5a9732a0aec36dc8d5a6a1305dc2d3e09e6 -Using online wallet
-
0x8b92c50e1c39466f900a578edb20a49356c4fe24.
- worker-1
- Download Claymore Dual Miner (AMD/NVIDIA): [ANN] Bitcointalk.org
-
- EthDcrMiner64 -epool {{config.StratumHost}}:{{config.StratumPort}} -esm 0 -ewal 0x0000000000000000000000000000000000000000 -eworker your-worker-1 -allcoins 1 -allpools 1
+
+
CPU mining is not recommended.
+By using the pool you accept all possible risks related to experimental software usage.
+ Pool owner can't compensate any irreversible losses, but will do his best to prevent worst case.
+
EthDcrMiner64 - executable name under Windows. use ./ethdcrminer64 under Linux/Ubuntu{{config.StratumHost}} - Stratum Server name-esm 0 and {{config.StratumPort}} port number for Stratum Server.0x0000000000000000000000000000000000000000 - Your wallet addressyour-worker-1 - Your worker name- Download Ethminer (AMD/NVIDIA): Ethminer source/binary at Github -
-
- ethminer -SP 1 -U -S {{config.StratumHost}}:{{config.StratumPort}} -O 0x0000000000000000000000000000000000000000.your-worker-1 --farm-recheck 2000
-
-SP 1 - option for Stratum server-U - NVIDIA GPU or -G for AMD GPU-S {{config.StratumHost}}:{{config.StratumPort}} - stratum_server_name:stratum_port_number-O 0x0000000000000000000000000000000000000000.your-worker-1 - your_wallet_address.your_worker_name--farm-recheck 2000 - Leave 2000 ms between checks for changed work (default 500ms. use higher value to use stratum for stability)
- ethminer -U -F {{config.HttpHost}}:{{config.HttpPort}}/0x0000000000000000000000000000000000000000/your-worker-1 --farm-recheck 200
-
-U - NVIDIA GPU or -G for AMD GPU-F {{config.HttpHost}}:{{config.HttpPort}}/0x0000000000000000000000000000000000000000/your-worker-1
- 0x0000000000000000000000000000000000000000/your-worker-1 - your_wallet_address.your_worker_namestratum+tcp://{{config.StratumHost}}:8002
- stratum+tcp://{{config.StratumHost}}:8004
- stratum+tcp://{{config.StratumHost}}:8009
- This is an experimental pool running on the Mordor testnet! All mined coins are for testing purposes only.
| {{t "luck.blocks"}} | -{{t "luck.shares_diff"}} | -{{t "luck.uncle_rate"}} | -{{t "luck.orphan_rate"}} | +Blocks | +Shares/Diff | +Uncle Rate | +Orphan Rate |
|---|
| {{t "miners.login"}} | -{{t "miners.hashrate"}} | -{{t "miners.last_beat"}} | +Login | +Hashrate | +Last Beat |
|---|
{{t "payments.pay_tx"}}
- {{t "payments.total_payments_sent"}}: {{model.paymentsTotal}} +Pool always pays tx fees from it's own pocket for now.
+ Total payments sent: {{model.paymentsTotal}}| {{t "payments.time"}} | -{{t "payments.amount"}} | -{{t "payments.address"}} | -{{t "payments.txid"}} | +Time | +Amount | +Address | +Tx ID | {{format-date-locale tx.timestamp}} | {{format-number tx.formatAmount}} | - {{tx.address}} + {{tx.address}} | - {{format-tx tx.tx}} + {{format-tx tx.tx}} | {{/each}} @@ -34,6 +34,6 @@
|---|
jd{|V&S`7_t~S8<`1sYp{{^H0g9Z&UJih~YzRCk{z4g}Jhz~e!;(knTKTp>E
z`Cb{XKQVM5YVZ52-=DU9VxPS?tXdssW_MOTNuH1ST#5R*3%4y%KO6mRy@o&T%-3r!
zCclm2DGO*W(co_K*|N_i2l2>Uj4k6#aAIfx?E#1KLl7rWXxT?FZfg?fG^@YTncPQf
z|E(SW4jQ1!0P6QeTzv7xR}la9I3U#bQT&e{J-VMe+n=Y_`Z0F@&8aJ7LCoihPsW^4
z-;XXb*grFwh`f>WnoD9vq70llR2~Em?KZ68e7$c2*Uh;mWdRdE{Oo5h$sW`jLMpP_
zGtN{NFf@RD4@m<^3s_%}zCrd^Oel&}8hxhMY3&$4)%_VAKqr>YTwx4<$&evKZXy2R
z*LU)N9HaRE>Z`9thlGSM?oV@mJUQ-1F$wb IxkvJ4!{Mzm^3bP%8GVu$Me9E0dODd~y_%XX3*nZKqCGP>~}qZ+i%J
zU2oO8ANF_K1@HFbfY %>PH!@)wfse(D%v<9Q}so
z7*2}tq&?Ixr32K$D-rG*50LyLr{;9!39iz59z$~8Q2ftSH?vq{ce-a|fTEqknj-lD
zR~gO3(g=D$zH$MKE1YPunZ74?K6DP `z+=E
z>#exo!8Sk7$M18WdHBTp`1OE1t(8hA$WlCxm&4F8wm&g~g<{34tAja1U<_rfRK7uI
z6nYHPe^8fCZ4NK%@$fu;hou_FE7q7D>lW7aKYZ#|i|??enU6)L4EO (U6a?9)8nr69=zxnnz~hKDBTMr)JeT4P_i5;Y%K7*%4R#CGJ)RLcN^^4U
zaz1~%A;m`y%fBZajsk#19n>?0IoAX>0Z}W>Z7Vs)#0NR3o
zItGqm8Igi(0M~$a$q!KM{xsnX
o(k