ビットコインフルノードデビュー
ビットコインフルノードを立てると3000円分のsatoshiがもらえるということなのでフルノードを立てました。
というのは嘘で、もともとライトニングノードが立てたくてフルノードを立ててたんですが、忙しくて放置していたら今になってしまったという感じです。(もらえるならポイントは欲しいです)
証拠写真
getinfoの結果
マシンスペック
ラズパイ4で立てるのが流行ってますが、家に余っていたミニPCがあったのでそれを有効活用しました。追加購入が必要だったのは1TBのSSDと有線でつなぐためのスイッチングハブのみです。電気代的にはラズパイが有利だと思います。
構築手順(ざっくり)
同期に時間がかかりすぎて記憶がうっすらなのでざっくりした構築手順です。
- マシンにもともとWindowsが入っていたのでUbuntu20.04に入れ替え。
Windowsは消去しました。ヘッドレスインストールも考えたんですが、GUIあったほうがアプリでいろいろできるかなということで。必要最小限のアプリだけインストールするオプションがあったのでそれでGUIもインストールしました。
- LNDのインストール
https://github.com/lightningnetwork/lnd/blob/master/docs/INSTALL.md#installing-lnd-from-source
"Installing lnd from source"で入れました。事前にgoも入れとく必要があった気がします。
- btcdのインストール
LNDを選んだのでフルノードの実装はあまり考えないでbtcdにしてしまいましたが`make btcd`で入るのでとても楽です。
と思いきや、これだけでは`btcctl`などのコマンドが入っていないという落とし穴があり、結局btcdの方も`git clone`してきてコマンドだけ入れ直すという顛末になりました。
- 同期
`btcd --testnet --rpcuser=REPLACEME --rpcpass=REPLACEME
`
みたいにオプションをつけて起動すれば同期が始まりますが、configファイルは別に書いておくと良いでしょう。特にマウントした1TBのストレージのpathを指定しないといけないので、オプションを毎回書いてはいられません。
起動時のカレントディレクトリか、`~/.btcd/btcd.conf`に設定を書いておくとbtcdが起動時に読みに行ってくれます。
btcd.confはbtcdのリポジトリにサンプルがあるのでそれをコピペして改変しましょう。
https://github.com/btcsuite/btcd/blob/master/sample-btcd.conf
絶対設定が必要なのは、
- datadir
- rpcuser
- rpcpass
お好みでtorの設定などもできます。
ちなみにtxindexを有効にしていない場合フルノード同期後もrawtransactionを読めないということみたいです。
https://yukiosugiyama.com/crypto/post-2576/
ジェネシスブロックのsatoshiのメッセージなどはcoinbasetxに入っているはずなのですが、getrawtransactionで読めず。後で知って悲しかったです(ジェネシスブロックはハードコーディングされてるはずなのでソースコード読めばいいとは思うんですが)。なにか方法があったら教えてください。txindexを有効にして再同期するとかなり時間が掛かりそうで二の足を踏んでいます。
- 同期にかかった時間
一応開示時刻と完了時刻をメモっていたのですが12日ほどでした。ちょっとかかりすぎですね。途中でネットが切れたりしていたのであまり参考にならないかと思います。
その他
一通りbtcdのjson RPC APIをいじって遊んでいましたが、だいたい触ったんでLNDの方をぼちぼち触っていこうかと考えています。
(umbrelのほうが敷居が低そうだからそのほうが良かったかなあとすでに若干後悔している)
これでも進めていこうかな