LoginSignup
2
2

More than 5 years have passed since last update.

ビットコインのマイクロペイメントチャネルの様々な手法について整理する

Posted at

何の話?

ビットコインは単位時間当たりに処理できるトランザクション数が少ないという問題を抱えています。このスケーラビリティ問題を解決するために、ブロックチェーンの外でトランザクションを管理するマイクロペイメントチャネルがいくつか提案されています。今回はこれらの提案手法をざっくりと整理します。

過去のトランザクションの無効化

マイクロペイメントチャネルでは、過去のトランザクションを無効化し、最新のトランザクションのみを有効にする必要があります。例として、Alice と Bob で資金のやり取りを考えます。複数回取引を行い、以下のように資金移動が発生しました。

初期状態
1. Alice : 1BTC, Bob : 1BTC

Alice -> Bob へ 0.5BTC 送金
2. Alice : 0.5BTC, Bob : 1.5BTC

Bob -> Alice へ 1BTC 送金
3. Alice : 1.5BTC, Bob : 0.5 BTC

ここで取引が終了しました。3番目のトランザクションをブロックチェーンにブロードキャストすることが求められます。しかし、Bob が不正に 2番目のトランザクションをブロードキャストすることで、Bob は Alice から 1BTC 奪うことが出来ます。
これを防ぐため、取引の更新の度に過去のトランザクションを無効化することが必要です。

様々な無効化手法

以下を満たす手法を実現できれば、最新のトランザクションのみが有効になり、安全にマイクロペイメントチャネルが実装できそうです。

  1. 過去のトランザクションをブロードキャストしても、ブロックチェーンに(直ぐに)取り込まれなければよい。
  2. 罰則を使用し、過去のトランザクションを不正にブロードキャストする動機を無くせばよい。
  3. 信頼できる第三者を設定し、トランザクションを管理を任せればよい。

これら 3 つの考え方に基づいたマイクロペイメントチャネルの論文を紹介します。

1について

locktime を用いて実装します。トランザクションの更新時に、前のトランザクションより短い locktime を設定します。過去のトランザクションを不正にブロードキャストしても、最新のトランザクションの方が locktime が短いので先にブロックチェーンに取り込まれます。

2者間の資金移動:point_down_tone2:
A Fast and Scalable Payment Network with Bitcoin Duplex Micropayment Channels

2者間のチャネルを拡張し、複数人での資金移動:point_down_tone2: channel factory のことです。
Scalable funding of Bitcoin micropayment channel networks

2について

過去のトランザクションを不正にブロードキャストした場合、不正を行ったパーティの資金が相手に奪われるような実装を行います。具体的にはトランザクションの更新時に、前のトランザクションの秘密鍵(or それに類する secret)を相手に公開します。過去のトランザクションの秘密鍵が相手に公開され資金が奪われるので、過去のトランザクションをブロードキャストする動機がありません。Lightning Network の実装はこれです。

The Bitcoin Lightning Network:Scalable Off-Chain Instant Payments
:point_up_tone2:前半部分で2者間の資金移動について、後半部分で複数人での資金移動を行う Lightning Network の説明を行っています。

上の論文の改善案:point_down_tone2: 秘密鍵を公開するのではなく、それに類する secret を設定
https://github.com/ElementsProject/lightning/blob/master/doc/deployable-lightning.pdf

3について

信頼できる実行環境であるTEEを、信頼できる第三者に見立てています。TEE を第三者に見立てているだけなので、実際に第三者は必要とせず Alice と Bob のみでチャネルの構築が可能です。Intel SGX (が提供する enclave) を TEE として使用しています。

2者間の資金移動:point_down_tone2:
Teechan: Payment Channels Using Trusted Execution Environments

2者間のチャネルを拡張し、複数人での資金移動:point_down_tone2:
Teechain: Scalable Blockchain Payments using Trusted Execution Environments

補足

以下の論文で 1 と 2 の手法を簡潔にまとめています。:point_down_tone2:
Towards Bitcoin Payment Networks

Lightning Network のプロトコルを改良した eltoo も面白いです:point_down_tone2:
eltoo: A Simple Layer2 Protocol for Bitcoin
しかし SIGHASH_NOINPUT が必要なので現状 Bitcoin に適用できません

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2