4.3 区块链中的核心技术
区块链中的核心技术包括基础技术和拓展技术。基础技术是确保区块链运行的、必不可少的技术,可分为数据层技术、网络层技术和共识层技术。拓展技术则包括根据具体需求而设定的合约层技术及连接不同区块链的跨链技术。区块链中的核心技术如图4-5所示。
图4-5 区块链中的核心技术
数据层技术包括构成区块所使用的数据结构、加密技术等;网络层技术包括P2P网络及其传播和验证机制;共识层技术为共识机制,常见的共识机制有工作量证明机制(Proof of Work,POW)、股权证明机制(Proof of Stake,POS)及委托权益证明机制(Delegated Proof of Stake,DPOS)等;合约层技术包括脚本代码及智能合约;跨链技术包括公证人机制、侧链技术和哈希时间锁。
4.3.1 数据层技术
区块链的数据结构是一种“区块+链”的结构,该结构所使用的数据区块、链式结构、哈希函数等构成了区块链的数据层技术。
1.数据区块与链式结构
在区块链中,数据以区块的方式永久存储。每个区块包含区块头和区块体。区块头包含哈希指针、时间戳和数字签名,区块体则包含了经过验证的、区块创建过程中产生的所有交易信息。不同的区块通过哈希指针相连形成链式结构。每个区块头中都包含了上一个区块的哈希值,使区块与区块之间产生关系,这种关系便称为链。通过哈希值相连形成的链式结构是区块链不可篡改性的基础。区块链的数据结构如图4-6所示。
图4-6 区块链的数据结构
2.时间戳
时间戳是一个通过加密形成的凭证文件,它包含了需要加密内容的摘要、生成的时间和日期,它可以表示一份数据在某个特定的时间之前就已经存在。在区块链中,每个新的区块生成时都会被打上时间戳,记录该区块生成的时间,各个区块按照时间先后顺序相连形成区块链。时间戳的存在保证了区块链中的内容难以被篡改。
3.哈希函数
哈希函数是一类数学函数,它可以在有限的时间内,将任意长度的消息压缩为固定长度的二进制串,其具有抗碰撞性、逆向困难性和难题友好性。哈希函数被应用于区块链的链式结构中,由哈希函数所生成的哈希指针和数字签名保证了区块链数据的不可篡改性。
4.默克尔树
默克尔树又称二叉哈希树,是一个由加密哈希组成的二叉树,可以高效汇总和验证大数据集的完整性。每个区块的交易信息以默克尔树的形式存储。每笔交易通过哈希算法得到一个哈希值,不同的哈希值向上继续进行哈希运算,最终形成一个唯一的默克尔根,被存放在区块头中。默克尔树中的默克尔根可以确保区块内的数据不会被篡改,默克尔树的分支也可以对部分数据进行校验,从而实现快速和高效的数据验证。
5.非对称加密
与非对称加密技术对应的是对称加密技术,在对称加密技术中,加密与解密用的是相同的密钥,过程快速而简单。而非对称加密技术的密钥是由公钥和私钥组成的,公钥可以发给任何发出申请的人,私钥只能由用户保管。若用公钥对数据进行加密,那么只有对应的私钥才能解密。若使用私钥对数据进行加密,只有对应的公钥才能解密。加密与解密需要使用不同的密钥,所以该算法被称为非对称加密。在区块链中,非对称加密技术可以用于数据的加密传输和数字签名。
4.3.2 网络层技术
区块链网络是一个点对点网络,没有中心服务器,信息的传播、校验和记录工作均由网络中的所有节点共同完成。网络层技术包括在点对点网络中各个节点保持联系的方式,如P2P网络、数据传播机制和数据验证机制。
1.P2P网络
P2P网络是一个去中心化的点对点网络,该网络中没有服务端和客户端,网络结构由多个成员节点组成,不同节点之间没有层次之分。
2.传播机制
区块链中数据传输以“广播”的形式进行。当一个节点向外发出消息时,该消息会随机发送到网络中的邻近节点。邻近节点收到信息便会对其进行验证,验证成功后节点会将该消息转发至自己的邻近节点。不断重复这个过程,直到该消息被“广播”至整个网络。
3.数据验证机制
数据验证机制是区块链中极为重要的一环。信息的传输和新区块的生成都需要经过区块链网络所有参与者的验证,若验证无效,信息或新区块则会被立即抛弃。具体的验证过程则基于事先达成的协议来进行,如交易的格式、交易的数据结构、格式的语法结构、数据签名的正确性等。
4.3.3 共识层技术
共识层技术包括各类共识机制,也称共识算法。共识机制保证区块链各个节点在进行数据复制时的一致性。常见的共识机制有工作量证明机制、股权证明机制和股份授权证明机制。常见共识算法的优点和缺点如表4-1所示。
表4-1 常见共识算法优缺点
4.3.4 合约层技术
合约层封装区块链中的各类脚本代码及更为复杂的智能合约。合约层是实现区块链可编程性和进行数据操作的基础,能够降低人工干预成本和运行风险。
1.脚本代码
脚本本质上是区块链中的一组指令列表。脚本代码是区块链功能实现的基础,不同脚本的组合可以实现各种所需的业务功能。脚本代码的结构简单,程序规则固定,灵活性较低,较为稳定,提高了系统的安全性。
2.智能合约
智能合约是被写入区块链中的去中心化程序代码,它封装了若干预定义的状态、转换规则、触发条件及应对操作等,在满足特定条件后,程序便会自动执行。智能合约是区块链底层数据的可编程性的基础,并为区块链的上层应用提供了接口,使得区块链技术的应用范围更加广阔。
4.3.5 跨链技术
跨链技术泛指两个或多个不同区块链上的资产通过特定的可信机制互相转移、传递和交换的技术。目前主流的跨链技术有公证人机制、侧链技术和哈希时间锁定三种。
1.公证人机制
公证人机制也称见证人机制,该机制以一种中介的方式实现链与链的连接。公证人机制的跨链技术实现比较简单,并能够灵活地支持不同类型的区块链体系。但公证人机制的缺点也十分明显,即交易的安全性完全由公证人系统保障,是一种中心化的模式,需要交易双方给予公证人较大的信任。
2.侧链技术
侧链可以被认为是一种协议,它可以让资产安全地从主链转移到其他区块链上,或者将其他区块链的资产安全地转移到主链上。侧链与主链的沟通过程被称为是“双向锚定”,即侧链和主链在交易中一方要以另一方的行动为基准。以比特币的转移为例,一定数量的比特币会暂时被锁定在比特币区块链上,然后等量等值的代币在侧链上释放,当等量等值代币在侧链上被锁定时,比特币区块链上的原始比特币就可以被释放。不同的区块链通过同一侧链连接后便可进行数字资产交易。
3.哈希时间锁
哈希时间锁支持不同的区块链进行一定数量的资产交换。哈希时间锁是哈希锁和时间锁的结合,迫使资产接收方在截止时间之前确定收款,并生成一种收款证明给付款人,否则资产会归还给付款人。收款证明可以被付款人用来获取收款人区块链上等量价值的资产或触发其他事件。