Coinfoundry

Z Poznámkový blok
Přejít na: navigace, hledání

Jde o multipool z https://coinfoundry.org/ zveřejnený na https://github.com/coinfoundry/miningcore

Instalace

Postup instalace, jak sjem se snažil:

Net Core

Je pořeba nainstalovat. Více je na stránkách https://www.microsoft.com/net/download/linux-package-manager/rhel/runtime-current z kterých jsem vycházel.

PostgreSQL

Dale je třeba nainstalovat PostgreSQL databázi. Patřičnou verzi z postupem nalezneme na https://www.postgresql.org/download/.

Coin Core

Pro vlastní těžbu a transakce musí být k dispozici "plnohodnotné" peněženky. Instalaci jednotlivých peněženek zde nebudu uvádět a věřím že půjde použít i peněženky na jiném PC.

Nastavení databáze

sudo -u postgres -i
createuser miningcore
createdb miningcore
psql (heslo pro postgres)

Heslo nebylo potřeba ??? Následně nastavíme práva - ale nevím která varianta ...:

alter user miningcore with password 'ps888sQl';
alter user miningcore with encrypted password 'heslo-databaze';
grant all privileges on database miningcore to miningcore;
\q

A na konec stáhneme vlastní databázi a naimportujeme ji.

wget https://raw.githubusercontent.com/coinfoundry/miningcore/master/src/MiningCore/Persistence/Postgres/Scripts/createdb.sql
psql -d miningcore -U miningcore -f createdb.sql

Možná bez "-U miningcore" ???

Miningcore

sudo apt-get update -y 
sudo apt-get -y install git cmake build-essential libssl-dev pkg-config libboost-all-dev libsodium-dev
git clone https://github.com/coinfoundry/miningcore
cd miningcore/src/MiningCore
./linux-build.sh

Nastavení

Vytvoříme soubor config.json v adresáři miningcore dle následujícího vzoru:

{
  "logging": {
    "level": "info",
    "enableConsoleLog": true,
    "enableConsoleColors": true,

    // Log file name (full log)
    "logFile": "",

    // Folder to store log file(s)
    "logBaseDirectory": "",

    // If enabled, separate log file will be stored for each pool as <pool id>.log
    // in the above specific folder.
    "perPoolLogFile": false
  },

  "banning": {
    // "integrated" or "iptables" (linux only - not yet implemented)
    "manager": "integrated",
    "banOnJunkReceive": true,
    "banOnInvalidShares": false
  },

  "notifications": {
    "enabled": true,
    "email": {
      "host": "smtp.example.com",
      "port": 587,
      "user": "user",
      "password": "password",
      "fromAddress": "info@yourpool.org",
      "fromName": "pool support"
    },

    "admin": {
      "enabled": false,
      "emailAddress": "user@example.com",
      "notifyBlockFound": true
    }
  },

  // Where to persist shares and blocks to
  "persistence": {
    // Persist to postgresql database
    "postgres": {
      "host": "127.0.0.1",
      "port": 5432,
      "user": "miningcore",
      "password": "yourpassword",
      "database": "miningcore"
    }
  },

  // Generate payouts for recorded shares and blocks
  "paymentProcessing": {
    "enabled": true,

    // How often to process payouts, in milliseconds
    "interval": 600,

    // Path to a file used to backup shares under emergency conditions, such as
    // database outage
    "shareRecoveryFile": "recovered-shares.txt"
  },

  // API Settings
  "api": {
    "enabled": true,

    // Binding address (Default: 127.0.0.1)
    "listenAddress": "127.0.0.1",

    // Binding port (Default: 4000)
    "port": 4000
  },

  "pools": [{

    // DON'T change the id after a production pool has begun collecting shares!
  "id": "dash1",
     "enabled": true,
     "coin": {
       "type": "DASH"
     },

    // Address to where block rewards are given (pool wallet)
    "address": "yiZodEgQLbYDrWzgBXmfUUHeBVXBNr8rwR",

    // Block rewards go to the configured pool wallet address to later be paid out
    // to miners, except for a percentage that can go to, for examples,
    // pool operator(s) as pool fees or or to donations address. Addresses or hashed
    // public keys can be used. Here is an example of rewards going to the main pool
    // "op"
    "rewardRecipients": [
      {
        // Pool wallet
        "address": "yiZodEgQLbYDrWzgBXmfUUHeBVXBNr8rwR",
        "percentage": 1.5
      }
    ],

    // How often to poll RPC daemons for new blocks, in milliseconds
    "blockRefreshInterval": 400,

    // Some miner apps will consider the pool dead/offline if it doesn't receive
    // anything new jobs for around a minute, so every time we broadcast jobs,
    // set a timeout to rebroadcast in this many seconds unless we find a new job.
    // Set to zero to disable. (Default: 0)
    "jobRebroadcastTimeout": 10,

    // Remove workers that haven't been in contact for this many seconds.
    // Some attackers will create thousands of workers that use up all available
    // socket connections, usually the workers are zombies and don't submit shares
    // after connecting. This features detects those and disconnects them.
    "clientConnectionTimeout": 600,

    // If a worker is submitting a high threshold of invalid shares, we can
    // temporarily ban their IP to reduce system/network load.
    "banning": {
      "enabled": true,

      // How many seconds to ban worker for
      "time": 600,

      // What percent of invalid shares triggers ban
      "invalidPercent": 50,

      // Check invalid percent when this many shares have been submitted
      "checkThreshold": 50
    },

    // Each pool can have as many ports for your miners to connect to as you wish.
    // Each port can be configured to use its own pool difficulty and variable
    // difficulty settings. 'varDiff' is optional and will only be used for the ports
    // you configure it for.
    "ports": {
      // Binding port for your miners to connect to
      "3052": {
        // Binding address (Default: 127.0.0.1)
        "listenAddress": "0.0.0.0",

        // Pool difficulty
        "difficulty": 0.02,

        // Variable difficulty is a feature that will automatically adjust difficulty
        // for individual miners based on their hash rate in order to lower
        // networking overhead
        "varDiff": {

          // Minimum difficulty
          "minDiff": 0.01,

          // Maximum difficulty. Network difficulty will be used if it is lower than
          // this. Set to null to disable.
          "maxDiff": null,

          // Try to get 1 share per this many seconds
          "targetTime": 15,

          // Check to see if we should retarget every this many seconds
          "retargetTime": 90,

          // Allow time to very this % from target without retargeting
          "variancePercent": 30,

          // Do not alter difficulty by more than this during a single retarget in
          // either direction
          "maxDelta": 500
        }
      }
    },

    // Recommended to have at least two daemon instances running in case one drops
    // out-of-sync or offline. For redundancy, all instances will be polled for
    // block/transaction updates and be used for submitting blocks. Creating a backup
    // daemon involves spawning a daemon using the "-datadir=/backup" argument which
    // creates a new daemon instance with it's own RPC config. For more info on this,
    // visit: https:// en.bitcoin.it/wiki/Data_directory and
    // https:// en.bitcoin.it/wiki/Running_bitcoind
    "daemons": [{
        "host": "127.0.0.1",
        "port": 15001,
        "user": "user",
        "password": "pass",

        // Enable streaming Block Notifications via ZeroMQ messaging from Bitcoin
        // Family daemons. Using this is highly recommended. The value of this option
        // is a string that should match the value of the -zmqpubhashblock parameter
        // passed to the coin daemon. If you enable this, you should lower
        // 'blockRefreshInterval' to 1000 or 0 to disable polling entirely.
        "zmqBlockNotifySocket": "tcp://127.0.0.1:15101",

        // Enable streaming Block Notifications via WebSocket messaging from Ethereum
        // family Parity daemons. Using this is highly recommended. The value of this
        // option is a string that should  match the value of the --ws-port parameter
        // passed to the parity coin daemon. When using --ws-port, you should also
        // specify --ws-interface all and
        // --jsonrpc-apis "eth,net,web3,personal,parity,parity_pubsub,rpc"
        // If you enable this, you should lower 'blockRefreshInterval' to 1000 or 0
        // to disable polling entirely.
        "portWs": 18545,
      }
    ],

    // Generate payouts for recorded shares
    "paymentProcessing": {
      "enabled": true,

      // Minimum payment in pool-base-currency (ie. Bitcoin, NOT Satoshis)
      "minimumPayment": 0.01,
      "payoutScheme": "PPLNS",
      "payoutSchemeConfig": {
        "factor": 2.0
      }
    }
  }]
}

Zpuštění

cd ../../build
dotnet MiningCore.dll -c config.json

Zpět