Vault

Vault 包含了从 Ledger 上提取出来的被认为跟当前节点的 owner 有关的数据,这些数据存储在一个关系型的模型中,可以被很容易地进行查询和基于它来进行工作。

Vault 会追踪未消费的和消费掉的 states:

  • 未消费的(Unconsumed or Unspent) states代表了可以被消费的 fungible states(包括话费到自身的 transactions)和可以继续演进的 linear states(比如针对于一笔交易的整个生命周期中的不同事件)或者交换给其他的 party
  • 已消费(Consumed or spent)states 代表了账本上不可修改的 state,这些 state 的目的是为了交易的报表,审计和归档,也提供了同应用程序的私有数据进行关联的能力(比如自定义的 notes)

对于 fungible state,我们指的是可以量化的资产 assets(比如现金货币,一些股票),这些可以被合并到一起来体现一个单一的 ledger state。

就像一个加密货币钱包,Corda vault 能够通过合并 fungible states 并且可能添加一个产生 value 余额(这个过程通常会被参考为‘coin selection’)的 change output 来产生一笔交易,将价值(比如交换一个 state)发送给其他人。

一个被称为软锁(soft locking)的功能提供了能够自动地活着显式地保留 states 的能力,以此避免同一节点下的多个 transactions 来同时地使用同一个 output。尽管这种情况最终会被 notary 发现,但是软锁提供了一种机制来尽早地发现这种不期望的情况发生。

注意:基本的“选币”当前被实现了。未来的工作包括 fungible state 优化(在后台拆分和合并 states),和 “state 再发行(re-issuance)”(将 states 发送回给 issuer 来重新发行,一次可以剪短长的 transaction chains 并且改进了隐私性)。

这里还有一个方式能够将描述性的文字注释附加到任何存储在 vault 里的 transaction 上。

Vault 支持对数据的授权形式的管理(“on-ledger”)和适当的 shadow 形式的管理(“off-ledger”):

  • “On-ledger” 数据指的是一个公司所参与的分布式账本 states(现金、交易)
  • “Off-ledger” 数据指的是一个公司内部的参考数据、静态和系统的数据

下边的图标展示了 vault 是如何被划分为子系统组件的:

注意下边几点:

  • Vault “On Ledger” 的存储跟踪了为被消费的 state,当节点将一个 transaction 记录到了账本上的时候会在内部进行更新(当一个 smart contract 成功地被验证并且获得了所有参与方的签名之后)
  • Vault “Off Ledger” 的存储指的是由节点的 owner 在 transaction 记录之后所添加的额外的数据
  • Vault 执行的是 fungible state 的花费(将来还会有 fungible state 的优化管理包括合并、拆分和再发行)
  • Vault 扩展指的是由开发者编写的查询指定的自定义 contract state 属性的额外的自定义 plugin 代码
  • 自定义的 “Off Ledger” (私有的存储)指的是内部的可能会跟 vault 数据结合的组织型数据,用来进行额外的报表或者处理流程
  • Vault Query API 被暴露出来供开发者通过使用标准的 Corda RPC 和 CorDapp plugin 机制来调用
  • Vault update API 是被 transaction recording flow 内部使用的
  • Vault 数据库 schemas 可以通过 JDBC 直接被访问,来进行关联和查询

发表评论

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