マイ国家

昔良く読んでいた本。book offで売ってたから読んだ。 マイホームを“マイ国家”として独立宣言した男がいた。訪れた銀行外勤係は、不法侵入・スパイ容疑で、たちまち逮捕。犯罪か? 狂気か?――世間の常識や通念を、新鮮奇抜な発想でくつがえし、一見平和な文明社会にひそむ恐怖と幻想を、冴えた皮肉とユーモアでとらえたショートショート31編。卓抜なアイディアとプロットを縦横に織りなして、夢の飛翔へと誘う魔法のカーペット。 恒例のN氏、S氏の始まり方がほっこりと懐かしい。ずっと読んでられる感じ。 そういえば星新一って国語の教科書にも出てたな。 »

アルケミスト

なんとなくkindleで読んでみた。 羊飼いの少年サンチャゴは、アンダルシアの平原からエジプトのピラミッドに向けて旅に出た。そこに、彼を待つ宝物が隠されているという夢を信じて。長い時間を共に過ごした羊たちを売り、アフリカの砂漠を越えて少年はピラミッドを目指す。「何かを強く望めば宇宙のすべてが協力して実現するように助けてくれる」「前兆に従うこと」少年は、錬金術師の導きと旅のさまざまな出会いと別れのなかで、人生の知恵を学んで行く。欧米をはじめ世界中でベストセラーとなった夢と勇気の物語。 世界で最も読まれた本ベスト10」の第5位に入っているらしく、ここまでいくと異次元だな。 作者はパウロコエーリョさんで、色々読んでみたいものだ。 彼らはどうして物事を複雑化するんですか? 知る責任のある人達が理解できるようにするためさ。我慢強く、深く探求できる人だけが、「大いなる作業」を達成できるんだ この発言をするイギリス人は多少滑稽に描かれているが、 »

btcdのsyncが遅い

めちゃくちゃ遅い。 2019/11/03にsyncを開始して、現在でblock heghtは454511。 現在のbitcoinのblock hegithは60万弱。こうやって書くと残り1週間もあればsyncが終わりそうに見えるが、ブロックが積み重なるごとに遅くなっていて、今は20秒に1blockしか積まれない。 予測では、150000 * 20 / 60 / 60 = 844時間かかり、1ヶ月程度追加でかかる試算だけど、更に遅くなっていくことを想定すると永遠に終わらなそうだ。 この辺りのことはissueにも上がっている。 seems btcd is »

pecoとhubでpullrequestをスムーズにする

たくさんのプロジェクトにPRを出していると、自分がどの作業をしているのかよくわからなくなってくる。 それに、githubを中心として開発している組織だと、PRのdescriptionを追うことが効果的なキャッチアップ方法だったりするので、PRをスムーズに調べる力は重要だ。 最初はgithubのwebから調べていたのだけど、だんだんわざわざブラウザに移るのが面倒臭くなって、手頃なものがなかったのでpecoのツールを作ってみた。 zsh on macでしか動作確認していない。~/.zshrcに下記のコードをコピペして、exec -l ${SHELL}する。 function peco-github-prs () { local pr=$(hub pr list -s all »

lnd_clientをgoで

とりあえず動かしてみるというレベル。 下記のコードでcertとmacaroonを準備して $ go run main.go --lnd.network=$LND_NETWORK --lnd.host=$LND_HOST --lnd.macaroondir=$MACAROON_PATH --lnd.tlspath=$TLS_CERT_PATH すれば動く。 package main »

pending_htlcs

pending_htlcsとはなにか。nodeを運用し始めて数日立つけど、この事象は発生したことがなかったので、気になった。 lndmonでもここはモニタリングしてるが、なかなか発生しない。 結論から言えば、lndで挙げられているissueをみればわかる。 htlcのペンディングは、受信側のnodeがなんらかの理由で保持し続けた場合か、ルーティングノードが途中でダウンした場合に発生する。 lightning networkのmultihop paymentではhtlcのコントラクトが伝染することによって、裏切りを巧みに防ぎながらオフチェーントランザクションをさばいている。 詳細としては、overviewが詳しい。 念の為確認として、htlcとは下記のようなコントラクトのことだ。 あるユーザー間(売り手と買い手)の決済を行うコントラクトで、売り手がハッシュのプリイメージを公開することで資金を入手することを可能にし、買い手が指定期間内に売り手がプリイメージを公開せずタイムアウトになった際に、資金を取り戻すことを可能にするスクリプトである。 »

routingして1sat稼ぐ

testnetでmulti hop paymentを試す。 今回のイメージは、mobileのeclairにから、desktopのlightning appにGKEのlnd nodeを介して支払う。 下記の図はGKEから見た目線。 早速、eclairから支払いを行う。 Lightning appのローカルバランスが10000のため、受け取れるのもその上限となるはずだ。 仮に15000を指定すると、no routeというエラーがでるので、1000にしてみる。 無事に受け取りが完了した。 GKE側で確認すると、feeが稼げている! $ kubectl exec lnd-btcd-0 -c lnd »

lightning_appのneutrino接続先を指定

lightning appは、デフォルトでは自動的にlightning labsの運用するneutrino mainnetにつなぎにいくが、CLIからなら色々オプションを指定できるので、testnetでneutorino optionを指定してみる。 これは軽量ながらスタンドアローンなウォレットであり、お金はどこのだれでもなく、そのデバイスの中にある仕組みだ。 ダウンロード 0.5.9-alphaをダウンロードする。で、解凍しておわり。 起動 立ち上げ時は、アイコンをクリックして起動するのではなく、terminalで動かす。 --neutrino.connect= で指定するnodeを自分で運用しているbtcd nodeとしている。 /Applications/ »

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に接続している。 »

lndのモニタリング観点について

とりあえずLNDMONを立てたものの、どうやってモニタリングしていこうか決めていない。 そもそも、lndmonの仕組みから理解していこうと思う。 lndmonは、lndmonというプログラムと、prometheus、grafanaから構成されている。下記の図ではnginxがあるが、GKEに展開する場合はingressを利用する。 lndmon コードを見ると単純で、lndのクライアントを作って、そのメトリクスをprometheusに投げている。 // Start our Prometheus exporter. This exporter spawns a goroutine // that pulls metrics »