exe #2: quorumサンプル実装から理解するエンタープライズ ethereum...

9
Quorumサンプル実装から理解する エンタープライズ Ethereum のポイント Copyright(C)2017 trident-arts All Rights Reserved. with advanced technology trident-arts

Upload: blockchainexe

Post on 21-Jan-2018

699 views

Category:

Internet


4 download

TRANSCRIPT

Quorumサンプル実装から理解するエンタープライズ Ethereum のポイント

Copyright(C)2017 trident-arts All Rights Reserved.

with advanced technology

trident-arts

Enterprise Ethereum の サンプル実装 : Quorumとは

2Copyright(C)2017 trident-arts All Rights Reserved.

Transaction

②Processing

パブリック(=共通)

&プライベート

Consensus Chain Consensus投票&

ランダムタイムアウトコンセンサス所要時間の短縮化

パブリック/プライベートの二刀流

JPモルガンが Go Ethereum ベースのOSSを開発

トランザクションの方式やコンセンサスアルゴリズムをエンタープライズ用途に耐えられるように改良

Quorumの機能的な主な特徴

①Security

許可型ネットワーク&

暗号化安全性の確立

Quorum Transaction Processing の特徴① Security

3Copyright(C)2017 trident-arts All Rights Reserved.

ネットワークを許可型にすることと、暗号化によってQuorumネットワーク内の安全性が確保されている

QuorumNode

TransactionManager

Enclave

QuorumNode

TransactionManager

Enclave

QuorumNode

TransactionManager

Enclave

Public

Public

Public

Private

Private

Private

A

B

C

Ethereum Network Constellation Network

HashPayload

HashPayload

HashPayload

• permissioned-nodes.jsonに接続を許可するノードを記載

"enode://remoteky1@ip1:port1“(static-nodes.jsonと似ている)

許可制ネットワーク

• ファイルやメールの暗号化に使用されるPGPをベースにしている

• ペイロードは、セッション鍵と呼ばれる乱数の値を鍵として,対称暗号※により暗号化される。

• そのセッション鍵は,公開鍵で暗号化される(復号には秘密鍵)

• トランザクションマネージャ間の通信はHTTPSにより暗号化

暗号化方式

※暗号化と復号の鍵が同一

HTTPS

Constellation ・・・星座、集まりEnclave ・・・包領、少数集団

Quorum Transaction Processing の特徴② Processing

4Copyright(C)2017 trident-arts All Rights Reserved.

DAppTransactionX

QuorumNode

TransactionManager

Enclave

QuorumNode

TransactionManager

Enclave

QuorumNode

TransactionManager

Enclave

1 2

3

45

6

7

Block N8

9

10

11

12

11

12

9

7

10

Block N

Block N

8

8

# プロセス① A及びBの公開鍵を設定して、

Node AにトランザクションXを送信② トランザクションマネージャにトランザクションXを送付

③ エンクレーブをコール

④ 1. セッション鍵とナンスを生成2. ペイロード/ナンスをセッション鍵で暗号化3. ペイロードのハッシュを計算4. A/Bの公開鍵でA/Bのセッション鍵を暗号化5. トランザクションマネージャに2,3,4のデータを送信

⑤ • 暗号化されたペイロード/ハッシュ/セッション鍵(A)を保存し、HTTPSでBのトランザクションマネージャにペイロード/ハッシュ/セッション鍵(B)を送信

• Bは受信結果(ACK/NACK)を返す⑥ Bの受信成功後に、Aのトランザクションマネージャがノー

ドにハッシュを送信、元のペイロードと置換⑦ Ethereumの標準P2Pプロトコルを使用して他の

ノードにトランザクションXを伝播⑧ トランザクションXを含むブロックNが生成され、全ノード

に配布される⑨ 各ノードは、ローカルのトランザクションマネージャをコールし、ト

ランザクションを保持しているか確認する(ハッシュをインデックスとして使用)

⑩ C:トランザクションスキップ AB:エンクレーブをコール⑪ 秘密鍵でセッション鍵を復号し、セッション鍵でペイロード

を復号。トランザクションマネージャにペイロードを返す⑫ • コントラクト実行のために解読されたペイロードをノー

ドのEVMに送信• プライベートステートDBが更新される

Public

Public

Public

Private

Private

Private

A

B

C

9

10

パブリック・トランザクションフローは標準的なEthereumのトランザクションと同じ 下記は、Node A と Node B向けのプライベート・トランザクションフロー

Ethereum Network Constellation NetworkPrivate For A/B

HashPayload

HashPayload

HashPayload

Ethereum Network

Quorum Chain Consensus の特徴 1/2

5Copyright(C)2017 trident-arts All Rights Reserved.

Maker(Quorum Node)

Voter(Quorum Node)

Non-Voter(Quorum Node)

BlockVoting

BlockVoting

Block NTx List Vote ListTx 10 Vote1 Tx 11 Vote2Tx 12 Vote3

1

22

# プロセス① 最初にMakerノードがブロックを生成し、それに署名す

る。ブロックには、前の期間にキャストされた親ブロックの投票が含まれる

② ブロックは、標準のEthereum P2Pプロトコルを使用してネットワークに配布される。ロールに関係なく、すべてのノードがブロックを受信する。

③ 投票者ノードはブロックを検証する• BlockVotingコントラクトをコールし、Makerがブロックを作成できるかどうかを確認する

• BlockVotingコントラクトを呼び出して、ブロックの親ブロックが十分な票を受け取ったかどうかをチェックする

• (トランザクションマネージャからペイロードを取得した後に)ブロック内の処理可能な全てのパブリックトランザクションとプライベートトランザクションを実行する

• パブリックステートのルートハッシュをブロック内のステートルートと比較することによって、パブリックステートを検証する

• ブロック内の全てのトランザクションをハッシュ化し(パブリックとプライベートの両方)、そのハッシュをブロック上のトランザクションハッシュと比較するこれはステートチェックではないが、全ての投票者ノードがブロック内のトランザクションリストで一致することを保証する

④ 首尾よく検証されると、投票者ノードは、すべてのノードに配布される標準のEthereumTransactionを使用して、BlockVotingコントラクトに投票を送信する

⑤ Makerノードはタイムアウトに達し、前のブロックの最小投票数が受信されたかどうかを判定し、ブロック作成以降、検証 → 投票処理が繰り返される

PoW ではない新たなコンセンサスアルゴリズムで スピードの向上を目指す

3

Block NTx List Vote ListTx 10 Vote1 Tx 11 Vote2Tx 12 Vote3

5

ブロック配布

ブロック生成

検証投票

CallCall Transaction4

<ブロック生成開始のトリガー>• 同時に2つ以上のMakerがブロックを作成する可能性を減らすために、Makerはランダムな期

間(タイムアウト)を生成してからブロックの作成を開始する• Makerが他のMakerより前にタイムアウトに達すると、ブロックの作成を開始することができる• Makerがブロック作成プロセスを開始すると、他のMakerノードは現在のタイムアウトをリセット

し、新しいランダムタイムアウトを生成し、ブロックが作成されるまで待つ

<Block Data>• A Global Transaction Hash• The Public State root hash• Block Maker's signature

Quorum Chain Consensus の特徴 2/2

6Copyright(C)2017 trident-arts All Rights Reserved.

Quorum Node

Smart Contract

BlockVoting

nodeInfo

blockMakerAccount

min/max blocktime

canCreateBlocks

canVote

voteAccount

ブロック生成

投票

Quorum Nodeの設定値

コントラクト機能

ブロック生成できるノードを追加する

最低投票数を設定する

ブロック生成できるノードのアドレス

ブロック生成待ち時間(最大/最小)

ブロック生成可否

投票できるノードのアドレス

投票可否

setVoteThreshold

vote

addBlockMaker

addVoter

投票の実行

投票できるノードを追加する

genesis.json

(Initial)Maker Node

Quorum Nodeの初期値

ネットワーク起動時にブロック生成ができるノードのアドレス

• Quorumの投票型コンセンサスは、スマートコントラクトの機能で実行

• コンセンサスに参加するノードの追加/削除もスマートコントラクトの機能で実行

• コンセンサスに参加するノードに関する情報はQuorum Nodeのデータベースに書き込まれる

• 最初にブロックを生成するノードのアドレスはgenesis.jsonに書き込む

主なポイント

コンセンサスアルゴリズムに関連するシステム構造

Quorum の 課題(ロードマップ提示済みのもの)

7Copyright(C)2017 trident-arts All Rights Reserved.

Network Management• Network Permissioning to be managed via Smart Contracts as opposed to node-

specific config• Dynamic Node removal• Network Admin Dapp

Privacy• Support for private key rotation• Ability to extend the list of participants that can access private transactions post

transaction creation Consensus

• Safer 'deadlock management' when Vote Threshold is not met (currently Maker Node can break deadlock by re-voting)

• Limitations on the number of votes a Voter or Organisation can make• Dynamic Voting Threshold adjustment

Performance• Parallel Transaction processing

Short Term

Medium Term

Consensus• Pluggable consensus

8

デモンストレーション

8Copyright(C)2017 trident-arts All Rights Reserved.

9Copyright(C)2017 trident-arts All Rights Reserved.

with advanced technology

trident-arts

ご清聴ありがとうございました