Corda架构
Corda的重要特性
1.没有区块链,没有挖矿,是一个permissioned network。
2.没有广播,是点对点的消息交流方式。
3.用UTXO模型来记录状态(类似比特币)。
4.基于JVM的平台,使用Kotlin编写(可以用Java,Clojure等)。
Corda网络
Corda网络是可验证的P2P网络,其中每个节点都是托管Corda服务并执行称为CorDapps的应用程序的JVM run-time environment。
• Corda网络是全连接的图
• 没有全球广播或gossip网络
• 通信仅在点对点的基础上进行
• 数据是在need-to-now的基础上共享的
• peer通过TLS使用AMQP / 1.0进行通信
• 图的边表示通信的可能性,而不是持久性连接
• 类似电子邮件和SMTP
网络中主要有下面几种成员:
Doorman(门卫):执行有关信息节点在被允许进入网络之前必须提供的规则。 如果同意,则使用根权限签名的TLS证书对节点的标识进行认证。
要加入网络,节点必须联系Doorman并提供所需信息。 如果通过验证,节点将从网络许可服务接收一个 root-authority-signed TLS 证书,(一个 TLS 证书和一个签名证书(signing certificate)作为 well know identity)。这个证书会在今后同其他节点的沟通中作为该节点的身份证明被使用。
Nodes(节点):具有运行Corda的唯一网络标识的JVM run-time,具有两个接口:网络层(与其他节点交互)和RPC(与节点所有者交互)。
Network Map Service(网络地图服务):发布IP地址,通过该地址可以访问所有节点以及节点提供的证书和服务。
Notary(公证人):对账本更新验证唯一性和可能性。
Oracles:众所周知的服务,如果他们陈述事实并且该事实被认为是信任则签署交易
(使用Apache Artemis嵌入式消息服务的消息代理来实现日志关系型数据库存储数据)
其他概念:
Network Map Service:
发布可以通过其访问网络上每个节点的IP地址,这些节点的身份证书和它们提供的服务
(用于负载均衡和网络可视化。地图是一种可以被缓存并分发到全网络的一种文档。因此地图不用要求高可用性:如果地图服务处于离线状态,新接入节点就没法注册到该服务,已接入的节点也没法分发相关状态变化出去,不过,其他的会一切照常进行。Network map类似于微服务中的 service discovery,Corda中节点的互相发现并不是通过广播的方式发生,而是通过注册Network map获取其它节点的信息,进而找到对方)
Identity:
Corda的Identity可以代表组织的合法身份(用于交易中的各方)和网络服务的标识(用于提供与交易相关的服务)
identity分为well konwn(众所周知的)或confidential(保密的),众所周知的身份是法人实体或服务的证书。 此证书将在网络地图服务中发布,供任何人访问。
机密身份仅发布给使用identity参与交易的人。
Corda账本
账本的特征:
- 没有中心化的账本。每个账本是针对于每一个节点的,每个节点维护这一个独立的数据库(vault),有自己的账本结构,并且只维护自己的账本,只能看到自己的账本,没有节点能够知道所有的内容。