概要
- State 代表的是账本(ledger)上的事实(fact)
- State 是不能被修改的,只能将原来的 State 设置为历史记录(historic)然后添加一条新版本的 State
- 每个节点都有一个 vault(可以简单地把 vault 理解为数据库) 来存储该节点所有相关的 States,包括自己创建的和别人共享给自己的
概览
一个 state 代表的是一个不可修改的用来代表一个事实的对象,这个事实在某个时间点会被网络中的一个或者多个 Corda 节点所知道。States 可以包含任何的数据,这就允许了它可以代表任何的类型的事实(比如股票,借款,KYC 数据,身份数据等等)。
例如,下边的 state 代表了一个 IOU - 一个表示 Alice 欠 Bob 一定数量的钱的协议:
上边的 State 代表了一个从 Alice 到 Bob 的 £10 的 IOU。
除了关于这个事实的信息本身,State 还包含了一个合约的引用,这个合约定义了 state 究竟能够做什么。
State sequences
因为 states 是不可变更的,他们不能够被直接修改的。但是一个共享的事实的生命周期是可以通过 state sequence 来体现。当一个 state 需要更新的时候,我们会创建一个新版本的 state,然后将原来的那个 state 标注为历史版本。
这种 state 有序的替换模式能够让我们看到关于一个共享事实的整个生命周期。我们可以用下图来表示这个:
The vault
Corda 网络中的每一个节点都维护着一个 vault - 它是一个数据库,其中跟踪了所有 states 的当前以及历史的 states 数据,当然每个节点只能够看到跟它有关的数据。