miningpoolhubのAPIを使って自動スイッチングを試してみる in ethOS

miningpoolhub

* アイキャッチの男性は、Flicker上のライセンスフリーの画像ひっぱってきているだけで、本文とまったく関係ありません

NicehashのGOXがあってからというもの、windowsを使ってNicehashで掘るのが面倒になり、今は完全にethOSでマイニング運用してます。
自分のリグがGTX1070, GTX1060で運用していて、poolサーバーにminingpoolhubを使ってます。

miningpoolhub自体にアルゴリズムの自動スイッチできる設定があるのですが、ethOSでccmignerを使っているとオプションでアルゴリズムを指定しなければならず、その時に良いコインがあったとしても設定ファイルのlocal.confを手動で変えなければいけずとても面倒です。

このため、miningpoolhubのAPIからデータ取得して掘るアルゴリズムの自動スイッチする的なものを作ってみようかと。

では、やってみます。

Sponsored Link


API環境

miningpoolhubのAPIの情報は以下ページで確認できます。

https://github.com/miningpoolhub/php-mpos/wiki/API-Reference

以下URLのフォーマットをみると coin ごとに情報を取得することになります。全coinの情報を取得できるAPIがあればいいのに、、、

https://[coin_name.]miningpoolhub.com/index.php?page=api&action=&api_key=[&=]

と思ったら、今回必要になる以下APIはトークン必要なし。コイン毎のドメインがいらないです。

https://miningpoolhub.com/index.php?page=api&action=getminingandprofitsstatistics
https://miningpoolhub.com/index.php?page=api&action=getautoswitchingandprofitsstatistics

{
    "return": [
        {
            "algo": "Lyra2z", 
            "algo_switch_port": 17025, 
            "all_host_list": "us-east.lyra2z-hub.miningpoolhub.com;europe.lyra2z-hub.miningpoolhub.com;asia.lyra2z-hub.miningpoolhub.com", 
            "current_mining_coin": "zcoin", 
            "host": "us-east.lyra2z-hub.miningpoolhub.com", 
            "multialgo_switch_port": 12025, 
            "normalized_profit_amd": 0.05184306, 
            "normalized_profit_nvidia": 0.38353319, 
            "port": 12025, 
            "profit": 0.17573918
        }, 
        {
            "algo": "Cryptonight", 
            "algo_switch_port": 17024, 
            "all_host_list": "us-east.cryptonight-hub.miningpoolhub.com;europe.cryptonight-hub.miningpoolhub.com;asia.cryptonight-hub.miningpoolhub.com", 
            "current_mining_coin": "monero", 
            "host": "us-east.cryptonight-hub.miningpoolhub.com", 
            "multialgo_switch_port": 12024, 
            "normalized_profit_amd": 0.10283802, 
            "normalized_profit_nvidia": 0.13131624, 
            "port": 12024, 
            "profit": 158.21233344
        }, 
   :
   :
 ]
}

こんな感じのresponseがかえってきます。

これらを使って、自動スイッチングを作ってみます。

miningpool側の下準備

にアクセスをして

miningpoolのHub Workersをクリックして、

各アルゴリズムごとのWorkerを作成しておきます。
各名前は、あとで、プログラムで使うので、ccmignerの-aフラグ(掘るアルゴリズムを指定する)で使う名前を指定しておきます。

ccmignerの-aフラグの一覧 -> http://ethosdistro.com/ccminer.txt

自動スイッチングプログラム

自分はethOSで掘っているのでethOS前提で記載します。無駄にpythonとシェルを組み合わせてます

python

こちらのプログラムでAPIからデータ取得して、local.confを自動で作成します。
SWITCH_TO_CCMINER_MAP、 SETTINGSは適宜変更してください。BIOSごとの細かい設定には対応していません。

# -*- coding: utf-8 -*-

import json
import requests
import sys


API_BASE_URL = 'http://miningpoolhub.com/index.php?page=api&action=getautoswitchingandprofitsstatistics'
CONFIG_FILE = '/home/ethos/local.conf'

# ccmigner - algo map
# アルゴ名 : -aフラグ名, pool名
SWITCH_TO_CCMINER_MAP = {
    'Lyra2z': ['lyra2z', 'asia.lyra2z-hub.miningpoolhub.com:17025'],
    'Cryptonight': ['cryptonight', 'hub.miningpoolhub.com:17024'],
    'Equihash': ['equihash', 'asia.equihash-hub.miningpoolhub.com:17023'],
    'Sia': ['sia', 'hub.miningpoolhub.com:17022'],
    # 'Yescrypt': '',
    # 'Ethash': '',
    'Lyra2RE2': ['lyra2v2', 'hub.miningpoolhub.com:17018'],
    'Skein': ['skein', 'hub.miningpoolhub.com:17016'],
    'Qubit': ['qubit', 'hub.miningpoolhub.com:17014'],
    'NeoScrypt': ['neoscrypt', 'hub.miningpoolhub.com:17012'],
    'X11': ['x11', 'hub.miningpoolhub.com:17007'],
    'Myriad-Groestl': ['myr-gr', 'hub.miningpoolhub.com:17005'],
    'Groestl': ['groestl', 'hub.miningpoolhub.com:17004'],
    'Keccak': ['keccak', 'hub.miningpoolhub.com:17003'],
    'Scrypt': ['scrypt' 'hub.miningpoolhub.com:17001']
}

SETTINGS = """globalminer ccminer
maxgputemp 100
stratumproxy enabled

proxywallet todoroki.{}
proxypool1 {}
poolpass1 {}
flags -a {}

poolemail shohu33@gmail.com
globalfan 80
globalpowertune 80
autoreboot 3
"""


def is_same_algo(algo):
    with open(CONFIG_FILE, 'r') as f:
        for row in f:
            if '-a {}'.format(algo) in row:
                return True
    return False


def write_file(body):
    f = open(CONFIG_FILE, 'w')
    f.write(body)
    f.close()


if __name__ == '__main__':
    # get api data
    response = requests.get(API_BASE_URL)
    if response.status_code != 200:
        raise Exception('HTTP Error {} at {}: {}'.format(
                        response.status_code, API_BASE_URL, response.text))

    # calc algorithm
    values = json.loads(response.text)
    ranks = {}
    for value in values['return']:
        ranks[value['algo']] = value['normalized_profit_nvidia']
        # print value['algo'], value['normalized_profit_nvidia']
    sorted_ranks = sorted(ranks.items(), key=lambda x: x[1])
    for value in sorted_ranks:
        print value
    top = sorted_ranks[-1]

    # create file
    algoinfo = SWITCH_TO_CCMINER_MAP[top[0]]
    algo = algoinfo[0]
    url = algoinfo[1]

    # change file when different algo
    if is_same_algo(algo):
        print('no change')
        sys.exit()

    body = SETTINGS.format(algo, url, algo, algo)

    write_file(body)
    print("changed")

シェルスクリプト

上述したpythonプログラムをループさせます。pythonプログラムより”changed”の文字が返却されたら、設定ファイルを反映させます。

#!/bin/bash

INTERVAL=300
CORRECT=changed
while true;
do
  RET=`python /home/ethos/scripts/switching.py`
  if [ "$CORRECT" = "$RET" ];
  then
    echo "changed"
    sudo putconf && minestop
  fi
  sleep $INTERVAL
done

最後にcustome.shに記載

custome.sh(ethOS起動時に自動的にプログラムを実行してくれる)に以下を記載しておきます。
プログラムの場所は適宜変更してください。pythonとシェルプログラムファイルは同じディレクトリにおいてください。

nohup bash "/home/ethos/scripts/switching.sh" &

これで、再起動すれば自動的に最適なアルゴリズムに変更できるはず・・・です。

まとめ

自分はこれでethOS上で、自動的に設定ファイルを変更することができました。
興味があれば試してみてください。

Sunday Pool Party | ASCCA Session 6 | Camp ASCCA | Flickr

Sponsored Link

ビットコイン(Bitcoin)、イーサリアム(Ethereum)、リップル(Ripple)、ネム(NEM)などの仮想通貨を買うならZaifがおすすめです。

特に国内でETHを購入するなら、アルトコインでも板取引に対応しているZaif(ザイフ)が割安なのでよいですよ。

コメントはまだありません

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


Ethereum(イーサリアム)
Error: The contract code couldn’t be stored, please check your gas amount.

ALISのICOソースのzeppelinバージョンを1.2から1.8にあげようとしたときにはまったエ …

Dapps
日本の都道府県を所有できるDApps & ERC721 のサンプルを公開してみました

最近、Ethereum上でカードなどを所有できるdAppsが流行っているので、試しに日本の都道府県を …

Ethereum(イーサリアム)
TX doesn’t have the correct nonce – Metamask

EthereumのdAppsを作ろうとしていてはまったのでメモ。 Metamaskを使用して支払いを …