狠狠撸
Submit Search
Lightning network 概要解説
?
Download as PPTX, PDF
?
0 likes
?
106 views
T
Tomohiro Matsuo
Follow
LIghtning Networkの概要説明です
Read less
Read more
1 of 38
Download now
Download to read offline
More Related Content
Lightning network 概要解説
1.
Lightning Network 概要説明 @gakutomo
2.
背景 Bitcoinはスケーラビリティに問題がある ?ブロックサイズの上限が 1MB (4000トランザクション) ?1秒あたり7トランザクションしかさばけない *2013年、Visaは最大瞬間取引数が47,000
トランザクション/秒
3.
背景 さらにトランザクションが詰まると ?手数料を高くしないと決済がなかなか完了しない ?少額送金に不向きなシステムへ???
4.
解決策 そこで提案されたのが「Lightning Network」 オフチェーンで複数取引し、最後にまとめてブロックチェーンに 書き込むことでトランザクション数を削減する。これを実現するための ネットワーク。 *オフチェーン???ブロックチェーンを使わない処理。対義語はオンチェーン。
5.
概略図 Alice Bob 1BTC ブロックチェーン Alice Bob 1BTC Alice
Bob 1BTC Lightning Network Alice Bob 1BTC
6.
オフチェーン取引の仕组み
7.
ペイメントチャネル オフチェーンではペイメントチャネルという 2者間で取引できる仕組みが重要 BA
8.
ペイメントチャネルの開設① マルチシグアカウントに2人が1BTCずつ入金するトランザクション作成 このトランザクションは後でブロックチェーンに書き込まれる *マルチシグ(multi-signature) アカウント???複数人の署名が無いとBTCを取り出せないアカウント マルチシグ 1BTC 1BTC A B
9.
ペイメントチャネルの開設② マルチシグからBTCを取り出せなくならないよう、 返金用トランザクションを作成して交換しておく ?マルチシグからAに1BTC ?マルチシグからBに1BTC ?マルチシグからAに1BTC ?マルチシグからBに1BTC Aが作ったトランザクション1 Bが作ったトランザクション1 A B
10.
ペイメントチャネルの開設② マルチシグからBTCを取り出せなくならないよう、 返金用トランザクションを作成して交換しておく ?マルチシグからAに1BTC ?マルチシグからBに1BTC ?マルチシグからAに1BTC ?マルチシグからBに1BTC Bが作ったトランザクション1 Aが作ったトランザクション1 A B
11.
ペイメントチャネルでの取引 A が B
に 0.1BTC送りたい場合 返金用トランザクションを更新する ?マルチシグからAに0.9BTC ?マルチシグからBに1.1BTC Bが作ったトランザクション2 Aが作ったトランザクション2 ?マルチシグからAに0.9BTC ?マルチシグからBに1.1BTC A B
12.
ペイメントチャネルをクローズ 取引を終了したい時 返金用トランザクションをブロードキャストする ?マルチシグからAに0.9BTC ?マルチシグからBに1.1BTC Bが作ったトランザクション2 ブロックチェーンへブロードキャスト A
13.
これだと不正ができてしまう 昔のトランザクションをブロードキャストして取引をなかったことに ?マルチシグからAに1BTC ?マルチシグからBに1BTC Bが作ったトランザクション1 古いほうをブロックチェーンへブロードキャスト A ?マルチシグからAに0.9BTC ?マルチシグからBに1.1BTC Bが作ったトランザクション2
14.
不正を無くすためには鍵を使う ①鍵A1を作成、H(A1)を送る ?Aに1BTC ?Aは鍵B1があれば 残り1BTCも取り出せる ?BはこのTxがブロックに 入ってから24時間後に 1BTC取り出せる Aが作ったトランザクション1 ?Bに1BTC ?Bは鍵A1があれば 残り1BTCも取り出せる ?AはこのTxがブロックに 入ってから24時間後に 1BTC取り出せる Bが作ったトランザクション1 鍵B1を作成、H(B1)を送る A B ②もらったハッシュをもとにトランザクションを作成
15.
不正対策後の返金トランザクション 鍵A1 ?Bに1BTC ?Bは鍵A1があれば 残り1BTCも取り出せる ?AはこのTxがブロックに 入ってから24時間後に 1BTC取り出せる Bが作ったトランザクション1 ?Aに1BTC ?Aは鍵B1があれば 残り1BTCも取り出せる ?BはこのTxがブロックに 入ってから24時間後に 1BTC取り出せる Aが作ったトランザクション1 A B鍵B1
16.
0.1BTCの送金を行う場合 鍵A2を作成、H(A2)を送る ?Aに0.9BTC ?Aは鍵B2があれば 残り1.1BTCも取り出せる ?BはこのTxがブロックに 入ってから24時間後に 1.1BTC取り出せる Aが作ったトランザクション2 ?Bに1.1BTC ?Bは鍵A2があれば 残り0.9BTCも取り出せる ?AはこのTxがブロックに 入ってから24時間後に 0.9BTC取り出せる Bが作ったトランザクション2 鍵B2を作成、H(B2)を送るA B ① ②
17.
0.1BTCの送金を行う場合 ?Bに1.1BTC ?Bは鍵A2があれば 残り0.9BTCも取り出せる ?AはこのTxがブロックに 入ってから24時間後に 0.9BTC取り出せる Bが作ったトランザクション2 ?Aに0.9BTC ?Aは鍵B2があれば 残り1.1BTCも取り出せる ?BはこのTxがブロックに 入ってから24時間後に 1.1BTC取り出せる Aが作ったトランザクション2 A B鍵A1 鍵A2
鍵B1 鍵B2
18.
前のトランザクションで使った鍵を交換するのが重要 Bが作ったトランザクション2 Aが作ったトランザクション2 ?鍵A1を渡す ?鍵B1を渡す A
B鍵A1 鍵A2 鍵B1 鍵B2 ?Bに1.1BTC ?Bは鍵A2があれば 残り0.9BTCも取り出せる ?AはこのTxがブロックに 入ってから24時間後に 0.9BTC取り出せる ?Aに0.9BTC ?Aは鍵B2があれば 残り1.1BTCも取り出せる ?BはこのTxがブロックに 入ってから24時間後に 1.1BTC取り出せる
19.
前のトランザクションで使った鍵を交換するのが重要 Bが作ったトランザクション2 Aが作ったトランザクション2 A B鍵A1
鍵A2 鍵B1 鍵B2 鍵B1 鍵A1 ?Bに1.1BTC ?Bは鍵A2があれば 残り0.9BTCも取り出せる ?AはこのTxがブロックに 入ってから24時間後に 0.9BTC取り出せる ?Aに0.9BTC ?Aは鍵B2があれば 残り1.1BTCも取り出せる ?BはこのTxがブロックに 入ってから24時間後に 1.1BTC取り出せる
20.
不正しようとしても。。。 過去のトランザクションをブロードキャストしても、Bは24時間以内に 気付けば相手の鍵A1を使ってマルチシグ内の残金を全部取り出せる ブロックチェーンへブロードキャスト Bが作ったトランザクション ?Bに1BTC ?Bは鍵A1があれば 残り1BTCも取り出せる ?AはこのTxがブロックに 入ってから24時間後に 1BTC取り出せる Bが作ったトランザクション1 A
21.
Lightning Network
22.
オフチェーンで複数人と取引する場合 複数人とペイメントチャネルを開けば取引できるが、 それぞれのマルチシグにデポジットしないといけないので不便 B A C
23.
他人を経由して送れば解決 BとCがペイメントチャネルで繋がっていれば、AはCに送金できる B A C
24.
これが広がると このようなペイメントチャネルのネットワークが Lightning Network B A
C E D 複数人を経由してAからEに送ることもできる
25.
持ち逃げが起こるのでは? A→B→Cでリレーして送金する場合、A→Bに送金した時点でBは持ち逃げできる? B A C
26.
A→B→Cで0.1BTCの送金を行う場合 B A C 残高 1BTC 残高 1BTC 残高 1BTC 残高 1BTC AB間、BC間でペイメントチャネルを開いている場合
27.
A→B→Cで0.1BTCの送金を行う場合 鍵Cを作成、H(C)を渡す B A C
28.
A→B→Cで0.1BTCの送金を行う場合 鍵A2を作成、H(A2)を送る Aが作ったトランザクション2 Bが作ったトランザクション2 鍵B2を作成、H(B2)を送る ① ② B ?Aに0.9BTC ?Aは鍵B2があれば 残り1.1BTCも取り出せる ?BはこのTxがブロックに 入ってから24時間後に 1BTC取り出せる ?Bは鍵Cがあれば0.1BTC 取り出せる ?Bに1.0BTC ?Bは鍵Cがあれば0.1BTC 取り出せる ?Bは鍵A2があれば 残り0.9BTCも取り出せる ?AはこのTxがブロックに 入ってから24時間後に 1BTC取り出せる A
29.
A→B→Cで0.1BTCの送金を行う場合 鍵B2を作成、H(B2)を送る Bが作ったトランザクション2 Cが作ったトランザクション2 鍵C2を作成、H(C2)を送るB ① ② C ?Bに0.9BTC ?Bは鍵C2があれば 残り1.1BTCも取り出せる ?CはこのTxがブロックに 入ってから24時間後に 1BTC取り出せる ?Cは鍵Cがあれば0.1BTC 取り出せる ?Cに1.0BTC ?Cは鍵Cがあれば0.1BTC 取り出せる ?Cは鍵B2があれば 残り0.9BTCも取り出せる ?BはこのTxがブロックに 入ってから24時間後に 1BTC取り出せる
30.
A→B→Cで0.1BTCの送金を行う場合 Bが作ったトランザクション2Cが作ったトランザクション2 B C ?Bに0.9BTC ?Bは鍵C2があれば 残り1.1BTCも取り出せる ?CはこのTxがブロックに 入ってから24時間後に 1BTC取り出せる ?Cは鍵Cがあれば0.1BTC 取り出せる ?Cに1.0BTC ?Cは鍵Cがあれば0.1BTC 取り出せる ?Cは鍵B2があれば 残り0.9BTCも取り出せる ?BはこのTxがブロックに 入ってから24時間後に 1BTC取り出せる 鍵B1 鍵B2
鍵C1 鍵C2 C B 鍵C
31.
A→B→Cで0.1BTCの送金を行う場合 Bが作ったトランザクション2Cが作ったトランザクション2 B C ?Bに0.9BTC ?Bは鍵C2があれば 残り1.1BTCも取り出せる ?CはこのTxがブロックに 入ってから24時間後に 1BTC取り出せる ?Cは鍵Cがあれば0.1BTC 取り出せる ?Cに1.0BTC ?Cは鍵Cがあれば0.1BTC 取り出せる ?Cは鍵B2があれば 残り0.9BTCも取り出せる ?BはこのTxがブロックに 入ってから24時間後に 1BTC取り出せる 鍵B1 鍵B2
鍵C1 鍵C2 C B 鍵C を渡す 鍵C
32.
A→B→Cで0.1BTCの送金を行う場合 Bが作ったトランザクション2Cが作ったトランザクション2 B C ?Bに0.9BTC ?Bは鍵C2があれば 残り1.1BTCも取り出せる ?CはこのTxがブロックに 入ってから24時間後に 1BTC取り出せる ?Cは鍵Cがあれば0.1BTC 取り出せる ?Cに1.0BTC ?Cは鍵Cがあれば0.1BTC 取り出せる ?Cは鍵B2があれば 残り0.9BTCも取り出せる ?BはこのTxがブロックに 入ってから24時間後に 1BTC取り出せる 鍵B1 鍵B
鍵C1 鍵C2 C B 鍵C 鍵B1を渡す 鍵C1を渡す 鍵C
33.
A→B→Cで0.1BTCの送金を行う場合 B A C ①BTC受け取る ② 鍵Cを渡す ③鍵Cを使ってBTC受け取る
34.
課題 ?チャネルの開閉時はオンチェーンでのトランザクションが必要 ?ペイメントハブが現れるとLNが中央集権的になってしまう恐れ
35.
LNの現状 c-lightning や lnd
など様々なノードが開発されており、 テストネット及びメインネットでもbeta版が稼働開始 lightning network exploler - https://explorer.acinq.co/
36.
デモ テストネットでの支払いを体験できる。 Eclair Wallet をインストールしてスマホからの支払いを試してみましょう https://starblocks.acinq.co/
37.
実用例 BTCPay???支払いQRコードの発行、コインの受け取り管理など。 Paper call???APIを呼ぶ際にライトニングでの少額課金を挟むモジュール。 Yalls.org???少額の課金ブログ。記事を読むのに1セント相当のビットコイ ン課金が儲けられており、良いと思った記事にはチップも渡せる。
38.
まとめ ?高速送金ができるようになる ?手数料ほぼ無し ?チャネルの開閉時はオンチェーンでのトランザクションが必要 ?LNが中央集権的になってしまう恐れ
Editor's Notes
#15:
OP_CHECKSEQUENCEVERIFY(OP_CSV)はこのアウトプットのトランザクションがブロックに格納されてから指定時間(block height or unix timestamp)まで、アウトプットのコインをロックする相対的なタイムロックの仕組み。OP_HASH160 <H(Secret B1)> OP_EQUAL OP_IF <alice pub_key> OP_ELSE <1000> OP_CHECKSEQUENCEVERIFY OP_DROP <bob pub_key> OP_ENDIF OP_CHECKSIG
Download