Corda アーキテクチャ
Nodes
全体感は以下の図
https://docs.corda.net/_images/node-architecture.png
参考情報
重要そうなモジュール
corda-core
corda-node
corda-node-api
corda-rpc
以下で詳細に調べる。
net.corda:corda-core
暗号、並列処理、通信等、Cordaを動かすのに基本的なパーツが入ってる。CorDappのベースクラスも含まれる。
参考情報
パッケージ構成としては以下のようになっている (小文字スタートはパッケージ名、大文字スタートはクラス名)
crypto
flows
InitiatingFlow
SignTransactionFlow
NotaryFlow
FlowLogic.serviceHub
etc
identity
AnonymousParty
CordaX500Name
Party
etc
internal
notary
NotaryService
NotaryServiceFlow
etc
etc
messaging
CordaRPCOps
FlowHandle
MessageRecipients
etc
node
NodeInfo
NotaryInfo
ServiceHub
etc
transactions
CoreTransaction
SignedTransaction
etc
etc
net.corda:corda-node
NodeやNotaryを構成するパッケージを持つ。メッセージキューにActiveMQ Artemisを利用している。
実験的に実装されたNotary Cluster用のコンセンサスアルゴリズムも含まれる。
JolokiaでJMXへのRESTアクセスを提供しており、Nodeの各種メトリクスを取得できるようになっている。
参考情報
パッケージ構成としては以下のようになっている (小文字スタートはパッケージ名、大文字スタートはクラス名)
node
internal
artemis
rpc.proxies
AuthenticatedRpcOpsProxy
etc
security
RPCPermission
RPCSecurityManager
etc
AbstractNode
Node
NodeCliCommand
NodeFlowManager
etc
services
api
config
events
identity
keys
messaging
network
persistence
rpc
statemachine
vault
etc
CordaClock
etc
bftsmart
raft
net.corda:corda-node-api
Corda node間でtxのやり取りをするときに、他のノードからtxを受け取るためのRPC APIを提供するためのモジュールと思われる(要検証)
メッセージキュー (ActiveMQ Artemis) を持っており、受け取ったメッセージのバッファに使っていると思われる(要検証)
Nettyを利用する等によるソケット通信効率化も行っている。
参考情報
パッケージが少ないので構成は省略。
net.corda:corda-rpc
RPCクライアントを提供するライブラリ。接続開始、再接続、切断も担う。
参考情報
パッケージが少ないので構成は省略。
サービスと通信周り
TBD
参考情報