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

State Channel 最前線

State Channel 最前線

Ryuya Nakamura

October 24, 2018
Tweet

More Decks by Ryuya Nakamura

Other Decks in Technology

Transcript

  1. CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights

    reserved. 1 CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved. State Channel 最前線 2018-10-24 @veryNR
  2. CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights

    reserved. 2 CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved. 自己紹介 • LayerX Inc. ◦ R&Dチーム • やっていること ◦ Vyper ◦ Formal Verification ◦ zk-snarks Twitter: @veryNR GitHub: nrryuya Ryuya Nakamura
  3. CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights

    reserved. 3 CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved. LayerX R&D Team ポリシー • キャッチアップで終わらない • 全てオープンにやる • 専門家じゃないけど頑張る リサーチテーマ • zk-sn[t]arks • Formal Verification • Vyper(半分趣味) ScrapBoxにレポート書いているよ! https://scrapbox.io/layerx/ • 基礎技術の深い理解とブロックチェーンへの応用の模索
  4. CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights

    reserved. 4 CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved. やったこと VyperによるPlasmaの実装 https://github.com/LayerXcom/plasma-mvp-vyper
  5. CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights

    reserved. 5 CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved. やったこと Remix用のVyperプラグイン https://github.com/LayerXcom/vyper-remix
  6. CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights

    reserved. 6 CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved. やったこと GoでのTinyRAMのエミュレータ実装 https://github.com/LayerXcom/gram TinyRAMはSNARKsのサーキットに変換しやすい計算モデル
  7. CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights

    reserved. 7 CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved. やっていること [WIP] KEVMを使ったPlasmaコントラクトのFormal Verification https://github.com/LayerXcom/verified-smart-contracts
  8. CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights

    reserved. 8 CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved. 1:基本と全体像 3:Generalized State Channel 今日話すこと 4:最近の話題 5:今後の予想 2:より深い基礎
  9. CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights

    reserved. 9 CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved. 1. State Channelの基本と全体像
  10. CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights

    reserved. 10 CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved. Ethereumのインフラ系プロジェクト Layer1 • Casper(PoS)とShardingの合体 → Shasper • EVMに代わるeWASMはテストネット開始 Layer2 • Plasmaの分化と発展 ◦ Minimal Viable Plasma → More Viable Plasma ◦ Plasma Cashの各種改善 ◦ Smart Contracts in Plasma (e.g. Plasma Leap) ◦ Plasma ❤ zk-snarks (e.g. Plasma Snapp) • あれ、State Channelは? ◦ 今日話します
  11. CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights

    reserved. 11 CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved. State Channelとは? • オフチェーンで状態遷移をして最終結果だけ書き込む方法 ハブ チャネル チャネル • 基本の流れ 1. チャネルをオープン: ステートをマルチシグでロック(デポジット) 2. コミットメント: オフチェーンで状態遷移 3. チャネルのクローズ: オンチェーンに結果を反映 • 「中継」することで直接チャネルを開いていない相手ともやりとり可能
  12. CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights

    reserved. 12 CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved. State Channelとは? • マルチシグ ◦ アセットをマルチシグでロック • コミットメント ◦ オフチェーンでやり取りに関するメッセージに全員で署名 ◦ マルチシグを介してオフチェーンの状態を「いつでもオンチェーンで反映でき る」ようにする • チャレンジ ◦ 古いコミットメントの提出は防げない ◦ 新しいコミットメントを提出することで無効化 • マルチシグ・コミットメント・チャレンジが基本的な仕組み
  13. CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights

    reserved. 13 CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved. State Channelの分類 • Payment Channel ◦ ether、ERC20系トークンの送金 ◦ e.g. Lightning Network, Raiden, Liquidity Network • Application-specific Sate Channel ◦ 特定のアプリケーションに特化したチャンネル ◦ FunFair, Magmo • Generalized State Channel ◦ アプリケーションに依存しないチャンネル ◦ Counterfactual, Celer Network, Perun • Ethereumの場合Payment以外のステートにも適用できる
  14. CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights

    reserved. 14 CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved. State Channelの分類 • Ethereumの場合Payment以外のステートにも適用できる • Payment以外のチャネルも実はシンプルで、コミットメントの中身が変わるだけ • コミットメントの作り方は大きく二通り ◦ コントラクトの関数呼び出しトランザクションに署名する ▪ マルチシグがデポジットを預かり、このトランザクションの実行者となる ◦ コミットメントのフォーマットを決めておき、オンチェーンのコントラクトがそれをパース して実行する(もちろん署名は必要) ▪ Raidenだと以下のようなJSON { "nonce":13, "transferred_amount":15000, "channel_address":"0x87F5636c67f2Fd4F11710974766a5B1b6f33FB1d", (略) "signature":"0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470"}
  15. CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights

    reserved. 15 CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved. ※Plasmaとの比較 • 似ているところ ◦ メインチェーンの状態遷移とは別に(より速く)状態遷移 ◦ デポジット・エグジット(・チャレンジ)などの概念 ◦ 階層化できる • 違うところ ◦ そもそもPlasmaは「別のブロックチェーン」 ◦ 参加者全員が同意(署名)することで状態遷移する • Plasmaとは異なる「全会一致での」状態遷移
  16. CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights

    reserved. 16 CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved. 注意点 • Non-Fungibleなアセットは仲介できない ◦ 多くのDappではState Channel Networkが使えない • 固定された参加者セットで沢山のやり取りがある場合に使う ◦ 参加者は増減できない ◦ チャンネル開閉の2 txはどうしても必要 • 途中の過程は(通常)書き込まれない ◦ 「取引の過程をオープンにして透明性をhogefuga」系のDappでは使いにくい ◦ 後からトラストレスに取引の過程を記録することは理論上可能ではある • サブスクリプション型サービスの支払い、賭けチェス, etc.
  17. CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights

    reserved. 17 CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved. 2. より深い基礎
  18. CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights

    reserved. 18 CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved. “Counterfactual” という概念 • “Counterfactual X”とは、以下が満たされていること ◦ 「Xがオンチェーンで起きるが、まだ起きていない」 ◦ 「参加者の誰でも一方的にXをオンチェーンで起こせる機構がある」 ◦ 「参加者がXが実際に起こったかのように振る舞うことができる」 • 取引情報に全員が署名する(コミットメント)ことでその取引はCounterfactualに なる ◦ Lightning Networkはトランザクション自体に署名 ◦ Raidenはjsonデータに署名 & オンチェーンに署名検証のロジック • L4が提唱したState Channelの状態遷移の本質的な概念
  19. CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights

    reserved. 19 CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved. State ChannelのAssumption Assumption: 参加者の行動に関する仮定 →これがないとプロトコルの議論はできない • ブロックチェーン自体のliveness ◦ ここはその他Layer2のAssumptionと同様 ◦ e.g. 検閲耐性: 特定のチャネルのtxだけ排除されたらダメ • 参加者のavailability ◦ チャネル内の最新のコミットメントを保持し続けること ◦ 状態遷移のたびに応答してコミットメントができること ◦ ブロックチェーンに常にアクセスでき、チャレンジ等が行えること ◦ (Layer1では秘密鍵さえ管理しておけば問題なかった) ※他にも、外部インセンティブなどもassumptionに入ることがある • ユーザーの比較的強いavailabilityが前提
  20. CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights

    reserved. 20 CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved. State ChannelのAssumption • availabilityのassumptionを緩和するためのプレイヤー • 古くはLightning Network文脈で提案された”Watchtower”が有名 • Pisa: 2018年5月頃提案された、Watchtowerを改善したプロトコル ◦ ステートのハッシュだけを預けることでプライバシー向上 ◦ 公平でリアルタイムの報酬 ◦ カストディアンが責務を果たさなかった場合の懲罰 • あくまでassumptionの変更であることに注意 ◦ 脅威モデルを修正して議論する必要がある • チャネル監視の代行サービスの必要性
  21. CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights

    reserved. 21 CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved. State Channelエコシステム バックアッ プ ハブ 監視 • ウォレット/クライアントアプリ • 監視サービス ◦ 古いコミットメントの提出 ◦ 監視とチャレンジを代行 • バックアップサービス ◦ 端末故障時等に備えコミットメントを保管 ◦ 暗号化して保管 • ネットワーク系サービス ◦ ハブ ◦ ルーティング • プロトコルの発展の他に、実用上は様々なプレイヤーが必要
  22. CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights

    reserved. 22 CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved. 攻撃ベクター • Unavailability ◦ Aliceが「Bobが反応しない」と主張した時、ブロックチェーンは本当か嘘か判 断できない ◦ 具体的には、非協力的なチャネルのクローズで対処に悩む • Posting Stale State ◦ 古い状態もCounterfactualのまま残ってしまう ◦ Challengeの仕組みが必要 ▪ 提出された古いコミットメントに対し新しいコミットメントを提出すれば良い ▪ コミットメントにバージョンなどの内容が必要 • Unavailability & Posting Stale State
  23. CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights

    reserved. 23 CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved. ※Plasmaとの比較(再) Snapp以前のPlasma (MVP, Cash, etc.)と比べると、 • より強いavailability assumption ◦ 監視するだけではなく、毎回の状態遷移に関して署名 • 保持するデータは少ない ◦ 最新のコミットメントさえ持っておけばそれより古い状態の提出は全てチャレン ジできる • Plasmaとはassumptionがかなり異なる
  24. CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights

    reserved. 24 CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved. 3. Generalized State Channel
  25. CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights

    reserved. 25 CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved. Generalized State Channel • 厳密には「新しいアプリケーションを導入するとき、オンチェーンの操作が特に必 要がない」チャネル ◦ 既に別の目的で開いてあるチャネルを他のアプリケーションを利用する時に 活用できる • Perun, Celer Network, Counterfactual • 以降のスライドはL4によるCounterfactualフレームワークを元に説明します • アプリケーションに依存しないチャネル
  26. CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights

    reserved. 26 CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved. How to “generalize” channels? • チャネル内で以下の状態遷移が出来れば良い ◦ 1. 新しいアプリケーションの導入 ◦ 2. 導入されたアプリケーションの利用 • つまり、以下のコミットメントが作れれば良い ◦ 1. コントラクトのデプロイ ◦ 2. そのコントラクトのコール • 問題は「まだデプロイされていないコントラクトAへのコールtx」をどう作るか • “generalize”を実現するコミットメントは2種類
  27. CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights

    reserved. 27 CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved. Counterfactual Instantiation • 問題: デプロイされないとアドレスはわからない → アドレスがわからないとコールするコミットメントは作れない • 解決策: デプロイせずに決定的に決まる値で参照する ◦ 具体的には、keccak256(バイトコード, マルチシグのアドレス) ◦ Counterfactual addressと呼ぶ • オンチェーンのRegistryコントラクトが、Counterfactual addressと実際のアドレスの mappingを記録する ▪ deploy() : デプロイと同時に実際のアドレスとのmappingを記録 ▪ resolve(): Counterfactual addressから実際のアドレスを取得 • オフチェーン(チャネル内)で「デプロイ」する方法
  28. CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights

    reserved. 28 CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved. Counterfactual Instantiation 1. デプロイのコミットメント → • Registryコントラクトのdeploy()をコールするコミットメント 2. そのコントラクトのコール • Registryコントラクトのresolve()で解決したアドレスのコントラクトをコールするコミッ トメント • Ethereum Name Serviceと近い
  29. CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights

    reserved. 29 CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved. マルチシグウォレット • Counterfactualでは、チャネルのオープンに必要なのは、チャネル参加者をオーナーと するマルチシグウォレットのみ ◦ ※Registryコントラクトは全世界で使い回し • 役割1: チャネル内資産のロック ◦ マルチシグが保有できる任意のステートをデポジット可能 ▪ ether, ERC系トークン等 • 役割2: 各種コミットメントの実行ロジック ◦ executeTransaction関数をもつ ▪ 署名されたコミットメントを受け取り任意の関数を実行する ◦ DELEGATECALL/CALLによりオフチェーンの状態をCounterfactualにする • マルチシグウォレットのみがチャネル毎に必要
  30. CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights

    reserved. 30 CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved. 基本プロトコル Instantiate Registry経由でのデプロイにコミット CommitWithdrawal Counterfactual objectのstateを参照した引き出しにコミット Update Counterfactual objectのstateの更新にコミット
  31. CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights

    reserved. 31 CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved. 余談: Meta Channel • 各中継チャンネルでAlice-Bob Payment Objectの残高のProxy Objectへの反映をコ ミット ◦ 仲介者にデポジットしてもらってその範囲で自由に使うイメージ • 一般的なHTLC方式と異なり状態遷移ごとに仲介者に協力してもらう必要がない ◦ 賭けチェスなどでは便利 • Counterfactualにおける仲介の仕組み
  32. CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights

    reserved. 32 CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved. 4. 最近の話題
  33. CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights

    reserved. 33 CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved. 標準化 • L4を中心とした、State Channel技術の標準化の流れ • State ChannelにはLightning NetworkのBOLTのようなものがない • 標準化により、各コンポーネント開発の責務が分担される ▪ Dapp(コントラクト)開発者 ▪ ウォレット ▪ web3, SDK, etc. • 具体的には以下の標準化 ◦ プロトコル ◦ チャネル内コントラクトのAPI ◦ 用語 • 今年8月、L4とCelerが提携を発表
  34. CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights

    reserved. 34 CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved. プロトコルの議論 • ZK-SN[T]ARKSのState Channelへの応用 ◦ disputeにzk proofを使う ▪ Generalizedだとdispute時のコストが大きい • 沢山のコントラクトのデプロイ、それぞれのstorage書き換え ◦ 「チャネル内の履歴残らない問題」に活用できるかも • State Channel Network関連の提案がいくつか出ている ◦ 仲介者の資産のロック期間を超える方法 ▪ https://ethresear.ch/t/channels-can-enforce-contracts-beyond-interme diary-lockup-time/2941 ◦ Forward Timelockd Contracts(FTLC) ▪ ハッシュとプリイメージを利用しない仲介方法 ▪ Grantで1チーム採択された ▪ https://ethresear.ch/t/forward-timelocked-contracts-ftlc/3264 • 形式的検証 ◦ UCモデルなど
  35. CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights

    reserved. 35 CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved. 5. 今後の予想
  36. CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights

    reserved. 36 CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved. State Channelの特徴 • Plasmaより高速な状態遷移、複雑なコントラクトの導入も容易 • Plasmaに対する利点 ◦ ブロックチェーンではないのでマイナーに依存しない ▪ ブロック生成を待つ必要がない ▪ 携帯ゲームの通信対戦のように、P2P通信で完結し、高速 ◦ スマートコントラクトの導入が用意 ▪ Smart Contract in Plasmaの道のりは険しい • Plasma Leapなどはあるが。。。 ▪ 特に、Optimisticなケースでは圧倒的に優位 • コントラクトのデプロイが不要 • State Channel in Plasmaは将来的には可能性あるが、Plasmaで 出来ること以上のことは当然チャネル内でも出来ない
  37. CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights

    reserved. 37 CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved. State Channelのユースケース • 有名なユースケースはペイメントとゲーム • 鍵は”Conditional Payment” ◦ 特定参加者の複雑な金融的契約 ▪ コントラクトのデプロイなしに複雑な契約ロジックを導入でき、 問題が起きなければそのままデプロイ不要 ◦ 例: オンチェーンのオラクルを使った保険 ▪ 注: チャネル内でオラクルの結果使うこともできます ◦ 例: スワップ取引
  38. CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights

    reserved. 38 CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved. 今後の予想 • ユースケースに応じプロトコルの分化が進むと思われる • State Channelのアーキテクチャにはトレードオフがある • 変数: LockTime, Gas Cost, UX, etc. ◦ それぞれ、平常時と問題発生時で大きく異なる ▪ e.g. Counterfactualは、平常時はオンチェーンでマルチシグ ウォレットのデプロイだけで済むが、問題発生時は沢山のコ ミットメントを提出する • ユースケースにより異なる ◦ DappによってどれくらいPessimistic(Optimistic)かは異なる ▪ 例: 法人同士で使うチャネルの方がネットの匿名の相手との チャネルよりOptimistic
  39. CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights

    reserved. 39 CONFIDENTIAL : copyright © by 2018 LayerX Inc. all rights reserved. 最後に 間違いのご指摘やご意見は @veryNRまでお願いします