区块链合约的类型化编程接口
1. 区块链状态与配置
区块链操作的状态可分为三种:
- 待处理(pending):用 oph → ⟨op, t, pending⟩
表示。
- 已包含(included):当操作被接受后,状态变为 oph → ⟨op, t, included t′⟩
,其中 t′ ≥ t
是操作被包含进区块链的时间。
- 超时(timeout):操作随时可能因超时而被丢弃,用 oph → ⟨op, t, timeout⟩
表示。
区块链的状态是一个元组 B = [P, M, C, t]
,其中:
- P
是操作池。
- M
是管理器映射。
- C
是合约商映射。
- t
是当前时间。
我们常用点符号来访问元组的组件,例如 B.M
用于访问管理器组件。
区块链配置的形式为 B[N1, ..., Nn]
( n > 0
),其中 B
是区块链, Ni
是本地节点。在一个格式良好的配置中:
- 对于所有 1 ≤ i < j ≤ n
, Ni.A ∩ Nj.A = ∅
。
- 对于所