Inter-node communication
Nodes communicate by passing messages between flows. Each node has zero or more flow classes that are registered to respond to messages from a single other flow.
Suppose Alice is a node on the network and wishes to agree a ledger update with Bob, another network node. To communicate with Bob, Alice must:
Start a flow that Bob is registered to respond to
Send Bob a message within the context of that flow
Bob will start its registered counterparty flow
Now that a connection is established, Alice and Bob can communicate to agree a ledger update by passing a series of messages back and forth, as prescribed by the flow steps.
请问这个过程发送了什么?
发起交易的节点需要建立Session,并来回地进行交互,需要验证交易数据,验证对方的签名。
这个过程有什么需要注意的地方?
这个过程中Notary节点是一定参与了的。但是参与不代表一定要做事情。只有当交易有Inputstate的时候,Notary进行双花验证。
请问交易的数据结构是什么样的?
Corda为了保证交易的隐私性。交易数据采用默克尔树结构进行处理,把敏感信息进行隐藏。
请问交易的安全是怎么保证的?
Corda使用TLS进行通信,保证交易在传输过程中的安全。每次交易都生成一个随机密钥进行加密传输。并且,参与交易的节点会验证交易数据信息,并且使用非对称密码的私钥进行签名。
请问参与交易的节点是怎么验证交易数据信息的?
//TODO
猜测,通过我们开发过程中合约代码处,获取到交易的所有数据信息,拿到数据的每个小模块,比如时间窗口,比如参与者的签名。看交易的时间是否满足时间窗口,Corda的交易时间定义不严格,它只需要你满足在某个具体时间之前,或者两个时间之间,或者么某个具体时间之后都是有效的。看参与者是否签名了,在建立交易的时候,我们通过Command定义好需要哪些节点进行签名的,如果某个节点并没有签名,那么此交易就是无效的。
请问Corda的最最核心的概念是什么?
那就是Flow了。Corda的RPC访问Node,并开启flow。Corda的节点间交互也是通过flow来进行的。而且我们所定义的业务逻辑都是在flow中写的。
请问通信过程中用到了什么消息队列技术?
Corda用到的是ActiveMQ来做的消息代理的。
请问Corda创造了什么新技术吗?
Corda没有创造新的技术。它是受到区块链技术的启发而创造的一个项目。
所以他是什么呢?他是什么不重要。是区块链也好,类区块链也好,反正他就是来解决传统金融领域的记账对账的繁琐问题。有了Corda技术。在一个网络中,加入大家公认的监管节点Notary。因为Notary做任何操作都是透明的,所以这个Corda网络中任何节点都相信它。银行间某个具体的用户进行转账了,此交易记录直接记录到节点银行下的数据库中,这样就无需对账处理了。
所以没有创造新的技术。
它是站在巨人的肩上(Java社区开源的代码)写的一个只是运用于金融领域的一个项目。
它是站在巨人的肩上(区块链技术),借鉴了比特币UTXO模型进行转账而且不是账户余额模型;金融领域对隐私有很大要求,于是选择了参与方记录交易信息(比特币是全局广播,而Corda是参与者广播,当然也可以给其他节点发送此数据)。
它是站在巨人的肩上(共识算法)使用分布式共识算法如Raft,PBFT等,它支持扩展共识算法。
它也创建了很多新的概念。Notary,Time-window,Oracle等概念。它只是想解决它想解决的问题而已。