Coinfoundry: Porovnání verzí

Z Poznámkový blok
Přejít na: navigace, hledání
(PostgreSQL)
(Instalace)
 
(Není zobrazeno 10 mezilehlých verzí od stejného uživatele.)
Řádka 12: Řádka 12:
 
=== Coin Core ===
 
=== 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.
 
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 ==
 
== Zpět ==

Aktuální verze z 12. 6. 2018, 21:29

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