Skip to content
A pool mining coordinator that communicates with mining software using JSONRPC
JavaScript CSS HTML
Branch: master
Clone or download

README.md

Token Mining Pool

Developed by the 0xBitcoin Community

(GNU PUBLIC LICENSE)

A pool for mining EIP918 Tokens

See me running at http://tokenminingpool.com

Windows GPU Miner 1 https://bitbucket.org/LieutenantTofu/cosmic-v3/downloads/COSMiC-v4.1.1-MultiGPU-TMP.zip

Windows GPU Miner 2 https://github.com/mining-visualizer/MVis-tokenminer/releases

Windows GPU Miner 3 https://github.com/lwYeo/SoliditySHA3MinerUI/releases/tag/1.0.2

Linux GPU Miner https://github.com/lwYeo/SoliditySHA3Miner/releases

BASIC SETUP (needs Node 8.10)

  1. npm install -g node-gyp 1.1. sudo apt-get install build-essential

You may need to do.. (depending on operating system and python version) 1.2.sudo apt-get install python2.7 1.3.npm config set python python2.7

  1. npm install

  2. rename 'sample.account.config.js' to 'account.config.js' and fill it with the pool's ethereum account data (make two new accounts, one for minting one for payments and fill both with a small amount of ETH)

  3. install redis-server and start it with 'npm run redis' in another screen ('screen -S redis', ctrl+shift+A+D)

  4. Edit pool.config.js to your tastes (optional)

  5. Deploy two contracts (see the section below) and add their addresses to app/assets/contracts/DeployedContractInfo.json

  6. Edit the website files in /app to change the look of the website (optional)

  7. Install mongodb, make sure it is running as a daemon service

  8. 'npm run webpack' #(to build the website files)

  9. 'npm run server' #(or 'npm run server test 'for Ropsten test mode)

CONFIGURING - set up account.config.js and pool.config.js

pool.config.js
var poolconfig = {
  minimumShareDifficulty: 5000,   //lowest miner share difficulty
  maximumShareDifficulty: 10000    //highest miner share difficulty
  solutionGasPriceWei: 10,   //ether paid by the pool for each mint
  transferGasPriceWei: 6,   //ether paid by the pool for each payment
  poolTokenFee: 5,     //percent of tokens the pool keeps for itself
  communityTokenFee: 2,   //percent of tokens the pool pledges to donate
  minBalanceForTransfer: 1500000000,   
  payoutWalletMinimum: 100000000000,
  allowCustomVardiff: false,
  rebroadcastPaymentWaitBlocks: 500,
  minPaymentsInBatch: 5,
  //web3provider: "http://127.0.0.1:8545"   //point at Geth or remove to use Infura
}

Deploying Contracts

[found in app/assets/contracts/deployedContractInfo.json]

EDIT THIS FILE!!!

  • Replace 'mintforwarder' address with your own deployed version of the contract !!!
  • Replace 'batch payments' contract address as well !!! your own deployed contract !!

Here are examples of these contracts to copy and paste the code and deploy using https://remix.ethereum.org:

Mint Helper (Mint Forwarder) Contract Code: https://etherscan.io/address/0xeabe48908503b7efb090f35595fb8d1a4d55bd66#code

Batched Payments Contract Code: https://etherscan.io/address/0xebf6245689194a6e43096551567827c6726ede0b#code

HOW TO TEST

  1. Point a EIP918 tokenminer (https://github.com/0xbitcoin/0xbitcoin-miner) at your pool using http://localhost:8080 (make sure firewall allows this port)
  2. Start the server with 'npm run webpack' and 'npm run server test' to put it into ropsten mode
  3. View website interface at http://localhost:3000 (Feel free to set up nginx/apache to serve the static files in /public)

You should see that the miner is able to successfully submit shares to the pool when the share difficulty is set to a low value such as 100 and the pool is in 'ropsten mode'. Then you can run the pool on mainnet using 'npm run server'.

Installing MongoDB

Digitalocean guide: https://www.digitalocean.com/community/tutorials/how-to-install-mongodb-on-ubuntu-16-04#step-3-%E2%80%94-adjusting-the-firewall-(optional)

  • Mongo is used to store data related to miner shares, balances, and payments

Installing Redis

  1. sudo apt-get install redis
  2. sudo service redis-server start
  • Redis will serve/connect at localhost:6379 by default - the pool will use this port
  • Redis is only used for frontend non-critical data, but is required for this web application

Task Commands Example

node util/reset_all_miner_reward_data.js

TODO / BUGS

You can’t perform that action at this time.