Slide 1

Slide 1 text

Generalized State Channel @veryNR 2018.7

Slide 2

Slide 2 text

2 ©Gunosy Inc. 自己紹介 中村龍矢 @veryNR ■ Gunosy Inc. – データ分析部 2017年2月~ ● 動画配信ロジックの開発など ● Python, Go, SQL – 新規事業開発室 2018年6月~ ● ブロックチェーンの研究開発 ■ 経歴 – Coubic株式会社 ● 営業をやっていました – 日本ヒューマンビートボックス協会 ● お手伝い – 東京大学工学部システム創成学科 ● 休学中

Slide 3

Slide 3 text

3 ©Gunosy Inc. State Channel 概説 – 基本 – 3つのタイプ – Generalized State Channel Counterfactual – 単語 ”Counterfactual” – Counterfactual Address – マルチシグウォレット – 基本プロトコル – Meta Channel アジェンダ

Slide 4

Slide 4 text

4 ©Gunosy Inc. State Channel 概説

Slide 5

Slide 5 text

5 ©Gunosy Inc. State Channel ■ 基本の流れ 1. チャンネルをオープンし、ステートをマルチシグでロック(デポジット) 2. オフチェーンで状態遷移(コミットメント) 3. チャンネルのクローズ、オンチェーンでの反映 ■ Payment Channelが有名 – Lightning Network, Raiden ■ Ethereumの場合Payment以外のステートにも適用できる オフチェーンで状態遷移をして最終結果だけ書き込む方法

Slide 6

Slide 6 text

6 ©Gunosy Inc. State Channel の種類 ■ Payment Channel – ether、ERC20系トークンの送金 – Lightning Network, Raiden, Liquidity Network, Sprites ■ Application-specific Sate Channel – 特定のアプリケーションに特化したチャンネル – FunFair, Gnosis ■ Generalized State Channel – アプリケーションに依存しないチャンネル – 今回はこれについて話します! 3つの種類

Slide 7

Slide 7 text

7 ©Gunosy Inc. Application-specific State Channel: FunFair https://showcase.funfair.io/

Slide 8

Slide 8 text

8 ©Gunosy Inc. Application-specific State Channel: FunFair https://showcase.funfair.io/

Slide 9

Slide 9 text

9 ©Gunosy Inc. Generalized State Channel ■ 「新しいアプリケーションを導入するとき、オンチェーンの操作が特に必要がない」チャンネル ■ 既に別の目的で開いてあるチャンネルを他のアプリケーションを利用する時に活用できる ■ ここ数ヶ月でホワイトペーパーが続々公開 – Perun, Celer Network, Counterfactual ■ 今回はCounterfactualについて話します – L4 Mediaというチームのプロジェクト – 最も整理された設計 アプリケーションに依存しないチャンネル

Slide 10

Slide 10 text

10 ©Gunosy Inc. Counterfactual

Slide 11

Slide 11 text

11 ©Gunosy Inc. Counterfactual ■ オンチェーンの処理をなるべく少なくする設計思想 – チャンネルを開く際に必要なのはマルチシグウォレットのデプロイだけ – まだオンチェーンに存在しないアプリケーションも利用できる L4 Mediaの提案するGeneralized State Channelフレームワーク

Slide 12

Slide 12 text

12 ©Gunosy Inc. 単語 “Counterfactual” ■ “Counterfactual X”の意味 1. Xがオンチェーンで起きるが、まだ起きていない 2. 参加者の誰でも一方的にXをオンチェーンで起こせる機構がある 3. 参加者がXが実際に起こったかのように振る舞うことができる ■ 取引情報に全員が署名する(コミットメント)ことでその取引は Counterfactualになる – Lightning Networkはトランザクション自体に署名 – Raidenはjsonデータに署名 & オンチェーンに署名検証のロジック ■ 古い状態もCounterfactualのまま残ってしまう – 古い状態が提出された場合のChallengeの仕組みが必要 → Counterfactual & Challenge可能 というのがState Channelの状態遷移 State Channelの本質的な概念

Slide 13

Slide 13 text

13 ©Gunosy Inc. Counterfactualのポイント 任意のアプリケーションの実行をオンチェーンの操作なしに、Counterfactualにできるか 1. Counterfactual addressing 2. マルチシグウォレット 3. デポジットのアサイン

Slide 14

Slide 14 text

14 ©Gunosy Inc. Counterfactual Address まだデプロイされていないコントラクトを参照する方法 ■ デプロイされていないコントラクトを参照したい – まだオンチェーンにないアプリケーションやその他プロトコルに必要なもの ■ 問題: デプロイされないとアドレスはわからない ■ 解決策: デプロイせずに決定的に決まる値で参照する ■ RegistryコントラクトがCounterfactual addressの管理を担当 – deploy() : デプロイと同時に実際のアドレスとの mappingを記録 – resolve(): Counterfactual addressから実際のアドレスを取得 ● Ethereum Name Serviceと似ている ■ Counterfactual object – この仕組みで未デプロイのコントラクトを生成してオフチェーンで利用

Slide 15

Slide 15 text

15 ©Gunosy Inc. マルチシグウォレット チャンネル開設で必要な唯一のコントラクト ■ 一般的なマルチシグウォレット同様の機能 – マルチシグが保有できる任意のステートをデポジット可能 ● ether, ERC系トークン, non-asset state ■ executeTransaction関数 – 署名されたコミットメントを受け取り任意の関数を実行する – DELEGATECALL/CALLによりオフチェーンの状態をCounterfactualにする

Slide 16

Slide 16 text

16 ©Gunosy Inc. デポジットのアサイン アトミックな状態遷移でデポジットを分割

Slide 17

Slide 17 text

17 ©Gunosy Inc. ■ Instantiate – Counterfactual objectのRegistry経由でのデプロイにコミット ■ CommitWithdrawal – Counterfactual objectのstateを参照した引き出しにコミット ■ Update – Counterfactual objectのstateの更新にコミット 基本プロトコル

Slide 18

Slide 18 text

18 ©Gunosy Inc. Meta Channel ■ 各中継チャンネルでAlice-Bob Payment Objectの残高のProxy Objectへの反映をコミット ■ HTLC方式との違い – 状態遷移ごとに仲介者に協力してもらう必要がない ● 賭けチェスなどでは便利 – 仲介者にデポジットしてもらってその範囲で自由に使うイメージ Counterfactualにおける仲介の仕組み

Slide 19

Slide 19 text

19 ©Gunosy Inc. 終わりに ■ PlasmaだけじゃなくてState Channelにも注目してね! ■ 近日中に記事にします 間違い等あれば是非@veryNRまでお知らせください