Slide 1

Slide 1 text

CONFIDENTIAL : copyright © 2020 LayerX Inc. all rights reserved. Etaro Ito Corda Enterprise Network Manager 入門

Slide 2

Slide 2 text

2 Speaker Etaro Ito / 伊藤 工太郎 Software Engineer, LayerX Inc. ● Joined LayerX in 2018 October ● Corda Certified Developer ● Core maintainer of Cordage (Corda Interoperability Solution OSS) ● From Keio University Jun Murai Lab. Bcali Group (https://bcali.org/) ● Developed multiple software that uses blockchain technology such as Quorum/Corda/Ethereum ○ e.g. MUFG, MITSUI & CO., LTD. etc @etaroid

Slide 3

Slide 3 text

3 Agenda ● Cordappの基本(復習) ● Corda Network の構成要素 ● Corda Network の種類 ● CENM(Corda Enterprise Network Manager)の機能

Slide 4

Slide 4 text

4 Cordappの基本

Slide 5

Slide 5 text

5 Cordappの基本 (復習) TransferJPYFlow JPY State amount : 100 owner : Alice issuer : BOJ JPY State amount : 100 owner : Bob issuer : BOJ Tx Transfer JPY State amount : owner : issuer : JPY State amount : 100 owner : Alice issuer : BOJ JPY State amount : 100 owner : Bob issuer : BOJ Tx Transfer Contract Validation State Flow Contract : Txを作成する : Txの状態遷移 validation code

Slide 6

Slide 6 text

6 Cordappの基本 (復習) TransferJPYFlow JPY State amount : 100 owner : Alice issuer : BOJ JPY State amount : 100 owner : Bob issuer : BOJ Tx Transfer Alice Sig Contract Validation JPY State amount : 100 owner : Alice issuer : BOJ JPY State amount : 100 owner : Bob issuer : BOJ Received Tx Transfer Alice Sig Contract Validation TransferJPYResponderFlow Bob Sig Notary Check Content

Slide 7

Slide 7 text

7 Cordappの基本 (復習) TransferJPYFlow JPY State amount : 100 owner : Alice issuer : BOJ JPY State amount : 100 owner : Bob issuer : BOJ Tx Transfer Alice Sig Notary Bob Sig ---------- -------------- ------- : ------- …. ------- : ------- Tx ----------- ------- -------- ------- : ------- …. ------- : ------- Check double-spent Notary Sig

Slide 8

Slide 8 text

8 Cordappの基本 (復習) TransferJPYFlow JPY State amount : 100 owner : Alice issuer : BOJ JPY State amount : 100 owner : Bob issuer : BOJ Tx Transfer Alice Sig Bob Sig Notary Sig Notary JPY State amount : 100 owner : Alice issuer : BOJ JPY State amount : 100 owner : Bob issuer : BOJ Tx Transfer Alice Sig Bob Sig Notary Sig Share Save to Vault Save to Vault

Slide 9

Slide 9 text

9 今日はNetwork周りの話 ● 実際にコンソーシアムネットワークを構築する上で出てくる課題 ○ 新しくNodeを追加するには?削除は? ○ Cordapp をUpdateしたい場合は? ○ Nodeが鍵・証明書を失くしたらどうすれば? NodesとNotaryだけではもちろん足りない Corda Network

Slide 10

Slide 10 text

10 Corda Networkの構成要素

Slide 11

Slide 11 text

11 Corda Networkの構成要素 ● コンソーシアム参加者が運営するNode ● Cordappを保持し、Flow実行によるTxの作成からContractによる検証などを行う ● Vault と呼ばれる DBを持ち、State を保持 ● 使用済みTXOの管理 ● TXの最後に二重支払いcheckを行う (Finalityの付与) ● Notary Poolで複数台構成も可能 / Pool内でのConsensusはRaft・IBFT等(experimental) ● NetworkのRoot CA ● Root証明書から階層的に管理者ノードの証明書が発行される ● 旧称 Doorman ● Network参加申請の承認、Nodeへの証明書の付与 ● CRLの管理 ● ネットワーク内のDNSの役割 ● 参加者NodeのNodeInfoと宛先IPのリストを保持 Notary Node Identity Manager Network Map Service Trust Root ・Corda Networkにおいてはネットワークの管理者 (Business Network Owner : BNO)が存在することが前提 ・Corda Network に必要なComponentは全部で5種類 (Node以外を管理者ノードと呼んでます )

Slide 12

Slide 12 text

12 Notary ● 使用済みTXOの管理 ● TXの最後に二重支払いcheckを行う (Finalityの付与) ● Notary Poolで複数台構成も可能 / Pool内でのConsensusはRaft・IBFT等(experimental) Notary Non-validating Notary Validating Notary JPY State Tx Transfer Alice Sig Bob Sig amount : 100 owner : Alice issuer : BOJ Check double-spent Notary Sig ---------- Tx ----------- ------- -------- ------- : ------- …. ------- : ------- Check double-spent Notary Sig JPY State amount : 100 owner : Bob issuer : BOJ -------------- ------- : ------- …. ------- : ------- Contract Validation Non-validatingの機能に加えて ● Tx Content が見える => Privacy Leakが存在 ● Cordappを保持し、Nodeと同様のvalidationを行う ● Tx Contentsは見えない => Denial of State攻撃が存在 ● Input State の Hashを消費済みUTXOに追加 ● RequestしてきたNodeのpubkey&X500 Nameをrecord

Slide 13

Slide 13 text

13 Trust Root ● NetworkのRoot CA ● Root証明書から階層的に管理者ノードの証明書が発行される Trust Root

Slide 14

Slide 14 text

14 Identity Manager ● 旧称 Doorman ● Network参加申請の承認、Nodeへの証明書への署名と付与 ● CRLの配信 Flanky + X500 Name Network Map Service Identity Manager pubKey CRL

Slide 15

Slide 15 text

15 Network Map Service ● ネットワーク内のDNSの役割 ● 参加者NodeのNodeInfoと宛先IPのリストを保持 ● Network Parametersを各Nodeに配る Identity Manager Flanky - IP address & port - legal Identity & cert - platform version - serial Sign NodeInfo Network Map Table Network Map Service Append 192.168.0.1:10005 Alice’s NodeInfo …………... Flanky’s NodeInfo …………... 192.168.0.6:10005

Slide 16

Slide 16 text

16 Network Map Service ● ネットワーク内のDNSの役割 ● 参加者NodeのNodeInfoと宛先IPのリストを保持 ● Network MapとNetwork Parametersを各Nodeに配る Identity Manager Flanky - Hash(NodeInfo) - ….. - ….. - ….. Network Map Network Map Service Network Map + Network Parameters Sign ※各Nodeは定期的に Network Mapをポーリングしてキャッシュを更新しに行く Network Parameters

Slide 17

Slide 17 text

17 Corda Networkの種類

Slide 18

Slide 18 text

18 Corda Network Foundation が運営するNotary / Identity Manager / Trust Root / Networkmapを使用するパターン Corda Networkの種類: ① The Corda Network Network Map Service Identity Manager Non-validating Notary Trust Root The Corda Network Private Network

Slide 19

Slide 19 text

19 Corda Networkの種類: ① The Corda Network ・Corda Network Foundation はオランダに拠点を置く非営利財団 ・テストネットやUAT環境が整備され、各種 Cloudサービスに立てたNodeから接続可能

Slide 20

Slide 20 text

20 CENMを使用して、全てのComponentを立て、独自に本番ネットワークを構築 Corda Networkの種類: ② Private Network Identity Manager Private Network Network Map Service Notary Trust Root

Slide 21

Slide 21 text

21 Corda Networkの種類: ③ Segregated Network ・Notaryは自前で運用、Network MapのPrivacy担保 ・Trust Root / Identity ManagerはThe Corda Networkのものを使用 Identity Manager The Corda Network Network Map Service Notary Private Network Trust Root

Slide 22

Slide 22 text

22 CENM の機能

Slide 23

Slide 23 text

23 CENMとは Corda Enterprise Network Manager : Private Networkを構築するためのツールキット Network Map Service Identity Manager Trust Root

Slide 24

Slide 24 text

24 機能1. Signing Service ・Signing Service側からpollingしてリクエストキューを叩きに行く ・HSMからアウトバウンドのみ許可することでセキュアな環境を実現 Identity Manager Trust Root Private Network Network Map Service Notary Signing Service 署名Request Queue 署名Request Queue HSM

Slide 25

Slide 25 text

25 機能2. Sub Zone ・1つのPrivate Networkの中で複数のNetwork Map Serviceを立てることで複数の Sub Networkに分割できる機能 ・Notaryを含むどのNodeも複数のSub Zoneには所属できない ・NodeはSub Zoneについての知識を持たない

Slide 26

Slide 26 text

26 機能3. Cordapp Constraints ・BNOがcordapp.jar (State, Contract, Flow) を作成して配布し、これがネットワークのプロトコルとなる ・Contractが状態遷移ルールとなるため、各 Nodeが同じContractを動かしていることを保証する必要がある TransferJPYFlow JPY State amount : 50 owner : Alice issuer : BOJ JPY State amount : 100 owner : Bob issuer : BOJ Tx Transfer Alice Sig 改造Contract Validation JPY State JPY State ----------- : ---- Received Tx Transfer TransferJPYResponderFlow ----------- : ---- Signature Constraint Error Signature Constraints (推奨) ・同じ署名が付いている jarファイルを使用していればプロト コルに従っているとみなす ・各NodeはTXのやり取りをする際に相手 Nodeが使用して いるcordapp.jarの署名をcheck ex.) BNOが作成したcordapp.jarに自身のkeyで署名をし、 それを各Nodeに配布 Hash Constraints Compatibility Zone Whitelisted Constraint ・Hashが同じjarしか許可しない。つまり、 Updateの許容無し。最も 厳しい制約。 ・network parametersで指定されたjarしか許可しない

Slide 27

Slide 27 text

27 機能3. Cordapp Constraints Responder Nodeは TXの内容が「プロトコルに従っているか」だけではなく「状態遷移内容に合意できるか」も verifyする必要がある TransferJPYFlow JPY State amount : 100 owner : Alice issuer : BOJ JPY State amount : 100 owner : Bob issuer : BOJ Tx Transfer Alice Sig Contract Validation JPY State JPY State ----------- : ---- Received Tx Transfer TransferJPYResponderFlow ----------- : ---- Contract Constraints & Flow Customization ・cordapp.jarをcontract.jarとworkflow.jarに分け、 contract.jarにのみSignature Constraintsを付与 ・workflow.jarにはconstraintsは付けない ResponderFlowの中で独自のビジネスロジックを記 述してカスタマイズすることを想定 Contract Validation Check Content Error

Slide 28

Slide 28 text

28 機能3. Cordapp Constraints Responder Nodeは TXの内容が「プロトコルに従っているか」だけではなく「状態遷移内容に合意できるか」も verifyする必要がある ※ https://lankydan.dev/responder-flow-validation

Slide 29

Slide 29 text

29 機能4. Cordapp Update ・Cordapp Constraintsは「Signature Constraints」を想定 ・新jarファイルの署名が旧jarファイルと同じであれば、implicit に update可能 / Stateの引継ぎも可能 Implicit Update Explicit Update BlackList config ・各Nodeでcordapp.jarを置き換えるだけで Updateが可能 & Stateの引継ぎも可能 ・update後に追加された columnなどは旧Stateではnull ・cordapp.jar開発者への依存度が高い ・各Nodeでcordapp.jarを置き換えるだけでは不十分 ・各ノードでContractUpgradeFlow.Authorise Flowや ContractUpgradeFlow.Initiate Flowを実行して旧Stateの 引き継ぎを行う必要がある (このStateのvalidationするの はこのContractを使用する設定を修正 ) ・各Nodeが自身のnode.confの中でsignature blacklistを設 定することもできる node.conf

Slide 30

Slide 30 text

30 まとめ ● Corda Network の構成要素 ○ Trust Root (PKI) ○ Identity Manager ○ Network Map Service ● Corda Network の種類 ○ The Corda Network ○ Private Network ○ Segregated Network ● CENMの機能 ○ Signing Service ○ Sub Zone ○ Cordapp Signing Constraints ○ Cordapp Update

Slide 31

Slide 31 text

31 Thanks ! LayerX Research Scrapbox #Corda CENM ハンズオンもあるよ! https://scrapbox.io/layerx/Corda_Network%E6%A7%8B% E7%AF%89%E3%83%8F%E3%83%B3%E3%82%BA%E 3%82%AA%E3%83%B3

Slide 32

Slide 32 text

32 Join at slido.com #77954 Audience Q&A Session