2022年1月21日、Nayuta Core v0.4.4をリリースしました。
ダウンロードはこちらです。インストールされている方はGoogle Playからアップデートされると思います。
主な変更点
最小LN手数料最大値を変更(1 sats → 5 sats)
Lightning Networkで送金する際、基本的に中継ノードに対して手数料を支払います。送金ルートはなるべく小さくなるようにNayuta Coreのノード(LND)が計算するのですが、異常に高い手数料を支払ってしまわないように設定画面で上限を設定できるようにしています。デフォルト値は送金額の0.1%です。
送金額の0.1%では小さすぎて手数料にならない場合があるため、v0.4.3 までは 1 sats を下回る場合は固定値で 1 sats となるようにしていました。
しかし 1 sats では中継できないという報告が多数上がっていたため、その場合には手動で 0.1% の値を変更してもらうようにしていただいていました。
今回、主要ノードをいくつか決めて1ヶ月間の手数料を観察し、5 sats 以内に収まっていたため、v0.4.4 から最低額を 5 sats に変更しました。

あくまで「手数料最低額の上限」なので、例えば手数料が 2sats で済む場合は 2sats しか使いません。
Bitcoin送金額制限
Bitcoinの額が関連する操作で制限や通知が出るようになりました。
- Bitcoinの1回の指定送金額を 999,999 sats 以内に制限しました
- Bitcoin受金要求時、amount入力が必須になりました
- Bitcoinの1回の受金要求額を 999,999 sats 以内に制限しました
- 残高の合計(Bitcoin, Lightning)が 1,000,000 sats 以上になる場合、ホーム画面に⚠マークを表示(タップするとダイアログが表示)
Slack Appは公開されているものをインストールするだけでなく、自作もできる。ちょっとしたものであればツールとして作っておくと便利だと思っている。
BitcoinのTXIDをSlackに貼ってもらうことがあって、わざわざ block explorer みたいなものを立ち上げて確認したいわけではないけど、ちょっとだけ見ておきたいということがある。
勉強がてら、そういうのを作ってみた。

といっても、全然大したことはしていない。
まず、Slackのページにあった JavaScript のチュートリアルを動かした。ライブラリ名が「Bolt」だが、Lightning Network とは何の関係もない。
やったのは「イベントの設定(HTTP)」まで。
組み込みたいチャネルに合わせて設定をしておく。
あとは、チャネルに書き込まれたデータが TXID っぽかったら抽出して block explorer の API を呼び出し、そのレスポンスからいくつか抜き出して Slack に書き込むだけである。
こちらは mempool.space さんの API を使って作ってみたものだ。
sample.env
を .env
という名前にして、編集してトークンを埋め込み、 app.js
を立ち上げるだけである。
Slack から呼び出せるようにしないといけないので、どこかのクラウドサービスを使ったり、ngrok のようなサービスを使ってみるとよいだろう。
今回は TXID 風の文字列を正規表現で拾うように作っているが、コマンド風にしたり、Bitcoin じゃないものにしたり、全然違うことしたりと応用が利きやすいと思う。
注意点はセキュリティだろうか。これは Slack が危険とかそういう話ではなく、サービスを使うなら気をつけましょうということだ。会社でルールが決められていることもあるだろうし、アプリになってるから何か大丈夫そうに思われてしまうこともあるだろう。この時代、何をするにしてもセキュリティから逃れるのは難しい。まあ、使ってよいかどうかは個人/企業の判断だから細かく言うまい。
Boltシリーズ?としては JavaScript用、Python用、Java用が用意されている。本家から出ているというのはありがたい。今まで私が使ったことがあるのは Go用の slack-go というライブラリだけだったのだが、APIの仕様が変わって数年前に作ったものが動かなかったのだ(slack-go を更新すれば動いたと思うが、そこまでやってない)。
他の言語でも誰かが作ったライブラリがあるかもしれないし、そんなに難しいことをしないなら調べながらでもできるんじゃなかろうか。私が作ったところだって、HTTPのリクエストを出して、レスポンスのJSONを適当に解釈するくらいだった。
こういうちょっとしたツールを作るのも気分転換になってよいと思う。
ソフトウェアの準備
まず、Raspbery Piにログインする。
ログインの仕方は「Raspberry Piの準備」などを参考にすること。普通にログインすれば良い。
初回はアプリのインストールなどを行う。
2回目以降はアプリを起動するだけである。
初回やること
オリジナルはいろいろ修正が必要になったので、Pocket用かつJPY用に修正版を作った(READMEなどは更新していない)。
git clone https://github.com/nayuta-ueno/LightningATM.git
cd LightningATM
pip3 install -r requirements.txt
アプリの起動は自動にしていないので、コマンドラインから打ち込む。
./app.py
ハードウェアの組み立て
Lightning ATMの動画といろいろ違うので注意。
電源
電源は借り受ける際に既に作ってあったのでよく知らないが、動画の通りだと思う。
右側をネジ止めしていないのは、何度も付けたり外したりしているうちにネジが締まらなくなってしまったのでハンダ付けしただけである。
USBから電源を取って、ここからRaspberry Piとコインセレクターに接続する。
なお、USBの電源に挿す方(Raspberry Piに挿す方ではない)のケーブルはケースの穴から通してから電源基板につないでおくように。
USBコネクタの大きさが穴を通らないのである。
e-Paperの動作確認
ここで使うもの。これらと、あとはRaspberry Pi用の電源もいる。
e-PaperはPocket Editionのページを見てセットアップするのが良いだろう。
スイッチ設定は左が「A」、右が「0」だ。