LEAF basic

D683c1df0b6584c3f1e279ef6c8c04f9?s=47 LayerX
June 30, 2020

LEAF basic

LayerXはグローバルで代表的なエンタープライズ向けブロックチェーン基盤であるCorda、Hyperledger Fabric、 Quorumについての分析結果を、当社独自のブロックチェーン基盤分析フレームワークである「LayerX Enterprise blockchain Analysis Framework(LEAF/リーフ)」とともに公開しました。今後計三回に分けて、基本編、プライバシー編、インターオペラビリティ編を公開していきます。

D683c1df0b6584c3f1e279ef6c8c04f9?s=128

LayerX

June 30, 2020
Tweet

Transcript

  1. 1 © LayerX Inc. June, 2020 LayerX Inc. エンタープライズ向けブロックチェーン基盤比較レポート 基本編

  2. 2 © LayerX Inc. 1. LayerX Enterprise blockchain Analysis Framework(LEAF)について

    2. ブロックチェーンの基本性質 3. チェーン比較:状態データのレプリケーションに関する差異 4. チェーン比較:プロトコルセキュリティに関する差異 5. チェーン比較:アプリケーションロジック実装に関する差異 6. まとめ 7. 公開資料・お問い合わせ 目次
  3. 3 © LayerX Inc. LayerX Enterprise blockchain Analysis Frameworkについて 1

  4. 4 © LayerX Inc. LayerX Enterprise blockchain Analysis Framework (LEAF)

    基本設計 基本機能 プライバシー (秘匿性/匿名性) インター オペラビリティ 拡張機能 サポート状況 ブロックチェーンを用いたシステムの設計の検討コスト削減 LEAFは異なるエンタープライズ向けブロックチェーン基盤を 4つの観点で分析するフレームワーク 1. LEAFについて LayerX Enterprise blockchain Analysis Framework (LEAF)
  5. 5 © LayerX Inc. ブロックチェーンの基本性質について 2

  6. 6 © LayerX Inc. トランザクション 状態データの変化を引き起こす命令をトランザクション(TX)と呼ぶ。上図では (1)AからBへの送金指示 (2)Dの口座の凍結指示等の命令 によって別の状態データに変化させている。 口座所有者

    残高 ステータス A 30,000 有効 B 10,000 有効 C 2,000 有効 D 1,000 有効 口座所有者 残高 ステータス A 25,000 有効 B 15,000 有効 C 2,000 有効 D 1,000 凍結済み (1)A→Bへ5000送金 (2)Dを凍結 ブロックチェーンのデータはある時点での断面としての状態データと 状態データの変化を引き起こす命令 (トランザクション) によって構成される 2. ブロックチェーンの基本性質について ブロックチェーンにおけるデータレプリケーション
  7. 7 © LayerX Inc. 状態データのレプリケーションに関する差異について 3

  8. 8 © LayerX Inc. 提案 クライアントまたは ノードが状態遷移に対 応するトランザクショ ンを作成し、コンセン サスノードに送信す

    る。 Phase 1 コンセンサスノードは 送信されたトランザク ションを何らかのルー ルで検証して合意形成 し、その証跡を残す。 コンセンサス コンセンサスノードは コンセンサスで合意さ れたトランザクション の列を指定したノード に送信する。 配布 各ノードは配布された トランザクションの列 を何らかのルールに 従って解釈、検証す る。 解釈・検証 各ノードは解釈・検証 の結果をもって、自身 の状態データを更新す る。 更新 ブロックチェーンのトランザクションフローを 5つのフェーズに分解 3. 状態データのレプリケーションに関する差異について トランザクションフローの分析フレームワーク Phase 2 Phase 3 Phase 4 Phase 5
  9. 9 © LayerX Inc. Node A Node C Node B

    1- (1). 提案 TXを作成・検証した上で署名し、NodeBに送信 1- (2). 提案 TXをContractで検証した上で署名し、NodeAに送信 1- (3). 提案 Notaryに署名リクエスト 2. コンセンサス inputsの未消費チェックを行った上でTXHashに署名する Validating Notaryの場合は状態遷移と署名検証の検証も行う 3-(1). 配布 Notary署名済みTXHashを Node Aに送信 3-(2). 配布 Notary署名済みTXHashをNode Bに送信 4&5. 解釈・検証&更新 署名を検証し、 自身の状態を更新 TXを共有されないNode Cordaのトランザクションフロー図 3. 状態データのレプリケーションに関する差異について Cordaのトランザクションフロー 4&5. 解釈・検証&更新 署名を検証し、 自身の状態を更新 Validating Notary(VN) Non-validating Notary(NN) or
  10. 10 © LayerX Inc. Endorser Endorser Peer Peer Peer Peer

    1- (1). 提案 EndorserにTXのProposalを送信 1- (3). 提案 Endorsed Proposal Response を返却 1- (2). 提案 EndorserがChaincodeをシュミレートして Read-Write Setを生成 1- (4). 提案 Endorserからの Responseを検証 1- (5). 提案 TXをOrdererに送信 2. コンセンサス TXの順番を決め、Blockを作成 3. 配布 OrganizationのLeader Peerに Blockを配布 4&5. 解釈・検証&更新 各PeerがEndorsement Policyと KeyのVersionを検証し、 World Stateを更新する 1- (1). 提案 EndorserにTXのProposalを送信 1- (2). 提案 EndorserがChaincodeをシュミレートして Read-Write Setを生成 Client Hyperledger Fabric(HLF)のトランザクションフロー図 3. 状態データのレプリケーションに関する差異について Hyperledger Fabricのトランザクションフロー Orderer
  11. 11 © LayerX Inc. 1- (1). 提案 TXをリクエスト Node 1-

    (2). 提案 TXをリクエストの ブロードキャスト 3. 配布 Blockの配布 2. コンセンサス Leader・Validatorsによる Blockの作成と署名 4&5. 解釈・検証&更新 TXの実行とStateの更新 1- (2). 提案 TXをリクエストの ブロードキャスト 4&5. 解釈・検証&更新 TXの実行とStateの更新 1- (2). 提案 TXをリクエストの ブロードキャスト Client Quorumのトランザクションフロー図 3. 状態データのレプリケーションに関する差異について Quorumのトランザクションフロー Node Leader Validator Validator Validator
  12. 12 © LayerX Inc. Corda HLF ノード分類・定義 コンセンサスプロトコルのアルゴリズムを実行する ノード(②コンセンサス、③配布) 全データを取得し、プロトコル・アプリケーション

    レベルの状態遷移の検証を行うノード (①提案、④解釈・検証、⑤更新) データの一部を取得し、プロトコル・アプリケーション レベルの状態遷移の検証のうち一部を実行するノード (①提案、④解釈・検証、⑤更新) Notary Orderer Quorum Validator - Peer Node Node - - コンセンサス ノード フルノード ライトノード データ共有範囲 各ノードで 異なる 状態データ 全ノードで 共通の 状態データ 全ノードで 共通の 状態データ HLF、Quorumは全ノードで共通データを永続化するが、 Cordaは各ノードの永続化データは異なる。Cordaにはフルノードが存在しない。 3. 状態データのレプリケーションに関する差異について 各基盤のノード分類とデータ共有範囲の比較
  13. 13 © LayerX Inc. Corda NN 提案フェーズに 実行されるロジック コンセンサスフェーズに 実行されるロジック

    解釈・検証フェーズに 実行されるロジック Corda VN HLF Quorum Flow Chaincode なし 二重消費の検証 • Contract • requiredSigners • 二重消費の検証 なし • nonce等の検証 • Smart Contract • requiredSignersとNotaryの署名 • Contract • Endorsement Policyの署名検証 • State Keyの Version検証 • nonce等の検証 • Smart Contract HLFはChaincodeのロジックの検証をコンセンサスと解釈・検証フェーズで行わない。 Quourm、Corda (VN) は両フェーズでSmart Contract、Contractのロジック検証を行う。 Corda (NN)はコンセンサスフェーズでContractのロジック検証を行わない。 3. 状態データのレプリケーションに関する差異について フェーズごとの実行ロジックとデータ共有範囲の比較
  14. 14 © LayerX Inc. プロトコルセキュリティに関する差異について 4

  15. 15 © LayerX Inc. コンセンサスノード 運営者 Raft: CFT 2F+1 Kafka:

    CFT 2F+1 Solo: なし IBFT: BFT 3F+1 Clique PoA: BFT 2F+1 Raft: CFT 2F+1 Raft: 部分的同期 Kafka: 部分的同期 Solo: なし IBFT: 同期 Clique PoA: 同期 Raft: 部分的同期 Raft: 複数 Kafka: 単一 Solo: 単一 IBFT: 複数 Clique PoA: 複数 Raft: 複数 脆弱性 ・Chaincodeの無限ループ - Cordaに故障耐性なく、セキュリティ脆弱性がいくつか存在する。 HLFは故障耐性があるが、1つ脆弱性が存在する。 Quorumは故障耐性があり、セキュリティ脆弱性も存在しない。 4. プロトコルセキュリティに関する差異について プロトコルセキュリティ HLF Quorum コンセンサス プロトコル 故障耐性 ネットワーク モデル なし - 単一 ・Data Availabilityの脆弱性 ・Contractの無限ループ Corda NNのみ ・Validityの脆弱性 (Denial of State攻撃) Corda
  16. 16 © LayerX Inc. アプリケーションロジックに関する差異について 5

  17. 17 © LayerX Inc. Corda 柔軟性 データアクセスの 自由度 言語 HLF

    Quorum • Contractで状態遷移を検証 • NodeとNotaryの署名検証 • ContractはJVMで動作 • Endorserの署名検証 • Read-Write Setのversion 検証 • EVMで動作する状態遷移 ロジックを記述可能 • EVMの制約あり • UTXO型ゆえTXの中身のみ 参照可 • Input State, Output Stateのプロパティや Attachmentに任意のデー タを格納可 • stateDBのデータはアクセ ス不可 • stateDBへアクセス可能 • キーのエンコードにより 検索性は低 Java、Kotlin Endorsement Policyの 独自記法 Solidity、Vyper CordaはContract、HLFはEndorsement Policy、 QuorumはEVM Smart Contractが状態遷移ロジックである Quorumは柔軟性、データのアクセス自由度がともに高く、HLFはともに低い。 5. アプリケーションロジックに関する差異について 状態遷移ロジック
  18. 18 © LayerX Inc. データベース としての 検索性能 トランザク ション作成 ロジック

    データ設計の 柔軟性 • H2, PostgreSQLを使用可 • Corda Enterpriseではさらに SQLServer, Oracle DBも使用可 Level DB:KVS Couch DB:JSONリッチクエリ 可能(パフォーマンス低下) キーのエンコードにより検索性低 • Flowを用いてTXの作成や署名 収集を行う • FlowはJVMで動作するため制約 なし • ビルトインでノード間共有機能 あり • ChaincodeによりRWSetを作成 • Chaincodeはアップデート可能 • Chaincodeの実装に制約なし • ビルトインでノード間共有機能 あり • 汎用言語で書けるため実行環境 による制約なし • ビルトインのノード間共有機能 はない • 全ノードで共有するようなデー タを持つ場合可用性の懸念あり • ロジカルオーナーが決まらない データを持ちづらい 全Peerが同じ状態データを保持 する 全ノードが同じ状態データを保 持する 柔軟性 言語 Java、Kotlin SDK: JavaScript, Java Chaincode: Go, JavaScript, Java Go, Rust, JavaScript, Java, Python等 検索性能はCorda、HLF、Quorumの順に高く、 トランザクションはCorda、HLFが作りやすい。 5. アプリケーションロジックに関する差異について アプリケーションロジック Corda HLF Quorum
  19. 19 © LayerX Inc. まとめ 6

  20. 20 © LayerX Inc. まとめ Corda、HLF、Quorum比較まとめ セキュリティに関しては、Denial of State及びData Availabilityに関する脆弱性が存在

    するCordaが相対的に弱い 状態遷移に関与するロジックに関しては、Quorumが相対的に柔軟性が高く、 Hyperledger FabricはEndorsementPolicyの署名検証ロジックのみに自由度が存在し、 相対的に自由度が低い データベースとしての検索性能に関してはCorda、Hyperledger Fabric、Quorumの順に 検索性能が優れている 実装の柔軟性においては、Corda、Hyperledger Fabricはビルトインでトランザクショ ンの作成をサポートするライブラリ群が提供されており、Quorumは開発者の独自実装が 求められる トランザクション作成ロジックの共有機能に関して、Quorumのみビルトインでの 提供されておらず実装の柔軟性に影響を与える 6. まとめ
  21. 21 © LayerX Inc. 公開資料・お問い合わせ 7

  22. 22 © LayerX Inc. 公開資料・お問い合わせ https://layerx.co.jp/publications/leaf_basic/ レポート全体をダウンロード お問い合わせ https://layerx.co.jp/ @LayerXcom

    で研究や最新ニュースを配信中! 7. 公開情報・お問い合わせ
  23. 23 © LayerX Inc. ブロックチェーン技術をもとに、「新たな経済基盤」をつくりだす。 それは、信用や評価のあり方を変え、 業務や生産をはじめとした経済活動の摩擦を解消し、 この国の課題である生産性向上を実現する。 私たちは、そう信じて行動し続けます。 ブロックチェーンが実装された社会、

    そこには、これまでの延⻑にはないまったく新しい可能性が広がっている。 LayerXは、デジタル社会への発展を後押しすることで、 経済史に新たな1ページを刻んでいきます。