daedalus walletがネットワーク接続中のまま進まない

ADAを保持するためdaedalus walletをinstallしたが、起動してすぐにネットワーク接続中のまま動かなくなってしまった。何の設定もしてない状態なのでとりあえず再インストールもためしてみたが効果なし。

なのでググってみるとそういう事例はたくさんあるようこんなのを見つけた。
IOHK statement: connecting to network issue - Announcements - Cardano Forum

ただ、どれも自分の状況とは一致しておらず解決せず。
ということで自分で調べてみることに。

ログの場所は以下のFAQの下部に書いてあった。
Daedalus - Cryptocurrency wallet

macならここ
~/Library/Application Support/Daedalus/Logs

以下のコマンド実行後、walletを起動するとcardano-node.logにエラーが見つかった

$ tail -f ~/Library/Application Support/Daedalus/Logs/*
...
[node.worker.subscription:ERROR:ThreadId 563] [2017-12-23 08:04:43 JST] dnsSubscriptionWorker: no relays found for index 1
[node.worker.subscription:ERROR:ThreadId 563] [2017-12-23 08:04:43 JST] dnsSubscriptionWorker: DNS failure for index 1: [OperationRefused]
...

というわけで名前解決に失敗していることがわかった。

ps aux | grep cardanoでプロセスを確認するとcardano-nodeの起動時に多くのパラメータが設定されていることがわかる。その中の一つに以下のようなものがあった。

--report-server -n http://report-server.cardano-mainnet.iohk.io:8080

ネットワーク接続中となるのは、report serverに情報を送信しますか?という画面の直後だったので、おそらく↑への接続時にdnsが引けないのではと考えられる。

digしてみると、やはりIPアドレスを引けていない。

$ dig report-server.cardano-mainnet.iohk.io 
; <<>> DiG 9.8.3-P1 <<>> report-server.cardano-mainnet.iohk.io
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 381
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;report-server.cardano-mainnet.iohk.io. IN A

;; Query time: 3 msec
;; SERVER: 2404:1a8:7f01:b::3#53(2404:1a8:7f01:b::3)
;; WHEN: Sat Dec 23 08:24:12 2017
;; MSG SIZE  rcvd: 55

ちなみにネームサーバとしてgoogleのを使うと引ける。

$ dig report-server.cardano-mainnet.iohk.io @8.8.8.8
; <<>> DiG 9.8.3-P1 <<>> report-server.cardano-mainnet.iohk.io @8.8.8.8
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 9757
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;report-server.cardano-mainnet.iohk.io. IN A

;; ANSWER SECTION:
report-server.cardano-mainnet.iohk.io. 299 IN A 18.194.141.68

;; Query time: 95 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Sat Dec 23 08:25:01 2017
;; MSG SIZE  rcvd: 71

よく見ると、デフォルトの設定ではネームサーバとしてipv6のものが使われている。試しにプロバイダのdns(ipv4)に向けてdigをすると正しく解決できた。

ちなみに、2404:1a8:7f01:bでググってみるとこれはNTT 東日本が設置しているデフォルトの DNS サーバーの模様(今回試した環境ではフレッツ光を使っている)。

よくある質問と回答 - OPEN IPv6 ダイナミック DNS for フレッツ・光ネクスト

というわけで、ネットワークの設定を見てみるとdnsの項目にipv6のものが設定されてることが判明。そこをipv4のものに変更してやってみると無事ネットワーク接続中から先に進むことができた。

ナンクロで数字探しを省くためのツール作成

最近漢字ナンクロをよく解いたのだが、問題が大きくなってくると熟語を考えるより数字を探す時間の方が長くなってしまい面倒だった。それを解消するためこちらのようなツールを作った。
https://y-kamiya.github.io/nankuro-editor/public/

使い方

repo上にexamplesとして例となるデータをおいたので、同じようにjsonファイルを作ってブラウザ上で読み込めばOK

{
    "data": [
        [2,4,1,3,4],
        [4,0,2,4,0],
        [2,2,0,2,5],
        [0,5,3,0,1],
        [1,3,2,5,3]
    ]
}

上のようなデータをloadすると下のような画面になる
f:id:y-kamiya:20171217163747p:plain:w200

上部に答えを入れるテーブルがあり、focusすれば問題中の対応する部分もわかる。
解いている間に間違って戻るなどボタンなど押してしまうとすべてクリアされてしまうので注意。save fileをすれば答えも含めてjsonとして保存できるので、解きつつたまにsaveしておくことを推奨。

ちなみに、問題が大きい場合jsonデータを作るのが大変なので、imageファイルから必要なデータを読み取ってjsonするツールを別途作成中。

実装

reactで実装。tableの各セルの値に合わせて処理を変える必要があるが、reactだとその部分をcomponentとして分離しておけるので相性よく感じた。また、

  • 入力に応じてイベントを飛ばす
  • イベントに応じてstoreの処理
  • storeの状態に応じて表示分け

とすべてを分離して書けるので各々をすっきりと書くことができ、ロジックを考える上でも混乱することなく進められたのもよい。

開発環境についてはホストの環境上にいろいろinstallするのを避けたかったためdockerを利用。
docker-composeは特に使う必要なかったのだが、使うimageやオプションを設定ファイルとして書いておけるというメリットがあるので使ってみた。

ソースはこちら
https://github.com/y-kamiya/nankuro-editor

docker container内でcpuminerをビルド(bitzeny)

cpuminerでマイニングするためminerdをビルド。その際ごちゃごちゃさせたくなかったのでdockerのコンテナでやったのでメモ。ちなみにビルドしたのは最近話題になっているbitzeny用のcpuminer。

このqiitaの通りで問題なく苦労するとこはなかった。 https://qiita.com/s_ktmr/items/f46c0d814a340407cf06

Dockerfileはこんな感じ

FROM ubuntu:16.04

RUN apt-get update -y \
 && apt-get install -y git automake build-essential libcurl4-openssl-dev

RUN git clone https://github.com/bitzeny/cpuminer.git

WORKDIR cpuminer

RUN ./autogen.sh \
 && ./configure CFLAGS="-O3 -march=native -funroll-loops -fomit-frame-pointer" \
 && make \
 && make install

こちらのrepoにあげてある。 https://github.com/y-kamiya/docker-cpuminer-bitzeny

↑のDockerfileのあるディレクトリで以下のようにすればminerdが使える

$ docker build -t image_name .
$ docker run --rm -it image_name /bin/bash
# minerd <必要な引数>

とりあえず動かしてみたくらいなので、dockerhubには上げてない。もう少しちゃんと書いたら上げるかも。

minerd自体の使い方はこちらの通り。poolへの登録についてなども書いてある。 https://cryptomamiya.com/index.php/2017/10/30/post-250/

~ ~ ~ ~ ~ ~ ~