おは代々木ダイアリー

いろいろ試したメモを書きます

【HDDマイニング】Chiaで複数PCを利用してファーミングする

はじめに

みなさんHDDマイニングしてますか?

GPUみたいに瞬間計算速度勝負にはならないので、ネットワークの維持にかかる消費電力が少なく済む、エコな仮想通貨(ほんとか?)として話題のアレです。

特別なデバイスが必要になるものではないので、試しに外付けHDDを買ってくれば試せる手軽さはGPUマイニングにない良さですね。

こういう、SSD+外付けケースだったり、適当に容量があるHDDを使えば、一応始められます(あたるかは完全に運)

当方の環境としては「当たれば御の字」という感じで、家にあった上記のような製品を使ってオタメシしています。

Chiaのファーミングとは

世間では「HDDマイニング」と呼ばれますが、Chia用語的には「ファーミング」です。

ファーミング とは HDDに保存されている宝くじのようなもの(100GBぐらい) が、 Chiaネットワークで要求されているものかを確認し、もし、それが運よく要求されているものだったら報酬がもらえる、といったものです。

2021年5月現在、1つのプロットにかかるのは 6時間、300GB超のディスク容量(一時ファイル) と言われており、 この途方もなさが瞬間火力勝負のGPUマイニングとの最たる違いで、条件が提示されてから計算してからはもう遅いという話です。

プロットを管理するharvester

雑なイメージ図を書いてみました。

f:id:ohayoyogi:20210520141612p:plain
プロットを管理するのがハーベスタ

  • ハーベスタ(Chia用語 harvester )は作成されたプロット(Chia用語 plot )を管理する役割
  • ファーマー(Chia用語 farmer )はハーベスタに対して、要求される要件を満たすプロットを提供

ハーベスタに要求される性能

上の図の通り、プロットは他のマシンで作成してハーベスタにアップロードする、というやり方も実現できます。

つまり、プロット作成に要求されるようなマシンスペックは必要ありません。よって、いかに プロットを格納できるHDDを確保できるか? がポイントです。筐体の出来の良さとかを考えれば、NASハーベスタをやらせるのもよいと思います。

問題は、プロットが要件に合致するものか検証するためにどれぐらいのスペックが必要になるか?ということですが、これについては負荷を見ていい感じにハーベスタにプロットを割り振れば負荷を分散できるのではないかと思っています。(具体的な値は持ち合わせていないので、何かご存じでしたらコメントとかもらえると嬉しいです)。

  • 容量モリモリにするのがハーベスタ
  • CPU・リードライト性能モリモリにするのがプロッター

と考えて準備すればよいのではないかなと思います。

ハーベスタのセットアップ

ここからはコマンドラインを多用します。

初期化

ルノードを担っているメインマシンのカギをダウンロードします。デフォルトでは ~/.chia/mainnet/config/ssl/ca に格納されているので、ca フォルダごとローカルにコピーします。

私の環境はフルノードをUbuntuで動かしていて、ハーベスタWindowsにしようと思っているので、Zipに圧縮して持ってきました。

# フルノードで↓
cd ~/.chia/mainnet/config/ssl
zip ~/ca.zip ca  -r

# 新しく作るハーベスタ側で
scp <FULL_NODE_IP>:~/ca.zip ./

で、ダウンロードできた ca.zipC:\ca などに展開します。で、ダウンロードしてきたcaフォルダを使ってハーベスタを初期化します。

# 新しく作るハーベスタ側で
chia init -c C:\ca

こうすると新しく鍵がインポートされ初期化されます。

設定

ハーベスタの設定は ~/.chia/mainnet/config/config.yaml に書かれています。(フルノードを動かしたりするための設定も記載されているのでファイルがデカい)。

harvester: から始まる行以降がハーベスタの設定部分です。

まずは farmer の指定。ハーベスタの設定部分内の farmer_peer: から始まる部分を探して、hostにファーマーのIPアドレスを記入します。

  farmer_peer:
    host: <FARMER_IP_ADDRESS>
    port: 8447

次にプロットを格納する場所を指定します。下記のようにフォルダを列挙すると、そのフォルダに格納されたプロットをハーベスタが扱ってくれるようになります。

  plot_directories:
  - D:\plots
  - E:\plots
  - F:\plots

ハーベスタの起動

下記コマンドで起動できます。

chia start harvester

起動していることの確認

先ほどのコンフィグファイルのログレベルの指定箇所の log_levelINFO に指定することで動作している様子を確認することができます。

  logging: &id001
    log_filename: log/debug.log
    log_level: INFO
    log_maxfilesrotation: 7
    log_stdout: false

こんな感じに。

2021-05-20T14:07:46.124 harvester chia.plotting.plot_tools: INFO     Searching directories ['E:\\plots', 'D:\\plots']
2021-05-20T14:07:46.135 harvester chia.plotting.plot_tools: INFO     Loaded a total of 4 plots of size 0.39592934947722824 TiB, in 0.058008432388305664 seconds
2021-05-20T14:07:46.137 harvester chia.harvester.harvester: INFO     0 plots were eligible for farming 0000000000... Found 0 proofs. Time: 0.06001 s. Total 4 plots
2021-05-20T14:07:46.139 harvester harvester_server        : INFO     -> farming_info to peer <FARMER_IP_ADDRESS> 1234567890123456789012345678901234567890123456789012345678901234
2021-05-20T14:07:54.438 harvester harvester_server        : INFO     <- new_signage_point_harvester from peer 1234567890123456789012345678901234567890123456789012345678901234
 <FARMER_IP_ADDRESS>

といった感じで指定されたディレクトリからプロットが読み込まれて、ファーミングされることがわかります。(まだ4プロットしかないw

終わりに

プロットを作成する方法などもいずれ書きたいと思いますが、個人的に詰まったポイントを先に書きました。

参考URL

今回の記事は下記の Chia-Network の GitHub Wiki の下記ガイドの内容をベースに記載しています。

Farming on many machines · Chia-Network/chia-blockchain Wiki · GitHub