7
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Ethereumの企業向けprivate chainであるQuorumについてまとめたよ

Last updated at Posted at 2019-10-06

Quorumとは

Quorumは、JPモルガン主導で開発が行われている、トランザクションとコントラクトに秘匿性を持たせることができるEthereumをベースにした分散台帳プロトコルで、パブリックブロックチェーンであるEthereumとは異なるコンセンサスアルゴリズム(後述)に基づいています。

logo.png

Quorumは、go-ethereumをフォークしたプロジェクトで、次のような特徴があります。

  • Privacy

    • トランザクションやコントラクトの秘匿化が可能になっており、Peer同士での暗号化されたメッセージの交換なども行うことができます。
  • Consensus Mechanisms
    コンソーシアムブロックチェーン(プライベートブロックチェーン)として利用できるコンセンサスアルゴリズムを選択することができます。

    • Raftベースコンセンサス -
      ブロック生成速度が速く、ファイナリティを得ることができ、トランザクションが発生するごとにブロックを生成する設定にもできる。
    • Istanbul BFT
  • Peer Permission
    コントラクトによって、node/peerの参加を許可することができる

  • Higher Performance
    パブリックブロックチェーンのgethよりも、格段に速くトランザクションを処理することができます。

Quorumの構成

  • Quorum Node -
    Quorumノードは次の点がgethと異なります。
    • コンセンサスがPoWに代わってRAFTまたはIstanbul BFT
    • P2Pレイヤーが、許可されたノード間でのみ同期するように変更
    • ブロック生成および検証ロジックに、global state rootではなくglobal public state rootが使用
    • State Patricia trieが、Public state Patricia triePrivate state Patricia trieに分割
    • ブロック検証ロジックがPrivate Transactionsを扱えるように変更
    • トランザクション生成の過程で、dataの中身を暗号化されたhash値でも可能なように変更
    • Gasの排除
  • Privacy Manager(Tessera)
    • Transaction Manager
      • 暗号化されたトランザクションデータのへのアクセス権を持つ。秘密鍵は保持しない。
      • Enclaveとのやり取りを行う。
      • 他参加者のTransaction Managerとの通信
    • Enclave
      • 秘密鍵を保持する。
      • (安全面を意識して)Tesseraと別プロセスで動かすことも可能。
        Quorum Design.png

Quorumの仕組み

Quorumは、二つの状態(state)を持つ。

  • Public state(全てのnodeからのアクセスが可能)
  • Private State(許可をもらっているnodeのみがアクセス可能)

トランザクションの暗号化を行うかどうかで、保有する状態が違う。public stateは全てのノードが保有しているが、private stateは、そのトランザクションに関係があるノードのみがローカルで保有する。コントラクトの変更に関しては、private コントラクトから public コントラクトのvalueを変更することはできず、READ onlyになる。private トランザクションに関しては、全てのノードの間で共有している訳ではないので、private stateにおいてコンセンサスを取ることはできない。その点を克服するために、RPC method eth_storageRoot(address[, blockNumber]) -> hashが準備されており、任意のブロック高でのアドレスのstorageRootを返す関数が用意されており、Transaction関係者は確認することができる。

コンセンサス比較

Raft Istanbul BFT
ブロック生成時間 50msec 1~10sec
proposer選出アルゴリズム Leaderが落ちるまで交代しない ラウンドロビン
nodeの追加 できない できる
ビザンチン耐性 crash recovery BFT
ブロック生成手順 未承認Txがあれば生成 未承認Txがなくても生成し続ける
最大許容故障数Fに対する最適ノード数 2F + 1 3F + 1

信用できる参加者のみで運営する場合は、Raftコンセンサスを選択し、利害が対立する参加者同士で運営する場合は、Istanbul BFTを選ぶのが良い。

その他

ツール

  • Quorum Blockchain Explorer - private トランザクションの可視化を可能にするブロックチェーンエクスプローラー
  • Quorum Maker - quorumネットワークと周辺の設定をいっぺんにできるツール。
  • quorum-cloud - ネットワークのawsへのdeployをサポートする
  • Cakeshop - 総合開発環境SDK
  • quorum.js - web3のquorum版

tutorial

docker-composeかvirtual machineでローカル環境に7つのノードを立てて、private/public transactionの送受信を確認できる。
https://github.com/jpmorganchase/quorum-examples

quorum関連参考資料

https://docs.goquorum.com/en/latest/
https://qiita.com/hayago/items/60f6e71b6cba1def9006
https://github.com/jpmorganchase/quorum/blob/master/docs/Quorum%20Whitepaper%20v0.2.pdf
https://azuremarketplace.microsoft.com/en/marketplace/apps/enterprise-ethereum-alliance.quorum-demo?tab=Overview
https://docs.google.com/presentation/d/1GH_1B-3A-FSdiE8A8dfsWy2qs8nwUqjOPC5regI6Tds/edit#slide=id.g61a5d76747_0_555
https://scrapbox.io/layerx/Quorum

7
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?