HDDマイニング chia 毎日の収入を自動集計するスクリプトを作った

HDDマイニング情報・紹介
スポンサーリンク

毎晩、0時を過ぎた頃に1日のXCH収入をスプレッドシートに貼り付けるのが日課なのですが、それも面倒になってきたので、自動集計してcsvファイルに追記するスクリプトを作成しました。

参考になれば幸いです

記事作成日:2021年10月13日

必要なもの

  • Windows10
  • chia blockchain
  • python実行環境

Windowsでchia blockchainを動かしているなら、
あとはPython環境を入れるだけです。
(おそらくLinuxやMacでも同じ仕様なので仕組み自体はできるはず)

 

ソースコード一式

↓githubにアップしましたので、必要に応じてご参照ください。

GitHub - MaxiParadise/Get_Chia_DailyIncome
Contribute to MaxiParadise/Get_Chia_DailyIncome development by creating an account on GitHub.

 

使い方

  1. get_chia_income.py を開いて下さい。
  2. ver_str = ‘1.2.9’ を、自身のChia Blockchainのバージョンに合わせておく。
  3. address = [
    xch1address11111111111111111111111111111111111111111111111111111
    ・・・・
    ]
    を、全て自身のプール支払先アドレスに変更する。

最後に、chia_wallet_daily.csvを同じフォルダにおいて、以下のコマンドを実行するだけ。

python get_chia_income.py

chia_wallet_daily.csv に、昨日の入金データが1回追記されます。
これを、毎日12時過ぎなど定時に1回、
タスクスケジューラ等で自動実行すれば、自動記帳されていきます。

 

仕組み

Chia Blockchainのコマンドライン版に、
“wallets get_transactions”というコマンドがあります。
そしてこれに”–no-paginate”オプションを付けると、
直近50件の入出金記録を一斉取得することができます。

chia.exe wallet get_transactions --no-paginate

・実行サンプル

Transaction 5178ca47cxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Status: Confirmed
Amount: 0.003223548692 xch
To address: xch13ekedleexxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Created at: 2021-10-04 09:19:07

Transaction 781b3533axxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Status: Confirmed
Amount: 0.000638780688 xch
To address: xch17yxunpswxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Created at: 2021-10-04 13:54:36

<・・・・中略>

Transaction 477bb1b9axxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Status: Confirmed
Amount: 0.001065520104 xch
To address: xch17yxunpswxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Created at: 2021-10-13 20:59:40

pythonでこの出力結果を読み込んで、
昨日の日付のものだけ抽出し、支払先アドレス別(プール別)に集計すれば、
毎日1回実行するだけで、「入金記帳」ができるわけです。

注意事項としては、
このコマンドで取得できる履歴は最大が50件なので、
1日に50件を超えるような環境の人にとっては、
スクリプトを変更して1時間毎に対応するなどしないといけません。

 

pythonからchia.exe実施、結果取得

subprocess.getoutputにてコマンド実行しつつ実行結果を文字列で取得。

# chia.exe コマンド実行、戻り値を取得
result = subprocess.getoutput('%APPDATA%/../Local/chia-blockchain/app-'+ver_str+'/resources/app.asar.unpacked/daemon/chia.exe wallet get_transactions --no-paginate')

なお、バージョンが上がるとパスが変わってしまうため、
ver_str=’1.2.9’を設定しておく必要があるわけです。

 

昨日のデータの取得

まず、昨日の日付を文字列で取得。

# 昨日の日付算出
td = datetime.timedelta(days=1)
yesterday = str((datetime.datetime.now()-td).date())

resultをfor文で1行ずつ読んで、
例えば”2021-10-13″が含まれる文字列の入金データのみを対象とします。

  md = re.match(r'^Created at: (.+)( [0-9]{2}:[0-9]{2}:[0-9]{2})$', lines[i+4])
  if md.groups()[0] == yesterday:

 

支払先アドレスごとに集計

さらに、アドレス文字列を比較し、
プール支払先アドレスごとに入金値を集計します。

for inx, addr in enumerate(address):
  if address[inx]==mw.groups()[0]:
    xch_count[inx] += float(ma.groups()[0]) # 支払先アドレスごとの入金値集計
    xch_total += float(ma.groups()[0]) # 入金値の総計
    break

 

文字列に加工して、csv出力

タブ区切りで文字列を生成します。

copy_str = yesterday
copy_str += '\t'+'\t'.join(list(map(str,xch_count)))
copy_str += '\t'+str(xch_total)

“2021-10-13    0.0012    0    0.01    0.001234    0    0.12434”
のようにタブ区切りで文字列を生成します。

with open('chia_wallet_daily.csv', 'a') as f:
  print(copy_str, file=f)

chia_wallet_daily.csvに追記して終了。

 

さいごに

「不労所得」を目指すなら、
日々のルーチンが最小限の労力で済むようにというわけで、
自動化できるものは自動化しちゃいましょう。

参考になれば幸いでございます。

それではまたー

タイトルとURLをコピーしました