Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Generalized State Channel

Ryuya Nakamura
July 19, 2018
5k

Generalized State Channel

Ryuya Nakamura

July 19, 2018
Tweet

Transcript

  1. Generalized State Channel
    @veryNR
    2018.7

    View Slide

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

    View Slide

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

    View Slide

  4. 4
    ©Gunosy Inc.
    State Channel 概説

    View Slide

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

    View Slide

  6. 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つの種類

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  10. 10
    ©Gunosy Inc.
    Counterfactual

    View Slide

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

    View Slide

  12. 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の本質的な概念

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide