您的位置:首页 > 其它

[区块链]初识R3-Corda,解析区块链结构

2019-07-08 18:08 1531 查看

网络结构

R3-Corda is for permissioned nodes to communicate on a need-to-know basis about updating shared facts.

R3-Corda是一个基于许可准入的信息共享区块链网络。

要了解Corda,根据上图,我们首先需要了解传统区块链网络的结构。在传统的区块链网络中:网络上的每个节点都是通过匿名公钥来识别的,而不是具有可识别的身份,这些身份之间的消息是未加密的,并且使用闲聊协议(gossip protocol)进行,该协议将每个消息分发给每个消息。显然,这不符合实际业务的需求:

当真正的企业达成法律协议时,他们需要与法律上可识别的对手方达成这些协议,而不仅仅是使用匿名公钥,真正的企业需要将其交易的详细信息保密至第三方。对于战略性而言,这是非常理想的,但通常也是合法的。

因此,为了满足企业的需求,Corda网络的架构不同:
在加入网络之前,每个节点所有者都要经过KYC流程获取身份证书。加入网络后,他们会向网络地图服务发布证明其合法名称,IP地址和公钥(以及其他信息)的证书节点可以使用此网络地图服务使用私有的,点对点的,TLS加密的消息传递与知名对手方进行交易。

在这里,我们有一个由三个节点组成的网络和一个公证池(真正的Corda网络将拥有更多)。以其中一个节点为例,我们可以看到Titan Technology Partners节点:<指向Titan技术合作伙伴节点信息。>

拥有合法名称Titan Technology Partners
可在地址115.187.28.40,在端口10005上联系
有根公钥5hw03nnk43jknkj4n

当Titan Technology Partners进行交易时,他们所有的邮件都会被加密,并且只会发送给特定的,经过法律认可的交易对手。

共识机制

Consensus is pluggable using notary pools
Corda是一个基于见证人池的可插拔式共识机制。

现在,一个显而易见的问题是,如果数据仅在需要知道的基础上在网络上分发,那么双重支出是如何防止的? 我们如何阻止某人将某些数字资产转移到一方,然后转身并将其转移到另一方?

在Corda中,使用公证池可以防止双花问题。 公证池是一组节点 - 通常是一组操作拜占庭容错一致性算法(byzantine fault-tolerant consensus algorithm)的相互不信任的节点 - 如果它不代表双重花费尝试,则只签署一个交易。 每笔交易都要求公证人签字才有效。

公证池中的节点看不到分类帐更新的内容。 他们只看到更新分类帐的每个事务的哈希值,以及该事务的输出中消耗的事实的索引。

而上述结构中Transaction Hash和Output Index用来区分和定位追溯发生的交易点。

节点组件

Corda nodes abstract away the complexity of updating the ledger.
Corda节点抽象出更新分类帐本的复杂性功能。


这些节点位于网络上的是什么? 我们可以将Corda节点视为区块链魔术盒子:

它们提供用户定义的流,允许节点执行某些操作,通常只需单击即可更新分类帐
它们提供了从分类帐读回数据的功能,以查看执行这些流程的结果。
通过这种方式,节点可以隐藏用户的众多复杂的分布式系统,加密和数据管理功能如:

1.消息
2.存储
3.节点发现
4.数据分发
5.并发
6.灾难恢复
7.签名
还有更多!

所有这些复杂性都被节点软件抽象掉了。

核心业务流


我们通过抽象其他模块,让用户保留最大精力着眼于核心业务流的编写,其他一切交给Corda自身去处理。

为了使节点有用,节点运营商将希望在其节点上安装一个或多个流。这些流描述了节点要执行的一系列动作。
以下是一个示例流程,其中一个节点(节点A)正在尝试执行事务以更新分类帐:

1.一个节点A,创建,验证和签署一个事务,并将它发送到另一个节点,即节点B.
2.节点B在将其发送回节点A之前验证并签署该事务
3.节点A将事务发送到公证池
4.公证池在将事务发送回节点A之前签署该事务
5.节点A记录事务并将其发送到节点B.
6.节点B记录事务

这只是流程的一个例子。流程框架完全灵活。您可以编写一个不与任何其他节点对话的流,或者根本不更新分类帐的流,或者执行数据库操作或HTTP调用的流。作为CorDapp开发人员,这完全取决于您。

Corda的通证Token2.0


总的来说,主要是定义了令牌基类型,同时也对操作流程和标准借口进行了定义。
标准操作流程:

  • 问题 Issue
  • 移动 Move
  • 兑换 Redeem
  • 更新 Update(关于可演化类型)
    标准接口:
  • 发行人 Issue
  • 持有人 Holder
  • 金额 Amount
  • 类型 Type
  • 总和 Sums

总结

Corda是一个独特的区块链平台,它允许在法律上可识别的交易对手之间进行私人交易,以易于使用的方式保持传统区块链的优势。另外值得一提的是,它是主要基于Java开发,为代码的落地和编程语言大幅度的降低了门槛。

PS:感谢R3Corda的极客营体验,以及币乎全程支持!

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: