ライトニングフォーセットを2ヶ月半やってみた結果

ビットコインをライトニングネットワーク上で無料でもらえるサービスを開始して2ヶ月半が立ちました(正確にはもっと前からやっていましたが)。そこで今回はフォーセットの利用状況についての結果について報告したいと思います。

私が提供していたサービスは、1日に200satoshiをライトニングネットワーク(以下、LNと略す)を使って無料で送金するというサービスです。LNノードやEclair Wallet、Bitcoin Lightning Walletを持っている方は毎日200satoshiを受取ることが可能ですが、BlueWalletのようなカストディアルウォレットの場合は、LNノードは1つなので一日の初めに誰かが受取ってしまうと翌日まで誰も受取れなくなります。要は、早い者勝ちです。

以下は2019/2/1から4/19までのフォーセットでビットコインを受取ったノードと払い出し合計です。

合計ノード数:177

払出し回数 :1150 回

払出し金額 :1350(4/20時点の相場)0.0023BTC

 

一番払い出し回数が多かったのはBlueWallet用ノードで55回でした。ほぼ毎日誰かがゲットしていたみたいです。この無料フォーセットでどうやって収益を得ているかと言いますと、、、赤字です!

そこで広告枠を設けて、誰でも自由に広告をアップできるようにしてみました。広告主は2000satoshi(約10円)でLNペイすることで、簡単に広告をアップすることが可能です。皆さんも是非試してみてください。

↓無料でビットコインが貰えるフォーセット↓

https://light.yuyaogawa.com/faucet

 

以下はフォーセットを利用したLNノードの一覧情報です。

 

1
回数エイリアス名最終受取時刻
2
5503021c5f5f57322740e42019-04-19
3
52LivingRoomOfSatoshi.com_LND_12019-04-18
4
50lightning-roulette.com2019-04-18
5
39fedaykin.node.GLN12019-04-18
6
37OpenNode2019-04-18
7
35zigzag.io2019-04-19
8
26bleskovyuzel.info2019-04-14
9
25LightningTESTER.COM2019-04-18
10
25PeerName.com2019-04-19
11
24Craig Wright is a fraud2019-04-18
12
23microbet.fun2019-04-18
13
22VIX182019-04-19
14
21Gheop2019-04-18
15
20BuzzLightning2019-04-05
16
19LIGHTNINGLORD2019-04-18
17
19fedaykin.node.GLN22019-03-24
18
19KillyTheBid2019-04-18
19
18LNTurkiye2019-04-18
20
17CedRacine2019-04-18
21
17viprutv2019-04-19
22
17Quackman2019-04-19
23
16PsychedelicBart2019-04-19
24
16moneni.com2019-04-19
25
16themainesource2019-04-15
26
15Kortik nodl [LND]2019-04-19
27
15
03979017991122f2bc335266dca17
2019-04-19
28
14doublejump2019-04-03
29
14
0347793e4ee1209bf864ac74da1df
2019-04-18
30
14yalls.org2019-03-18
31
13TheMakers_WK02019-04-18
32
13zapread.com2019-04-18
33
12
02f0a621f3f450e04e42e6a4a8767
2019-04-18
34
12voigt.kampff.ln2019-04-18
35
11yalls.org2019-04-18
36
10ROME2019-04-19
37
10
020cd009b6a0c9682b38267ca45c0
2019-04-18
38
10
03b8bd58f49a080272fe6b145595a
2019-04-18
39
9Jenny2019-04-05
40
9
0240b0f6e7bd9b483cbf65fa82a02
2019-04-17
41
9Panthera2019-04-18
42
9thepkbadger2019-04-19
43
9JK2019-04-09
44
8BigTruck2019-04-13
45
8KINGBTC2019-03-28
46
8
03faa072a66822ecbc82a66c55cec
2019-04-18
47
7voigt.kampff.CLN2019-03-24
48
7FUGEE2019-03-16
49
7
0246910a202814b5dd7f84c8f670f
2019-04-06
50
7electrolyte.holydoctrine.com2019-04-19
51
7
02c2176b1237432523f622e10a3cc
2019-04-19
52
7lightninghood2019-02-02
53
7toritobravo2019-03-02
54
7MyCryptoMarket.ca2019-03-23
55
7TotalBuzzKit2019-02-01
56
7ThunderLord2019-04-17
57
6yybazaar.com2019-03-24
58
6lightningnetwork.games2019-03-23
59
5VidaPura2019-02-02
60
5PuraVida2019-02-02
61
503fafb88f3da97ed0cf82019-02-02
62
4
02048366b05437ff5fe650c76b401
2019-03-29
63
4BlockLightning2019-03-19
64
4etleneum.com2019-04-18
65
4telegram.me/lntxbot2019-04-18
66
4
02cc71303464f5bc215bcc27874d9
2019-04-19
67
4DONQUICHOTTE2019-02-02
68
4Bitrefill.com2019-02-03
69
4ilay2019-04-09
70
4lnwallet.io2019-03-23
71
4
03da3b917a178f46472f55ba2dfc1
2019-04-18
72
3recklessbadass2019-03-23
73
3⚡️🔥 BC.GAME🔥⚡️2019-04-18
74
3ln01.bitpie.com2019-04-19
75
3www.btc43.com2019-03-25
76
3
02de56dca00214cb5be947e90c2e1
2019-04-03
77
3
02ee563b76db71e5c7a3b0f46be79
2019-03-24
78
3TeeMoney2019-03-26
79
3
0383b0401634eac7d934039d4d3a7
2019-04-02
80
3Estonia2019-02-03
81
3
039848b5a631f6db7d255be1f22c5
2019-03-28
82
3SnowMiningLN2019-04-06
83
2Phobby2019-03-26
84
20236ce9a77dfd350e3f72019-03-08
85
2Open a Channel Back2019-04-10
86
2
02719fd1202bc306c04130c864a65
2019-04-05
87
2
027382158d8bdd391e6b5737fd05d
2019-04-05
88
2
0278a46f6290720fec264b91a8e0a
2019-04-09
89
2Marx2019-04-02
90
2
0293fd332dc397425b6ca2571094d
2019-03-19
91
2
02948296743f279860f1d72bc4563
2019-04-18
92
2
02a6ac538b88e88365294baed0ad7
2019-04-01
93
2Bloctavius2019-04-02
94
2
02afb0c618be6a138cdb33dd68a2c
2019-04-18
95
2
02db54f87c196f3794b69755ef3ab
2019-04-15
96
20306161db625273a15d82019-04-10
97
2NEURON2019-03-31
98
2I-942019-02-01
99
2
03812d868a5cf891c9e0104213340
2019-04-11
100
2Wed’s Node 📘2019-03-26
101
2
039f93a355a11e843d8a27df13147
2019-04-19
102
2
03bb6ca1dbfd95055399be5c984eb
2019-04-16
103
2
03cdf8a6d0c27a3aa64cecca4f0d3
2019-03-24
104
2BitDouble.io2019-04-14
105
2Kailua2019-04-04
106
2
03f75400aad239ef70016a416d176
2019-03-30
107
1LivingRoomOfSatoshi.com_LND_22019-04-09
108
1Home2019-03-27
109
1
021e3c922b23a728cb4f229404a21
2019-04-19
110
1FreedomCarolinaLN2019-03-25
111
1
022fd1476796a35e81fb2773ca761
2019-03-29
112
1
023572c240b8420fd339bd9413f6f
2019-03-19
113
1edonasac2019-02-04
114
1aranguren.org2019-03-17
115
1satoshis.place2019-03-22
116
1
025428618a56b990b85f5e76373fc
2019-04-11
117
1CRYPTOX2019-03-28
118
1UB_Jimmy2019-03-21
119
1FreeCody2019-04-10
120
1026a0ccc1e8f306827042019-03-02
121
1https://store.creamer.online2019-04-02
122
1dmbw.Latvia.2019-03-17
123
102834cb4af9fb2339bf09fa3a35a92019-04-03
124
1
0284807728228ac2044e31d089a0e
2019-04-10
125
1
02864828c8e5c6007c4455230519a
2019-04-19
126
1
028dcbb5546264931bfaab9617795
2019-04-06
127
1
029942fc18ce66b5eb3cabac75fc0
2019-03-28
128
1Chamicoin Lightning2019-04-01
129
1eclair.lightningnode2019-03-24
130
1
02a2efa7adfb5303c1ed32671a782
2019-04-05
131
121 nodl [LND] LNFAN2019-03-21
132
11.lightningcn.com2019-03-09
133
1ClamsCasino2019-03-04
134
1
02e8c39220109a93fe74aec3d32c8
2019-04-06
135
102e98c3260f006f277a92019-03-17
136
102ede2c27062cc2b0a042019-01-30
137
1
02f06609358d03813916d5dc10482
2019-04-18
138
1LOOPING[LND]2019-04-05
139
102f94eaf14fa05f9b6ba04769995b2019-03-22
140
1ENIGMA2019-03-16
141
1
030e52afc05496e2fd02a28082586
2019-04-19
142
1stevenisko2019-04-14
143
1BUGS e.V. ⚡️2019-03-23
144
1eclair2019-02-01
145
1Berlin2019-03-24
146
1lightningwall.tips (CryptoNews)2019-03-18
147
1
0329debc0dc736f894035e86fdc04
2019-04-14
148
1
032dad677072b8f503726df872b27
2019-04-18
149
1bugbytes2019-03-23
150
1
033c335ca38b3427198309d1060db
2019-04-11
151
1
033ee894cc60f0b496761ea2e2245
2019-04-19
152
1
034292ed12a06ea1bb526b7aaa29e
2019-03-30
153
1
034ea20ae28455d2ebe24233e725f
2019-04-19
154
1Bpay2019-03-21
155
1037667a61f11bdfd28a02019-03-27
156
1mangefort2019-03-23
157
1mystore2019-03-09
158
1HeadoLN2019-03-28
159
1Ratatat#min0.015BTChannels2019-03-06
160
1
0392d7217e00af15ff345ce924e65
2019-04-06
161
1lightning-node.online2019-03-24
162
1
03a51821dbff93384c00d39f3ba48
2019-03-02
163
103a8d85cfaac5fc6e5e338940e7f32019-04-19
164
1lnd.1sat2019-04-10
165
1
03c3a1956ba47c45850477b90f52f
2019-03-07
166
103c80be3937717b502e62019-03-22
167
1SILENTWALK2019-03-10
168
1En2019-03-18
169
1Spinator2019-03-21
170
1
03dae33384754265f1c754adf84d5
2019-04-09
171
1My_Livin_Truth2019-04-05
172
1
03e155fc7bb80300eb0298946fcec
2019-04-19
173
1Cosmo2019-04-06
174
1
03ec7d189bb2c2272a7881fc2a1bd
2019-04-10
175
1
03ee22ea9e228157e9d03700c37e9
2019-04-05
176
1lightningmessage.info2019-04-02
177
1
03ffc0e14b7436b3d820a433f5aea
2019-03-16
178
1
03ffeb87a46737568fe3988be14b5
2019-03-25

ライトニングネットワークとは?

ライトニングネットワークは、ビットコインを拡張した技術です。ビットコインが有名になったことで、ビットコインを使うユーザが多くなりました。それによって、送金手数料が高くなったり、送金時間が遅くなってしまいました。これを「スケーリング問題」というのですが、この問題を解決するために「ライトニングネットワーク」という技術が開発されました。

 
現在、ライトニングネットワークはメインネットで稼動し、多くのユーザーに使われています。ライトニングは、モバイルアプリやデスクトップアプリとして使うことができます。モバイルアプリの紹介はここを参照してみてください。

 

さて、今回のブログでは、ライトニングネットワークの仕組みを簡単に説明します。ライトニングネットワークでは、主に以下の2つの仕組みで構成されています。

  • ペイメントチャネル
  • マルチホップペイメント

今回は「ペイメントチャネル」について説明します。

 

ペイメントチャネルとは?

まず始めに、もし通常のビットコインを使ってコーヒーを3杯買った場合、どうなるかを見てみましょう。支払い毎に手数料を払う必要があるのが分かります。

では、なぜ支払い毎に手数料が発生するのか?ビットコインにおける手数料とは何か?ですが、それは「ブロックチェーンへのデータ書き込み」をする時に発生する費用のことなんです。

なので、このブロックチェーンへの書き込み回数を少なくしてあげれば手数料が減ることになります。

では、どのようにすれば書き込み回数を減らすことができるのかについて見ていきましょう。

まず始めに、お客さんとお店との間で「バランスシート」を作成します。この時に、お客さんはいくらデポジットするかを決めます。今回の例では3ビットコインをデポジットしています。

そして、コーヒーを買うときに、このバランスシートを更新します。

二杯目を買うときも、再度バランスシートを更新します。

二杯目を買うときも、再度バランスシートを更新します

このような流れで、コーヒーを買う時の決済はこのバランスシートをどんどん更新していきます。そして、コインがなくなった時点でこのバランスシートをブロックチェーンへの書き込みます。こうすることで、以下の図のようにブロックチェーンへ書き込みは、バランスシートの作成の初めと終わりの2回になります。

通常のビットコイン支払いとライトニング支払いでのブロックチェーン書き込み回数を見ると、前者が3回で後者が2回となっていますね。

このように、ライトニングではバランスシート作成時の最初と最後だけをブロックチェーンへ書き込み、日々の決済ではブロックチェーンへの書き込みをしないので、手数料が格段に安くなります。このバランスシートを使って2者間で残高を更新していく仕組みを「ペイメントチャネル」といいます。

※バランスシートはいつでも、お客さんまたはお店のどちらでも、ブロックチェーンへ書き込み、コインの清算をすることが可能です。

 

今回は、お客さんがお店Aに対して支払いをしましたが、もしお店Bに対してライトニング支払いをしようとした場合、お店Bに対してもバランスシートを作成しないといけないのでしょうか?

 

これについては、冒頭で触れた「マルチホップペイメント」を使うことで解決することができます。マルチホップペイメントについては次回のブログで解説したいと思います。

今回使用した画像はココからライトニング支払いで購入することができます。

ライトニングペイを体感してみよう!

本サイトでは英国ブランドのジャックウィルスをライトニングペイで購入いただけます。その他通常のビットコインやライトコインにも対応しています。以下の写真をクリックし商品ページより購入できます。

サンドルフォードTシャツ
フルフォードクラシックTシャツ
クロムフォードノットTシャツ
iPhone 6/7 Plus Case
短編小説(デジタル商品)

ライトニング体験の向上パート2 チャネル開設サービス「Thor」

Thorとは、Amazonギフトカードやプリペイドカード、バウチャーなどを仮想通貨で購入できるサービスを提供しているBitRefillが開始した、ライトニングネットワークのインバウンドチャネルを開設してくれるサービスです(リンクはここ)。

以下のように、チャネルキャパシティを指定して購入できるのですが、個人的にはかなり高い気がします。

何はともあれ一度はサービスを使ってみようと思い、170円で500,000satチャネルを購入してみました。チャネル開設にはBitcoin Lightning WalletかLNDなのですが、ここで私はふと考えまいた。

もしかして、Denryu Walletでもいけるんじゃね?(Denryu Walletについてはここを参照)

そう思い立ち、すかさずDernyu Walletを取り出し、購入後に手に入る以下のQRコードをスキャンしてみました。

すると、、、Denryu Walletにチャネル接続の画面が表示されました!!

そして、3承認後に、チャネル開設が完了しました。

次に、受取ができるかの検証です。私が運営しているLightning Faucetのページへアクセスし、Denryu Walletで作った200satのインボイスを張り、ボタンをプッシュ!

なんと!

見事に200satを受取ることができました!

ツイッターとビットコインチップ

ツイッターのCEOであるJack氏がコメントでもしていたtippin.meについての紹介です。

https://platform.twitter.com/widgets.js

使用方法

tippin.meは、ツイッター上でビットコインの送金ができるプラグインをリリースしました。本プラグインはChromeFireFoxのエクステンションとして提供されており、2クリックでインストールが可能です。

インストールが完了し、Chromeからツイッターにアクセスすると、以下のように各ツイートにライトニングマークが表示されるようになります。

 

ライトニングマークをクリックすると、以下のようなQRコードが表示されるので、ライトニングネットワーク搭載ウォレットのEclairやBLW、Denryu Walletを使ってスキャンし送金することができます。

ただし、相手がtippin.meのアカウントを持っている場合に限るので、もしアカウントを持っていない場合、以下のようにエラーがでてしまいます。

 

受取った相手は、tippin.meへアクセスすることで、以下のように残高を確認することが可能です。また、履歴をクリックするとどのツイートに対してライトニングチップが支払われたかを知ることができます。

 

感想

アカウントさへ作ってしまえば、簡単に1satoshiからチップを送れるので面白いアイディアだと思います。ただし、プラグインを導入しても、タイムライン上にはライトニングマークが表示されているだけで、どのツイートにいくらチップが支払われたのかが見れるといいなと思いました。また、チップを送る場合はtippin.meの残高から送金できる機能も必須機能だと思います。現状は、tippin.meアカウントを持っていてもそこからの支払いができなく、わざわざ別のウォレットを使う必要があります。今後のさらなる開発が期待されるサービスだと思います。

ライトニング体験の向上!?インスタントチャネルとアトミックスワップ

はじめに

Instant
2019年に入り、ライトニングネットワーク(以下、LNと略す)のオンラインウォレットが続々とでてきました。BlueWalletやWallet of Satoshiなどがそれにあたります。これらのウォレットはチャネル開設が不要で使い勝手が良いのですが、その反面、中央集権サービスのため、サービスダウンやチャネルキャパシティ不足が原因で一時的にサービスが使えない場合があります。

EclairモバイルやBitcoin Lightning Wallet(以下、BLW)はライトニングモバイルウォレットなので、サービスダウンなどはありませんが、チャネル開設が必要なのでインストール後直ぐに送受信することができないのがデメリットでした。

しかし、BLW開発者のAnton氏によって「インスタントチャネル」というチャネル開設時に、0承認でも送金できる方法が提案されたので、今回はその仕組みと、応用例について解説したいと思います。

インスタントチャネルとは

LNのチャネル開設ではFundingTxというトランザクションを作りブロックチェーンへ書き込みます。そして、このデータが1承認以上経たないと、そのチャネル上でビットコインの送信ができない仕組みになっています。しかし、インスタントチャネルでは、この承認を待たずしてコインの送金が可能になります。

このインスタントチャネルは、ボブがアリスに対して0.5BTC:0.5BTCのプッシュ式でチャネルを開設します。この方法でボブがチャネル開設するとアリスはボブに対して0.5BTCを直ぐに送金することができます。

しかし、これではボブがアリスへ無料で0.5BTCをあげているように見えるのですが、以下のユースケースの場合は、インスタントチャネルが役立つと想定されます。

  • 対面でアリスがボブにインバウンドチャネル0.5BTCを日本円で購入する場合
  • アリスがオンラインゲームなどで0.5BTCのLN上ビットコインを購入する場合
  • アリスが取引所から0.5BTCを引き出す場合

0承認での送受信は安全か?

もし、アリスがこのチャネル上でボブを経由してキャロルへ送金した後に、FundingTxがブロックチェーンに取り込まれず、メモプールから追い出された場合はどうなるでしょうか?この場合、ボブは損をすることになるのでしょうか?答えは、ノーです。

    1. アリスがボブへ0.5BTC相当の日本円を渡します。ボブはアリスに対して開設をします (0.5 アリス / 0.5 ボブ)。
    2. ボブは既にキャロルとの間にチャネル開設ができているとします(0.5 ボブ / 0.5 キャロル)。ここで、アリスは0.1BTCをボブを経由してキャロルへ送金します。この時のチャネルバランスは以下のようになります。
    3. (0.4 アリス / 0.6 ボブ) (0.4 ボブ / 0.6 キャロル)

    4. ここで、(アリス / ボブ)のチャネルを作ったFundingTxがブロックチェーンに取り込まれなかったとすると、ボブのコイン残高はキャロルとのチャネル(0.4 ボブ / 0.6 キャロル)の0.4BTCと、FundingTxで使うことになっていた1BTCとなります。ここで、ボブはアリスに対して(0.4 アリス / 0.6 ボブ)のチャネル開設を再度試みれば良いことになります。

アトミックスワップとは

ここで少しインスタントチャネルから話が変って、アトミックスワップの話です。アトミックスワップとは、2つの異なるコイン、例えばビットコインとライトコインを第3者の仲介無しにトラストレスに交換する暗号トリックのことです。アリスがビットコインを持っており、ボブがライトコインを持っていたとし、以下にその手順を紹介します。

    1. アリスは「シークレット」と呼ばれるランダムな文字列と、そのハッシュ値を生成し、ハッシュ値のみをボブへ渡します。
    2. ボブはこのハッシュ値を使って特別なビットコインアドレス(Ba)を生成し、アリスへ送金してもらいます。ボブはこの(Ba)から自身のアドレスへコインを移動するにはアリスが作った「シークレット」が必要になります。
    3. 次に、アリスがハッシュ値を使って特別なライトコインアドレス(La)を生成し、ボブへ送金してもらいます。そして、アリスは「シークレット」を使って(La)から自身のライトコインアドレスへコインを移動します。
    4. ここで「シークレット」がブロックチェーン上に公開されたので、ボブはこの「シークレット」を使っての(Ba)から自身のビットコインアドレスへコインを移動します。

このような暗号トリックを使うことで第3者の仲介なく2者間でトラストレスにコインの交換ができるようになります。

インスタントチャネルの応用

例えば、アリスはオンチェーンのビットコインを0.5BTC、ボブは1BTC持っていたとします。この時、アリスが0.5BTCをボブのオンチェーンアドレスへ送金し、ボブはアリスに対して(0.5 アリス / 0.5 ボブ)のチャネルを開設します。このプロセスをアトミックスワップで実行してあげることで、不正行為なしでインスタントチャネルを開設することができるでしょう。こうすれば、アリスはチャネル開設を待つ必要がなく、直ぐにライトニングペイが可能になります。

インスタントチャネルはBLWのTestnet版で既に実装済みですので、興味のある方は以下の参考URLより試してみてください。

参考

Instant channels enable safe Lightning payments with unconfirmed funding

【おすすめ】LNモバイルウォレット!

mobile-wallet-2

はじめに

今回はライトニングネットワーク(以下、LN)対応のモバイルウォレットのご紹介です。

*.marginmarker {
background-color: #f0e68c;
/**margin-left: 0.3em;**/
/**margin-right: 0.3em;**/
}
thead {
background: #2E86C1 !important;
color: #FFFFFF;
}
td, th {
border: 1px solid #dddddd;
text-align: left;
padding: 2px !importan;
word-break : break-all;
}

ビットコインのモバイルウォレットにも色々なタイプがありますが、大事なのは秘密鍵がどこにあるかだと思います。

例えば、Blockchain.comのモバイルウォレットでは秘密鍵はサーバ側で管理されておりWebウォレット(またはオンラインウォレット)と呼ばれるタイプのものです。

Bitcoin WalletやBreadwalletは秘密鍵はモバイルウォレットの中に保管されています。また自身の取引等に関する最小限のデータも保管さており、SPV(Simplified Payment Verification)ウォレットと呼ばれるタイプのものです。

Jaxx walletやCopayは秘密鍵はモバイルウォレットの中に保管されていますが、それ以外の検証に使う取引データは保持しておらずサーバ側に委ねており、サーバークライアント型ウォレットと呼ばれるタイプのものです※1。その為、Webウォレットに比べると秘密鍵は自ウォレットに保管しており安全ですが、取引データなどはサーバ側に依存しているのでSPVウォレットよりかは多少リスクが高いと言えます。

ビットコイン用モバイルウォレット

  • Webウォレット:秘密鍵はサーバ側で保管
      (例)Blockchain.com, Coinbase
  • SPVウォレット:秘密鍵はスマホ側で保管
      (例)Bitcoin wallet, Breadwallet
  • サーバークライアント型ウォレット:秘密鍵はスマホ側で保管
      (例)Jaxx wallet, Copay


LNモバイルウォレット

では、LNモバイルウォレットについて見ていきましょう。現時点ではLNモバイルウォレットは、Webウォレット、軽量クライアントウォレット、リモート接続ウォレットの3つに大別できると思います。

WebウォレットはLNに関する機能やデータはサーバ側にあるので、チャネル開設が不要であったり(すでにサーバ側のLNノードがチャネルを開設してくれています)、ルーティング情報もサーバ側にあるので軽量クライアントウォレットより送受信が安定的であったりします。ただし秘密鍵はサーバ側にあります。2019年はこのようなWebウォレットタイプのLNモバイルウォレットが続出するのではと予想しています。

軽量クライアントウォレットはEclairやBitcoin Lightning Walletなどがあり、モバイルウォレットの中に秘密鍵やLNに関する機能、データが組み込まれています。その為、チャネル開設やバックアップなどはユーザー自身が行う必要があります。

リモート接続ウォレットにはSparkやShangoなどがあり、LNノードを自分で立て、そこへモバイルウォレットからリモート接続するタイプのものです。このタイプはLNノードを自分で運用する必要があるため一般ユーザー向きのウォレットではないでしょう。


Webウォレット
アプリ名 概要 対応OS ネットワーク
Bluewallet 通常のビットコイン送受信もLN送受信も可能なWebウォレット。ビットコインの秘密鍵はモバイルウォレットに保存されるため、Webウォレットとサーバークライアントウォレットのハイブリット型と言えるでしょう。チャネル開設は不要 Android
iOS
テストネット
CoinOS 通常のビットコイン送受信もLN送受信も可能なWebウォレット。ビットコインの秘密鍵もサーバ側へ保存されるため、完全なWebウォレット。チャネル開設は不要 Android メインネット


軽量クライアントウォレット
アプリ名 概要 対応OS ネットワーク
Eclair Wallet UIが洗練されたLNウォレット。受取はできないが、バックアップ機能やルーティング機能が備わっている。LNでは老舗企業として評価も高い。 Android メインネット
テストネット
BL Wallet 送金、受取の両方に対応したLNウォレット。バックアップ機能はあるが、ルーティング情報はOlympusサーバーに依存している。Watchtower機能があるため、常にオンラインでいる必要はなく不正行為をする相手がいる場合は、Watchtowerで回避可能。 Android メインネット
テストネット
Denryu Wallet BL Walletから派生したLNウォレット。Sarutobiというゲームをプレイしていく過程でチャネル開設やチップ受取ができるウォレット。 Android メインネット
Rawtx ニュートリノを使った軽量クライアント。アーリーアダプター向けウォレット。 Android
iOS
テストネット


リモート接続ウォレット
アプリ名 概要 対応OS ネットワーク
Spark 自分でSparkサーバ(c-lightningとnodejs)をセットアップしてリモート接続する必要がある。 Android メインネット
Shango ShangoがホストしてくれるLNDへリモート接続することができるので、自身でLNノードを持つ必要がない。 Android
iOS
テストネット


YYBazaar おすすめウォレット

一般ユーザー向けとして、チャネル開設が不要ですぐにLN体験ができると言う観点で以下の2つのWebウォレットをオススメします。


Androidユーザー向け:CoinOS 

ログイン用アカウントを作成する必要がありますが、チャネル開設やLN用デポジットなどが不要で、直ぐにLN用インボイスの発行をして受取をすることが可能です。オンチェーン用ビットコインアドレスのみにデポジットしてもLNペイが可能です。例えば、LN用ビットコインが200 satしかなくオンチェーン用ビットコインが800satあれば、それらを合算した1000 satをLN用ペイメントとして送金することが可能です。また、Webブラウザからも同じアカウントでログインすれば使用できる仕組みになっています。


iOSユーザー向け:Bluewallet 

まだ受取ができないですが、UIがシンプルで、入金フローも分かりやすいと思います。LNを使うためには、まず(1)ビットコインアドレスへ入金し、そのアドレスから(2)LNアドレスへ入金する流れになります。2回のオンチェーントランザクションが必要になりますが、LN用ビットコインが枯渇したら、(1)のビットコインアドレスから(2)のLNアドレスへチャージすれば直ぐにLNペイができるのでおすすめです!


以上、LNモバイルウォレットの比較でした。LNモバイルウォレットはまだまだ発展途上です。Webウォレットではログイン上のセキュリティであったり、軽量クライアントウォレットではオフライン問題やルーティング問題など改善箇所が多々存在しますので、高額なお金をLNモバイルウォレットで運用しない方が良いと思います。私は多くても5000円程度をLNモバイルウォレットにチャージして使っています。


※1 ElectrumウォレットはSPVウォレットですが、セキュリティ向上のためElectrumサーバを使ったサーバークライアント型ウォレットと表現される場合もあります。

※2 参考サイト:http://lightningnetworkstores.com/wallets

ライトニングネットワークの経済圏

*.marginmarker {
background-color: #f0e68c;
/**margin-left: 0.3em;**/
/**margin-right: 0.3em;**/
}

どんな経済圏でもお金がまわる仕組みが必要です。例えば、私たちの生活では仕事をして得たお金を使って物やサービスを消費します。働くことでお金を得るわけですが、なぜ私たちはお金を欲しがるのでしょうか?それはモノやサービスを消費するためであったり、将来のために貯蓄するためであったり人それぞれです。貯蓄することも、将来はそのお金で何かを消費するために貯蓄している方が大半だと思います。

ポイントも同じことが言えると思います。私たちが一生懸命ポイントを貯めるのは、そのポイントを使って何か消費しようと思っているからです。もしこのポイントで買えるものが極限られたもの、例えば、乾電池だけだとしたらどうでしょうか?誰もこのポイントを貯めようとはしないと思います。

ではビットコインはどうでしょうか?ビットコインは法律上、決済手段という定義ですが、金や株のように価値があり日本円へ換金することはできます。この点では、一部のユーザは価値の保存や投資目的で欲しがる人もいるとは思いますが、しかし、これも結局は円への換金が目的となっているでしょう。

ビットコインが通貨として機能するためには、やはりそれ自身でモノやサービスの消費ができることが必要だと思います。しかし、ビットコインを使った決済は、以下のような理由で不便なこともあります。

  •  決済手数料が高い
  • 決済処理が遅い

そこでこれらの問題を改善しようとして開発された技術がライトニングネットワーク(以下、LNと称す)です。このLNもまだまだ発展途上な技術ですが、2018年1月の流通量は数BTCだったのが2018年12月には500BTCと確実に増えています。しかし、まだまだ通常のビットコイン決済よりも複雑であったりと、中々大衆へのは普及ができていません。

なぜLNを使う必要があるのか?なぜビットコインをLN上で持っていると嬉しいのか?もっと言うと、なぜビットコインを持っていると嬉しいのか?私たちがビットコインも持ちたがらない理由の1つとして、ビットコインを決済として消費できる魅力的なモノやサービスが殆どないからだと思っています。

そこで今回はLNが普及するには、その決済手段を使って消費したくなるような魅力的なモノ・サービスについて例を挙げたいと思います。LNは、LNにしか活用できるようなサービスがいくつかあります。今回はLNの小額決済という特徴を活かして魅力的なサービスが作れないか、以下に上げたいと思います。

デジタルコンテンツ売買プラットフォーム

LNを使うと、デジタルコンテンツの売買できる最小金額が1円やそれ以下でも可能となります。また、購入者はクレジットカードを持っていなくても(ただしビットコインは持っていないとダメですよ!)、簡単に1円単位で購入が可能になります。ここで重要なのが、消費者が欲しいようなコンテンツがあって初めてLNを使いたいという動機になると思います。売買プラットフォームでなくても、まずは、デジタルコンテンツ専用ECショップから魅力的なデジタルコンテンツの販売をする人々が出てきても面白いと思います。例えば、本サイトもデジタルコンテンツを11円で販売しています。

1記事ごと課金のニュースサイト

現状のニュースサイトの収益モデルは大きく分けて①広告収入と②有料購読があります。しかし、昨今は広告をブロックするアプリの台頭によって広告収入が脅かされています。そこで、欧米などのパブリッシャー(New York Timesや Financial Times)などは、マイクロペイメントによる1記事25セントなどで販売する仕組みを導入し出しています。

そこで、仮想通貨関連のメディアなどがLNによるマイクロペイメントを導入し、一部の記事に対して課金などをしてみてはどうでしょうか?その記事がユーザにとって読みたいと思う内容であれば、LNを使う動機となると思います。まずは、一部の記事をLN課金とするのも最初のステップとして面白いと思います。

ゲーム内課金

ゲームのクリア報酬としてLNでコインをユーザへ還元したり、ゲーム内アイテムをLNで購入したりするのも、ユーザにLNを使ってもらうための魅力的なサービスになり得ると思います。

具体的には、Sarutobiというサルを遠くまで飛ばすといゲームが、LNでのアイテム購入や小額報酬として実装されています。ユーザはゲーム報酬として単にコインがもらえるだけでは、やはり誰も欲しいとは思わないでしょう(コインは取引所などで円へ換金できるといっても小額すぎて誰もやらないでしょう)。しかし、ゲーム内ではアイテム購入や、自分のスコアをスコアボードへ登録するためにコインを消費することができます。このようにLNで消費したい何かがゲーム内にあることが重要で、これによってユーザはコインが欲しいと思うのかなと思います。

IoT課金

正直自分もこれがどれぐらい小額決済と結びつくのか、また、画期的なIoTが思いつかないので具体的な例が上げられないのですが、もし魅力的なIoTサービスがあって、マイクロペイメントに適しているものであれば、クレジットカードなどでは不可能な小額決済としてLNが採用される可能性はあると思います。

例えば、あるお店の店内の混み具合をしりたい場合、LNペイすることでその瞬間の店の写真がネット上で見れるというサービスは面白いと思います。

まとめ

ビットコインもLNも、日本円やクレジットカードではできないような、魅力的で消費したいようなモノ・サービスが出現してくると今よりも普及してくるのかなと思います。

ニュートリノ:ライトニングの明るい側面

まえがき

本投稿も前回に引き続き、Lightning LabsのメンバーBryan Vu氏によるライトニングブログ(投稿日:2018-10-17)を翻訳しました。モバイル用ビットコインアプリをより良いものにするために提案されているニュートリノの概念と技術的概略についてご紹介します。


image
本シリーズの以前の2つの投稿では、将来のライトニングユーザーを想定したキャロルが主人公でした。本投稿では、現在に時間を戻して、標準的なモバイル用ビットコインアプリを使っているアリスについてお話したいと思います。アリスが住んでいる現世界では、コンピュータプラットフォームとしてスマートフォンが大多数を占める状況になっていますが、現在のビットコインアプリは様々な問題を抱えています。それはセキュリティ、プライバシーおよび使いやすさの欠陥です。

現在のモバイル用ビットコインウォレットは中央集権サービスをベースとして作成されており、重大なセキュリティ問題を抱えています。「あなたが鍵を管理していないなら、それはあなたのビットコインではない」と幾度も言われ続けているように、中央集権サービスはユーザーのファイナンシャル情報(例えば、取引履歴)を漏洩するリスクがあります。一方で、中央集権サービスは、速く、使いやすく、少額のビットコイン保有者に対しては便利なサービスです。しかし、長くビットコインに浸かっているアリスとその友達は中央集権サービスに預けていたコインを失う経験をしており、彼女は自分で鍵管理ができるウォレットを探そうと決めました。

Goblet

そんなアリスのようなユーザーにとっての選択肢としてSPVウォレト(BIP37対応)があります。SPVウォレットは上記で述べたような中央集権サービスが抱えるリスクはありませんが、プライバシー問題のリスクを抱えています。さらに、現状のSPVウォレットは遅く、使いにくい傾向があります。アリスは遅いアプリが好きでなく、またプライバシーも重要視しているので、これらのウォレットでは満足できていません。

驚くことに、急激なビットコインの浸透とモバイルデバイスの増加にも関わらず、モバイルアプリ用の改善案が提唱されてか6年が立ちます。上記で述べた様々な問題を解決するべく、Lightning LabsのOlaoluwa Osuntokun (roasbeef) とAlex AkselrodはJim Posen (前Coinbase)と共同でニュートリノプロトコル(BIP157, BIP158)の提案をしました。


ニュートリノのメリット

分散化されたビットコイン用モバイルアプリにとっての挑戦は、全トランザクション履歴(現時点で約200GB)の中から瞬時に個々のユーザーに関係のあるトランザクションのみを取り出すことです。さらに、モバイルアプリが成功するためには、セキュリティ、プライバシーそして質の高いユーザー体験を提供する必要があります。ニュートリノプロトコルは、低電力プロセッサー、限られたストレージ容量とデータ通信量、断続的な電力および不安定なネットワーク接続性に縛られたデバイス上でこれらの必須要件を助長するためにデザインされたプロトコルです。

セキュリティ – 上記で述べたように、中央集権サービスには落とし穴(ハッキング対象箇所)が存在するため、アリスのような上級者または多くのビットコイン保有者は、通常彼ら自身で鍵管理をするのを好みます。ニュートリノは、ユーザーによる鍵管理ができるアプリをより速く、使いやすく、そして魅力的にするためにデザインされています。さらに、ニュートリノは競合したトランザクション情報*1を解決するための新しいセーフガードを含んでいます(これは特にライトニングネットワークを使うユーザーにとって役に立ちます)。

プライバシー – ファイナンシャルソフトウェアの必須要件の1つにプライバシー保護があります。ユーザーの残高や取引履歴はユーザーの同意なしで公開されてはいけません。BIP37のSPVクライアントは確率的アドレスリスト(これからおおよその取引履歴を追うことができます)を含むユーザー情報の多くを漏らしています。また、中央集権サービスもこの情報をすべて保有しておりプライバシー保護の保証はありません。ニュートリノはこれらの情報を第3者に漏らしたくないモバイルユーザーの為に改良されたプロトコルです。*2

スケーラビリティと非中央集権 – ニュートリノプロトコルはビットコインフルノードの計算パワーが少なくて済みます。これはニュートリノクライアントに送信されるフィルターの計算は1度だけでよく、そのフィルターは全クライアントに対して同じものです。BIP37のSPVプロトコルにおいては、フルノードは各クライアントに対して異なったアウトプットを計算し送信する必要があります。もし1台のフルノードが多くのモバイルクライアントにそれぞれのデータを提供する場合、ものすごい計算パワーが必要となり重荷となるでしょう。

検閲耐性 – ニュートリノクライアントはそれ自身が鍵を保持し、自身のトランザクションをブロードキャストするので、ビットコインのパーミションレスかつ検閲耐性な特徴をさらに拡張できるでしょう。


技術的詳細

より技術的に関心のある読者のために、次の章ではニュートリノプロトコルの概要についてお話します。さらに詳細な情報はBIP157BIP158を参照してください。

GCS filters(Golomb-Coded Set filters)

大雑把に言うと、ニュートリノはビットコインブロックチェーンのそれぞれのブロックに対応する“フィルター”と言うことができるでしょう。このフィルターは1つのブロックに含まれるそれぞれのビットコインアドレスを識別するためにゴロム符号(Golomb-Rice coding)を使用しています。ニュートリノフィルター(所謂、ゴロム符号におけるGCS filters)は、1つのブロックをよりいっそう圧縮することができ、15KB以下のサイズに収めることができます。ちなみに、元の1ブロックはその250倍以上の大きさで4MB(Segwitにより実質1MBから4MBへ拡大)以下となります。

この圧縮によってネットワーク帯域幅の狭いデバイスでもブロックチェーンを確認し、新しくマイニングされたブロックがユーザーのウォレットに関係あるかを確認することができます。このプロセスに関するステップは以下の通りです。


ステップ1 フィルター作成:新しいブロックがマイニングされるごとに、フルノードはGCS filtersを作ります。このフィルターはニュートリノクライアントに提供されます。

ステップ2 フィルターの観測と比較:約10分間隔でニュートリノクライアントはこのフィルターを受信します。そして、そのフィルターからユーザーに関する新しいトランザクションデータが存在するかを確認します。

ステップ3 関係のあるブロックのダウンロード:もしフィルターがユーザーが必要とするトランザクションデータが含まれていると指し示したら、ニュートリノクライアントは「切り取った」ブロック*3をフルノードに対して要求します。このブロックは署名データ(または“witness data”とも言う)を除くすべてのトランザクションデータが含まれています。ブロックのダウンロードをし、関係あるトランザクションを取り出します。

ステップ4 ウォレットの残高の更新:取り出したトランザクションデータからウォレットの残高を更新します。

この方法では、ユーザーのアドレスを特定する情報はネットワークへいっさい送信されません。また、ユーザーのウォレットとブロックチェーンのトランザクションデータの比較検証作業はユーザーのウォレット内で行われます。これはBIP37による信頼できないリモートノードによる検証との違いです。


同期(Syncing)

ニュートリノノードの仕組みは上記で説明しましたが、アリスが彼女自身のニュートリノ搭載ウォレットを最初に立ち上げる時、最新のブロックチェーンの状態になるまで同期をする必要があります。また、ウォレットがオフライン状態で一時的にこの処理が中断していた場合も、最新のブロック状態になるためにそこまでキャッチアップする必要があります。この同期は以下の4つのステップからなります。


ステップ1 通常のビットコインクライアントやSPVクライアントのように、ニュートリノクライアントはブロックヘッダのチェーンをダウンロードし検証します。これは、ブロックチェーンの各ブロックの位置を特定し、プルーフオブワーク(PoW)を検証するためです。各ヘッダーは80バイトで、ビットコインブロックチェーンの合計ヘッダーサイズは約40MBです。

image

ステップ2 ニュートリノクライアントは上記で述べたブロックヘッダーに対応する「フィルターヘッダー」をダウンロードします。ニュートリノプロトコルでは、各ブロックはGCSフィルターを含んでいます。フィルターヘッダーは、ニュートリノクライアントに各ブロックに対応するGCSフィルターと連動するための情報です。この詳細はBIP157に記載されています。

各フィルターヘッダーは32バイトで、このヘッダーに必要なデータ通信量の合計は約20MBです。ウォレットを初期セットアップする以前までのブロックチェーンのヘッダーは、一度検証が終わると捨てるため、ストレージ容量の節約になります。各ヘッダーのダウンロードの検証は1度限りで良いのです。

ステップ3 ウォレットのセットアップが完了して以降の処理は、各ブロックのGCSフィルターのダウンロードをします。このフィルターのダウンロード容量は月に70MBですが、このフィルターは保存する必要はありません。

ステップ4 ニュートリノクライアントは、フィルターをチェックすることで、そのウォレットに関係のあるトランザクションかを判定します。そして関係があれば、「ストリップドブロック」をダウンロードし、必要なトランザクションを抜き取ります。


初期同期のプロセスは典型的なモバイルデバイスでは数分間かかるでしょう。ニュートリノクライアントが保存する合計ブロックーチェーンデータは約数十MBです(ブロックチェーンフルノードは約200GB)。初回の同期後は、GCSフィルターのおかげで通信データ量はかなり少なくて済みます。ただし、ニュートリノクライアントはフルノードよりもデータ通信量は少ないですが、BIP37のSPVクライアントに比べると多くのデータ通信が必要になります。必要なデータ通信量は多くのモバイルデバイスにとっては許容範囲であり、プライバシーとセキュリティー向上のためのトレードオフは十分に価値あるものだと思います。さらに、ニュートリノはフィルターとブロックデータを考慮しバッチ処理と並行処理を可能とする設計になっており、たとえより多くのデータ通信が必要になったとしても、ユーザー体感はより滑らかで応答性のあるものになるでしょう。


今後の開発

処理性能

上記で述べたように、ニュートリノプロトコルは断続的なネットワークと電力に縛られたデバイス上で動くように設計されています。しかし、lndに実装されている現状のニュートリノはまだ完全に最適化がされておらず、さらなる改良が現在進行中です。

Block retrieval

ニュートリノクライアントは、ブロックやフィルターを(P2Pのビットコインネットワーク外も含め)どこからでもダウンロードするこができます。さらなるプライバシー向上が見込まれるブロック検索の方法として「プライバシー情報検索」があります。現状では、トーアがプライバシー保護として適当な手段ではあります。

Neutrino serving neutrino

(BIP37で使われるフィルターと違って)ニュートリノで使われるフィルターは全ノードに対して同じなので、ニュートリノノードは、他のニュートリノノードにそのフィルターを提供するように設定することができます。これはニュートリノクライアントがネットワークへ貢献することを可能にするでしょうし、またフルノードの処理コストを軽減できるかもしれません。

Filter commitments

ソフトフォークによって、マイナーによってGCSフィルターのハッシュ値がブロックヘッダーに直接追加されることが可能になり、これによりフィルターヘッダーのチェーンデータが不要になったり、フルノードがニュートリノクライアントに不適切なフィルターを送りつけるような悪意ある行為を除外できるようになります。また、ニュートリノフィルターはブロックチェーンのスキャンや探索を瞬時にする必要があるアプリケーションにも使用できるでしょう。

Developer tools

通常のブロックチェーンデータの検索のために、開発者がニュートリノを使えるようにするためのAPIの開発に取り掛かっています。


結論

BIP157/158に準拠したニュートリノクライアントであるlnd0.5Lightning App alphaをリリースできたことを大変光栄に思っています。これらはまだテストネット版ではありますが、メインネット版ニュートリノも開発中です。ニュートリノはbtcdにもサポートされ、またBIP158のサポートもbitcoind(BItcoin Core)にマージされました*4。長期的には、多くのノードオペレータやビットコイン開発者によってニュートリノがサポートされ、ユーザーがプライバシーの保護やセキュリティリスクを低く保ちながら、よりよりユーザー体験ができるようになることを望んでいます。ニュートリノが次世代モバイルウォレットのためにより改良された基礎技術を提供できることと信じています。


脚注

*1.軽量クライアントが特定の資金(例えば、特定のUTXO)が使用されたかをフルノードへ確認した場合、フルノードは故意に間違った情報(この場合、まだ未使用であること)を返す可能性があります。この攻撃は、通常の支払い場面では、その支払いに関係する当事者は再支払いを要求するか、支払いが完了するまで商品を購入者へ渡さない、ということができるので殆どありえない攻撃です。しかし、ライトニングネットワークの場合、ノードは常に「不正なチャネル閉鎖をするトランザクション」がないか監視する必要があり、もしそのトランザクションを見つけられなかった場合、その資金を失う結果になります。

ニュートリノにおいては、異なるピアから競合するフィルターが送られてきた場合、その競合したブロックを見つけ、その1ブロック全体をダウンロードします。そのブロックからどちらのピアが正しいのかを自動的に判断することができます。BIP37のSPVクライアントではユーザーに対してこのアラートは出せますが、自動的に競合を解決することはできません。


*2.ニュートリノを実装したクライアントでもウォレットの情報の幾分かの漏洩を防ぐことはできません。これは、悪意あるノードが、モバイルウォレットがどのブロックをダウンロードし、ブロックにまたがってどのアドレスが再利用されたかを観測できるからです。これを緩和するには、上記ブログで述べた「プライベート情報検索」の活用を模索しています。それでも、ニュートリノは他のどのモバイルクライアントよりもユーザープライバシーは高いと信じています。


*3.Segwitの採用によって、ビットコインの取引署名(witnessデータ)は既存のデータ構造から分離されました。ニュートリノクライアントはこの分離されたwitnessデータは不要で、「切り取った」ブロックのみのダウンロードで済み、結果的に多くの帯域帯の節約に繋がります(潜在的に50%以上の節約)。


*4.BIP158がbitcoindにマージされましたが、一方でまだBIP157はマージされていません。そのためニュートリノのフィルターをまだbitcoindではサポートできない状況です。今後数ヶ月にわたってニュートリノの完全なサポートを追加する作業が進行中です。


LightningPeach Walletの紹介

今回はLightning Networkの研究チームであるLightningPeachがリリースしたLightningPeach Walletについてのご紹介です。本ウォレットはまだテストネット版、かつベータテスト期間中でまだまだ開発途上ですが、とてもユニークな機能があり必見です!


LightningPeach Wallet

Lightning Networkを専門で研究調査しているLightningPeachがテストネット版としてリリースしたデスクトップ型のウォレットです(ダウンロードはここから)。このウォレットはLND上で動作することが前提ですが、ウォレットに付随されているので、自前でインストールする必要はありません。ただし、ビットコイン(bitcoind)がPC上で稼動している必要があります。


新機能

LightningPeach Walletの特徴として3つの機能があります。(これらの機能はLightningPeach Wallet同士のみで可能となります)

  • インボイス不要のライトニングペイ
  • Lightning IDを使って、ビットコインの送受金がオフチェーンで可能です。通常のライトニングペイは受取者がインボイスを発行し送金者へ送付しないと、送金できませんが、この機能は直接送金者から受取者へコインを送金できます。

  • ストリームペイメント
  • 毎秒単位でビットコインの支払いができる機能です。例えば、動画や音楽のストリーミングをしている間、支払いをすることができ、視聴をやめたところで支払いが止まるようなサービスを作ったりできるようになります。

  • アドレス帳
  • ライトニングノード毎に名前をつけることで、支払い先相手を選択することができます。これによって、いちいちLightning IDを覚えておいたり、コピー&ペーストする必要がなくなります。


実際に使ってみた

今回はWindows版をインストールしてテストネット上で使ってみました。

(1)プロフィール画面

セットアップが完了し、プロフィールを確認します。Lightning IDとはノードIDのことです。


(2)チャネル開設

チャネルタブからチャネルを開設します。カスタムチャネルにチェックをすると指定したLNノードとの開設ができますが、チェックなしでデフォルトでまずはチャネルを開設します。このデフォルトは、LighningPeach Walletノードとチャネルを開設してくれるので、新機能のLightnig IDを使ってインボイスなしにライトニングペイしたり、ストリームペイメントが可能になります。


(3)ライトニングペイ!

通常のライトニングペイですが、Toで送金先を選択するだけで、インボイスなしで送金できます。これはすごい!


(4)ストリームペイメント

ストリームペイメントはまず、毎秒いくらのコインを送金するかと、送金時間の上限を設定します(本例は1秒ごとに10satoshiで60秒を上限としています)。設定完了後、再生ボタンを押すことで1秒ごとにコインが送金できました。これもすごい!


所感

ライトニングの仕様上、現状は受取者がまずはinvoiceを発行し、それを送金者へ渡さないと支払いができませんが、LightningPeach Walletを使うと送金者がいきなり受取者に支払いができます(受取側のウォレットが起動している必要はありますが)。LightningPeach Walletを持っている人同士であれば、お互いがIPアドレスを公開することなくライトニングペイできるので、今後モバイルウォレット対応したりできるととても便利になると思われます。

ストリームペイメントも面白い機能ですが、現状はウォレット同士でストリームペイメントは使わないかなと思います。ただ、この機能により動画や音楽も聞いている間に支払うということができるので、今後のマイクロペイメントのあり方が大きく変ってくるかもしれません。

現状、ベータテスト期間で支払いや受取がうまくできないことも多々あります。他にも、チャネル開設時のファンディングトランザクションを作るときに手数料を指定できず、なかなかトランザクション承認が得られなかったです。今後の改善に期待したいです。


Lightning Network 2.0

はじめに

今回はAbacus社のDaniel氏によるライトニングネットワーク2.0についての見解を参考に、ライトニングネットワークが抱える問題とその解決策のダイジェストとして書いています。各解決策のコンセプトを簡潔に書いており、技術的な詳細は末尾の参考欄に日本語解説ページのリンクを載せてあるので、詳細をじっくり読みたい方はそちらを参考にしてください。


[toc]

ライトニングの問題を3つのカテゴリへ

ライトニングが抱える問題を大きく3つのカテゴリへ分けると以下のようになります。

  • 限られたコイン量しか送受信できない流動性の低さ
  • 限られた相手しか送受信できないルーティングの低さ
  • ノードを常にオンラインに保つ必要がある難しさ

以下にそれぞれの問題と解決策について紹介していきます。


問題1 チャネル間の流動性

ライトニングは2者間で送受信できるコイン容量を決めます。例えばアリスとボブの間で以下のチャネルがあったとします。この場合、アリスはボブへ2BTC送金可能ですが、それ以上のコインの送金はできません。

  • Alice 2–0 Bob

また、アリスがボブへ2BTC送金した場合(以下の図を参照)は、アリスはボブへ送金できなくなり、一度チャネルを閉じて新たらしチャネルを開く必要があります。

  • Alice 0–2 Bob

このようにライトニングネットワークはコインの流動性が低いという問題を抱えています。そこで、以下に流動性の低さを解決するいくつかの案を紹介します。


AMP(エーエムピー)

複数のチャネルを一つのチャネルと見たてて相手に送金する仕組みです。例えば、アリスがボブとキャロルに対してそれぞれ0.5BTCのチャネルがあり、またボブ、キャロルはデビッドに対して0.5BTCのチャネルがあるとします。通常だとアリスがデビットへ1BTCを送金することはできません(ボブへもキャロルへも1BTCぶんのチャネルが無いため)。AMPは、アリスが持つ2つのチャネルと、デビッドが持つ2つのチャネルを、まとめて1つのチャネルとみなすことで、1BTCをデビッドへ送金することを可能にします。


Splicing(スプライシング)

ライトニングネットワークを使用するには、あらかじめ相手と資金の容量を決める必要があります。例えば、アリスがボブへ1BTCのチャネルを開設すると、アリスがボブへ最大で1BTCしか送金できません。もしアリスが1BTC送金した場合、彼女はそれ以上何もすることができません(ボブが送り返してくることを除いて)。また、アリスは残っているBTCをオンチェーン決済したい場合もあるでしょう。このような状況で、チャネルを閉鎖することなく、ライトニングの資金をチャージしたり、オンチェーン決済することを可能にするのがスプライシングです。


Submarine Swap(サブマリンスワップ)

オンチェーンとオフチェーンの資金交換の橋渡しをする仕組みです。アリスはオンチェーンのビットコインを持っており、ボブはライトニングネットワーク上(オフチェーン)にビットコインがあるとします。ここでアリスがボブの持つオンチェーンのビットコインアドレスへ送金し、ボブはアリスがもつライトニングネットワークのアドレスへ送金します。ここで暗号トリックを使うことでお互いが不正せずにそれぞれの資金を送金することができます。


Channel Factories(チャネルファクトリー)

ブロックチェーンとライトニングネットワークの間にもう1階層新たに入れようと提案しているのがこのチャネルファクトリーの面白いところです。通常のライトニングのFunding Txは1:1のマルチシグですが、チャネルファクトリーではN:Nのマルチシグを使います。例えば、アリス、ボブ、キャロル、デイビッドの4人がそれぞれ2BTCをデポジットします。

  • アリス:2
  • ボブ:2
  • キャロル:2
  • デイビッド:2

次に、アリスとキャロルの間でチャネルを開くことを決めたとします。そこで2人は2:2マルチシグのFunding Txを作り、これをボブ、デイビッドへブロードキャストします(ブロックチェーンにはブロードキャストしません!)。

  • アリス:1
  • ボブ:2
  • キャロル:1
  • デイビッド:2
  • アリス/キャロル:2(←ここがペイメントチャネルとなる)

この時点でアリスとキャロルは、他の誰(この場合ボブとデイビッド)とも干渉せず2BTC上で送受信することができます(これはライトニングと同じですね)。さらに、ボブとキャロル間で取引をしたい場合、先と同様に2者間で2BTCのFunding Txを作り、皆へブロードキャストします(再度、ブロックチェーンへはブロードキャストしません)。そうすると以下のような状態になります。

  • アリス:1
  • ボブ:1
  • キャロル:0
  • デイビッド:2
  • アリス/キャロル:2(←ここがペイメントチャネルとなる)
  • ボブ/キャロル:2(←ここもペイメントチャネルとなる)

ここでチャネルファクトリの良い所が分かります。それは、キャロルはアリスとボブに対しての2つのチャネルを開設しましたが、ブロックチェーンにブロードキャストしたのは最初の4:4マルチシグの1回だけです。このように一旦、N:Nマルチシグを挟むことで、その上にライトニングネットワークのような2者間ペイメントチャネルを開くことがコストなしで可能になります。


Duplex Micropayment Channels(デュプレックスマイクロペイメント)

DMCはChristian DeckerとRoger Wattenhoferによって提唱されたビットコインのスケーリング案の1つです。ペイメントチャネルで重要なのは、「どうやって最新状態の残高のみをブロックチェーンに書き込むか」です。ライトニングネットワークの答えは、「もし古い状態の残高をブロードキャストしたらペナルティとしてすべての残高を没収する」ことです。それと異なりDMCの答えは、「最新の残高をブロードキャストできる期間を設け、それ以外の古い残高は無効とする」ことです。


アリスとボブはそれぞれ1BTCをデポジットしてチャネルを開設したとします。ライトニングの双方向ペイメントチャネルと違い、DMCは一方向ペイメントチャネルです。2者間で2つのチャネルを持ちイメージです。アリスとボブはそれぞれのチャネルで相手に1BTC分送金が可能です。さらにこのチャネルにはタイムロックが設定してあります(本例は100日)。これは100日後にこのトランザクションは有効となり、ブロックチェーンにブロードキャストすることができます。


1 — 0
Alice Bob Timelock = 100 days
0 — 1

ここで例えば、アリスがボブへ1BTC送金し、ボブがアリスへ0.5BTC送金したとすると以下のような残高になります(アリスは0.5BTC、ボブは1.5BTC)。アリスは0.5BTC持っているのに、アリスー>ボブのチャネルは0:1でアリスは送金できません。


0 — 1
Alice Bob Timelock = 100 days
0.5 — 0.5

そこで、お互いのチャネル残高を”リセット”して新しいチャネルを作ります。ここで重要なのがTimelockを減らし、先のチャネル状態を無効にすることです。これでアリスはボブへ0.5BTCを送金することが可能になりました。


0.5 — 0
Alice Bob Timelock = 99 days
0 — 1.5

DMCの欠点としては、リセットの回数が有限であることです。本例では100回のリセットが上限となります。リセットが上限に達した場合は、”リフレッシュ”をすることで、Timelockの上限を0日から100日へ戻すことができますが、このリフレッシュをするにはオンチェーンのトランザクションを作る必要があり、これがライトニングネットワークと比べた時の欠点です。しかし、複数人が強調する必要があるチャネルファクトリを考える際には、ペナルティーを課すライトニングより、タイムシーケンスを使って古い取引を無効にするDMCの方が有効だと思われます。


Payment Loops(ペイメントループ)

ボブは以下のようなペイメントチャネルを持っており、チャネルバランスの均衡をとりたいと思ったとします。


Alice 0–2 Bob 0–2 Carol
| |
+ – – – OTHERS – – – +

そこで、ボブはBob – Alice – OTHERS – Carol – Bobという経路を取って自分自身に支払いをすることで、以下のような資金のリバランスをとることができます。これをペイメントループといい、とても簡単に、早くリバランスをすることができます。


Alice 1–1 Bob 1–1 Carol
| |
+ – – – OTHERS – – – +


問題2 安定したルート状態

P2Pネットワークでのルーティングはライトニングネットワークだけの問題ではなく、一般的な問題として考えることができます。そのため、ライトニング専用のルーティングアルゴリズムを特段考える必要はないと予想されています。とは言っても、実際にライトニングのためのアルゴリズム案は発表されており、それがFlareです。


Flare(フレア)

概要としては、自ノードの近隣ノードとビーコンノードと呼ばれるランダムに選ばれたノード群の近隣ノード情報をルーティングテーブルとして持つことで、全ノード情報を保持することなく特定ノードの経路を効率的に発見できるというものです。


問題3 ノードの稼働率

ペイメントシステムは常にインターネットと繋がっている必要があります。特にライトニングネットワークにおいてのインターネット接続状態は、他ノードからの送金の中継や支払い受付、資金の安全性を保つために必要不可欠です。ここでは、「ライトニングではオンチェーンを監視しないと資金が盗まれてしまう」というセキュリティの問題に対する解決策を紹介します。


WatchTower(ウォッチタワー)

自身のライトニングノードまたはウォレットが数日間オフラインになり、チャネルの相手方が古い取引残高をブロックチェーンにブロードキャストし資金をちょろまかそうとする場合に、第3者がそれを監視、対処してれるセキュリティ対策の仕組みです。


Compact Block Filter(コンパクトブロックフィルター)

ライトニングネットワークもビットコインも一番安全な方法は、フルノードを稼動させ常にトランザクションを検証することですが、これは一般ユーザーにとっては負荷が大きすぎます。ビットコインにはホワイトペーパーでも書かれているSPVという仕組みがあり、ハッシュ木のブロックヘッダー(マークルルート)と検証するトランザクションを使うことで、そのブロックに自分の取引データが入っているかを検証する方法があります。しかし、ライトニングの場合はこの逆で、自分の取引データ(コミットメントトランザクション)が入っていないかを検証する必要があります。


そこでCompact Block Filterを使うとこの種の検証が可能になります。このコンセプトは、あるフィルターがされたブロックをノードから受信し、その中に自身に関する取引データが存在しないかを検証します。Compact Block Filterではあるパターンにマッチしているのに、マッチしていないと判断する検知漏れ(False Negative)はありませんが、あるパターンにマッチしていないのに、マッチしていると判断する誤検知(False Positive)の可能性があります。つまり、「このブロックには自分の取引データはない」という判断は確実にできますが、「このブロックには自分のデータが入っていないのに、入っている」という判断をする可能性もあります。ただ、後者の場合は、そのブロックの全データを受信し、検証すれば良いのです。Compact Block Filterを使うことで、ウォレットなど軽量クライアントでもしっかりとデータ検証をすることが可能になり、セキュリティ水準を保つことができるでしょう。


Eltoo(エルトゥー)

ライトニングネットワークは、お互い悪意ある行為(古い残高状態をブロードキャストし資金をちょろまかす)をすると、全額没収されるというペナルティを課すことで悪意ある行為を抑止しています。上記でも書いたように、もし自身が数日間オフラインになっていて、ウォッチタワーも機能していなかった場合、相手方に悪意ある行為を許してしまいます。そこで提案されたのが、古い残高のトランザクションを無効にしブロードキャストできなくするEltooです。


最後に

以上がライトニングネットワークが抱えている問題と解決案でした。ライトニングが今後発展していくためには今回紹介したような問題を解決することはとても重要です。それと同時に、ライトニングを使えるような魅力的なサービスやウォレットも必要です。インターネットがベース技術ならびにアプリケーションの2軸で発展していったように、ライトニングもコア技術ならびにLappsの両方が今後ますます発展していくことに期待しています。


参考

[0] Lightning Network 2.0
[1] AMP
[2] Splicing
[3] Submarine Swap
[4] Channel Factories
[5] Duplex Micropayment Channels
[6] Payment Loops
[7] Flare
[8] WatchTower
[9] Compact Block Filters
[10] Eltoo