使わなくなったAndroidスマホをBTC(LN)ノードに変えてみる
ラズパイの値段が下がらないのと、 使わなくなったスマホが増えてきたのでやってみました。
実験機として使うのはアリかもしれません。
今回使ったスマホはHUAWEI P20です。スペックはこちら。
1. Termux のインストール
今回はroot化なしでLinux環境を動かすことができるTermuxというアプリを使用します。
Google Play版は2年前から更新が止まっており、最新版はF-Droidからしかインストールできません。
まずは、こちらから最新のAPKをダウンロードして、Termuxをスマホにインストールします。
インストールが終わると自動的にターミナル画面へと遷移します。
そのままスマホで作業することもできますが、やりづらい方はこちらを参考に、パソコンからSSHで接続してください。
2. Bitcoin Core のインストール
TermuxのレポジトリからBitcoin Coreをダウンロードします。
$ pkg update
$ pkg upgrade
$ pkg install bitcoin
$ bitcoind --version
Bitcoin Core version v22.0.0
全ブロックを保存するほどストレージに余裕はないので、フルノードではなく、Prunedモードで起動します。
$ bitcoind -daemon -server=1 -prune=30000
Bitcoin Core starting
無事同期が始まりました。
$ bitcoin-cli getblockchaininfo
{
"chain": "main",
"blocks": 28822,
"headers": 749010,
"bestblockhash": "00000000063ebd9d8461591fbd8ceafbeb29cdc53234145b7280f19494af732d",
"difficulty": 1,
"mediantime": 1260079317,
"verificationprogress": 3.931727426841449e-05,
"initialblockdownload": true,
"chainwork": "0000000000000000000000000000000000000000000000000000709770977097",
"size_on_disk": 8094215,
"pruned": true,
"pruneheight": 0,
"automatic_pruning": true,
"prune_target_size": 31457280000,
...
}
自動起動を有効化する場合は、termux-servicesというサービス管理パッケージがあるので、そちらを使用します。
$ pkg install termux-services
サービスの有効化
$ sv-enable bitcoind
サービスのログは$PREFIX/var/log/sv/<PKG>
のcurrent
ファイルで確認できます。
3. LND のインストール
Bitcoin Coreをインストールできたので、今度はLNDを動かしたいと思います。
LNDはPrunedモードでも動かすことができるようなのですが、同期済みのフルノードが既にあるので、そちらと接続するように設定を行います。
スマホにインストールしたBitcoin Coreは使用しないので停止します。
$ bitcoin-cli stop
Bitcoin Core stopping
スマホのLNDと接続するために、Bitcoin CoreのRPCの設定を以下のようにします。RPCはLAN内からのみアクセスできるようにしたいので、rpcbind
はBitcoinノードのIPアドレス、rpcallowip
はIPアドレスの範囲をご自身の環境に合わせてbitcoin.conf
に追加してください。
rpcbind=192.168.1.10
rpcallowip=192.168.1.0/24
UmbrelのBitcoin Coreに接続する場合は、スクリプトを編集します。
$ nano ~/umbrel/app-data/bitcoin/exports.sh
環境に合わせて、以下を追記してください。
...
BIN_ARGS+=( "-rpcallowip=${NETWORK_IP}/16" )
BIN_ARGS+=( "-rpcallowip=192.168.11.0/24" ) #追記
BIN_ARGS+=( "-rpcallowip=127.0.0.1" )
...
コンテナを再起動します。
$ sudo ~/umbrel/scripts/stop
$ sudo ~/umbrel/scripts/start
TermuxレポジトリのLNDはバージョンが古かったので、GitHubからダウンロードします(署名検証は飛ばします)。
$ pkg install wget
$ wget https://github.com/lightningnetwork/lnd/releases/download/v0.15.0-beta/lnd-linux-arm64-v0.15.0-beta.tar.gz
$ tar -xvf lnd-linux-arm64-v0.15.0-beta.tar.gz
$ cp lnd-linux-arm64-v0.15.0-beta/* $PREFIX/bin
$ lnd --version
lnd version 0.15.0-beta commit=v0.15.0-beta
LNDの設定ファイルを作成します。
$ mkdir ~/.lnd
$ nano ~/.lnd/lnd.conf
lnd.conf
は以下のようにします。bitcoind.rpchost
はBitcoinノードのIPアドレスを設定します。
Umbrelの場合、bitcoind.rpcuser
にはumbrel
、bitcoind.rpcpass
には~/umbrel/app-data/bitcoin/.env
のAPP_BITCOIN_RPC_PASS
を設定してください。
[Application Options]
debuglevel=info
listen=localhost
[Bitcoin]
bitcoin.active=true
bitcoin.mainnet=true
bitcoin.node=bitcoind
[Bitcoind]
bitcoind.rpchost=192.168.1.10
bitcoind.rpcuser=username
bitcoind.rpcpass=password
bitcoind.rpcpolling=true
lndを起動します。
$ lnd
別のセッションからログインし、ウォレットを作成します。
$ lncli create
Input wallet password: #パスワードを入力
Confirm password: #パスワードを入力
Do you have an existing cipher seed mnemonic or extended master root key you want to use?
Enter 'y' to use an existing cipher seed mnemonic, 'x' to use an extended master root key
or 'n' to create a new seed (Enter y/x/n): #nを入力
Your cipher seed can optionally be encrypted.
Input your passphrase if you wish to encrypt it (or press enter to proceed without a cipher seed passphrase): #シードをパスフレーズで暗号化する場合は入力
Generating fresh cipher seed...
!!!YOU MUST WRITE DOWN THIS SEED TO BE ABLE TO RESTORE THE WALLET!!!
---------------BEGIN LND CIPHER SEED---------------
シードをメモします
---------------END LND CIPHER SEED-----------------
!!!YOU MUST WRITE DOWN THIS SEED TO BE ABLE TO RESTORE THE WALLET!!!
lnd successfully initialized!
あとはchain
とgraph
の同期が終われば完了です。
$ lncli getinfo
{
...
"synced_to_chain": true,
"synced_to_graph": true,
...
}
LNDのサービスを作成する場合は、以下を実行してください。
$ mkdir $PREFIX/var/service/lnd
$ mkdir -p $PREFIX/var/service/lnd/log
$ ln -sf $PREFIX/share/termux-services/svlogger $PREFIX/var/service/lnd/log/run
$ nano $PREFIX/var/service/lnd/run
以下を貼り付けます。
#!/data/data/com.termux/files/usr/bin/sh
exec lnd 2>&1
下記コマンドを実行します。
$ chmod +x $PREFIX/var/service/lnd/run
サービス有効化
$ sv-enable lnd
有料部分では
- Tor
- Ride The Lightning
- ThunderHub
- NGINX
の導入方法を紹介しています。
Termuxでもちゃんと動くんですね、知りませんでした!