「仮想通貨始めました」なんて言ってるからには一回くらい掘ってみたい。
「俺、マイニングしてるんだぜ」なんて言ってみたい。
そんな方、多いと思います。
「でも無駄にお金かけたくないし」
そうですね。
そんな方のために今あるパソコンの環境で簡単にマイニングできる方法を探してみました。
儲かるか儲からないかは二の次でとにかくマイニング!
これを読めば明日から「俺、マイニングしてるんだぜ」なんて言えるかも 笑
マイニングってなに?
その前にマイニングってなにって話。
ここは興味のない方は飛ばしてもらって構いません。
さて、多少なりとも仮想通貨に興味のある方ならブロックチェーンという言葉を聞いたことがあると思います。
対象通貨の取引情報をひとまとめにしたものがブロックで、ブロックの頭にはヘッダー情報が書き込まれています。
そのヘッダー情報に”ナンス値”を書き加えて、ハッシュを作り、閾値(0x000000…)*1 以下の値を求めるのがマイニングです。
ハッシュは一方向の関数なので、書き加えるナンス値は総当たりで探すしかありません。 世界で一番最初に そのブロック*2 のナンスを見つけた人に報酬が支払われることになっています。*3
*1 この閾値が小さくなる(=前0が増える)ほどナンスを見つけにくくなるのでDifficulty Targetと言うらしいです。Difficultyが上がるという言葉をよく聞きますが実際には閾値が下がるんですね。
*2 そのブロックと書きましたが、厳密には当該ブロックの取引の中に自分のウォレットアドレスと報酬も前もって書かれるので個々のヘッダー情報は異なります。ソロでやってる人達は全員違う問題を解いているはずです。
*3 この説明はProof-of-Work(PoW)を採用している通貨についてで、主にBTCからの理解です。
マイニング方法
次はマイニングの方法。人数から見たマイニングの方法と機材・通貨の選定方法です。
一人でやるかみんなでやるか
人数から見たマイニング方法には、一人でやるかみんなでやるか。ちょっと趣旨が違いますが人にやってもらうという3通りの方法があります。「とりあえず掘ってみたい」人にはみんなでやるプールマイニングがおすすめです。
一人でやる=ソロマイニング
一攫千金型。時価総額の大きいBTC(ビットコイン)で一山当てると今なら一発6000万!なんて夢みたいな話ですが、世界中のコンピュータと10分間戦って最初にナンスを見つけるのは至難の業。しかも当てるまでは無報酬です。
ソロマイニングには大量の専用回路に冷却設備も必要で、初期投資も電気代も馬鹿にならないので「とりあえず掘ってみたい」という今回のケースには不向きです。
みんなでやる=プールマイニング
「みんなで分け合って計算しようぜ!報酬はお前のPCの頑張りに応じて分配な!」というプールに参加するタイプ。
地道ですがわずかでも毎日報酬があります。
人にやってもらう=クラウドマイニング
知識も設備も不要で、大きな設備を持ってるところに「お金払うから採掘しといて」とお願いするタイプ。
お金持ちの人の投機ですな。
「とりあえずマイニングしてみたい」という今回のケースでは追加投資がなく掘ってる実感も得られるプールマイニングがベストチョイスとなります。
機材と通貨の選定
マイニングをするには高額なASIC(専用回路)とか高速なGPUがあると有利なわけですが、「とりあえず掘ってみたい」だけなのでそんなところにお金をかけたくはない。
となると”CPUマイニング”のできる通貨を探すしかありません。機材と通貨の選定がワンセットになってるのはそういう理由です。
CPUマイニングだと上場前の小さな通貨になっちゃいますけども、プロジェクト自体に夢のある通貨もあります。
それがXCB。
今回は機材を一切買い足さず、手元にあるPCでXCBをCPUマイニングします。
XCBのマイニングやってみた
そんなわけでやっと今日の本題「XCBのマイニングやってみた」です。
ちょっと前までQiitaにXCBマイニングの良い記事があったのですが、今は404になってるので自分のための忘備録として記録しておきます。画像の付け方とかが若干雑ですがこの記事がどなたかのお役に立てば幸い。
さて、セットアップの順番は以下になります。
1.WindowsにUbuntuをインストールする
2.XCBのウォレットを作る
3.coreminerのセットアップ
4.マイニング
Ubuntuさえちゃんと入れば悩むところはほとんどありません。
1.WindowsにUbuntuをインストールする
Ubuntuの導入はWSLでWin10 proとWin11の両方でやってみました。WSLってのはWindowsでLinuxを動かす仕組みです。後述のマイニングソフトがLinuxでないと動かないもんで、WinでLinuxを動かすしかないんです。VM Wareも最近もめてますしWSLが無難かなと。
Win11ではMicrosoft StoreからUbuntu入れるくらいであっという間に動いたのですが、10ProへのUbuntuの導入は結構苦労しました。なので10Proでやったことを(トラブル含めそのまま)記録しておきます。元々の環境がどうだったかよく覚えてないのもありますが、これを記録しておけば仮にWin11でうまくいかないときにも参考になるはずですから。
ちなみに以下の表記で
$ と書いたときはWindowsの管理者モードでのコマンドプロンプトからの入力です
% と書いたときはUbuntuのターミナルへの入力だと思ってください
Ubuntuインストール
まず最初にWSL(Windows Subsystem for Linux)を有効化します。
Win→⚙設定→アプリ→アプリと機能→(右行って)プログラムと機能→Windowsの機能の有効化または無効化→仮想マシンプラットフォームをチェック+Linux用Windwosサブシステムをチェック
OKを押して、必要な変更の完了を待ちます。
Windowsで開いた画面を閉じて、PCを再起動してください。
PC再起動後、コマンドプロンプトを管理者モードで開いて以下を実行。これでWSLが入ります。
$ wsl –intall
次はUbuntuを入れます。Win → Microsoft Store → Ubuntuを検索
Ubuntuがいくつか出てきますがLTS版じゃなく無印のUbuntuを選択すれば最新版が入ります。
インストールボタンをポチっとな。
Win11はこれだけでOKだったような気がしますが、Win10Proはここでエラーが出ました。
エラーコードで検索するとwsl2のバグという話を見つけたのでwslを更新しました。
コマンドプロンプトを管理者モードで開いて以下を実行。
$ wsl –update
このコマンドはwsl installの直後にやっとけば手間が省けたはず。まあいいや。
再度、Microsoft StoreでUbuntuを検索し、今度は開くボタンを押します。
画面にUbuntuのターミナルが立ち上がり「Enter New UNIX username:」が出てくればUbuntuのインストールは成功です。
Ubuntuのセットアップ
プロンプトに従ってUbuntuのユーザーとパスワードをセットします。
ユーザー名を入力、パスワードを2回入力。
そこそこ難しい名前にしておかないとUbuntuに受け付けてもらえないので注意してください。
あとsudoを使うときにパスワードを問われるのでパスワードは覚えておいてくださいね。
Ubuntuのアップデート
Ubuntuを最新版にしておきたいので以下のコマンドをUbuntuのターミナルから実行します。
% sudo apt update
% sudo apt upgrade
これが成功した人(####100%とか出ます)は次の節を読み飛ばしてOK。
WSLが外部につながってない?
Win11の時は問題なかったのですが10ProではUbuntuのupdateができませんでした。
どうもWSLが外部につながってないような雰囲気です。
% curl https://google.com
を試すも反応がなく、なるほどWSLから外部につながってな…そういえば名前解決できないみたいなメッセージが出てたかも…
以下の解決方法を見つけたのでとりあえず試してみます。
https://zenn.dev/asopitech/articles/20230621-173203_1
管理者権限のコマンドプロンプトで
$ netsh winsock reset
$ netsh int ip reset all
$ netsh winhttp reset proxy
$ ipconfig /flushdns
うひゃーホストのIPまでぶっ飛んだわ。やらなきゃよかった。ホストのIP、マスク、GWを戻しました。
以下の解決方法を見つけました。WSLからDNSが見えてないときの解決方法です。
% sudo vim /etc/wsl.conf
[network]
generateResolvConf = false
:wq!
これはwslの立ち上げ時に名前解決用のコンフィグを作らない設定かな。
管理者権限のコマンドプロンプトでWSLを落として
$ wsl –shutdown
再びUbuntuを立ち上げて自分で名前解決用のファイルを作ります。
% sudo vim /etc/resolv.conf
nameserver 8.8.8.8
:wq!
GoogleさんのDNSを借ります。再びcurlを確認すると通りました。
なるほどDNSが見えなかっただけか。
ではUbuntuのアップデートをやってみます。
% sudo apt update
% sudo apt upgrade
今度はばっちり更新されました。
bcのインストール
ウォレットのチェックに必要になシェル用の浮動小数点関数bcを入れておきます。これは入れても入れなくても問題なさげなのですが、無駄なワーニングメッセージが気持ち悪いので入れておきましょう。
% sudo apt-get install bc
bcはさくっと入るはずです。Ubuntu関連はこれで終了。
10ProだとUbuntuのインストールが一番面倒でした。
Win11のときは10分もかからなかったのになあ。
2.XCBのウォレットを作る
次にXCBを受け取るウォレットを作ります。これはCoreGeeksさんのページがめっちゃわかりやすいので見てみてください。CoreGeeksさんは「ブロックチェーンを用いた新しい社会インフラを実現するCore Tokenのファンサイト」で安心できるサイトです。
https://core-geeks.com/ja/md/article/9dc19633-930f-47a9-ab03-cce34c8313c7
大事なのは
・できたファイルを別の媒体に逃がしておくこと
・セットしたパスワードを忘れないこと
・それと「Wallet addressがマイニングしたコインの受け取りアドレスで、他人に公開しても問題がないものです」の一文を理解しておくこと
公開しても差し支えないアドレスは後でマイニングソフトに設定したりもらったXCBの量を見に行ったりするのに使うので、メモ帳にでも貼り付けておきましょう。
3.coreminerのセットアップ
次はマイニングソフト(coreminer)をセットアップしていきます。
coreminerのセットアップについて事前に詳しく知っておきたい方は下記のURLへ飛んで内容を把握しておいてください。
https://github.com/catchthatrabbit/coreminer/discussions/27
ではまずcoreminerをgithubからダウンロードして圧縮を解きます。今の最新はv0.19.84。ARMの人はARMを落としてください。
wgetはcoreminerディレクトリにファイルをダウンロードしてきているだけなので、うまく落ちてこないときはURLが間違ってる可能性があります。
その時はURLを確認してみてください。
% mkdir coreminer
% cd coreminer
% wget -P ./ “https://github.com/catchthatrabbit/coreminer/releases/download/v0.19.84/coreminer-linux-x86_64.tar.gz”
% tar -xvbf coreminer-linux-x86_64.tar.gz
% rm coreminer-linux-x86_64.tar.gz
% ls
% cd coreapp
% ls
これでcoreappディレクトリ内にmine.shとcoreminerができているはずです。マイニングのためのパラメータを収めるpool.cfgは初回起動時に作成されます。さっそく起動しましょう。
初回起動
初回起動時にマイニングしたXCBの受け取りアドレス(他人に公開しても問題がないもの)等を入力するとpool.cfgが作成されます。
% bash mine.sh
僕は1つ目のプールにアジア(3)を選択しました。ウォレットアドレス、ワーカー名、マイニングに何スレッド使うかを入れて、もう一つのプールもアジア(4)を選択しました。
ワーカー名は2台以上でマイニングするときに重複しなければなんでも良いはず。自分のPCのスレッド数が分からなければリターンでOK。自動でマックス数が入ります。
ここはpool.cfgを作ってるだけなので、なんだかよく分からなかったらCtrl-cで実行を止めてもOKです。なにか失敗してもpool.cfgを消せばもう一度この画面が出てきますから安心してください。
次回以降の立上げではpool.cfgに書かれた条件でマイニングが始まります。
4.マイニング
いよいよマイニングの開始です。自動起動とか面倒な設定はしないのでUbuntuを立ち上げたら以下のコマンドを打ってください。
cdはcd cまで入れて[Tab]を押せば補完してくれます。bashも!baでOKです。
% cd coreminer
% cd coreapp
% bash mine.sh
マイニング状況が画面上につらつら流れていきます。マイニングを止めたくなったらCtrl-cを2回押すだけ。でも、お楽しみのためには1時間は回しておいたほうが良いかなー。
どのくらい掘れたかの確認はCoreGeeksさんのページに行って、ウォレット参照にあなたのウォレットアドレス(公開していいやつ)を入れてみてください。
https://core-geeks.com/ja/xcb-mining
反映には半日くらいかかるようなので翌日見に行くくらいののんびり感で良いと思います。
仮想通貨(XCB)のマイニングやってみた所感
ぼーっとマイニング中の画面を見ていると、たまにSol,**Acceptedの文字が出てA0がA1にA1がA2にと数字が上がっていきます。
最初のうちはこのSol,**Acceptedを見て気分が上がっていたのですが、自分が解いたからといってプールから多く報酬をもらえるかというとそんなこともない様子。
まあ、それもそうか。
プールの場合、ブロックに書かれる報酬の受取り人はプールの管理者さんになっているはずで、そのブロックヘッダーのナンスを
君は0から100000まで検証してね
君は100001から1000000まで検証してね
と、プール参加者の能力に合わせて割り振ってるんですよね。きっと。
そう考えるとSol,**Acceptedの表記は、たまたま自分が受け持ったナンスの範囲でDifficulty Target以下の値を見つけたに過ぎないということになります。
- プールは参加者全員に同じ問題を渡し、ナンスの範囲を割り振って総当たりをしている
だからソロより早い - プール管理者はプール参加者の貢献度に合わせて報酬を分配している
言ってみれば僕らはCPUを貸しているだけ
これって「俺、マイニングしてるんだぜ!」って言ってもいいのかな 笑
まいっか。
今回も、なんとなーく知ってたつもりだったことが手を動かすことで懐に落ちました。
なんでもやってみるって大事ね。
それじゃ、ハッピーマイニング!