JRRF2026 平和島ビットコイン産業 MakerChipをつかったライトニングクレーンゲーム 備忘録・ノードとサーバ構築編
忘れてしまわないうちに備忘録を残しておく。思い出したら随時追記。
LNでビットコインを送る・受け取るノードと、BitcoinSwitchが動くサーバ、LNURL-withdrawでインボイスを受け取るサーバについて。
下図でいうと赤丸のところ。

LN構成
支払うノードAと受け取るノードB、A-B間のチャネル資金、全て自分(tanakei)のものです。
- 支払うノードA
- LNDで構築。ホストマシンは私の自宅PC。
- ノードURIは非公開。JRRF2026専用で支払い相手ノードはBに限定するため、外部に公開してチャネルを開かせる必要が全くない。
- ノードBと60万satsのプライベートチャネルを開く。それ以外のチャネルは無し。
- 1回410sats、480枚なので196,800sats以上あれば良い。余裕を持たせて60万にした。
- ノードA側に流動性を寄せる。インバウンドキャパシティがあっても意味ない。
- 受け取るノードB
- LNDで構築。ホストマシンは私の自宅PC。
- ノードURIは非公開。
- rejecthtlc=trueの設定をいれる。
- HTLCの送受信は可能だが中継地点としては使用不可になる。
- ノードC間とprivate channelがあり、MakerChipを契機にした支払いだけでなく外部ライトニングウォレットからの支払いにも対応。
- 外部ライトニングウォレットから中継するノードC
- 私が中継用に2021年から運用を続けているライトニングノード
- ノードエイリアス名: Umbasa
- ライトニングクレーンゲームをMakerChipではなく来場者のライトニングウォレットの支払いで起動させるために利用した。
- 私が中継用に2021年から運用を続けているライトニングノード
下図はLNでのHTLCルーティングの可否を図解。
ノードBでルーティングはできないようにした。A->B->Cが可能だとMakerChipにある残高を来場者のライトニングウォレットでチャージできてしまい、投げ銭・ギブアウェイと同等になってしまう。private channel構成で既にルーティングはできないようになっているがノードBのrejecthtlc=trueで追加対策しており、お金配り絶対許さない構成になっている。
C->B->Aの方向は、今回の使い方ではMakerChipと連動したウォレットにチャージする必要がないし、そうされると面倒なのでできないようにしてある。MakerChipにあるLNURL-withdrawリンクではチャージできないけど。

サーバ構成
2つのLNbitsも私(tanakei)のもの。全部DIY。LNbitsをLNDに接続するための各種設定はLNbitsのドキュメントを参照。今回の構成ではLNbitsに特殊な設定などは無く、LNURL-withdrawおよびBitcoinSwitchが使えればOK。
どちらのLNbitsもネットから接続できるようにドメイン名とリバースプロキシを用意する。この説明は一般的なリバースプロキシの構築と同じなので割愛する。LNURLはhttps接続以外は不可。
- LNbitsウォレットサーバ
- LNbits v1.5.4で構築。ホストマシンは私の自宅PC。
- エクステンションに「Withdraw Links」をインストール。
- MakerChip作成編で紹介したとおり、MakerChip用にアカウントをパスワード付きで1つ作っておく。その時にuser extensionsとして「Withdraw Links」を必ず指定する事。作成したらUser IDを控えておく。
- LNbitsPOSサーバ (BitcoinSwitch)
- LNbits v1.5.0で構築。ホストマシンは私のVPS
- エクステンションに「Bitcoin Switch」をインストール。
- BitcoinSwitchの設定を1つ追加する。
- currencyをsats, 金額を410sats, durasionは2000ms,GPIOは25
- 今回50円相当の410satsにした。50円にしたかったけどsats固定の方が説明しやすいと思ったので固定にした。
- ESP32のGPIO25に電磁リレーを接続しておくこと。
- 設定を入れるとWebsocket URLができるのでBitcoinSwitchのファームウェアをインストールしたESP32にこのURLを設定する。
- インボイス取得用のLNURL-payリンクもできるので控えておく。クライアントとなるラズパイNode-REDで使う。
- currencyをsats, 金額を410sats, durasionは2000ms,GPIOは25
MakerChipにLNURL-withdrawをいれてBolt Cardのように使い、かつお金配りにしないという制約のためにこんな面倒くさいこと(特にノードAとAB間チャネル)をしている。
MakerChip無し、ユーザーのライトニングウォレットでクレーンゲームに支払って動かすならウォレットサーバもノードAも不要。この方が準備が楽よ。ああ、もっとライトニング決済が広まって欲しい






