Corda 核心概念 – Tradeoffs

概要

  • 允许准入(permissioned)的网络会更好的适合金融的 user-cases
  • 点对点(point-to-point)的沟通允许信息是基于 need-to-know 的原则被共享
  • UTXO model 允许每秒钟能够处理更多的 transactions

允许准入(Permissioned) vs 非允许准入(permissionless)

传统的 blockchain 是 permissionless。网络中的各方都是匿名的,而且可以随时加入或离开。

不同的是, Corda network 是 permissioned。网络中的每一方都有一个大家都知道的标识,这个会在同其他节点进行沟通的时候使用,并且访问网络是由一个 doorman 来控制的。这有一下的好处:

  • 匿名的用户对于大多数更金融有关的情况都是不适用的
  • 知道你的合作方的标识可以允许当出现冲突的时候,可以使用已经存在的法律系统在账本外进行解决
  • 女巫攻击(Sybil attacks)可以不通过使用昂贵的机制(比如工作量证明 proof-of-work)来避免

点对点(Point-to-point)vs 全局广播(global broadcasts)

传统的 blockchain networks 将每一条信息广播给网络上的所有参与者。原因是:

  • 合作方的标识是不知道的(因为都是匿名的),所有一个消息需要发给网络上的所有人来确保原本需要收到这条消息的接受者能够接收到
  • 让所有参与者知道每一个 transaction 能够允许网络防止“双花”

不好的地方是所有的参与者都能看到所有其他人的数据。这在很多的 use-cases 是无法接受的。

在 Corda 中,每条消息都会指定一个具体的合作方,而且是不会被任何其他无关方看到的。开发者能够完全掌控什么消息被发送了,发送给了谁,应该按照什么顺序发送。所以数据是根据 need-to-know 的基准来共享的。为了避免“双花”,我们引入了 notaries 作为另外一种工作量证明(proof-of-wor)。

Corda 也是用了其他的一些技术来最大化的包括网络上的隐私:

  • Transaction tear-offs:Transactions 被结构化成不暴露 transaction 的内容就可以被数字化地签名。这个是通过使用一种叫 Merkle tree 的数据结构来实现的。
  • 随机化秘钥:一个 transaction 的所有参与方是通过他们的公钥进行识别的,并且针对每一个 transaction 都会生成 一个新的 keypairs。所以一个监视者无法识别出来对于一个给定的 transaction 都哪些方参与了。

UTXO vs account model

Corda 使用 UTXO(Unspent Transaction Output)model。每个 transaction 都会消费一些列的已经存在的 state 然后再生成 一些新的 states。

相反的一种方式是 account model(个人理解为账户模式,就是每个人都有一个总账,对其增加或删减)。在 account model,stateful objects 被存在账本上,transaction 会通过请求的方式来对这些 objects 的当前的 state 进行更新,而不是消费原来的再增加新的。

UTXO model 的主要优点在于含有不同的 inputs 的 transactions 能够并行地被执行,很大程度上地增加了网络中每秒能够处理的 transactions。在 account model 中,每秒钟能够处理的 transactions 数量有限,因为对于一个给定的 object 的更新需要按照给定的顺序来执行。

Code-is-law vs. existing legal systems

金融体系需要在需要的时候使用传统的法律体系来解决冲突的能力。Corda 被设计用来使这个成为可能:

  • 拥有允许准入的网络,意味着所有参与方都能够知道在每一个 transaction 中他们都在跟谁打交道
  • 所有 code 定义的合约背后都存在有描述着合约意图行为的法律文档,这个文档可以解决冲突的时候使用

Build vs. re-use

任何可能的情况,Corda 会使用 已经存在的技术来让这个平台更加的健壮。比如 Corda 重用了:

  • 标准的 JVM 变成语言来开发 CorDapps
  • 现存的 SQL database
  • 现存的 消息队列实现

发表评论

电子邮件地址不会被公开。 必填项已用*标注