以太坊的目标就是提供一个带有内置的成熟的图灵完备语言的区块链,用这种语言可以创建合约来编码任意状态转换功能,用户只要简单地用几行代码来实现逻辑,就能够创建以上提及的所有系统以及许多我们还想象不到的的其它系统。
因为货币是一个先申请应用,交易的顺序至关重要,所以去中心化的货币需要找到实现去中心化共识的方法。
依照这个范式,检查一个区块是否有效的算法如下:
- 检查区块引用的上一个区块是否存在且有效。
- 检查区块的时间戳是否晚于以前的区块的时间戳,而且早于未来2小时[2]。
- 检查区块的工作量证明是否有效。
- 将上一个区块的最终状态赋于
S[0]
。 - 假设TX是区块的交易列表,包含n笔交易。对于属于0……n-1的所有i,进行状态转换
S[i+1] = APPLY(S[i],TX[i])
。如果任何一笔交易i在状态转换中出错,退出程序,返回错误。 - 返回正确,状态
S[n]
是这一区块的最终状态。