おふとんの中から寝言をつぶやく

ビットコインなどの暗号(仮想)通貨関連の話題を中心に雑多に書きます。

ZCASHをメインネットで採掘する方法を書いてみる

採掘を始めようかと情報を漁ってみたのですが、テストネットでの採掘の記事が多かった(古い記事しか見当たらなかった)ので、本番環境で採掘することができるように書いてみたいと思います。

 

  11/2追記: すでにWindowsなどでも速度の出るマイナーが色々出てるようです。

以下は、ウォレットを作りたい方向けになります。

 

とりあえず必要なものは、Linuxが動いてる64ビットマシンで、メモリはあればあるだけいいようですが、最低でも4GBの空きメモリが必要ということです。これはsend_manyコマンドを使って、t-addrからz-addrに送るときに必要なようです。(ちなみにうちは、8GBでがんばってます。同時にBitcoindがメインネットとテストネットの2つ分動いてます…さらにまいくr)

 

原文は

https://github.com/zcash/zcash/wiki/Mining-Guide

https://github.com/zcash/zcash/wiki/1.0-User-Guide#configuration

をご覧ください。

 

でははじめましょう。

 

Debian-based operating systems を使う場合。

バイナリパッケージが用意されています。

https://github.com/zcash/zcash/wiki/Debian-binary-packages

こちらをご覧ください。いくつかのコマンドを叩くとインストールされます。

apt-getが終わったら、zcash-fetch-paramsを実行し、zcash.confを必要に応じて書き換えるのを忘れないようにしましょう。

何をどう書けばいいのかは、自分でビルドする場合の最後の方に書きます。

 

 

自分でビルドする場合。

 

ビルドのための準備をします。

Ubuntu/Debian ベースのシステムの場合:

$ sudo apt-get install \
      build-essential pkg-config libc6-dev m4 g++-multilib \
      autoconf libtool ncurses-dev unzip git python \
      zlib1g-dev wget bsdmainutils automake

 

Fedra-based システムの場合:

$ sudo dnf install \
      git pkgconfig automake autoconf ncurses-devel python wget \
      gtest-devel gcc gcc-c++ libtool patch

 

 

以下共通:

上記の準備が終わったら、githubからソースを落としてきて、fetch-params.shを実行します。

$ git clone https://github.com/zcash/zcash.git
$ cd zcash/
$ git checkout v1.0.0
$ ./zcutil/fetch-params.sh

 

ビルドします。

$ ./zcutil/build.sh -j$(nproc)

(-j$(nproc)の $(nproc)部分は、お使いのプロセッサの数に置き換えてください。make の jオプションと同じです)

 

 

以下は、バイナリをインストールした方も必要です。

設定

ホームディレクトリ直下に .zcashディレクトリを作って、その中にzcash.confを置きます。

mkdir -p ~/.zcash
echo "addnode=mainnet.z.cash" >~/.zcash/zcash.conf
echo "rpcuser=username" >>~/.zcash/zcash.conf
echo "rpcpassword=`head -c 32 /dev/urandom | base64`" >>~/.zcash/zcash.conf

(注:テストネットで試されていた方は問題ないとは思いますが、addnodeの部分をmainnet.z.cashに置き換えてtestnet=1を削除します)

 

さあお待ちかね!

Enabling CPU mining: (CPUマイニングを有効化します)

もしマイニングを行いたい場合は、以下の設定も行います。

(ウォレットだけの方はこの設定は飛ばしてください)

$ echo 'gen=1' >> ~/.zcash/zcash.conf
$ echo "genproclimit=$(nproc)" >> ~/.zcash/zcash.conf

 

 

さあ、zcashを実行してみましょう。

$ ./src/zcashd

このような画面が表示されたらまずは成功です。

 

f:id:harmonir:20161030014420j:plain

f:id:harmonir:20161030014423j:plain

 

 

もし画面に何も表示させずにバックグラウンドで動かしたい場合、またウォレットとして動かしたい場合は、

$ ./src/zcashd --daemon

と書いて実行しましょう。

 

現在までのブロックデータの読み込みが完了した後、RPCを使用することができるはずです。 ここでテストする簡単な方法。

$ ./src/zcash-cli getinfo

 

成功したら以下のようになると思います。(SSはわかりやすいように時間情報も入れていますが、dateを書いていなければ出てきません。)

f:id:harmonir:20161030015128j:plain

 

Zcashを使うために:

掘らずに買ったり誰かからもらったりしたいですか?

 

まず 2種類のアドレスを作る必要があります。

 

t-addr を生成します。

$ ./src/zcash-cli getnewaddress
tb4oHp2V54vfmdgQ3v3SNuQga83KHTNi2a1

 

Zcashは、z-addrで受け取ります。

さぁz-addrを作ってみましょう。

$ ./src/zcash-cli z_getnewaddress
zcBXZERsEEfKkzvTFKqBq2xrY5nATj2aKqmXW6fqTE8jo4CoLh5QsbspzsTnYfkJnd67RvuWHkmbxKgeSyTraix2a9LfxPW

これは、プライベートアドレスを作成し、ローカルウォレットファイルにキーを格納します。送信者にこのアドレスを教えます。

 

Z-addrはとても長いので、容易にミスが起きるでしょう。それを避けるために環境変数に入れてみましょう。

$ZADDR='zcBXZERsEEfKkzvTFKqBq2xrY5nATj2aKqmXW6fqTE8jo4CoLh5QsbspzsTnYfkJnd67RvuWHkmbxKgeSyTraix2a9LfxPW'

注:ご使用のshellにあわせて書いてください。

 

 

あなたのウォレット内にあるアドレスを取得するには、次のコマンドを実行します。

$ ./src/zcash-cli z_listaddresses

 

このような感じで表示されると思います。

[
"zcBXZERsEEfKkzvTFKqBq2xrY5nATj2aKqmXW6fqTE8jo4CoLh5QsbspzsTnYfkJnd67RvuWHkmbxKgeSyTraix2a9LfxPW"
]

 

すばらしい!  誰かがこのZ-addrに送信します。確認する時はトランザクションを参照します。

$ ./src/zcash-cli z_listreceivedbyaddress "$ZADDR"

 

[
    {
        "txid" : "af1665b317abe538148114a45322f28151925501c081949cc7a5207ef21cb750",
        "amount" : 1.23,
        "memo" : "48656c6c6f20ceb2210000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
    }
]

注:z-addrを環境変数にセットできなかった場合は、"$ZADDR"の部分を生成されたz-addrで置き換えてください。

 

あなたのz-addrからコインを送ります。

送りたい相手のz-addrを書きます。

$FRIEND='zcBXZERsEEfKkzvTFKqBq2xrY5nATj2aKqmXW6fqTE8jo4CoLh5QsbspzsTnYfkJnd67RvuWHkmbxKgeSyTraix2a9LfxPW'

 

あなたが、0.5ZEC送りたい場合…

$ ./src/zcash-cli z_sendmany "$ZADDR" "[{\"amount\": 0.5, \"address\": \"$FRIEND\"}]"

 

あるいは、

$ ./src/zcash-cli z_sendmany "$ZADDR" "[{\"amount\": 0.5, \"address\": \"zcBXZERsEEfKkzvTFKqBq2xrY5nATj2aKqmXW6fqTE8jo4CoLh5QsbspzsTnYfkJnd67RvuWHkmbxKgeSyTraix2a9LfxPW\"}]"

$ZADDRはz_listaddressesで見た自分のアドレスに置き換えてください。このような形で書いて送ります。(実際にこのアドレスに送ってくれてもいいですよ:P )

 

数分待ってから、操作が完了しているか結果をチェックします。

$ ./src/zcash-cli z_getoperationresult

 

[
    {
        "id" : "opid-4eafcaf3-b028-40e0-9c29-137da5612f63",
        "status" : "success",
        "creation_time" : 1473439760,
        "result" : {
            "txid" : "3b85cab48629713cc0caae99a49557d7b906c52a4ade97b944f57b81d9b0852d"
        },
        "execution_secs" : 51.64785629
    }
]

 

 

既知のセキュリティー問題

各リリースにはそのリリースに影響を与えることが知られているセキュリティの問題を記述したドキュメントが./doc/security-warnings.mdにあります。

さらに、このドキュメントの最新バージョンをここで見つけることができます。

https://github.com/zcash/zcash/blob/master/doc/security-warnings.md

 

また、最近の通知や他のリソースのためのセキュリティページを参照してください。

https://z.cash/support/security.html

 

 大変おつかれさまでした。

 

注:この記事に従って採掘できなかったり、送受信で行方不明になったりしても責任は負えませんので、自己責任でお願いします。不安な部分は必ず原文をあたったり、少額で実験するようにしてください。

また、かなり大雑把に書いてるので間違い等見つけられましたらコメントなどでご連絡ください。