Sidechain, NIPoPoW

05e8adce66be4e80390a29ace0075161?s=47 y_matsuwitter
February 16, 2018

Sidechain, NIPoPoW

Blockchain.tokyo#5にて発表

05e8adce66be4e80390a29ace0075161?s=128

y_matsuwitter

February 16, 2018
Tweet

Transcript

  1. Sidechain, NIPoPoW Gunosy Inc. @y_matsuwitter 2018.2

  2. 2 ©Gunosy Inc. ⾃⼰紹介 n Gunosy Inc. – 新規事業開発室 執⾏役員

    CTO n 業務 – 開発全般のマネジメント – 技術に関する横断的な課題対処 – 現在は新規事業⽴ち上げも担当 n 経歴 – 在学時に⼆社のベンチャーの⽴ち上げ・ 開発に携わる – 2013年3⽉ 東京⼤学⼯学部卒業 – 2013年1⽉よりGunosyに⼊社 – 2014年6⽉執⾏役員就任、現在に⾄る 松本 勇気 @y_matsuwitter
  3. 3 ©Gunosy Inc. 今⽇話すこと SidechainとSPV Proofについて l 2-way peggingの⼿法解説 PoPoWとNIPoPoW

    l 処理の概略と意義 ※理論的な部分や詳細なアルゴリズムについては、発表時間の都合で触 れません。 Non-interactive Proof of Proof of Workについて駆け⾜に解説します。
  4. 4 ©Gunosy Inc. Sidechainとは

  5. 5 ©Gunosy Inc. Sidechain トラストレスなサイドチェーンを⽤いて様々な仕組みを試せる。 n 解決したい課題 – Bitcoinで気軽に導⼊できないようなス ケーリング⼿法を試す安全な⽅法

    n 別なブロックチェーンを連携することで新し い⼿法を試せるようにする – メインチェーンへの影響を最⼩化 n 2-way pegging – 各チェーンのコイン間を固定レートでの 交換で⾏き来できる – トラストレスな⽅法が提案されている 2014年にBlockstreamが提唱、2-way peggingを利⽤したスケーリング。 Block Block Block Block Block Block Block Block 交換 交換 Mainchain Sidechain
  6. 6 ©Gunosy Inc. SPV Sidechainによる2-way pegging ロックしたコインの存在をトラストレスに証明することが重要。 n 2-way peggingの実際

    – 特定のアドレスにtxを送付することでコ インをロック – もう⼀⽅のチェーンでコインを受け取る n SPV Proofによるコインの交換 – 特定のアドレスに対してコインを送付し た、という証拠を⽰すことでUnlockで きる仕組み – 具体的な実装は⾒つからず… トラストレスに2-way peggingを実装するための⼿法。 1 1 SideChain Mainchain Node 交換はどちらの 向きも固定レート
  7. 7 ©Gunosy Inc. SPV Sidechainによる2-way pegging 実際のトランザクションの流れを⾒てみる。 ①Sidechain側が管理するMainChainアドレスへ送金。 Sidechain Node

    Mainchain Node Sidechain管理の アドレスにコイン送付tx Sidechain Address Mainchain Address txid Txが⼗分にConfirm されるまで待つ(1⽇)
  8. 8 ©Gunosy Inc. SPV Sidechainによる2-way pegging ②Sidechain側に、ロックしたtxの存在を含むtxを発行しコインを受け取る。 Sidechain Node Mainchain

    Node ロック時の送⾦ Txは存在している? OK コイン要求tx Sidechain側コイン Sidechain Address Mainchain Address コイン付与元のUTXO SPV Proof ・Lockするメインチェーンtx ・対応するコイン量 が正しければ利用できる
  9. 9 ©Gunosy Inc. SPV Sidechainによる2-way pegging ③Sidechain側の管理アドレス戻したい量のコインをロックし逆の手順を踏む。 Sidechain Node Mainchain

    Node ④ロック時の送⾦ Txは存在している? OK ①コインロックtx Sidechain Address Mainchain Address ②Txid + Confirm待ち ③コイン要求tx ⑤コイン
  10. 10 ©Gunosy Inc. Peggingにおける課題 より軽量でトラストレスなトランザクションの存在検証が必要。 n 複数ノードに対してSPV Proofとtxの位置を 渡してもらう。 –

    相⼿⽅のチェーンの各ノードの信頼性を 確認の上、pegするtxの存在を確認する 必要がある。 n SPV Proofの課題 – ブロックチェーン⾃体の⻑さに応じて線 形に検証コストが増加する。 l 正当性の検証にはnonceが正しいか など検証が必要。 l SPV Proofのデータサイズが巨⼤ トラストレスに実装する⽅法が難しい。 Sidechain Node Mainchain Node Mainchain Node Txの存在確認 + PoWコスト確認
  11. 11 ©Gunosy Inc. Proof of Proof of Work

  12. 12 ©Gunosy Inc. Innerchainというアイディア Hash値の⼩ささを計算量の証明として使っていく試みが登場。 n ハッシュ値の深さの定義 – Hash <

    Difficulty / 2^μ の時のμをそ の深さと定義 n Innerchainは、各深さにおいて⼀番近いブロ ックを参照として持ったチェーン – Skip listのような探索効率化に応⽤可能 n 同じ深さのブロックを結んだチェーンを superchainと定義 hash値のdifficultyに対する⼩ささを利⽤したスキップリストの様な実装。 difficultyに対する実際のhash valueのサイズ比分布 引用元: https://bitcointalk.org/index.php?topic=98986.0
  13. 13 ©Gunosy Inc. Innerchainのイメージ 0 1 4 0 0 0

    0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 3 3 3 4 図:Innerchainのイメージ このblockでのinnerchainを (1,8,7,6,6) と表現 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Innerchainでの ポインタ 数字は深さ
  14. 14 ©Gunosy Inc. Interactive Proof of Proof of Workの登場 Innerchainを使うことでSPVよりも軽量にノードの正当性を⽐較。

    n Innerchainを⽤いて、より正当なPoWを実施 いているノードを判定する。 n チェーンの末尾k個のブロックを除いた innerchainをPoW証明のProofとして利⽤。 n 基本的には善意のノードが殆どであり、末尾 k個のブロックがずれない、ないしはほぼ⼀ 致しているならこのk個内で判定可 n K個のブロックが完全にずれてるケースでど ちらを信頼するかProofを⽤いて検証できる より軽量なノードの正当性検証プロトコル。 検証者 フルノードA フルノードB 末尾kブロック Proof 末尾kブロック Proof PoWコスト比較
  15. 15 ©Gunosy Inc. Innerchainを使った対話的なProof of Proof of Work 解像度の粗いものから順に対話的に受け取り⽐較することで検証可。 n

    セキュリティパラメタ: m n 各ノードからブロック数m以上の最も深いsuperchain を送付してもらう。 – 共通ブロックを取り除き、そのPoWコストを⽐較 して深い⽅のノードがコスト⼤きければそちらを 正当とする。 n 上記で決まらない場合は、同じ深さになるようの superchainをノードに要求 – ⼗分な⻑さ(m個)で、かつPoWコストが⼤きい ⽅を正当なノードとする。 – 上記で判定できないケースでは、更に⼀つ浅い superchainを双⽅に要求。 深いsuperchainから順次ノードのPoWコストを⽐較検証していく。 ※図はProofs of Proofs of Work with Sublinear Complexityより引用
  16. 16 ©Gunosy Inc. Non Interactive Proof of Proof of Work

    ⾮対話 = ⼀度のProofのやり取りで正当性の検証が完了する。 n Innerchainを⼀つのチェーンに圧縮。 – Innerchainから下図の⻘いブロックのみを抽出してProofとする。 – 初回に受け取るProofのみで検証が可能。 Innerchainの⽐較における対話をスキップした⽐較⼿法。 図: Non-Interactive Proofs of Proof-of-Workより引用
  17. 17 ©Gunosy Inc. NIPoPoWによる任意のブロックに関する検証 上記のProofを⽤いて正当性検証 => 対象ブロックの正当性が確認できる。 n Proof中の最も深いブロックから検証対象のブロックへのlinkを作成。 –

    対象ブロックに近い2つの最深ブロックの間を、下図のように結ぶ。 任意のブロック群をNIPoPoWのProofに含めることで命題検証が可能。 図: Non-Interactive Proofs of Proof-of-Workより引用
  18. 18 ©Gunosy Inc. PoPoW導⼊におけるハードル 少なくともすぐさま実装できる変更ではなく、マイナー負荷上がる可能性。 n Skiplist的なブロック間linkをブロックに含め る必要がある。 – 容量増加に関しては、上記linkから

    markle treeを構築することで、markle rootのみの記録に抑えられる。 n Sidechainのための実装には更にOP Codeの 拡張が必要 – 相⼿のchain側に対してtxの存在と通貨 の付与量の妥当性の検証のための演算⼦ Innerchain記録のためのフォークが必要。 Block Innerchain OP_SPVPROOFVERIFY 新しいOP CODEの追加 Blockへの新構造追加
  19. 19 ©Gunosy Inc. まとめ

  20. 20 ©Gunosy Inc. まとめ SPV Proof Sidechain l Sidechainの通貨とメインチェーンの通貨を交換するために2- way

    peggingが必要 l 2-way peggingをtrustlessに実装するためにSPVを使って通貨 交換トランザクションの存在証明が必要 Non interactive Proof of Proof of Work l Innerchainを応⽤することでSPVよりも効率よい正当性検証 l ノード情報の信頼性やトランザクションの存在証明が可能 (個⼈的な疑問点) l SidechainのSPV Proofを⽀えるためにChain間で対話が発⽣す るのってマイナー的にどうなんだろう。 l DEXの⽅が本質的な解決に⾒える… Sidechainのpeggingを⽀えうるNIPoPoWについて紹介しました。
  21. 21 ©Gunosy Inc. 参考資料 Enabling Blockchain Innovations with Pegged Sidechains

    l https://blockstream.com/sidechains.pdf Proofs of Proofs of Work with Sublinear Complexity l http://fc16.ifca.ai/bitcoin/papers/KLS16.pdf Non-Interactive Proofs of Proof-of-Work l https://eprint.iacr.org/2017/963.pdf OP_WITHDRAWPROOFVERIFY — The op code that powers SPV sidechains l https://medium.com/@Chris_Stewart_5/op- withdrawproofverify-the-op-code-that-powers-spv- sidechains-cefce996a324 Elements AlphaにおけるFederated Pegの仕組み l http://techmedia- think.hatenablog.com/entry/2016/11/08/182006M