corda理解

Posted 小花生.

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了corda理解相关的知识,希望对你有一定的参考价值。

corda——基础知识


前言

关于corda的一些个人理解,如果有问题欢迎指出。


一、corda简介?

corda是属于联盟链的范畴,主要应用于金融,corda在中国的的流行度不高,不及hyperledger fabric,但是corda也有自己的特色:点对点传播,用户的交易隐私保护性更好;由于是联盟链,基于半信任的关系,交易更加方便快捷;corda不具备公有链真正意义的区块链,Corda的是在用户节点保存交易链来保证交易数据的安全性。

二、基础知识理解

1. Network(网络)

在corda中网络的传输是点对点的,一笔交易的发生只能参与方之间进行,任何非交易方得不到交易的信息,这也是corda的特点,更好的保护了用户交易的信息。
Ex:alice和bob进行了交易1和7,只有交易方能够看到交易信息,而其余人得不到交易信息。

问题:由于是点对点传播,因为无法建立记账节点,也不可能为每笔交易单独建立一个记账节点(资源浪费、拖慢交易速度),交易的数据是记录在节点数据库里,如果用户篡改了节点数据库,容易发生交易纠纷。如果节点并不存储在本地,用户只能连接到节点进行操作,并不具备篡改节点数据库的条件,而且节点数据库transaction链条的(类似于比特币区块的链),并且每一笔交易都会有签名,所有想要伪造一条交易链的可能性不大。

2. State

在corda中,一个事实(收到的债券、借钱的证明)是以state的形式存在。

包含内容:
Content:事实的内容(IOU state properties)。
Participants: 交易的参与者。
Contract: 指向了一个智能合约(智能合约的作用下边解释)。


2.1 State序列

State在corda中是不可改变的,作为一个不可更改的事实永久存储。如果state要发生改变(比如一笔贷款已经还清了,借款state要被取消),要通过transaction(交易,下边介绍)把要发生改变的state状态由unconsumed(每一个state都会有一个状态记录,是消费过的还是未消费的)改为consumed,然后transaction会重新生成一个新的state作为现在的事实状态。

3. Transaction

Transaction是更新state的过程。
组成:
Input state 表示交易的输入,需要改变的state
Output state 表示交易的输出,新生成的交易事实
Command 表示交易的性质,表示交易的性质,是转账交易还是还款交易
Time-window 表示交易的时间限制
Notary 表示交易指定的认证节点
Attachments 表示交易可能用到的外部数据(比如汇率等实时信息)
例子:一个欠钱的借条以一个state的形式存在数据库中,欠款还完后,通过一个transaction把之前的借条state变成historic,然后重新生成还款完成后的事实。

4. 交易的验证:

一笔交易过程中涉及的验证过程。
Input→output之间的过程是通过contracts(智能合约)保证的。
Input的输入是通过双花共识(notary节点认证)保证的。

5. Contracts(智能合约)

智能合约做的是对交易的输入输出进行验证,根据事实需求变成限制条件,利用这些条件对input、output之间的关系验证。

6. consensus(共识)

类型:

有效性共识。
唯一性共识。

有效性共识:

在交易提交给共识节点是时,会进行有效性验证。有限性验证首先会验证交易本身,交易的input state和output state是被智能合约确认通过的,而且交易已经被所有需要的参与方签名了。
除了交易本身的检验,交易输入的input的合法性我们也需要检验,比如一个转账交易,我们需要验证进行交易的钱是由中央银行签发,中间的交易过程都是合法的,因此有效性共识也会验证交易链,确保交易验证的合法性。

唯一性共识:

如果一个用户账户拥有1万元,一万元这个事实为一个state,用户将这个state提交两笔transaction,分别转给Alice和Bob,那么这个用户就把一分钱当作两份来花(双花),corda框架会提供唯一性共识,notary节点会查看提交交易的input state是否已经被消费过,如果消费过就会拒绝交易。

7. Flow

将账本更新的过程自动化。

从网络服务中找到共识节点。

此时开始构造交易,添加认证节点notary,如果有输入输出,添加输入输出的状态,添加command表示交易的目的,time-window表示交易的时间限制。

对交易进行收集签名的过程。

最后一步进行notary节点共识验证,如果检验没有问题,那么notary会把input state的hash值记录下来,并表示已经消费了,然后广播给所有的参与节点,notary节点共识过程没有问题,各个节点收到后,就会把交易信息记录到节点数据库里,表示交易完成。

8. value 节点数据库

以上是关于corda理解的主要内容,如果未能解决你的问题,请参考以下文章

corda理解

corda理解

具有 HCS 可插拔共识的 Corda

将部署升级到 corda 版本 3.1-corda

Corda - SignTransactionFlow 和 sendAndReceive

在 Corda 中使用 TestContainers 进行 API 测试