3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

MacでDockerでbitzenydを使うところまで

Last updated at Posted at 2018-02-21

中々記事がないので、あまりまとまってないけど適当に。
だれか体裁整えて投稿し直していいのよ・・・。

ちなみに対象は、dockerとかよくわかんない人向けです。
(ぼくがdockerとかよく分かってないからね!!)

MacとかにDockerでbitzenydを起動させてみたい

できるようになること

  1. 自分のパソコンでBitzenyのウォレットが作れる
  2. がんばれはinsightとか立ち上げてインフラになれる
  3. 自分でBitzeny送金とか受け取りとかを絡めたサービスが作れるようになるかも(bitzenydにJSON-RPCでデータ投げて云々???)

とにかく、調べてやり方を書いていく。

MacにDocker入れろ

Dockerをインストールするのとか正直苦手。
apt-getとかyumとかnpmとかgemとかhomebrewとかじゃないんでしょ。
大変そうじゃん。

  1. ココ参照 https://qiita.com/hshimo/items/e24b1fbfbf775ec7c941
  2. 普通のアプリケーションと同じく、ダウンロードしてApplicationsにコピーとかで行ける
  3. (ただし、アプリケーション自体めっちゃサイズ大きいので注意)

bitzenydをDockerにインストール(この言い方間違ってそう)

  1. ココを開くだけ開いて凄い人たちの会話を眺めよう https://bitzeny.info/d/35-bitzenyd-docker/9
  2. 「おのかちおさんすげぇ!」と唱えよう。これで高校生らしいよ、おじさんついていけないよ・・・・。
  3. Dockerは起動してね
  4. イメージを取得する
docker pull onokatio/docker-bitzenyd:alpine
  1. 終わったら「docker image ls」で確認
REPOSITORY                 TAG                 IMAGE ID            CREATED             SIZE
onokatio/docker-bitzenyd   alpine              6601f7fc5e1e        2 months ago        464MB

こんな感じになるはず

bitzenyd起動

おもむろに

$ docker run onokatio/docker-bitzenyd:alpine

Error: To use the "-server" option, you must set a rpcpassword in the configuration file:
/root/.bitzeny/bitzeny.conf
It is recommended you use the following random password:
rpcuser=bitzenyrpc
rpcpassword=(ここは何やらパスワードが表示されたので消しておきます)
(you do not need to remember this password)
The username and password MUST NOT be the same.
If the file does not exist, create it with owner-readable-only file permissions.
It is also recommended to set alertnotify so you are notified of problems;
for example: alertnotify=echo %s | mail -s "BitZeny Alert" admin@foo.com

設定ファイルがないとエラーが出てるような感じがしますね。
試しに、プロセスを調べる的なことをしてみましょう

$ docker ps
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS              PORTS                    NAMES

はい、立ち上がってないですね。
ということで、設定ファイルを作って、ついでにdocker-composeで立ち上がるようにしましょう。(コマンドが長くて嫌なので)

#設定ファイルの作り方
https://github.com/BitzenyCoreDevelopers/docker-bitzenyd
やり方は全てGitHubのReadmeに載っておりました。

好きなフォルダに移動

cd (お気に入りのいい感じのフォルダへ移動)

フォルダを作成

mkdir bitzeny-data

bitzeny.confを作る

echo "rpcuser=rpc" > bitzeny-data/bitzeny.conf
echo "rpcpassword=rpcpass" >> bitzeny-data/bitzeny.conf
echo "rpcallowip=localhost" >> bitzeny-data/bitzeny.conf
echo "server=1" >> bitzeny-data/bitzeny.conf

「rpcuser」とか「rpcpass」とかは自分用に変更した方がいいと思われる、多分。

面倒さからdocker-compose.yml作ろうね

echo "# bitzeny" > docker-compose.yml
echo "bitzeny:" >> docker-compose.yml
echo "  image: onokatio/docker-bitzenyd:alpine" >> docker-compose.yml
echo "  volumes:" >> docker-compose.yml
echo "    - $PWD/bitzeny-data:/root/.bitzeny" >> docker-compose.yml
echo "  ports:" >> docker-compose.yml
echo "    - "9252:9252"" >> docker-compose.yml

docker-composeで実行

$ docker-compose up

Starting bitzeny_1 ... done
Attaching to bitzeny_1

正しく動けば上記のログが出たあとすごい時間待たされると思う

ちなみに

ここで、「volums: ./bitzeny-data:/root/.bitzeny」にしたら、怒られた

docker: Error response from daemon: create ./bitzenydata: "./bitzenydata" includes invalid characters for a local volume name, only "[a-zA-Z0-9][a-zA-Z0-9_.-]" are allowed. If you intended to pass a host directory, use absolute path.

./とか相対パスあかんらしい。
なので、$PWDを使って絶対パスにしてます。
この部分が動かない人は、docker-compose.ymlを自分でいじって絶対パスに変更してね。

Dockerのコンテナの中に入ってbitzeny-cliしてみる

$docker-compose exec bitzeny /bin/sh
/ # bitzeny-cli getinfo
{
    "version" : 1020100,
    "protocolversion" : 70006,
    "walletversion" : 60000,
    "balance" : 0.00000000,
    "blocks" : 135014,
    "timeoffset" : -4,
    "connections" : 8,
    "proxy" : "",
    "difficulty" : 0.00532161,
    "testnet" : false,
    "keypoololdest" : 1519238309,
    "keypoolsize" : 101,
    "paytxfee" : 0.00000000,
    "relayfee" : 0.00001000,
    "errors" : ""
}

何回か叩くと、「blocks」が変わるので、
無事にブロックをダウンロードしてくれているのが分かる。

ダウンロードしているデータの容量は? HDD大丈夫??

$du -d 2 -h .
918M    ./bitzeny-data/blocks
565M    ./bitzeny-data/chainstate
1.0M    ./bitzeny-data/database
1.5G    ./bitzeny-data
1.5G    .

これまだ途中ですが、1.5G超え。(2018/02/22現在)
ダウンロード済みが140151ブロックぐらいで、blocksフォルダが918MB・・・・。
今現在、Bitzeny自体ののブロック高#1144096ぐらいまで行ってるんだけど、大丈夫かなぁ・・・・(絶望

HDD(SSD)の空き容量が心配

HDD(SSD)の空き容量が心配になったら、コマンドで空き容量を確認しましょう。

$ df
Filesystem    512-blocks       Used Available Capacity   iused      ifree %iused  Mounted on
/dev/disk1     779404288  761527232  17365056    98%   5308124 4289659155    0%   /

うちのHDDはいつもカチカチです。

JSON-RPCのポートで待ち受けてるかとかを見てみる

$nc -v -w 1 localhost -z 9252
found 0 associations
found 1 connections:
     1: flags=82<CONNECTED,PREFERRED>
        outif lo0
        src ::1 port 55825
        dst ::1 port 9252
        rank info not available
        TCP aux info available

Connection to localhost port 9252 [tcp/*] succeeded!

多分何かがListenしてくれてる感じ。

curlでJSON-RPCに接続してみる

$ curl http://rpc:rpcpass@127.0.0.1:9252/ --data-binary '{"jsonrpc": "1.0", "id":"curltest", "method": "getinfo", "params": [] }' -v
*   Trying 127.0.0.1...
* TCP_NODELAY set
* Connected to 127.0.0.1 (127.0.0.1) port 9252 (#0)
* Server auth using Basic with user 'rpc'
> POST / HTTP/1.1
> Host: 127.0.0.1:9252
> Authorization: Basic cnBjOnJwY3Bhc3M=
> User-Agent: curl/7.54.0
> Accept: */*
> Content-Length: 71
> Content-Type: application/x-www-form-urlencoded
>
* upload completely sent off: 71 out of 71 bytes
< HTTP/1.1 403 Forbidden
< Date: Wed, 21 Feb 2018 18:59:53 +0000
< Connection: close
< Content-Length: 0
< Content-Type: application/json
< Server: bitzeny-json-rpc/v1.2.1.0-391f88e-beta
<
* Closing connection 0

dockerの外からのアクセスは、localhost扱いになっていないのか、
403エラーが返ってきています。これも、Bitzenyフォーラムで「satetsu888」さんという方が書いているとおり。

rpcallowipの設定を追加する

bitzeny.confに「rpcallowip=*」の行を新規追加すれば、JSON-RPCにはDockerコンテナの外からでも繋げられるようになる。
(あまり良くないと思うけど)

cntrol+c で docker-compose up してたプロセスを強制終了
$ echo "rpcallowip=*" >> bitzeny-data/bitzeny.conf
$ docker-compose up -d

-d でDetachedモードですって。daemonみたいに、バックグラウンドで動いてくれるそうです。

JSON-RPCに繋いで見る

$ curl http://rpc@127.0.0.1:9252/ --data-binary '{"jsonrpc": "1.0", "id":"curltest", "method": "getinfo", "params": [] }' -v
*   Trying 127.0.0.1...
* TCP_NODELAY set
* Connected to 127.0.0.1 (127.0.0.1) port 9252 (#0)
* Server auth using Basic with user 'rpc'
> POST / HTTP/1.1
> Host: 127.0.0.1:9252
> Authorization: Basic cnBjOnJwY3Bhc3M=
> User-Agent: curl/7.54.0
> Accept: */*
> Content-Length: 71
> Content-Type: application/x-www-form-urlencoded
>
* upload completely sent off: 71 out of 71 bytes
< HTTP/1.1 200 OK
< Date: Wed, 21 Feb 2018 19:44:01 +0000
< Connection: keep-alive
< Content-Length: 327
< Content-Type: application/json
< Server: bitzeny-json-rpc/v1.2.1.0-391f88e-beta
<
{"result":{"version":1020100,"protocolversion":70006,"walletversion":60000,"balance":0.00000000,"blocks":190775,"timeoffset":-6,"connections":8,"proxy":"","difficulty":0.00451063,"testnet":false,"keypoololdest":1519238309,"keypoolsize":101,"paytxfee":0.00000000,"relayfee":0.00001000,"errors":""},"error":null,"id":"curltest"}
* Connection #0 to host 127.0.0.1 left intact

データが、JSONで返ってきました!!
これで、ビットゼニーをやり取りしたりするサービスが作れますねー!
(ブロックのDLが終わった時、果たしてHDDは息をしているだろうか・・・・)

追記 2018/02/22

その後のディスク使用量について

朝起きたら(6時間後ぐらい?)、CPUが落ち着いていました。
MacBookPro2014とかだったかな。放っておけば数時間で同期終わりますね。

$ du -d 2 -h .
1.9G    ./bitzeny-data/blocks
625M    ./bitzeny-data/chainstate
1.0M    ./bitzeny-data/database
2.8G    ./bitzeny-data
2.8G    .

$ curl http://rpc:rpcpass@127.0.0.1:9252/ --data-binary '{"jsonrpc": "1.0", "id":"curltest", "method": "getinfo", "params": [] }' -v
*   Trying 127.0.0.1...
* TCP_NODELAY set
* Connected to 127.0.0.1 (127.0.0.1) port 9252 (#0)
* Server auth using Basic with user 'rpc'
> POST / HTTP/1.1
> Host: 127.0.0.1:9252
> Authorization: Basic cnBjOnJwY3Bhc3M=
> User-Agent: curl/7.54.0
> Accept: */*
> Content-Length: 71
> Content-Type: application/x-www-form-urlencoded
>
* upload completely sent off: 71 out of 71 bytes
< HTTP/1.1 200 OK
< Date: Thu, 22 Feb 2018 07:13:25 +0000
< Connection: keep-alive
< Content-Length: 380
< Content-Type: application/json
< Server: bitzeny-json-rpc/v1.2.1.0-391f88e-beta
<
{"result":{"version":1020100,"protocolversion":70006,"walletversion":60000,"balance":0.00000000,"blocks":1144561,"timeoffset":-5,"connections":8,"proxy":"","difficulty":0.81899299,"testnet":false,"keypoololdest":1519238309,"keypoolsize":101,"paytxfee":0.00000000,"relayfee":0.00001000,"errors":"Warning: This version is obsolete, upgrade required!"},"error":null,"id":"curltest"}
* Connection #0 to host 127.0.0.1 left intact

ブロックは#1144561まで行ってます。
http://namuyan.dip.jp/MultiLightBlockExplorer/index.php?page=selectcoin&coin=zeny
ココを見る限り、最新ですね。

HDDの必要容量も3GBいかないくらいみたいですね。
しばらくは10GBもなくていいかな。

今後の課題

同じこと、LinuxとかWindowsでもやれるようにしたいね。

追記 2018/03/03

rpcallowipの書き方がわかった

まずはDockerの方でホストのIPを固定する

docker-compose.yml
# bitzeny
version: '2'
services:
  bitzeny:
    image: onokatio/docker-bitzenyd:alpine
    volumes:
      - $PWD/bitzeny/bitzeny-data:/root/.bitzeny
    ports:
      - 9252:9252
    networks:
      brid:
        ipv4_address: 10.2.0.2

networks:
  brid:
    ipam:
      config:
        - subnet: 10.2.0.0/16
          gateway: 10.2.0.1

これで、dockerのコンテナのIPが10.2.0.2、ホストのIPが中から見ると10.2.0.1になる。

rpcallowipを設定する

bitzeny.conf
rpcuser=rpc
rpcpassword=rpcpass
server=1
rpcallowip=10.2.0.*

#あるいは
rpcallowip=10.2.0.1

「10.2.0.*」という記法は、bitcoindでは廃止されているけど、
bitzenydでは健在みたい。
逆に「10.2.0.0/24」の記法はうまくいかなかった。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?