Bitcoin lightning ノード(Wallet)の立て方-testnet簡易版

Masashi Nakane
暗号通貨 とセキュリティ
11 min readJan 31, 2018

1月の中旬にBlockstreamがメインネット上でのLightning/BTC決済ができるミニe-commerceサイトを立ち上げてから、”Mainnet上でのLightningノードの立ち上げ方”という情報がたくさん見つかるようになった。そのせいもあってか、これを書いている瞬間(2018/30 9PM)では、376弱のReckless(恐れ知らずの) bitcoinerが本物のお金(Bitcoin)を使ってLightningノード/Walletを立てている。

こちらMainnet Lightningネットワーク図。
URLは、 https://lnmainnet.gaben.win/

しかしながら、最初から本番環境のMainnetでやるのは、まだ、バグもあるだろうし、危険なので、テスト環境(testnet)でまずは、練習してみる。現時点で、Lightningノード/Walletには、デスクトップタイプ(ZapとLightningApp),スマホアプリタイプ(Eclair),がっつりサーバータイプ(lightiningd,lnd)がある。

目標は、”Windows/MacOSに、Zap(Lightningウオレット)をインストールしてTestnetに接続、Payment Channelを開いてBlock&Jerry’sで、アイスを買う。”だ。

裏の目的は、”LightningでPayment Channelを開く、閉じる、そしてBitcoinオンチェーンで決済する、とはなにかを体験する”こと。デスクトップタイプのLightning WalletのZap を使用する。

  1. Zap wallet をダウンロード&検証&インストール。
  2. Testnet faucetで Test BitcoinもらってZap Walletのアドレスに送金。
  3. Payment channelをオープンする。
  4. Starblocksでコーヒーの支払いをしてみる。

では、行ってみよう!

1. Zap betaのダウンロード&検証&インストール

1–1. とりあえずダウンロードする

Zap Wallet サイト(https://zap.jackmallers.com/)へ行き、Download Zap リンク先のGithubページから自分のプラットフォームにあったリンクをクリックしダウンロードし解凍する。

windowsは、win-release-vx.x.x-beta.zip (x.x.xは、その時の最新バージョン)MacOSは、mac-release-vx.x.x-beta.zip (x.x.xは、その時の最新バージョン)

1–2. ダウンロードファイルの検証(オプショナルだが推奨)

この作業は、本当にGithubにあるzipファイルがダウンロードされたかどうか検証する作業だ。1回やって癖にすれば、慣れる、やってみよう。ハッキング対策になる。特に、インストーラーや実行ファイルをダウンロードする際には、かならずやるべきである。同じネットワークにハッカーがいれば、Man-in-the-middleアタックでDownloadファイルに、ウイルスを仕込んだりファイルを入れ替えるのは、難しくないのだ。(近いうち記事を書く予定。本当は、gpgというツールも併用するが今回は端折る。)

Windowsの場合
Windowsキーを押して、PowerShellと入力し、Powershellを立ち上げ、Downloadsフォルダへ移動し、Get-FileHashコマンドを実行する。

cd $HOME\Downloads
Get-FileHash .\win-release-v0.1.0-beta.zip

これでダウンロードしたzipファイルのハッシュ値が計算される、この値がGithubのダウンロードページにあるハッシュ値と同じであれば検証OK。

Macの場合

shasum コマンドでハッシュ値を計算し、GithubサイトのMac用zipファイルのハッシュ値と比較する。

> shasum -a 256 mac-release-v0.1.0-beta.zip

1-3 インストールと起動

これは通常のインストールと同じである。

Windowsの場合
検証したzipファイルを解凍し、中にある Setupファイルを実行する。とインストールが始まり、Zap Walletが立ち上がる、しばらくTestNetとのブロックチェーンとの同期に時間(ブロックヘッドだけ同期するだけなので数百メガバイトほどで小さく数十分で終わる)がかかるので、待ち時間の間にStep2以降の作業をすすめよう。

Macの場合、
zipファイルをダブルクリック等で解凍すると、なかにおなじみの.dmgファイルのがあるので起動し、Applicationフォルダへドラッグする。そして、ダブルクリックで起動、Testnetブロックチェーン(ヘッダのみ)との同期が始まるので、Step2の作業を進める。

2.Test BitcoinをZap Walletに送る。

以降は、Windows も Macも同じである。
まずはBitcoinを手に入れよう。いまからやるのはFaucetと呼ばれるテスト用のBitcoinをタダでくれるサイトにいって、Zap WalletのBitcoinアドレスへいくらかのBitcoinを送る作業となる。

2–1.Walletのアドレスを確認

写真のように、Zap WalletのBitcoinアドレスを確認する。

2–2.FaucetでテストBitcoinを分けてもらう

https://testnet.manu.backend.hamburg/faucet

このリンク先へ行き、Walletのアドレスを貼り付け、reCAPTCHAのチェックボックスを押してから送信する。これで1.8BTC程のテストBitcoinがWalletへ送られてくる。

2–3. コンファメーションを待つ

テストネット環境では、あまりマイナーがいないので、1コンファメーションに20分ほどかかるかもなのだ。6コンファメーション終わるまでには2時間かかるので、ここで待ち状態である。以下のような、ブロックエクスプローラーで、トランザクションの状態を随時確認しよう。https://live.blockcypher.com/btc-testnet/

自分のテストアドレスにテストBitcoinが届くと、以下のように残高が表示される。あまりにも遅いならZapの再起動してもいいかもしれない。

3.Payment Channelを開く

ここまでであれば、ただのオンチェーンのウオレットと同じである。Lightning Networkでは、2つのノードがお互いに同額のBitcoinを出してリスクを担保するというトランザクションをブロックチェーンに書く(Payment Channelを開く)。以降は、その額までの間で、ブロックチェーンに書かずして(オフチェーンで=オンチェーンの書き込みなしで)お金の移動を行う。もし、インチキをしてしまいバレると相手に全額を渡すというトランザクションを発行されてしまうという、仕掛けになっている。スムーズにいけば、最終残高のトランザクションをブロックチェーンに書いてPayment Channelの終了である。が、Payment Channelは毎回、閉じる必要はなく、残高がある限り開いておけばよい。最初のトランザクションをFundingトランザクションといい、最後の確定のトランザクションをSettlementトランザクションという。

3–1. Payment Channelを開く=Funding Transactionを協働して作成する。

Zapでは、Payment Channelを開くといった仰々しい言い方はせず、Contactを追加するという。以下のように、Connectをクリックするだけで、Funding TransactionがTestnet上にブロードキャストされる。状態がPendingになる。Lightingの支払テストサイトのHTLC.meにChannelを開いてみよう。

Web Walletのため自分用のシークレットを書き留めるようにといわれるが、無視して”Got it,I wrote it down!”ボタンを押す。(書き留めておいてもいいが。)”Network”のタブを選び、Directoryを押すと、HTLC.meのLightnigノードのURIが見れるのコピーしてZapのコンタクトへ追加する。

URIをコピー
Connectをクリック

3–2. コンファメーションを待つ

Funding トランザクションの作成なので、オンチェーン。再び、コンファーメーション待ち。1コンファメーション20分。3コンファメーションで、多分Channelの状態が、Pending からOnlineになると思われる。

4.コーヒーを買ってみる

では、まずは、HTLC.meで支払してみよう。

Recieveタブを押して、Zapから支払う金額を適当に、いれる。0.0001とか。

InvoiceコードをCopyして、ZapからPayボタンを押して支払う。

逆に、HTLC.meから支払ってZapで受取をしてみよう。ZapのRequestボタンを押して、欲しい金額と明細をいれてみる。

そして、HTLC.meサイトから支払う。そのときZapの画面も横で開いてみえるようにしおこう。受け取りが完了したことを確認(Zap側のRequestedBTCの左側の時計のアイコンが消えていれば受取完了)。

では、Block&Herryでアイスを買ってみよう。

http://www.blockandjerrys.fun/

へ行き。好きなアイスを選んで、Checkoutをする。

あとは、もうわかるだろう。InvoiceコードをコピーしてZapから支払えばよい。一瞬で支払が完了するのが分かるだろう。これがLightning(雷のように速い)と言われるゆえんだ。

体験してみて、どう思っただろうか。最初のビットコインをLighting Wallet に移動する作業、そして、Payment Channelを開く作業。この2つは、通常のBitcoinの取引と同じなので、時間がかかる(Testnetであれば20分、本番であれば10分)。
しかし、このあとからの支払いや受取は、結構早かったとおもう。入力がないので、クレジットカードよりも早い。しかもChannelはFundingを使い切らない限り、開いておけばよい。
内部的には、Lightning LabsのLndサーバーノードが簡易モード(auto-pilot+neutrino)で動いているのでパソコンでは、Lightningノードが走っているということになる。一番簡単なLightningノードの立て方は以上です。
(TestnetのLightning ネットワークは分離していたり、不安定なので、タイミングによっては支払がエラーになることもあるが、ご了承いただきたい。)

次回は、Lighting WalletのEcliar Walletを触ってみたいと思う。

--

--