zapをPCとスマホで
zapをtestnetで立ち上げた。 UIかっこいい。
zap
zapは、メジャーなlightning wallet。lightning labsのappのほうが純正だし色々あとあと楽そうだけど、こっちのほうがユーザビリティはいい。
Create a new wallet
最近のlightning walletを色々試してみたけれど、ほとんどのwalletでこの機能がある。lightningの仕組みについて理解が深ければ、違和感を感じるはず。
blue walletのようにcustodialでないのならば、バックエンドはどういうしくみなのか。例えばneutrinoなのか?
zapの場合は、mainnet1-btcd.zaphq.ioに接続している。これは記事に記載があり、zapのhostするneutrino nodeである。
ちなみに、たちあげから同期が驚異的に速い。3分ぐらいか。どっかにblock height指定してるのかな?
この手の仕様はよく見るけれど、悩ましいとも思う。どういう単位でフルノードの運用はされるべきなのだろうか。lappsを提供する各社が運用している傾向はあるものの、どこか管理するスキームがあってもいい気もする。もう一つ、LNDの開発がはやいこともあって、結果的にneutrino nodeにつなぐspv nodeがすごい数で増えているんじゃないか。neutrinoには批判もあるが、それが顕在化したときの影響は大きそうだ。
今回は、自分で立ち上げているlnd nodeにたいして、直接コントロール権を得るパターンで行ってみる。自分で立ち上げているbtc nodeに対して、neutrino接続するoptionは提供されていない。その場合は、自分でzapをbuildする必要がありそうだ。
前提として、LNDの立ち上げは終わっているものとする。 必要な物は、tls.certとadmin.macaroons。つまり、スマホに入れたりして盗まれると管理しているlnd nodeごと持っていかれたことになる。
PC
GKEにノードをデプロイしている前提で進める。
下記に必要なフォームを入力すれば良い。
hostは、下記コマンドで取れる。
portは自分で設定しているものになるが、特に変更していなければ10009だろう。
$ kubectl get service 2019/11/03 9:58:33 [master]
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
lnd-btcd-s LoadBalancer x.x.x.x x.x.x.x 9735:31802/TCP,10009:32298/TCP,8989:30195/TCP 13d
tls.certとmacaroonも、例えば下記コマンドで取得する。
kubectl cp lnd-btcd-0:/root ~/Desktop/root -c lnd
あとはそれぞれを指定して接続すれば、あっという間に終わるだろう。
android
もっとも簡単な方法は、PCのzapでQRコードを作ってそれを読み込む方法だ。 profile->connectと進むと、QRがでてくるのでこれを読み込めばいい。だけど、少し味気ないし、何がおこっているのかわかりにくいので、自分でQRを作ってみよう。(最初機能の存在に気づかなくて自分でやってしまっただけ)
まず、このQRっていうのは、要はhostとtls.certとadmin.macaroonsをコード化したものだ。そして、そのための文字列はlndconnectというコーデで作られる。だからこいつを動かして文字列を作って、それをqrencodeとかでQRにしてやればいい。
go get -d github.com/LN-Zap/lndconnect
cd $GOPATH/src/github.com/LN-Zap/lndconnect
make
lndconnect -j --host=x.x.x.x -p 10009 --adminmacaroonpath=~/Desktop/root/.lnd/testnet/admin.macaroon --tlscertpath=~/Desktop/root/.lnd/testnet/tls.cert && qrencode -s 1 -m 2 -t ANSIUTF8
できた。
両方使ってみてきづいたけど、GKEのノードに接続したほうがユーザビリティはいい。neutrinoでは、立ち上げしたときに一瞬blockのsyncが入る。