狠狠撸

狠狠撸Share a Scribd company logo
Lightning Networkの技術と最前
線
Takaya Imai
CEO@Frontier Partners LLC
Co-founder and CTO@United Bitcoiners Inc.
東大ブロックチェーン開発団体BitPenguin
Blockchain技術勉強会@EastVenturesオフィス
2018/05/26
自己紹介
フロンティアパートナーズ合同会社 代表CEO
United Bitcoiners Inc. 共同創業者&取締役CTO
マスタリングビットコイン、翻訳者代表
世界で初めての、日本語によるビットコイン?ブロックチェーン
の詳細技術書
2016/7/14出版
電子書籍版(kindle)も
オープンエディション版
https://www.bitcoinbook.info
東京大学客員研究員
自己紹介
バックグラウンド
新潟大学大学院 素粒子理論物理 博士(理)
カカクコム
検索エンジン開発 検索サーバクラスタ構築運用 大規模データ処理 機械学習
画像認識
データタワー株式会社 代表取締役
ライトニングネットワーク
?
ライトニングネットワーク
?
2015年2月にJoseph PoonとThaddeus Dryjaによって提案
されたビットコイン上のセカンドレイヤー技術
取引手数料を安くすることと送金速度を速くすることを目
的としている
“チャネル”という2者間送金経路によるP2Pネットワーク
であり、複数のチャネルを経由して送金する
チャネル取引相手、送金仲介者を信用する必要がない
ビットコインの
スケーリング問題
スケーリング問題
秒間取引数が7件程度
1MB / 256byte /10分/60秒 = 6.8取引毎秒
Segwit (Segregated Witness)有効化後、1ブロックに1MBより入るようになったため、秒間取引数は前
より改善
ブロックチェーンサイズの増大
168GB (2018/5/26現在)
トランザクション手数料の高騰
送付されるトランザクションの数が増えると、マイナーはより手数料の高いトランザクションからブロ
ックに取り込もうとする
最近は1回の送金あたり20円程度(5satoshi/byte)
2017年12月はピークで1回の送金あたり4000円程度のときもあった
Blockchain技術勉強会 #Lightning Networkの技術と最前線
168GB
4.6tx/sec
4000円くらい/迟虫
いろいろな解決策
オンチェーンスケーリング
取引毎にブロックチェーンに書き込むことを前提として、処理能
力の増強をするスケーリング方法
オフチェーンスケーリング
ブロックチェーンに書き込む回数を減らすことで、処理能力の増
強をするスケーリング方法
ブロックチェーンの利点を活用しつつ、ブロックチェーンとは相
互作用を頻繁にしない処理層を設けて送金処理を実行する
いろいろな解決策
オンチェーン側
別のブロックチェーンに処理を押しやる
サイドチェーン/ドライブチェーン
トランザクションのデータの一部を別枠に押しやる
SegWit (Segregated Witness)
ブロックサイズを大きくする
ビッグブロック
ブロックの伝達方法の改善、Graphen
トランザクションのサイズを小さくする
シュノア署名(Schnorr Signature)
使わないトランザクションスクリプトを省く、Graftroot
…
オフチェーン側
ライトニングネットワーク
Ethereum(ライデンネットワーク、マイクロライデン)
Blockchain
connected to
Bitcoin
Zcash
Blockchain
Ethereum
Blockchain
Bitcoin
Blockchain …
Lightning Network
Atomic
Swap
Paypal
Visa
Inter BlockchainBlockchain
connected to
some
blockchains
Raiden Network
オンチェーン側
オフチェーン側
Sidechain
ブロックチェーン外
各技術の関連イメージ
Interledger
Layer
Blockchains
Lightning Payment
Channel
Routing Algorithm
Atomic Multi-Path
Payments
???
Physical Layer
Link Layer
Network Layer
Transport Layer
Application Layer
Sphinx Presentation Layer
Lightning Internet
HTLC
Session Layer
ライトニングネットワーク
?
特徴を1つ1つ説明します。
ライトニングネットワーク
?
基本的なアイデア1
毎回取引をブロックチェーンに書き込むのではなく、各取引の結果として正味のお金を最後にブ
ロックチェーンに書き込む
概念例(厳密にはちょっと違いますが)
1. AさんがBさんに1000円貸した
2. BさんがAさんに500円分ご飯代を出した
3. 結局、BさんはAさんに500円返した
これをできるようにする二者による最小構成単位をチャネルという。
チャネルはHTLC(Hashed Time Lock Contract、ハッシュ付き時間制限コントラクト)を使って作
る
最終状態をブロックチェーンに書き込むまでは、両者の合意の上で状態の更新をする
10000円
2000円
3500円
4000円
500円
ライトニングネットワーク
?
基本的なアイデア1
チャネルを作った片方の人が悪人で、自分の送金をなかったことにしたいがために、最終
状態ではないものを一方的にブロックチェーンに書き込んだらどうするの?
最終状態ではないトランザクションには、悪人側に対する資金使用時間制限がかかって
います。
対して、善人側は悪人側からもらったシークレットキーを最終状態ではないトランザク
ションに対して使うと、チャネル上にあった悪人の資金を直ちに全て奪えるようになっ
ています。
シークレットキーは最終状態に両者が合意する際に、両者が取り交わす1個前のもの
を無効化するためのキー
このようなペナルティーがあるため、悪人側には相手を裏切るインセンティブがない
悪人側の裏切りに対してすぐにペナルティーを行使できるように、トランザクションを常
に監視しておかなければいけない
ライトニングネットワーク
?
基本的なアイデア2
ブロックチェーンへの負荷を下げ、手数料を安くするため、チャネルを複数つ
ないで送金する
ライトニングネットワーク
?
仲介者がお金を盗めるのでは?
仲介者Bobがお金を得るためにはプレイメージと呼ばれる文字列がないといけ
ない
Bobはお金を仲介するという約束はするが、約束した時点ではプレイメージを
ハッシュ化したプレイメージハッシュしか持ってないため、お金を盗めない
これを実行するためにHTLCを使う
送金者 受金者
Alice Bob Carol
簡易的な説明
送金者 受金者
Alice Bob Carol
①条件付き送金約束 ②条件付き送金約束
③送金④送金
ライトニングネットワーク
?
送金者 受金者
Alice Bob Carol
Carol プレイメージ, R
Carol プレイメージハッシュ, H
ライトニングネットワーク
?
送金者 受金者
Alice Bob Carol
Carol
プレイメージハッシュ, H
①プレイメージハッシュH送付
tx with H
need R to
use
tx with H
need R to
use
②TX with H送付
tx with H
need R to
use
③TX with H送付
④プレイメージR送付
R
⑤プレイメージR送付
R
Carol
プレイメージ, R
約束はするけど盗めない
Carolは
Rがあるから
受け取れる
ライトニングネットワーク
?
Carolが意地悪で、プレイメージRをくれなかったらBobはCarolにお金を奪われて終
わり?
協力的チャネルクローズにする場合、相手から支払い中のもの(in-flight HTLC)のプ
レイメージRをもらわないと応じないようにする
CarolがずっとRを渡さず一方的にチャネルクローズしお金を使った場合、プレイ
メージRはパブリックブロックチェーン上で公開されるため、それを使ってBobは
Aliceからお金を得る。ただし、時間がかかる。
CarolがずっとRを渡さず、しかもお金を使わなかった場合、Bobはあらかじめ設
定しておいた時間以降になればお金を取り戻せる優先権がある。ただし、時間が
かかる。
送金者 受金者
Alice Bob Carol
ライトニングネットワーク
?
ノード
ノードノードID
ノードチャネル
ノード
チャネル
チャネル
チャネル
ノードノードID
ノードID
ノードID
ノード
チャネル
ノードID
チャネル
ノード
ノードID
の大きさはチャネルに乗っているビットコインの量
ライトニングネットワーク
ノードプロジェクト一覧
Company/
Organization
Lightning Labs MIT DCI Blockstream ACINQ bcoin-org Nayuta
Product Name lnd lit lightningd eclair plasma ptarmigan lnwallet
Commitors
Thaddeus
Dryja, Joseph
Poon,
Olaoluwa
Osuntokun
Thaddeus
Dryja
Rusty Russel,
Christian
Decker
Pierre-Marie
Padiou,
Fabrice
Drouin,
dpad85
Christopher
Jeffrey
nayuta-ueno
Anton
Kumaigorodski
Language Go Go C Scala Node js C Scala
first commit
(JST)
2015/10/25 2016/11/6 2015/5/24 2015/8/16 2016/8/29 2017/7/21 2017/3/30
master lastest
commit
(JST)
2018/5/26 2018/5/1 2018/3/22 2018/5/18 2016/11/23 2018/5/26 2018/4/23
github
https://github.c
om/lightningne
twork/lnd
https://github.c
om/mit-dci/lit
https://github.c
om/ElementsP
roject/lightning
https://github.c
om/ACINQ/ecl
air
https://github.c
om/bcoin-
org/plasma
https://github.c
om/nayutaco/p
tarmigan
https://github.c
om/btcontract/l
nwallet
others android app
テストネット
私のノード: btctest.lnetwork.tokyo (160.16.233.215)
メインネット
リアルなお金が流れるライトニングネットワーク
2018年3月22日
メインネット
2018年4月24日
私のノード: btc.lnetwork.tokyo (153.126.136.98)
pubkey: 028dcc199be86786818c8c32bffe9db8855c5fca98951eec99d1fa335d841605c2
技術詳細
技術詳細についてはこちらを参照ください(英語)
2017年6月にイスラエルのテルアビブで私が話した時
の資料
/takayaimai/lightning-
network-in-tel-aviv-israel
最新実装からは少し乖離がありますが、基本的な動作
原理は同じです。
Layer
Blockchains
Lightning Payment
Channel
Routing Algorithm
Atomic Multi-Path
Payments
???
Physical Layer
Link Layer
Network Layer
Transport Layer
Application Layer
Sphinx Presentation Layer
Lightning Internet
HTLC
Session Layer
階層構造対応関係
Blockchains
Lightning Payment
Channel
Routing Algorithm
Atomic Multi-Path
Payments
???
物理層
リンク層
ネットワーク層
トランスポート層
アプリケーション層
Sphinx プレゼンテーション層
ライトニング インターネット
HTLC
セッション層
注目している
ライトニング技術やプロジェクト
Atomic Multi-Path Payments(不可分な複数経路支払い、ライトニングネットワーク非中央集権化/多額送金)
b+l wallet (受金ができる現在唯一のライトニングウォレット)
eltoo(チャネル更新のシンプル化)
Splicing(チャネルデポジットの動的変更)
Data Loss Protection(チャネル状態の保存)
Olympus Server(チャネル状態のバックアップ分散委託と委任インセンティブ設計)
Outsourcing WatchTower (トランザクション監視の外部化/委託)
Atomic Swap(ライトニングを使ったブロックチェーン間不可分コイン交換)
Streaming Payments (ライトニング送金のさらなる効率化、送金ルート一回一回閉じずにルートを使い回
す)
注目している
ライトニング技術1
注目している
ライトニング技術1
AMP: Atomic Multi-Path Payments(不可分な複数経路支払い)
現状
送金者から受金者への送金経路は1つ
例えば、100円を送りたい場合、送金者から受金者への経路の全てのチャネルが100円送金可能でないといけ
ない
問題点
まとまったお金を送れない
1万円などある程度まとまったお金は、ライトニングネットワークを使わないほうがいいとは思います
チャネルに多くのお金を置いておくのは資金が豊かな人 -> 中央集権化
1つの送金経路に依存してしまう
送金経路上のノードが送金中に反応しなくなるなど問題が起きた場合、送金が途中で止まってしまって動
かなくなるということはないが、送金完了まで時間がかかってしまう
注目している
ライトニング技術1
AMP: Atomic Multi-Path Payments(不可分な複数経路支払い)
解決方法
1回の送金を、複数の送金経路に分割して送る
良い点
送金経路の選択肢がもっと増え、ライニングネットワーク全体のリソースをうまく使える
チャネルに大きなお金を置いておかなくても、ライトニングネットワークに貢献できる
悪い点
ライトニングネットワーク全体での送金処理数は増えるため、分割数を大きくしすぎるとライトニング
ネットワークが飽和してしまう
注目している
ライトニング技術1
AMP: Atomic Multi-Path Payments(不可分な複数経路支払い)
進展具合
アトミック性の定義や最適な実装方法について、lightning-devメーリングリストで議論中
まだライトニングネットワークRFCにはなっていない
これは、個人的にScaling Bitcoin Workshop 2017 @ Stanford Univ. に提案していたもの(残念ながらトーク
には採用されませんでしたが。。)
https://github.com/takaya-imai/packetization_for_paymentchannel
注目している
ライトニングプロジェクト2
スマホアプリをライトニングネットワークに
受金もできる lnwallet
http://lightning-wallet.com
注目している
ライトニング技術2
面白い点
トランザクション監視の簡易化が実装してあり、監視の外部委任を緩和できる
単純には、スマホアプリはライトニングネットワークに参加できません
スマホの電池が切れる、インターネットに接続できなくなるなどして、トランザクションの監視ができな
くなるため。
送金だけであればできますが、ライトニングネットワークの一部として送金経路に貢献するには送金と受
金の両方が必要
トランザクション監視が不要というわけではないです
スマホ上のトランザクションデータが壊れてしまった等なくなってしまったときのために、バックアップを取
っておくことができる
バックアップ保存の分散委任を受ける側にとってのインセンティブがすでに実装してある
これらを行うのが、Olympusサーバです。
スマホアプリハンズオンをやっているので、そこで進展具合は公開していきます。
注目している
ライトニング技術3
eltoo: 更新方法のさらなるシンプル化
注目している
ライトニング技術4
Splicing (Splice-in, Splice-out)
チャネルデポジットの動的変更
Splice-in: デポジットを増やす
Splice-out: デポジットを減らす
Funding
TX
Commitmen
t TX
通常
Funding
TX
Commitmen
t TX2
Splicing
Fundin
g TX2
注目している
ライトニング技術4
Data Loss Protection
チャネル状態の保存
暗号通貨には復元フレーズ(mnemonic code)があり、ウォレットが壊れ
てしまう?スマホが壊れてしまうといった時にも復元フレーズを使えば
ウォレットを元に戻せる
しかし、オフチェーン技術であるライトニングでは取引データはブロッ
クチェーンにはないため復元フレーズでチャネル状態の復元はできない
このため、ウォレットの復元フレーズでチャネル状態も復元できるよう
な仕組みが必要
注目している
ライトニング技術5
Olympus Server
チャネル状態バックアップの分散委任と委任インセンティブ設計
http://lightning-wallet.com/what-does-olympus-server-do#what-does-olympus-server-do
b+l walletと連携して稼働する仕組み
チャネルを開くとOlympus Serverにチャネル状態を暗号化した状態で送付し、b+l walletはライトニング経由でバッ
クアップ手数料を払う
Olympus Serverが裏切る可能性(チャネル状態を戻してくれない)があるため、複数のOlympus Serverにチャネル状態
を送る分散委託の方が良いように思う
注目している
ライトニング技術6
Outsourcing WatchTower
トランザクション監視の外部化/委託
チャネルを維持するにあたって、チャネル相手が不正をしないようにチャネルが勝手に閉じられな
いかを監視しないといけない
スマホ上のライトニングアプリの場合、スマホが壊れるまたは電池が切れるといった場合にこのト
ランザクション監視ができなくなるため、監視の外部化/委託が必要になる
特に、受金の際にこのトランザクション監視が重要。現在ほとんどのライトニングアプリで送金の
みしかできないのは、送金にトランザクション監視が不要なため。
b+l walletでは現在トランザクション監視がないにも関わらず受金ができる(まだテストネット)。不
正側に対する資金使用時間制限を三ヶ月とかにして、長いといえどもスマホが一ヶ月もインターネ
ットから切り離されることはないよね?といういうことを利用し、それなりに安全に受金ができる
ようにしている。
注目している
ライトニング技術7
Atomic Swaps
ライトニングを使ったブロックチェーン間不可分コイン交換
注目している
ライトニング技術7
Atomic Swaps
ライトニングを使ったブロックチェーン間コイン交換
ノードA ノードB ノードA
BTCチャネル ETHチャネル
ノードBは、BTCとETH両方を
持たないといけない
注目している
ライトニング技術8
Streaming Payments
ライトニング送金のさらなる効率化、送金ルート一回一回閉じずに
ルートを使い回す
ここを遅延させることで
プレイメージハッシュを使いまわし
TX with Hの送金額を
何度も書き換える
Layer
Blockchains
Lightning Payment
Channel
Routing Algorithm
Atomic Multi-Path
Payments
???
Physical Layer
Link Layer
Network Layer
Transport Layer
Application Layer
Sphinx Presentation Layer
Lightning Internet
HTLC
Session Layer
ライトニングに兴味がある方はご参加ください。
ビットコイン?ブロックチェーンスクールやってます
ご興味ある方は参加いただければと思います。
fin.

More Related Content

Blockchain技術勉強会 #Lightning Networkの技術と最前線