Author Topic: Corda平台技术分析  (Read 1903 times)

liangran

  • Administrator
  • Jr. Member
  • *****
  • Posts: 79
    • View Profile
Corda平台技术分析
« on: December 22, 2016, 12:07:15 PM »
简介
R3CEV是一家总部位于纽约的区块链初创公司,由其领导的R3区块链联盟旨在为全球金融市场设计与提供先进的分布式账本技术,在成立初期就吸引了42家银行巨头的参与。R3区块链联盟的使命主要包括三部分:实验室研究,即多机构协作部署实验室来测试评估区块链技术;金融级别账本,即为全球性的金融账本开发底层架构;产品开发,即通过用例模型来验证和设计实际的商业应用。R3区块链联盟宣称,分布式账本技术可以改变金融服务,就像互联网改变媒体和娱乐一样。

2016年11月30日,R3CEV宣布将其旗下Corda平台开源,德勤中国区块链团队第一时间对Corda进行了分析与调研。

Part01 Corda平台概况
Corda是一个分布式账本平台,采用联盟链或私有链的形式,用于记录、管理及自动化执行金融合约。
不同于传统区块链平台具有的全网参与交易验证、单位时间产出数据块等特征,Corda平台具有以下特点:
1. 交易无需全网广播,而仅在交易关联方与用于验证交易的节点之间传递。这样可以减少节点接收的数据量,并且有效保证交易相关方的隐私和机密;

2. 共识机制仅存在于负责验证交易的节点之间,而不是所有的参与节点,从而加快了达成共识的速度,提高了交易性能;
3. 没有“区块”的概念,而是将交易相链接,以达到数据不可逆、可追溯的特性;
接下来我们将通过分析Corda平台架构来阐述上述特征。

liangran

  • Administrator
  • Jr. Member
  • *****
  • Posts: 79
    • View Profile
Re: Corda平台技术分析
« Reply #1 on: December 22, 2016, 12:08:00 PM »
Part02 Corda平台架构分析



经过对Corda白皮书及源代码的研究,我们将Corda平台中的节点大致归纳为五种角色:
首先是Corda网络的系统管理,包含身份服务节点(绿色节点)及网络映射服务节点(深蓝色节点)。Corda网络有一个负责全网身份服务的系统节点,实现类似于传统网络架构中的CA(Certificate Authority)功能。该节点负责颁发证书,设置权限,任何想要加入Corda网络的节点都需要从身份服务节点处获得相应身份。Corda网络中还有若干负责网络映射的节点,提供类似于传统网络架构的DNS服务,负责将节点的证书及所提供的服务与其IP地址相关联,便于其它节点进行查询。
其次是Corda网络的交易管理,包含普通用户节点(淡蓝色节点)及公证服务节点(黄色节点)。普通用户可以自由发起交易。交易产生后,被发送给指定的公证服务节点来验证其唯一性和有效性。如果交易合法,该公证服务节点便对这笔交易签名,并发回交易关联方。交易关联方及公证服务节点各自将该笔交易链接到之前的交易,形成“交易链”,达到交易关联方之间数据的局部统一。
公证服务节点之间通过共识算法来保证全网数据的准确唯一性。Corda计划兼容多种共识算法,由不同的应用场景决定使用何种共识算法,目前提供了基于PBFT/RAFT共识算法的公证服务的实现。由于Corda平台的共识是在公证服务节点之间互相达成的,为了减少交易延迟,提升交易吞吐量,开发团队建议将同一个网络的公证服务节点物理上放在一个区域。
Corda平台还有一个角色是价值中介服务节点(黑色节点)。价值中介服务节点在其余的区块链平台中也有所实现,是一种负责和区块链网络外部取得可靠数据的节点。Corda网络可以通过价值中介服务节点获取现实世界的实时数据,从而提供多样化的交易场景。
智能合约也是Corda平台的重要特色。在JVM的环境下,可以用Java语言或者Kotlin语言实现智能合约的编写和调试。Corda也封装了一些智能合约的函数和功能,包括对本地交易的验证函数等,开发者可以调用这些函数和功能,或继承已有的智能合约进行开发。

liangran

  • Administrator
  • Jr. Member
  • *****
  • Posts: 79
    • View Profile
Re: Corda平台技术分析
« Reply #2 on: December 22, 2016, 12:34:02 PM »
Part03 Corda平台业务逻辑流程示例

我们通过一笔资产交易来更直观地了解Corda交易发起和验证的具体过程:



上图左边方框代表买方节点,中间方框代表卖方节点,右边方框为公证服务节点。交易首先从卖方节点开始:
1. 卖方向买方出售某一资产并报价
2. 买方验证卖方拥有足够合法的资产后,如同意购买该资产并接收该报价,便回应卖方接受该价格,同时开始生成交易Tm(代表钱的流转)并签名
3. 当卖方获知买方同意交易时,验证买方拥有足够合法的钱后,开始生成交易Ta(代表资产的流转)并签名
4. 当买方生成交易Tm并签名后,将该交易发送给卖方
5. 卖方收到交易Tm后,将其与Ta结合,生成交易Tma(包含钱和资产两者的流转)并发送给公证服务节点进行验证
6. 公证服务节点收到交易Tma后,验证其有效性和唯一性,如通过便签名并提交本地数据库进行更新,同时将签名发回卖方
7. 卖方收到公证服务节点签名后,将该签名加入Tma生成最终交易,更新自身账本,同时将最终交易发送至买方,买方验证该交易后更新自身账本,至此交易完成

liangran

  • Administrator
  • Jr. Member
  • *****
  • Posts: 79
    • View Profile
Re: Corda平台技术分析
« Reply #3 on: December 22, 2016, 12:34:46 PM »


Corda平台开源之后,仍有许多需要发展与完善的地方。目前来看,Cord的架构实现存在一定的局限性,不支持跨公证服务节点的交易:假设网络中有两个公证服务节点A和B负责验证交易,普通用户a和b的交易通过公证服务节点A签名验证,普通用户c对应公证服务节点B。a和b之间发生了关于某个资产的交易,如果c也想参与该资产的交易,就必须将其原本的交易链转移到公证服务节点A,待验证通过后才能进行交易。如果公证服务节点A与公证服务节点B处于不同区域(如不同国家),其转移的过程可能产生网络延迟,影响网络的交易速度和用户体验。除此之外,Corda暂时没有提供封装好的API供开发者调用,也没有建立TestNet(测试网络)供开发者调用。
Corda被设计为记录,管理并自动执行合约的平台,且支持高度自定义的智能合约,从理论上看可以作为一般性的区块链平台,而不仅仅是一个金融平台。但是Corda距离成为一个成熟、可靠的平台,还需要一段时间来发展和完善。