Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up
for free
Generalized State Channel
Ryuya Nakamura
July 19, 2018
5
4k
Generalized State Channel
Ryuya Nakamura
July 19, 2018
Tweet
Share
More Decks by Ryuya Nakamura
See All by Ryuya Nakamura
nrryuya
2
330
nrryuya
7
410
nrryuya
3
340
nrryuya
6
1.4k
nrryuya
3
3.2k
nrryuya
6
1k
Featured
See All Featured
keithpitt
401
20k
jakevdp
775
200k
smashingmag
229
18k
chriscoyier
499
130k
smashingmag
283
47k
davidbonilla
70
3.5k
andyhume
62
3.4k
reverentgeek
168
7.2k
caitiem20
308
17k
brettharned
93
3k
eitanlees
111
9.9k
keathley
18
650
Transcript
Generalized State Channel @veryNR 2018.7
2 ©Gunosy Inc. 自己紹介 中村龍矢 @veryNR ▪ Gunosy Inc. –
データ分析部 2017年2月~ • 動画配信ロジックの開発など • Python, Go, SQL – 新規事業開発室 2018年6月~ • ブロックチェーンの研究開発 ▪ 経歴 – Coubic株式会社 • 営業をやっていました – 日本ヒューマンビートボックス協会 • お手伝い – 東京大学工学部システム創成学科 • 休学中
3 ©Gunosy Inc. State Channel 概説 – 基本 – 3つのタイプ
– Generalized State Channel Counterfactual – 単語 ”Counterfactual” – Counterfactual Address – マルチシグウォレット – 基本プロトコル – Meta Channel アジェンダ
4 ©Gunosy Inc. State Channel 概説
5 ©Gunosy Inc. State Channel ▪ 基本の流れ 1. チャンネルをオープンし、ステートをマルチシグでロック(デポジット) 2.
オフチェーンで状態遷移(コミットメント) 3. チャンネルのクローズ、オンチェーンでの反映 ▪ Payment Channelが有名 – Lightning Network, Raiden ▪ Ethereumの場合Payment以外のステートにも適用できる オフチェーンで状態遷移をして最終結果だけ書き込む方法
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つの種類
7 ©Gunosy Inc. Application-specific State Channel: FunFair https://showcase.funfair.io/
8 ©Gunosy Inc. Application-specific State Channel: FunFair https://showcase.funfair.io/
9 ©Gunosy Inc. Generalized State Channel ▪ 「新しいアプリケーションを導入するとき、オンチェーンの操作が特に必要がない」チャンネル ▪ 既に別の目的で開いてあるチャンネルを他のアプリケーションを利用する時に活用できる
▪ ここ数ヶ月でホワイトペーパーが続々公開 – Perun, Celer Network, Counterfactual ▪ 今回はCounterfactualについて話します – L4 Mediaというチームのプロジェクト – 最も整理された設計 アプリケーションに依存しないチャンネル
10 ©Gunosy Inc. Counterfactual
11 ©Gunosy Inc. Counterfactual ▪ オンチェーンの処理をなるべく少なくする設計思想 – チャンネルを開く際に必要なのはマルチシグウォレットのデプロイだけ – まだオンチェーンに存在しないアプリケーションも利用できる
L4 Mediaの提案するGeneralized State Channelフレームワーク
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の本質的な概念
13 ©Gunosy Inc. Counterfactualのポイント 任意のアプリケーションの実行をオンチェーンの操作なしに、Counterfactualにできるか 1. Counterfactual addressing 2. マルチシグウォレット
3. デポジットのアサイン
14 ©Gunosy Inc. Counterfactual Address まだデプロイされていないコントラクトを参照する方法 ▪ デプロイされていないコントラクトを参照したい – まだオンチェーンにないアプリケーションやその他プロトコルに必要なもの
▪ 問題: デプロイされないとアドレスはわからない ▪ 解決策: デプロイせずに決定的に決まる値で参照する ▪ RegistryコントラクトがCounterfactual addressの管理を担当 – deploy() : デプロイと同時に実際のアドレスとの mappingを記録 – resolve(): Counterfactual addressから実際のアドレスを取得 • Ethereum Name Serviceと似ている ▪ Counterfactual object – この仕組みで未デプロイのコントラクトを生成してオフチェーンで利用
15 ©Gunosy Inc. マルチシグウォレット チャンネル開設で必要な唯一のコントラクト ▪ 一般的なマルチシグウォレット同様の機能 – マルチシグが保有できる任意のステートをデポジット可能 •
ether, ERC系トークン, non-asset state ▪ executeTransaction関数 – 署名されたコミットメントを受け取り任意の関数を実行する – DELEGATECALL/CALLによりオフチェーンの状態をCounterfactualにする
16 ©Gunosy Inc. デポジットのアサイン アトミックな状態遷移でデポジットを分割
17 ©Gunosy Inc. ▪ Instantiate – Counterfactual objectのRegistry経由でのデプロイにコミット ▪ CommitWithdrawal
– Counterfactual objectのstateを参照した引き出しにコミット ▪ Update – Counterfactual objectのstateの更新にコミット 基本プロトコル
18 ©Gunosy Inc. Meta Channel ▪ 各中継チャンネルでAlice-Bob Payment Objectの残高のProxy Objectへの反映をコミット
▪ HTLC方式との違い – 状態遷移ごとに仲介者に協力してもらう必要がない • 賭けチェスなどでは便利 – 仲介者にデポジットしてもらってその範囲で自由に使うイメージ Counterfactualにおける仲介の仕組み
19 ©Gunosy Inc. 終わりに ▪ PlasmaだけじゃなくてState Channelにも注目してね! ▪ 近日中に記事にします 間違い等あれば是非@veryNRまでお知らせください