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

Generalized State Channel

Avatar for Ryuya Nakamura Ryuya Nakamura
July 19, 2018
5.8k

Generalized State Channel

Avatar for Ryuya Nakamura

Ryuya Nakamura

July 19, 2018
Tweet

More Decks by Ryuya Nakamura

Transcript

  1. 2 ©Gunosy Inc. 自己紹介 中村龍矢 @veryNR ▪ Gunosy Inc. –

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

    – Generalized State Channel Counterfactual – 単語 ”Counterfactual” – Counterfactual Address – マルチシグウォレット – 基本プロトコル – Meta Channel アジェンダ
  3. 5 ©Gunosy Inc. State Channel ▪ 基本の流れ 1. チャンネルをオープンし、ステートをマルチシグでロック(デポジット) 2.

    オフチェーンで状態遷移(コミットメント) 3. チャンネルのクローズ、オンチェーンでの反映 ▪ Payment Channelが有名 – Lightning Network, Raiden ▪ Ethereumの場合Payment以外のステートにも適用できる オフチェーンで状態遷移をして最終結果だけ書き込む方法
  4. 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つの種類
  5. 9 ©Gunosy Inc. Generalized State Channel ▪ 「新しいアプリケーションを導入するとき、オンチェーンの操作が特に必要がない」チャンネル ▪ 既に別の目的で開いてあるチャンネルを他のアプリケーションを利用する時に活用できる

    ▪ ここ数ヶ月でホワイトペーパーが続々公開 – Perun, Celer Network, Counterfactual ▪ 今回はCounterfactualについて話します – L4 Mediaというチームのプロジェクト – 最も整理された設計 アプリケーションに依存しないチャンネル
  6. 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の本質的な概念
  7. 14 ©Gunosy Inc. Counterfactual Address まだデプロイされていないコントラクトを参照する方法 ▪ デプロイされていないコントラクトを参照したい – まだオンチェーンにないアプリケーションやその他プロトコルに必要なもの

    ▪ 問題: デプロイされないとアドレスはわからない ▪ 解決策: デプロイせずに決定的に決まる値で参照する ▪ RegistryコントラクトがCounterfactual addressの管理を担当 – deploy() : デプロイと同時に実際のアドレスとの mappingを記録 – resolve(): Counterfactual addressから実際のアドレスを取得 • Ethereum Name Serviceと似ている ▪ Counterfactual object – この仕組みで未デプロイのコントラクトを生成してオフチェーンで利用
  8. 15 ©Gunosy Inc. マルチシグウォレット チャンネル開設で必要な唯一のコントラクト ▪ 一般的なマルチシグウォレット同様の機能 – マルチシグが保有できる任意のステートをデポジット可能 •

    ether, ERC系トークン, non-asset state ▪ executeTransaction関数 – 署名されたコミットメントを受け取り任意の関数を実行する – DELEGATECALL/CALLによりオフチェーンの状態をCounterfactualにする
  9. 17 ©Gunosy Inc. ▪ Instantiate – Counterfactual objectのRegistry経由でのデプロイにコミット ▪ CommitWithdrawal

    – Counterfactual objectのstateを参照した引き出しにコミット ▪ Update – Counterfactual objectのstateの更新にコミット 基本プロトコル
  10. 18 ©Gunosy Inc. Meta Channel ▪ 各中継チャンネルでAlice-Bob Payment Objectの残高のProxy Objectへの反映をコミット

    ▪ HTLC方式との違い – 状態遷移ごとに仲介者に協力してもらう必要がない • 賭けチェスなどでは便利 – 仲介者にデポジットしてもらってその範囲で自由に使うイメージ Counterfactualにおける仲介の仕組み