区块链节点之间相互同步账本(区块)。从另一个角度来看,区块链必须是“确定性的状态计算”在所有节点上的复制。也就是说,同步好账本的节点具有相同的初始状态,在它们收到同样一个最新的区块之后,它们在验算区块、校验交易的结果必须是完全相同的,尤其是如果交易是在调用智能合约(区块链支持的可编程机制)的接口,那么合约接口内部实现的逻辑在计算后的输出结果以及对包括合约状态、各账户地址余额等在内的区块链状态(账本数据)的影响都应该是完全一样的,即新状态完全相同。绝对不会出现某个节点和别的节点计算后的状态有丝毫的不同。这就要求区块链在实现智能合约机制时不能支持随机数、浮点数(不同机器上的浮点数精度不能保证一样),也不能形成竞态条件(与时序相关导致的不确定性结果)。
回复