ビットコインのライトニングネットワークについて、メモ程度にざっくりと書いてみました。
2017/02/12更新: 数ヶ月ごとに仕様や実装などの状況が変わるので、定期的にアップデート予定です。
- 1. 大雑把な理解のためのまとめ
- 2. Lightning Networkを理解するための前提知識
- 3. マイクロペイメント・チャネルとLightning Networkのデメリット
- 4. マイクロペイメント・チャネルでなく、なぜLightning Networkが必要か?
- 5. Hashed Timelock Contract (HTLC)
- 6. Lightning Networksの説明 by Rusty Russell
- 7. より簡単で早くなる提案 by Rusty Russell
- 8. BOLT (Basis of Lightning Technology)
- 9. 批判・指摘
- 10. Lightning Networkの実装
- 11. Onionルーティング実装
- 12. Lightning Network の公式サイト
- 13. 記事
- 14. 参考
- 15. 雑談
大雑把な理解のためのまとめ
メリット
- マイクロペイメント・チャネルと違い、色々な人にマイクロペイメントができる
- 早い承認 (instant confirmation)
- 第三者への信用がいらない (trustless)
- 沢山の細かい支払いをしても、取引手数料がチャネル間ではかからない
- ビットコインのスケール問題への解決策の一つになる可能性
- ビットコインのブロックチェーンをほぼ使わず、沢山のトランザクションを処理できると期待されている
どのように動くのか?
- 基本的には、マイクロペイメント・チャネルの技術を利用
- はじめに送金相手と支払いチャネルを開く
- 最初に送金するためのビットコインのデポジットが必要
- 2-of-2 マルチシグ・アドレスに送金するビットコインをデポジットする
- オフチェーンで送金できる (取引手数料がかからない、)
- はじめのトランザクションと最後のトランザクション以外にブロックチェーンにトランザクションをブロードキャストしない (その時の取引手数料が不要。ブロックチェーンの肥大化がなくなる)
- マイクロペイメント・チャネルを第三者を通して繋げて、多対多のペイメント・チャネルを作る
- 多対多にすると、ルーティングを仲介する第三者がビットコインを盗める可能性がある。対策として、トランザクションにハッシュを入れる
- ビットコインのブロックチェーンを利用するのは、基本的に最初と最後の2回。最初のデポジット用の2-of-2マルチシグ・アドレスへの送金時と、最後の支払いチャネルを閉じる(セトルメント)の時。
わかりやすそうな記事
現状 (2017/02/12時点)
- lightningd, lnd, lit辺りが最新更新されている実装?
- litは、SPV
- ルーティングは、依然まだまだ? (flareも?)
- マルチホップもまだまだ? まずは、マルチホップなしからの実装を?
- SegWitなしでの実装もできなくないが厳しそう
- 相互互換性のためのBOLTが出てきたが、まとめ途中
- ホワイトペーパーはかなり古くて今は全然違うらしい (by タジ)
- 開発状況: ライトニングネットワークの開発状況
- ライトニングネットワークについてDryja氏にインタビュー – CoinPortal
現状 (2016/08/13時点)
- SegWitがもう少しでBitcoin Coreに取り込まれる?
- トランザクション展性の問題は、SegWitで解決
- 実装は、3つくらいある?
- Blockchain.infoの実装がアルファか何か
- ルーティング辺りは、まだまだの様子
実際にまともに使えるようになるのに2016年中は難しそう。
現状 (2015/09/07時点)
- ホワイトペーパーがある
- 実装方法のアイディアが変更。ホワイトペーパーが、数ヶ月ごとにアップデートされる
- トランザクション展性の問題が存在
- 実現には、ビットコイン側の変更が必要だが、取り込まれるのは2016年になるのではと言われている
- 動く実装はない。はず。複数の人々が別々の実装に取り組んでいる模様。
Lightning Networkを理解するための前提知識
理解するための前提知識がかなり多いです。
- ビットコインの技術的な基礎知識
- マルチシグ・アドレス (2-of-2)
- トランザクション
- ビットコインのScript
- マイクロペイメント・チャネル
- トランザクション展性
- nLockTime
- OP_CHECKLOCKTIMEVERIFY
ビットコインが、どのようにトランザクションを処理しているかを技術的に理解するには、Scriptのopcodeを理解する必要があります。
マイクロペイメント・チャネルとLightning Networkのデメリット
- まずデポジットをしなくてはいけない
- 処理が複雑
- 監視する必要性
マイクロペイメント・チャネルでなく、なぜLightning Networkが必要か?
- マイクロペイメント・チャネルだと一対一のチャネルしか作れない
- → ルーティングして多対多でできるようにする
Hashed Timelock Contract (HTLC)
Hashed Timelock Contract (HTLC) as proposed in lightning.network paper
- hash160(R)を使って、途中経路のルーティングをする第三者がビットコインを盗めないようにする
Lightning Networksの説明 by Rusty Russell
- Lightning Networks Part I: Revocable Transactions – Rusty Russell’s Coding Blog
- LNを実現するのに必要なこと: Lightning Networks Part IV: Summary – Rusty Russell’s Coding Blog
より簡単で早くなる提案 by Rusty Russell
BOLT (Basis of Lightning Technology)
相互互換性のための仕様
- lightningnetwork/lightning-rfc: Lightning Network Specifications
-
lightning-rfc/00-introduction.md at master · lightningnetwork/lightning-rfc
批判・指摘
Mike Hearn氏による技術的問題点の指摘
Bitcoin Magazineの記事
Lightning Networkの実装
lnd: Lingtning Labsの実装
lightningnetwork/lnd: Lightning Network Daemon ⚡️
lit: The MIT Digital Currency Initiative@MIT Media Labの実装
- SPV
- Go言語
- タデウス・ドライジャ氏がメイン?
lightningd: BlockStreamの Rusty Russellの実装
Thunder Network by Mats Jerratsch
Lightning Network のプロトタイプ実装。シンプルな実装。
- 公式サイト: Blockchain Thunder
- 旧公式URL?: https://thunder.network
- GitHub: blockchain/thunder: Off-Chain Bitcoin payments using smart contracts
BlockStreamのElements by Rusty Russell
HashPlexの実装
HashPlex Unveils Lightning Network Implementation
Amiko Pay
off-blockchain Bitcoin transactions
Amiko Pay
- ScalingBitcoinでのプレゼン書き起こし: amiko-pay
Onionルーティング実装
- SphinxとHornetのGo実装
- onion-routed HTLC ペイメント
LightningNetwork/lightning-onion: Onion routed micropayments for the Bitcoin Lightning Network
Lightning Network の公式サイト
記事
参考
Linghtning NetworkによるサマリPDF
http://lightning.network/lightning-network-summary.pdf
ScalingBitcoin の内容
- Joseph Poonプレゼン書き起こし: bitcoin-failure-modes-and-the-role-of-the-lightning-network
Let’s Talk Bitcoin: Rusty Russell of Blockstream
日本語での説明
EthereumのLightning Network
Raiden
- Ethereum Lightning Network and Beyond | Arcturnus
- ビットコインのLightning Networkについても書いてある
実際に動かしてみた記事
- ライトニングラボのlndでマイクロペイメントを実施
- Lightningdのビルド、インストール方法 | ビットコイン研究所
- ライトニングネットワーク送金の動作実証手順:1ミリサトシを送ってみた | ビットコイン研究所
- ライトニングネットワーク動作実証(その2)中継ノードを介した支払い | ビットコイン研究所
基礎知識
基礎知識のnLockTimeと、Micropayment Channelsについては以下にまとめました。(英語ですみません、そのうち日本語にするかも)
- Bitcoin – What is Micropayment Channels? | block-chain.jp
- Bitcoin – What is “nLockTime”? | block-chain.jp
雑談
- White Paperは難しすぎるらしい
- アンドレアス曰く、lndのコードが一番わかりやすいと言っていたらしい
- マルチホップの本当に少額のマイクロペイメントは結構厳しそう