Corda - 商业开源区块链

科尔达 是一个分布式账本,用于存储、管理和同步不同金融组织之间的财务义务。
Corda - 商业开源区块链
Corda 有非常好的文档和视频讲座,可以找到 这里。 我将尝试简要描述 Corda 的内部工作原理。

让我们看看 Corda 的主要特点以及它在其他区块链中的独特之处:

  • Corda 没有自己的加密货币。
  • Corda 不使用挖矿和工作量证明系统的概念。
  • 数据传输仅发生在交易/合同双方之间。 没有向所有网络节点进行全局广播。
  • 没有中央控制器管理所有交易。
  • Corda 支持各种共识机制。
  • 参与者之间在单个协议/合同层面达成共识,而不是在整个系统层面达成共识。
  • 交易仅由与其相关的参与者确认。
  • Corda 提供了正式的人类法律语言和智能合约代码之间的直接连接。

分类帐

Corda 中账本的概念是主观的。 没有单一的中央数据存储库。 相反,每个节点维护一个单独的已知事实数据库。

例如,想象一个由 5 个节点组成的网络,其中一个圆是该节点已知的事实。

Corda - 商业开源区块链

正如我们所看到的,Ed、Carl 和 Demi 知道事实 3,但 Alice 和 Bob 甚至不知道。 Corda保证共同的事实存储在每个节点的数据库中,并且数据将是相同的。

状态

状态是 不可变的 表示一个或多个网络节点在某一时间点已知的事实的对象。

状态可以存储任意数据,例如股票、债券、贷款、身份信息。

例如,以下状态代表一个 IOU——Alice 欠 Bob X 的协议:

Corda - 商业开源区块链
事实随着时间的推移的生命周期由一系列状态表示。 当需要更新当前状态时,我们创建一个新状态并将当前状态标记为历史状态。

Corda - 商业开源区块链

交易

交易是更新分类账的提议。 它们不会广播给所有账本参与者,并且仅可供那些拥有合法权利查看和管理它们的网络参与者使用。

如果满足以下条件,交易将被添加到分类账中:

  • 合同有效
  • 由所有必需的参与者签署
  • 不包含双花

Corda 使用 UTXO(未花费交易输出)模型,其中每个账本状态都是不可变的。

创建交易时,前一个交易的输出状态(通过哈希和索引)将传输到输入。

Corda - 商业开源区块链
交易生命周期:

  • 创建(目前,交易只是更新账本的提案)
  • 收集签名(需要交易各方通过向交易添加签名来批准更新提案)
  • 将交易提交到分类账

一旦交易被添加到分类账中,输入状态将被标记为历史并且不能在未来的交易中使用。

Corda - 商业开源区块链
除了输入和输出状态之外,交易还可能包含:

  • 命令(指示交易目的的交易参数)
  • 附件(节假日日历、货币换算)
  • 时间窗口(有效期)
  • 公证人(公证人,验证交易的特殊网络参与者)

Corda - 商业开源区块链

合同

当我们谈论交易有效性时,我们不仅指必要的签名的存在,还指合同的有效性。 每笔交易都与接受该交易并验证输入和输出状态的合约相关联。 仅当事务的所有状态都有效时,事务才被视为有效。

Corda 中的合约可以用任何 JVM 语言(例如 Java、Kotlin)编写。

class CommercialPaper : Contract {
    override fun verify(tx: LedgerTransaction) {
        TODO()
    }
}

需要从类继承 对比度 并重写该方法 确认。 如果交易无效,则会抛出异常。

交易验证必须是确定性的,即合约必须始终接受或拒绝交易。 与此相关的是,交易的有效性不能依赖于时间、随机数、主机文件等。

在 Corda 中,合约在所谓的沙箱中执行 - 一个稍微修改过的 JVM,可保证合约的确定性执行。

为了自动化网络节点之间的通信,添加了线程。

流程是一系列步骤,告诉节点如何执行特定的账本更新以及在什么时候需要对交易进行签名和验证。

Corda - 商业开源区块链

有时需要数小时、数天的时间才能让所有各方签署交易并进入分类账。 如果断开参与交易的节点会发生什么? 线程具有检查点,在检查点处线程的状态被写入节点的数据库。 当节点恢复到网络时,它将从中断的地方继续。

共识

为了进入账本,一笔交易必须达成两个共识:有效性和唯一性。

交易有效性的决定仅由直接参与交易的各方做出。

公证节点检查交易的唯一性并防止双重支出。

假设 Bob 有 100 美元,并希望使用相同的输入状态将 80 美元转移给 Charlie,将 70 美元转移给 Dan。

Corda - 商业开源区块链

Corda 不会允许你完成这样的把戏。 虽然交易会通过有效性检查,但唯一性检查将失败。

结论

Corda 平台由 R3 区块链联盟开发,并不是区块链技术的纯粹用例。 Corda 是一款面向金融机构的高度专业化工具。

来源: habr.com

添加评论