即時かつ手数料無しのフラッシュチャンネル

この記事は原題「Instant & Feeless— Flash Channels」の翻訳です。
必要だと思われる部分には言葉を補ったり、意訳をしていたりしています。私の力不足のため、だいたいで翻訳されている部分もありますが、ご了承くださいませ。


投稿者:Lewis Freiberg (IOTA Foundation developer. Lover of potatoes.)
投稿日:Sep 24, 2017

序文

IOTA財団の目標は、機械が互いにシームレスに相互作用し取引する、繁栄している機械経済を構築することです。IOTAでは、取引手数料がなく、IoT環境で実行可能な最初のスケーラブルな分散台帳アーキテクチャを導入しました。IOTAのパワーは、相互に取引しているネットワーク参加者の数に比例するので、ネットワーク内にあります。

近年、レイヤー2ソリューション(BitcoinのライトニングネットワークやEthereumのRaidenなど)は、従来のブロックチェーンのトランザクション費用を抑えて高速トランザクションを可能にする一般的なソリューションとなりました。2017年8月の間に、IOTAチーム( Paul HandyLewis Freiberg Chris Dukakis)は、IOTAでの同様のアプローチを特別なソリューション、すなわちフラッシュチャンネルとして開発するために尽力してきました。

フラッシュチャンネル

フラッシュチャンネルは、瞬間的な高スループットのトランザクションを可能にする双方向のオフタングル支払いチャンネルです。本質的には、各トランザクションが公のIOTAネットワーク上で承認するのを待つことなく、当事者達が高い頻度で取引する方法を提供します。代わりに、メインのIOTAネットワークでは、フラッシュチャンネルのトランザクションの開始と終了という2つのトランザクションしか発生しません。オフタングル・アプローチは、タングルから署名されたトランザクションを作成することでトランザクションごとのオーバーヘッドを無視できるレベルまで減らしつつ、即時のトークンストリーミングのための手数料が無いトランザクションモデルを開きます。

即時のトランザクション

チャンネルが作成されると、各当事者は、すべての当事者達によって制御される複数署名アドレスに同量のIOTAを預け入れます。最初の入金が確認されると、チャンネルは閉鎖されるまでIOTAネットワークと対話する必要はありません。

取引が終了すると、最終残高がネットワークに公開されます。このアプローチにより、何千ものトランザクションをわずか2つのトランザクションに減らすことができます。

実用上のインセンティブ

フラッシュは、当事者達がチャンネルに誠意を持って参加するための同等のインセンティブに依存しています。署名当事者は取引を継続することを拒否することができるため、複数署名シナリオの場合と同様に、インセンティブが必要です。

フラッシュは、使用されているチャンネル内の取引可能なトークンの合計量を減らすことで、これに対抗しています。これにより、当事者がチャンネルの最新の状態よりも優れた結果を達成することはないため、前のトランザクションバンドルをアタッチするインセンティブが減少します。

説明するために、2人の当事者達がそれぞれ50iotaをフラッシュチャンネルに入力すると仮定します。プールは100iotaを制御しますが、フラッシュチャンネル内では50iotaしか処理されません。当事者Aが5iotaを当事者Bに送信したい場合、5iotaを解放して、各当事者達がまだ45iotaの制御権を持っているとみなすようにします。これのもう1つの見方は、当事者Bが当事者Aに10iotaを送信することを提案した場合、当事者Aは5iotaの支払いとしてそれを検討します。将来の取引が署名されると、これらの選択された出力アドレスのそれぞれの金額は上昇するだけである一方、残りのアドレスに送られる金額は下がるだけです。

残金は、チャンネルからの早期脱出を止めるための担保としても使用されます。当事者がチャンネルを閉じることを拒否した場合、最新の署名されたバンドルを、残金を複数署名アドレスに入金するタングルにアタッチすることができます。当事者達が納得できる結果に合意したとき、当事者達はアドレスにアクセスして資金を分配することができます。膠着状態になると資金が失われるため、双方は解決に向けて利害関係があります。

フラッシュ + WebRTC

フラッシュデモ:https://flash.tangle.works/で試してみてください。
Instant & Feeless — Flash Channels」より引用

フラッシュチャンネルの仕組みを実証するため、友人と試してみるためのPoCアプリケーションを作成しました。このデモでは、WebRTCを使用してパートナーに直接接続し、チャンネルに最終的に合意するまで、複雑な操作を行うことができます。

このデモではデモンストレーションの目的で2Kiのテストネットトークンが入金されます。このデモで非常にユニークなのは、ハッシュ、署名、PoW、IOTAネットワークとのやりとりすべてがブラウザ内でリアルタイムで起こっていることです。

ここでデモをテストできます。 このデモを使用するには、WebGLを有効にする必要があります(注:これはデスクトップ上で最もよく感じられます。VPNを使用すると、WebRTC接続がブロックされる可能性があります。)。

どのように動いているのか

フラッシュはツリートポロジーを使用して、アタッチするトランザクションの数を減らします。通常、各送金は、タングルにアタッチする必要があり、多量のPoWを必要とします。

このアプローチは、合理的に安全なままでアドレスを2回使用できるという事実を利用しています。これにより、ツリーを構築できます。リーフ(ツリーの最下部)は、フラッシュチャンネルで発生する個々のトランザクションです。

フラッシュチャンネルを決めるために必要なトランザクションの最大数は、ツリーの深さに直接関係します。深さは、最初にフラッシュチャンネル内でオフラインで発生する個々のトランザクションの数を評価し、その数に\(\log_{2}x\)を適用することによって決定されます。

たとえば、60個のトランザクションチャンネルが必要な場合は、\(\log_{2}60 = 5.907\)(これは6の深さまで切り上げます。)という深さ6のツリーが必要になります。

トランザクションを作成するたびに、ツリーの下部に沿って左から右に移動します。親ノードが2回使用された場合、トランザクションは親ノードの兄弟姉妹ノードに移動し、そのノードのバンドルを生成する必要があります。

例:上記の二分木では、トランザクションを作成するために、16に到達するために必要なバンドルを生成します。この場合、バンドル1、2、4、8および16を生成する必要があります。次のトランザクションを作成するには、17、18などに移動します。ツリー全体を移動すると、新しいリーフバンドルに到達するために必要なバンドルだけが生成されます。

チャンネルを開く

チャンネルの深さ、各ユーザの初期入金額、およびチャンネル参加者の最終決済アドレスが入力されると、フラッシュチャンネル内に初期トランザクションが作成されます。このトランザクションはツリーの下のノードごとにバンドルを生成し、残りのアドレスにすべてのチャンネルのIOTAが入金された最終バンドルを生成します。

この時点で、入金アドレス(二分木のルート)が表示されます。ユーザーは合意した金額を入金し、入金が確認されるのを待ってから、取引を開始する必要があります。

トランザクションの作成

チャンネル内で新しいトランザクションを作成する場合、ユーザーはバンドルを作成し、チャンネル内の他の当事者達に提案する必要があります。提案されたバンドルを見直して確認した後、ユーザーは署名を生成して返します。両方の当事者達が互いの署名を持つと、バンドルの署名を検証し、ローカルチャンネル残高を変更します。

新しいトランザクションバンドルを構築する場合、フラッシュライブラリは新しいトランザクションの値を目的のユーザー達の残高に追加し、残りのチャンネル残高を残りのアドレスに配置します。

トランザクションの拒否

チャンネル内で取引する場合、各ユーザーはトランザクションの発生を拒否する同等の権利を持ちます。ユーザーが同意しない提案されたトランザクションを受け取った場合、ユーザーはそのバンドルに署名しないことによって提案されたトランザクションを拒否します。

チャンネルは、N個のマルチシグネチャのM個になるように設定することもできます。つまり、3人のユーザーのフラッシュチャンネルで、トランザクションを作成するために2人だけが必要になるということです。これは、信頼できる仲介者がチャンネルの紛争を助けることを望む場合に役立ちます。

チャンネルを閉じる

チャンネルを閉じるために、提案するユーザーは、新しい送金を提案しないバンドルを構築します。代わりに、残っているチャンネル残高を取り、チャンネルが開かれたときのユーザーの入金の割合に応じてチャンネルのユーザー間で分割します。この処理中、ユーザーはチャンネルを閉じるために必要なバンドルの量を最小限に抑えます。

チャンネル内の他のユーザー達はバンドルをチェックし、署名を返すか、閉じるバンドルを拒否します。 そして、これらのバンドルは、ネットワークに接続されます。

結論

フラッシュチャンネルは、トランザクションのリアルタイムストリーミングを可能にするIOTAのコア機能を拡張する最初のモジュールです。この機能は、IoT以降の分野における新しく破壊的なアプリケーションのためのIOTAネットワークの迅速かつ自由な決済と完全に対になっています。

現時点では、フラッシュはベータ版ですが、アプリケーション開発者がアプリケーションにフラッシュを組み込み、早期フィードバックを提供することを促進します。パートナー企業と一緒に構築したフラッシュをベースにした最初のアプリケーションの一部は10月に公開される予定ですので、ご期待下さい。

詳細およびフラッシュチャンネルライブラリについては、ここをクリックしてください。

よくある質問

私はTangleがスケールできると思ったのですが、なぜフラッシュチャンネルが必要なのでしょうか?

Tangleは、分散台帳への斬新なアプローチのおかげで拡張性があります。コンセンサスへのアプローチのために、各取引ユーザーは、ごくわずかの量のPoWを完了しなければなりません。この作業は最小限に抑えられますが、完了までに時間が必要です。フラッシュは、トランザクションがネットワークに接続されるまでネットワークから離れた場所に移動することでこれを排除し、何千ものトランザクションを2つのトランザクションに削減する可能性があります。

全体として、IOTAは多目的な取引のためのものです。フラッシュは、2人の当事者間のトークンストリーミングが必要なユースケース固有のアプリケーション向けです。

私の取引が通常2分で承認されたら、なぜ私はそれより速い取引速度が必要なのでしょうか?

フラッシュチャンネルは、トランザクション状況の小さな部分集合に対する現在の回答です。これは、コンテンツをストリーミングする必要がある場合に便利です。ビデオまたは車の課金の1秒あたりの支払いなどです。あるいは、金融機関と消費者の間の決済は、\(\frac{1}{2}\)秒未満のスピードに落とすことができます。販売やオンライン購入した時点でです。

フラッシュチャンネルを使用するために特別なトークンが必要ですか?

フラッシュを使用するには、旧IOTAトークンをチャンネル内で使用します。ネットワークが無料であるため、料金を支払うために余分なトークンは必要ありません。

チャンネルを開くにはどれくらいの費用がかかりますか?

IOTAは手数料がないので、チャンネルの開閉は無料です。
つまり、チャンネルを開いたり閉じたりするときに料金がかからないため、短期間または小さな残高でフラッシュチャンネルを作成することができます。

ルーティングはどのように機能しますか?

フラッシュはルーティングに関係しません。 IOTAは手数料がないので、あなたのパートナー達が望むだけの数のフラッシュチャンネルを自由に開くことができます。これにより、最終的に中央集権化につながる複雑なルーティング要件がなくなります。

デモでは、WebRTCを使用してチャンネルパートナーに直接接続します。 サーバーは、Webページを提供し、ピアを最初に接続するようにのみ動作します。チャンネルが機能するために必要な仲介者はありません。

フラッシュチャンネルが機能するには特別なノードやネットワークの更新が必要ですか?

いいえ。フラッシュは、2人以上のユーザーがマルチシグネチャウォレットを操作する特定の方法を定義しています。

これは即時支払いネットワークでの他の試みとは対照的です。たとえば、Bitcoinのライトニングネットワークでは、カスタムソフトウェアを使用してBitcoinブロックチェーンと並行して動作するパラレルルーティングネットワークが必要です。

フラッシュチャンネルはどのくらいの速さですか?

フラッシュチャンネルは、チャンネル内のすべての当事者が提案されたバンドルに署名し、署名をすべての当事者に返すまでに要する時間によって制限されます。ユーザーが手動でトランザクションを確認するのを待っていないときには、完了するまでにわずか数ミリ秒だけかかります。

チャンネルの開閉にはどれくらいの時間がかかりますか?

フラッシュは標準のトランザクションをチャンネルの開閉に使用するため、ネットワークの平均確認時間が予想されます。2017年9月時点では、平均で約3分です。ネットワークが成長するにつれて、この時間は減少するでしょう。

待って、IOTAは時間錠やスマートコントラクトを持っていないと思うんだけど?

ええ持っていません(現時点ではです😉)。代わりに、フラッシュは実用上のインセンティブの簡単な使用に依存しています。 タイムスタンプが適用されると、フラッシュに時間錠を導入します。

実用上のインセンティブは詐欺師や泥棒をどのように止めるのでしょうか?

フラッシュチャンネルに入る際には、チャンネルに追加する担保の量を定義します。 未知のパートナーを持つチャンネルを開始する場合は、価格の低いチャンネルを開くか、未知のパートナーにより大きな担保をチャネルに入金させることを要求します。

チャンネルを介して紛争がある場合、ユーザーは最新のチャンネル状態を添付して取引中に承認された資金を解放することができます。残りの資金は残りのアドレス(開設時に生成されます)に入金されます。これらの資金は、両方のユーザーが資金の分割に同意してから、それらを解放する取引に署名するまで、ここにとどまります。

フラッシュチャンネルの使用例は何ですか?

2つの当事者間の瞬時の双方向トランザクションを必要とする全てのアプリケーションです。これらの使用例には、EVチャージング、帯域幅オンデマンド、その他のオンデマンドリソース(計算、ストレージなど)、記事ごとへの支払いなどその他多くが含まれます。ベルリンのMeetupでCarsten Stöckerが最近発表した例を以下に示します:

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です