factory channel 〜ライトニングネットワークの実現に向けて〜

2018.10.11

BCHNews編集部

こんにちは、BCHNews編集部です。

 

本日は、「factory channel」について解説したいと思います。

突然この単語を出されても何のことだが分からないと思います。

factory channelは、タイトルにも記載した通り、Bitcoin Coreへの実装を目指して開発されている「ライトニングネットワーク」に関わるものです。

ライトニングネットワークは、Bitcoinのスケーラビリティ問題の解決および高速な少額決済を実現するための提案として、2016年1月14日にJoseph Poon氏とThaddeus Dryja氏によってホワイトペーパーが公開されました。

 

本記事では、まずライトニングネットワークの簡単な説明をした後に、「factory channel」がどのようなもので、なぜ提案されたのかを紹介したいと思います。

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

ライトニングネットワークについては、それが提案された経緯を知ることが理解につながると思います。

以下、順を追って説明します。

スケーラビリティ問題

2017年、暗号通貨がメディアなどで脚光を浴び始め、ビットコイン利用者が急増しました。しかし、ビットコインの処理能力には限界があり、約10分間で最大1MB分のトランザクションまでしか処理しない仕様になっています。つまり、利用者が増えれば、いずれは限界を向かえることが明白でした。

これは、ビットコインの「スケーラビリティ問題」と呼ばれ、以前からその対策について議論が交わされてきました。

決済スピードの問題

仮にスケーラビリティの問題が解決したとしても、Bitcoinが処理できる取引の数は、1秒あたり7トランザクション程度です。クレジットカードで有名なVisaは毎秒47,000件以上のトランザクションを処理できると言われており、Bitcoinが通貨として実用化されるためにはこれに匹敵する処理能力が必要になります。

また、二重支払いのリスクを減らすために、通常は発行したトランザクションがブロックに取り込まれてから数ブロックが生成されるまでは決済完了とはみなしません。

解決策としてのライトニングネットワーク

これらの問題を解決するための方法としてライトニングネットワークが提案されました。

ライトニングネットワークとは、双方向のペイメントチャネル(以下、ペイメントチャネル)を拡張したアイデアです。

ペイメントチャネルとは、トランザクションを毎回ブロックチェーンに書き込むのではなく、特定の相手と任意の数量のBitcoinをロックして(チャネルを開いて)、ロックされた金額の範囲内で2者間でオフチェーン取引を行い、最終的に清算を行う(チャネルを閉じる)というものです。

これにより、ブロックチェーンに取り込まれるトランザクションは、チャネルを開くトランザクションとチャネルを閉じるトランザクションの2つだけとなります。チャネルが開いている間の2者間の取引はブロックチェーンに書き込まれません。

以下の図は、双方向のペイメントチャネルを開いた時の構成図です。

青丸の人と緑丸の人がそれぞれ0.5BTCずつをロックした状態です。このロックする処理はfundingトランザクションと呼ばれ、ブロックチェーンに書き込まれます。

また、以下の図は、チャネル内で青丸から緑丸へ0.1BTC送金された時の図です。

元々存在したcommitmentトランザクションが破棄されて、送金後の結果を反映したcommitmentトランザクションに置き換わっています。

commitmentトランザクションはオフチェーン上で処理されるため、ブロックチェーンに含まれることはありません。

ただし、ペイメントチャネルはあくまで2者間でのみ利用できるものです。例えば、アリスがボブとチャネルを開いて取引を行なっていたとします。ここで、アリスがさらにチャーリーとも取引をしようとした場合、アリス-ボブのチャネルとは別にアリス-チャーリーのチャネルを新たに開かなければなりません。これでは不便だということで一工夫されたものがライトニングネットワークです。

もし、ボブが既にチャーリーとのチャネルを開いていたとします。その場合。以下の2つのチャネルが既にある状態です。

  • アリス-ボブ
  • ボブ-チャーリー

こうしてみると、ボブを経由すればアリスとチャーリーの取引ができるように見えないでしょうか?それを実現するアイデアをペイメントチャネルに追加したものがライトニングネットワークです。

ライトニングネットワークの課題

さて、スケーラビリティ問題解決のためにライトニングネットワークが提案されていますが、ライトニングネットワークは、そのホワイトペーパー上で解決されていない2つの課題があります。

factory channelのホワイトペーパーで指摘されている課題は以下の通りです。

ブロックチェーンのキャパシティの問題

オンチェーン上で処理するトランザクションがチャネルのオープンとクローズだけだったとしても、Bitcoinのブロックチェーンのキャパシティでは、8億人程度のユーザーしかサポートできないと推定されています。世界の人口が70億人を超えていることを考えると、8億では足りないですね。

Even with increases in block size it was estimated that the blockchain capacity could only support about 800 million users with micropayment channels due to the number of on-chain transactions required to open and close channels [9].

channel factoryのホワイトペーパーから引用

資金のロックインに関する問題

ライトニングネットワークでは、資金を予めロックする必要がありますが、チャネル内の取引額が大きくなっても十分足りる量をロックしておかなければなりません。ロックするBitcoinの量はできるだけ少量にとどめたい一方で、取引の柔軟性を高めるためには多めにロックしておく必要があり、二つの相反する要求が存在します。

Two parties cooperating in a channel must lock funds into a shared account. The locked-in funds should be sufficient to provide enough capacity for peaks of transactions. There is a conflict of the two aims to have a low amount of funds locked up in a channel, while at the same time being flexible for these peaks.

channel factoryのホワイトペーパーから引用

factory channelは、これら2つの問題を同時に解決する方法として、Conrad Burchert氏、Christian Decker氏、Roger Wattenhofer氏によって提案されました。

channel factory

channel factoryについては、図で見た方が理解しやすいと思います。

図1:既存のペイメントチャネルの図

図2:factory channel導入後の図

上の2つの図を見比べてみてください。

図1は既存のペイメントチャネルの図で、図2はfactory channel導入後の図です。

以下、両者の違いを整理します。

hookトランザクション

factory channelで登場するhookトランザクションは、ペイメントチャネルの参加者がそれぞれの資金をロックするトランザクションであり、オンチェーン上に書き込まれます。

hookトランザクションは、既存のペイメントチャネルのfundingトランザクションと基本的に同じものでが、資金のロックに参加できる人数が異なります。既存のfundingトランザクションでは、2人だけで資金をロックしていましたが、factory channelでは、3人以上のユーザーが参加できます。

allocationトランザクション

allocationトランザクションは、channel factoryで新しく追加された機能です。allocationトランザクションは、fundingトランザクションでロックされた資金をサブチャネルに分配します。サブチャネルでは、既存のペイメントチャネルと同じように2者間のオフチェーン取引が行われます。重要なのは、既存のペイメントチャネルではオンチェーン上で処理されるfundingトランザクションから資金が割り当てられていましたが、channel factoryのallocationトランザクションは、オフチェーン上で処理されるということです。

取引限度額の調整

既存のペイメントチャネルでは、ロックされた資金では不十分な額の取引をしようとした場合、一度チャネルを閉じて、再度fundingトランザクションを作成する必要がありました。

しかし、channel factoryでは、資金の割り当てはオフチェーン上で処理されるallocationトランザクションが行なっているため、資金不足になってもallocationトランザクションから各サブチャネルに割り当てる金額を変更することで、オンチェーン上のトランザクションを作ることなく、それぞれのサブチャネルの取引限度額を調整することができます。

このように、ブロックチェーンとペイメントチャネルの間にchannel factoryを挟むことで、それぞれのサブチャネルにロックされた資金を柔軟に別のサブチャネルに移動することができ、ブロックに追加されるトランザクションの数を抑制することが可能となります。

さいごに

今回は、Bitcoin Coreのライトニングネットワーク関係の解説を行いました。

細かい仕組みについては説明を省きましたが、何が問題で、どのように解決しようとしているのかを掴んでいただければ幸いです。

詳細が気になる方は、ぜひホワイトペーパーをご覧ください。

最新情報はこちら

BCHNewsでは公式のTwitterアカウント(@bchnews_jp)を開設しました。
更新情報を配信しておりますので、よろしければフォローしていただけると嬉しいです。

BCHNews編集部

BCHNews編集部です。
日々更新される暗号通貨関連のニュースを読者の皆様にお届けします。

関連記事

BitcoinCoreとSchnorr署名

2018.09.05

by BCHNews編集部

10/4 アルトコイン-アップデート情報まとめ

2018.10.04

by BCHNews編集部

NEMが採用しているProof of Importanceについて解説します

2018.10.23

by BCHNews編集部

aeternity、複数枚のGPUでマイニングすることが可能に(Ubuntuのみ)

2018.12.18

by BCHNews編集部