2.2 区块链中的密码学
区块链是比特币的底层技术,而密码学是区块链技术的基础。中本聪在比特币白皮书中提到,当前互联网上的交易,都需要借助国家信用背书的实体金融机构作为可信赖的第三方来处理电子支付信息,这种基于信用的模式无疑带有其与生俱来的缺点,比如金融机构出面调解争端使得交易撤销、商家为了提防客户可能的欺诈行为而索取客户更多的私人信息、金融机构运行存在成本支出等。所以,中本聪提出,需要建立一种基于密码学原理而不是信用的新型电子支付系统,没有第三方参与,任何达成交易意向的客户双方直接“点对点”支付。这种模式也避免了交易客户个人信息的泄露,同时杜绝了交易回滚的可能。
这里需要说明什么是交易回滚。通常情况下回滚是指程序或数据处理出现错误,将程序或数据恢复到上一次正确状态的行为。所谓交易回滚,就是在有金融机构这样的第三方中介参与交易的模式下,金融机构不承认本次操作的交易行为产生的交易数据,强行将已发生的交易行为视为非法、交易数据视为无效,同时将交易发生后的状态恢复到交易前的状态,交易数据恢复到前一次交易后的数据。交易回滚如图2-8所示。
图2-8 交易回滚示意图
区块链技术的宗旨之一就是要避免交易回滚,但现实中有一些数字货币交易平台却存在交易回滚的现象。比如2018年3月,数字货币交易平台OKex出现了比特币期货合约异常,数十万个期货合约被瞬间爆破,价格也出现了暴涨暴跌,从而引发投资者不满,最后OKex采取将异常时段的合约数据回滚的方式来挽回损失。为此,有的用户质疑交易回滚违背了区块链精神,因为当交易回滚时,无论平台上的用户是否同意让部分数据发生回滚而作废,在联网情况下,其他节点都会同步数据使其为平台修改后的结果,这个做法与区块链技术所提倡的“去中心化、数据不可篡改”的精神相悖。但是如果真遇到因为用户的操作失误导致交易数据错误,难道也不能支持交易回滚吗?所以,是否应该支持交易回滚一直是很多人争论的话题。
在比特币白皮书里,中本聪使用密码学技术设计了一种交易记录模式,如图2-9所示。从图中可以看出,在比特币的区块链技术中,使用了密码哈希函数和数字签名等密码学知识。因为同一枚数字货币的交易过程是有时间先后顺序的,所以比特币的交易记录模式也是基于时间序列的链式结构,我们以数字货币的流通为例,在图2-9中所有者0、所有者1、所有者2和所有者3表示数字货币在不同时刻不同的所有者。交易记录中包含了交易的一些重要内容,比如付款人、收款人和交易金额等。数字货币的当前所有者(付款人)将该数字货币付给下一位所有者(收款人)的过程是:将前一个关联交易和下一位所有者的公钥组合,通过哈希计算得到一个哈希值,当前所有者对这个哈希值进行数字签名,并将该签名附加在交易的末尾。下一位所有者使用当前所有者的公钥对数字签名进行验证,验证通过则说明当前所有者对数字货币确实拥有所有权,这样就可以验证数字货币的所有者链条。
图2-9 比特币基于密码学的交易模式
学完相关密码学知识后,我们再回过头来重新看图2-9就会清晰很多,毕竟它是比特币原理的精华,其中涉及的内容比较复杂,在本书第8章中会详细讲解。
区块链中采用的密码技术主要分为两大类:密码哈希函数和公钥密码算法。