Open Source Etho Mining Pool - tuned for 8000000 block hardfork on EthoProtocol blockchain.

Open Source Etho Mining Pool - tuned for 8000000 block hardfork on EthoProtocol blockchain.

image to be updated soon! Miner's stats page

Features

This pool is being further developed to provide an easy to use pool for Etho miners. This software is functional however an optimised release of the pool is expected soon. Testing and bug submissions are welcome!

  • Support for HTTP and Stratum mining
  • Detailed block stats with luck percentage and full reward
  • Failover geth instances: geth high availability built in
  • Modern beautiful Ember.js frontend
  • Separate stats for workers: can highlight timed-out workers so miners can perform maintenance of rigs
  • JSON-API for stats

Building on Linux

Dependencies:

  • go >= 1.9
  • geth or parity
  • redis-server >= 2.8.0
  • nodejs >= 4 LTS
  • nginx

First of all let's get up to date and install the dependencies:

sudo apt-get update && sudo apt-get dist-upgrade -y
sudo apt-get install build-essential make git screen unzip curl nginx pkg-config tcl -y

Install GO:

wget https://storage.googleapis.com/golang/go1.14.2.linux-amd64.tar.gz
tar -xvf go1.14.2.linux-amd64.tar.gz
rm go1.14.2.linux-amd64.tar.gz
sudo mv go /usr/local
export GOROOT=/usr/local/go
export PATH=$GOPATH/bin:$GOROOT/bin:$PATH

Install Node.js

curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
sudo apt-get install nodejs -y

Clone & compile:

git config --global http.https://gopkg.in.followRedirects true
git clone https://github.com/def670/ethoclub.git
cd ethoclub
make

after you have completed "make" you will need to do:

mv main.go main.go.old
mv main.go.0 main.go
cd api
mv server.go server.go.old
mv server.go.0 server.go

This will alter the two programs to add in the charts

Installing Redis latest version

wget http://download.redis.io/redis-stable.tar.gz
tar xvzf redis-stable.tar.gz
cd redis-stable
make
make test
sudo make install

sudo mkdir /etc/redis
sudo cp ~/redis-stable/redis.conf /etc/redis
sudo nano /etc/redis/redis.conf

Set supervised to systemd

supervised systemd

Set the dir

dir /var/lib/redis

**Create a Redis systemd Unit File

sudo nano /etc/systemd/system/redis.service

Add

[Unit]
Description=Redis In-Memory Data Store
After=network.target

[Service]
User=redis
Group=redis
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf
ExecStop=/usr/local/bin/redis-cli shutdown
Restart=always

[Install]
WantedBy=multi-user.target

**Create the Redis User, Group and Directories

sudo adduser --system --group --no-create-home redis
sudo mkdir /var/lib/redis
sudo chown redis:redis /var/lib/redis
sudo chmod 770 /var/lib/redis

Start and Test Redis

sudo systemctl start redis
sudo systemctl status redis

Install nodejs

curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
sudo apt-get install nodejs -y

Install Geth

cd ~
wget -N https://github.com/Ether1Project/Ether1/releases/download/V1.5.3/etho-linux-1.5.3.tar.gz
tar -zxvf etho-linux-1.5.3.tar.gz
rm etho-linux-1.5.3.tar.gz
sudo mv geth /usr/local/bin/geth 

Make geth system service

sudo nano /etc/systemd/system/geth.service

Copy the following

--mine --extradata " " User= [Install] WantedBy=multi-user.target">
[Unit]
Description=Geth for Pool
After=network-online.target

[Service]
ExecStart=/usr/local/bin/geth --rpc --rpcaddr 127.0.0.1 --rpcport 8545 --syncmode "fast" --etherbase 
     
       --mine --extradata "
      
       "
User=
       
        

[Install]
WantedBy=multi-user.target

       
      
     

Then run geth by the following commands

sudo systemctl enable geth
sudo systemctl start geth
sudo systemctl status geth

Run console

geth attach

Register pool account and open wallet for transaction. This process is always required, when the wallet node is restarted.

personal.newAccount()
personal.unlockAccount(eth.accounts[0],"password",40000000)

or alternatly - if you have existing ethbase keystore files you can put them into ~/.ether1/keystore/ then you will be able to use geth attach with the personal unlock above with your password where "password" is.

Set up pool

check out the config.examples directory for a couple different setup styles. you can use "all.json" to start all the pool services, or your can use "api.json, pool.json, payout.json, and unlocker.json" (all called individually) to run as 4 parts. (this way you can restart parts that need restarting without having to restart the whole pool).
Also see the setup as a service section below - this works with either method... however do not do service setups for all 5 of the examples - either all.json or the other 4. If all 5 are running services then your pool will bork for sure.

cd config.examples/           <--these config files are adjusted to work with charts.  example.config.json in the root directory is not.
nano all.json                 <--adjust your desired ports and IPs
cp all.json ../build/bin/     <--MAKE BACKUPS of your config files - this directory will be overwritten if you do "make" on the pool again...YOU ARE WARNED!

Make pool system service

sudo nano /etc/systemd/system/pool.service

Copy the following

[Unit] Description=Ethoclub Pool After=geth.target

[Service] ExecStart=/home//ethoclub/build/bin/open-ethereum-pool /home//ethoclub/all.json

[Install] WantedBy=multi-user.target Then run pool by the following commands

sudo systemctl enable all.service   <--enables system to control pool - will automatically restart if computer rebooted
sudo systemctl start all.service    <--starts the service
sudo systemctl status all.service   <--shows status of the service
sudo systemctl stop all.service     <--stops the service
sudo systemctl restart all.service  <--restarts the service
sudo systemctl disable all.service  <--disables system control of service - will NOT automatically restart when rebooted

Building Frontend

cd www

Modify your configuration file

nano ~/ethoclub/www/config/environment.js

Create frontend

cd ~/ethoclub/www/

sudo npm install -g bower
sudo chown -R $USER:$GROUP ~/.npm
sudo chown -R $USER:$GROUP ~/.config
npm install
bower install
./build.sh

Configure nginx to serve API on /api subdirectory. Configure nginx to serve www/dist as static website.

Serving API using nginx

Edit this

sudo nano /etc/nginx/sites-available/default

Delete everything in the file and replace it with the text below. Be sure to change with your info

upstream api {
        server 127.0.0.1:8090;
}

server {
  listen 80 default_server;
  listen [::]:80 default_server;
  root /home/
   
    /XeroDreamPool/www/dist;
 
 index index.html index.htm index.nginx-debian.html;
 
server_name _;
 
location / {
        try_files $uri $uri/ =404;
        }
  
location /api {
        proxy_pass http://api;
        }
}

   

Save and close

Restart nginx

sudo service nginx restart

Notes

  • Unlocking and payouts are sequential, 1st tx go, 2nd waiting for 1st to confirm and so on. You can disable that in code. Carefully read docs/PAYOUTS.md.
  • Also, keep in mind that unlocking and payouts will halt in case of backend or node RPC errors. In that case check everything and restart.
  • You must restart module if you see errors with the word suspended.
  • Don't run payouts and unlocker modules as part of mining node. Create separate configs for both, launch independently and make sure you have a single instance of each module running.
  • If poolFeeAddress is not specified all pool profit will remain on coinbase address. If it specified, make sure to periodically send some dust back required for payments.

Credits

Made by sammy007. Licensed under GPLv3.

Contributors

[Alex Leverington] Primate411 Exlo84 def KJ

Owner
Don Kingdon
nixy geek, hvac/gas contractor, nixy geek
Don Kingdon
Similar Resources

Flashbots utilities in Go: Blocks & Transactions API, and tools to spot bundle and block irregularities

Utilities for Flashbots Go API client for the mev-blocks API for information about Flashbots blocks and transactions Detect bundle errors: (a) out of

Nov 26, 2022

Curated list of resources for the development and applications of block chain

Curated list of resources for the development and applications of block chain

Awesome Blockchain Curated list of resources for the development and applications of block chain. The blockchain is an incorruptible digital ledger of

Dec 28, 2021

Bitprint - Figlet for bitmap fonts, using unicode block elements

bitprint Figlet for bitmap fonts, using unicode block elements. Usage bitprint

Feb 12, 2022

hack-browser-data is an open-source tool that could help you decrypt data from the browser.

hack-browser-data is an open-source tool that could help you decrypt data  from the browser.

hack-browser-data is an open-source tool that could help you decrypt data ( password|bookmark|cookie|history|credit card|download

Dec 23, 2022

Security research and open source implementation of the Apple 'Wireless Accessory Configuration' (WAC) protocol

Security research and open source implementation of the Apple 'Wireless Accessory Configuration' (WAC) protocol

Apple 'Wireless Accessory Configuration' (WAC) research Introduction This repository contains some research on how the WAC protocol works. I was mostl

Jul 28, 2022

An open source smart contract platform

EOSIO - The Most Powerful Infrastructure for Decentralized Applications Welcome to the EOSIO source code repository! This software enables businesses

Jan 7, 2023

DERO Homomorphic Encryption Blockchain Protocol

DERO Homomorphic Encryption Blockchain Protocol

Homomorphic encryption is a form of encryption allowing one to perform calculations on encrypted data without decrypting it first. The result of the computation is in an encrypted form, when decrypted the output is the same as if the operations had been performed on the unencrypted data.

Dec 27, 2022

A simplified blockchain implementation in Golang

A simplified blockchain implementation in Golang

Dec 31, 2022

DERO: Secure, Anonymous Blockchain with Smart Contracts. Subscribe to Dero announcements by sending mail to [email protected] with subject: subscribe announcements

DERO: Secure, Anonymous Blockchain with Smart Contracts.  Subscribe to Dero announcements by sending mail to lists@dero.io with subject: subscribe announcements

Welcome to the Dero Project DERO News Forum Wiki Explorer Source Twitter Discord Github Stats WebWallet Medium Table of Contents ABOUT DERO PROJECT DE

Dec 7, 2022
Comments
  • main.go

    main.go

    Hello, it's main.go up to date?

    When i clone and compile "make", it return error on - github.com/yvasiyarov/gorelic

    Makefile:10: recipe for target 'all' failed make: *** [all] Error 2

    i think the "github.com/yvasiyarov/gorelic" is not working anymore.

    Can you give a look?

    I also tried in ubuntu 18 server and gave me other error Captura de ecrã 2022-06-29 201303 .

  • Help me

    Help me

    Hola ,tuve un error al configurar eth.coinbase a un monedero externo y unlock payment a un monedero local, el problema es que el bloque minado figura con el saldo pero no puedo disponer de esas monedas, cómo.podria.solucionar este tema?. Gracias

Open Source Ethereum Mining Pool With Go
Open Source Ethereum Mining Pool With Go

Open Source Ethereum Mining Pool Features This pool is being further developed to provide an easy to use pool for Ethereum miners. This software is fu

Mar 10, 2022
Pet-blockchain-go is a simple proof of work mining algorithm in Go.

pet-blockchain-go Pet-blockchain-go is a simple proof of work mining algorithm in Go. Inspired by: cosme12 / SimpleCoin nosequeldeebee / blockchain-tu

Mar 10, 2022
Poweth - Etchash go module intended for use by core-pool (and open-ethereum-pool)

go-etchash Etchash go module intended for use by core-pool (and open-ethereum-po

Jan 20, 2022
Go-block-api - Golang implementation of Ethereum Block API

Go Ethereum Block API Golang implementation of Ethereum Block API This API can s

Jan 13, 2022
Block-top - Tool to watch block production

block top Continuously watch the block production from one or many (or all) lead

Jan 24, 2022
Api for getting blockchain block and transaction details in Go.

Getting Blockchain Data Api for getting blockchain block and transaction details Things you need Go: brew install go Install docker Setup go folder in

Dec 14, 2021
Blockchain-go - A repository that houses a blockchain implemented in Go

blockchain-go This is a repository that houses a blockchain implemented in Go. F

May 1, 2022
Mastering Bitcoin 2nd Edition - Programming the Open Blockchain

Code Examples: Mastering Bitcoin Mastering Bitcoin is a book for developers, although the first two chapters cover bitcoin at a level that is also app

Jan 1, 2023
Source for the Chillis & Associates blockchain nodes

Chillis & Associates chillisd Repository This repository contains the source code for validators on the Chillis network. The source is based on the wa

Feb 8, 2022
The source-code for: "Build a Blockchain from Scratch in Go" eBook.
The source-code for:

The Blockchain Bar The source-code for: "Build a Blockchain from Scratch in Go" eBook. ?? Get the eBook from: https://gumroad.com/l/build-a-blockchain

Jan 2, 2023