LoginSignup
3
3

More than 5 years have passed since last update.

Bitcoin のLightning Network を使ってお買い物しました〜環境構築と支払い方法〜

Last updated at Posted at 2018-02-07

Blockstream がLightning Network(以下LN)での決済ができるECサイトを立ち上げたというこのtweetを見て居てもたってもいられなくなったので、VPSを借りてLNのノードを立てることにしました。
"Testnet is so boring" ということで、もちろんmainnnetでの送金です。

注)LightningNetworkはテスト段階の技術であるため、mainnetでの送金は資金を失う可能性があります。少額で、かつ自己責任でお願い致します。

環境構築

bitcoindのインストール

LNの実装は複数ある(LightningLabsのLNDが最もドキュメントやチュートリアルが充実している気がします)のですが、Blockstreamでの買い物ということで、Blockstreamが開発しているc-lightningを使うことにします。なお、c-lightningを立ち上げるにはbitcoindがインストールされている必要があります。bitcoindのインストール方法について詳しくは他の記事に譲りますが、Ubuntu/Debian系なら以下のコマンドでインストール可能です。

$ sudo apt install software-properties-common
$ sudo add-apt-repository ppa:bitcoin/bitcoin
$ sudo apt update && sudo apt install -y bitcoind

VPS環境でのインストールなのでbitcoin-qtはインストールしていませんが、デスクトップとかなら入れたほうがわかりやすいと思います。

次に、~/.bitcoin/bitcoin.confを作成して、適当に設定してください(参考)。次のコマンドでmainnetで起動します。

$ bitcoind -daemon

ここで、ポートの8332と9735版を開けておくことを忘れないようにしてください。それぞれbitcoind、lightningdが使用します。

また、bitcoindのログを見たい場合には次のようにすると良いでしょう。

$ tail -f ~/.bitcoin/debug.log

c-lightningのインストール

githubのリポジトリからcloneしてビルドします。

$ sudo apt-get install -y autoconf automake build-essential git libtool libgmp-dev libsqlite3-dev python python3 net-tools
$ git clone https://github.com/ElementsProject/lightning.git
$ cd lightning
$ make

lightningd を立ち上げる

lightningdは以下のコマンドでテストネット上で立ち上げることができます。

$ cd ~/lightning
$ lightningd/lightningd --network bitcoin --log-level debug

他のノードとつながってみる

cli/lightning-cli connect <ID>で他のlightningノードと接続することができます。
Blockstreamのノードとつながってみましょう。

$ cli/lightning-cli connect 02f6725f9c1c40333b67faea92fd211c183050f28df32cac3f9d69685fe9665432

Funding Transactionを作成&ブロードキャストしてチャンネルを開通する

これで、Blockstream Storeでお買い物をする準備が整いました。さっそくFunding Transactionを作成してみます。

$ cli/lightning-cli fundchannel <nodeID> ammount_in_satoshis

このtransactionが3承認されるとLNで支払いが可能になります。チャンネルが開通したかをチェックするには、

$ cli/lightning-cli getinfo

で自分のnodeIDをコピーし、

$ cli/lightning-cli listchannels | grep <your_node_id>

で自分のノードが含まれるチャンネルが見つかれば、チャンネルが開通したことを確かめられます。
チャンネルが開けていることを確認したら、とうとうLNペイメントです!

Instant payment

Lightning Networkでの支払いはinvoice-basedなので、bolt11で定義されたinvoiceを誰かに作ってもらう必要があります。

今回は、Blockstreamでのお買い物なのでBlockstreamが作ってくれます。invoiceを使って次のように支払いましょう。

$ cli/lightning-cli pay <invoice>

最後に

以上です!一瞬で送金されましたね。

c-lightningの他にもLNDなど、他にもLightning Networkノードの実装はありますので、それらもいじったり、関連のライブラリを書いたりしていきたいと思います!

不明な点や間違っているところがあればコメントやTwitterで教えてくださると幸いです。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3