区块链中的核心概念及分布式账本技术
扫描二维码
随时随地手机看文章
我们假想太平洋上有一个与世隔绝的海岛,名叫桃花岛。在桃花岛上,每个家庭拥有定规模的资产, 这些资产以粮食、蔬菜、日用品、房地产等形式存在。岛上的物质交换只在岛内居民之间进行。所有的交易都由这个岛上唯一能写会算的人一 岛主黄老邪记录。每天随着岛内交易的进行,交易信息都在不断增长,黄老邪将所有的交易信息都记录在一本账本中, 并由自己来保管。
但是,由黄老邪一人记账的模式出现了诸多问题,随着岛上居民的交易行为日益频繁,每天要记的账目越来越多,黄老邪的记账压力也越来越大。为了缓解自己的工作压力,黄老邪将记账技能传授给岛上的所有居民,使他们都参与到记账过程中来。黄老邪要求居民将交易金额及交易时间等信息都记录下来,并且每一笔交易记录经交易双方签字后方可生效。黄老邪还为岛上每一个家庭分配了各自独立的信箱,只有该家庭的成员才能使用钥匙打开自家的信箱,查看信箱中储存的账目信息。有了信箱以后,岛上的记账模式发生了翻天覆地的变化:当新的交易记录产生时,交易人将一-页记载了新的交易信息的记录放入每家每户的信箱中。这些交易信息按照放入信箱的先后顺序形成了一个天然的账本,每一户居民都可以打开信箱进行查看。
在这种情况下,即使有个别人将信箱中的信息进行篡改,整体的交易记录依旧不会出现偏差。居民只要拿出每个人那里保存的账本,根据多数原则确定统-的交 易历史,并纠正个别人手中错误的账本页目,就可以在无需岛主黄老邪监管的情况下完成记账。经过黄老邪改变后的分布式记账方式与我们下文所要阐述的区块链有异曲同工之妙。
什么是区块链
区块链本质上是一个分布式账本技术。如果以数学函数来类比的话,我们可以将分布式网络、共识机制、去中心化、加密算祛、智能合约、权限许可、价值和资产等要素理解为函数中的变量或因子。这些变量和因子的有机组合形成了区块链有别于传统技术的些新的技术特征。 在对 区块链进行更加深入的技术解 读前,我们需要先对区块链中的一些核心概念进行梳理 。
分布式账本技术函数见下图
区块链是一个动态的点对点网络
区块链的动态点对点网络
上文的故事中,由黄老邪一人记账的时期与我们如今的社会生活类似,都是由银行等中心化机构来对信息进行记录。相对应地,黄老邪改变记账模式后,岛上的居民都可以参与到记账环节中,每个居民之间都可以发生交易并自行进行记账,这与区块链点对点的特性很相似。
与传统的中心化集中式架构相比,区块链弱化了中央服务器的概念。各个节点不再区分服务器和客户端的关系,每个节点既可请求服务也可提供服务,各个节点可以直接交换资源而不再需要通过服务器的桥接,用户与用户之间可以实现资源的直接分享与利用。在区块链分布式网络中,所有节点的地位都是同等的。一笔刚通过验证且被传递到区块链网络中任意节点的交易会被发送到周边的相邻节点,而每一个相邻节点又会将交易发送到其他的相邻节点。以此类推,在短时间之内,一笔有效的交易就会传播到网络中的各个角落,直到所有连接到网络的节点都接收到它。
区块链也是一个动态的网络,不断有新节点的加入和原区块链网络中节点的退出。新节点的不断加入为系统引入新的资源,整个网络由此得以构建和发展,资源的丰富性与多样性随之扩充,点对点网络的分散性、健壮性、可用性与整体性能也将随着节点的数量增加而增强。
区块链是一个分布式账本
区块链的分布式账本结构
在桃花岛上,由黄老邪一人记账的时期,整座岛上只有一本账本来对所有的信息进行记录。改变记账模式后, 岛上的每一户人家都拥有一本账本,这就相当于区块链这个分布式的公共账本。
区块链推翻了传统的记账模式。与传统记账模式不同,区块链中的交易信息不再由单个机构来记录,而是由其中的每一个节点共同参与记账。在这个分布式网络上,每个节点都有账本的完整备份。如果有人想篡改账本上的记录,他必须改动各节点存储的账本备份,这就使篡改账本记录的行为难以实现。
区块链用哈希算法实现信息的不可篡改
随着新交易的不断产生,桃花岛每家每户账本里记录的交易信息也快速增长,越来越多的记录信息页会保存到信箱中。类似地,在区块链中,一个又一个新产生的区块会不断链接到现有区块链的尾端。如何能够保证这个记录信息页的每一页,以及区块链账本中的每一个区块都是真实准确、没有被篡改过的呢?
设想一下, 如果我们通过一种算法对账本信息进行加密,给区块链上第一个区块打上一个唯一的标签, 之后的每一个区块也通过加密后打上一个唯一标签,同时又能够包含前一个区块链的标签。这时,只要采用一种方法保证这个标签无法被轻易替换更改,那么就能保证这个区块记录的信息没有被篡改过。
哈希算法就是上面提到的区块链中保证交易信息不可篡改的单向密码体制。该算法的思想是接收一段明文, 以一种不可逆的方式将它转化成一段长度较短、位数固定的输出做列。这个加密过程是不可逆的,这就意味着无法通过输出散列的内容推断出任何与原文有关的信息。任何输入信息的变化,哪怕仅仅是一~位数字的更改,都将导致散列结果的明显变化。基于输出散列与输人原文一 一对应的特性,哈希算法可以被用于验证信息是否被修改。通过哈希算法可对一个交易区块的所有交易信息进行加密,并把记账内容压缩成一串数字和字母组成的字符串,这个字符串无法反推出原来的内容。区块链的哈希值可以唯一、准确地标识--个区块,并且任何节点通过简单地对区块头进行哈希计算都可以独立地获取该区块哈希值。如果想要确认区块的内容是否被篡改,那么利用哈希算法重新进行计算,记账信息没有变化,计算出的哈希值也将不会产生变化。
在区块链中,通常使用SHA-256的哈希算法进行区块的加密,该算法的输出长度为256位,即生成长度为32字节的随机散列。
区块链用公钥、私钥来标识身份
在区块链中,信息的传播按照公钥加私钥的方式进行。公钥相当于桃花岛上每家每户居民的信箱地址,当别人获知你的公钥时,可以与你通信。相应地,私钥相当于信箱的钥匙,只有拥有私钥的人才能查看信箱中的信件信息。在区块链中,数字签名可以用于验证信息发送者的身份,用户可以公布自己的公钥,然后发送可以被公钥所验证的、已经通过私钥加密过的信息。如果信息的接收者能够使用公钥解密加密过的信息,即可证明这条信息发送者的身份属实。上述过程可以用图3-4 表示:区块链中有两个用户Alic和Bob,Alicc想让Bob知道自己是真实的Alice,而不是他人冒充的。Alice 只需要使用私钥对文件签名并发送给Bob, Bob 使用Alice的公钥对文件进行签名验证,如果验证成功,则该文件一定是使用Alice的私钥加密的。由于Alice的私钥只由Alice一人持有,Bob 就可以确定文件的发送者正是Alice本人。
此外,公钥与私钥还可以保证分布式网络中点对点信息传递的安全。我们不妨假想这样一个情形: Alice想在分布式网络中发送一封情书给Bob。但由于分布式网络的信息传递特性,这封情书将被发送至每一个用户手中。Alice 不希望情书的内容被其他用户看到,因此Alice使用Bob的公钥对情书进行加密。网络中除Bob外的其他用户接收到这封经过加密的情书,看到的只是一段密文。只有Bob可以使用自己的私钥对密文进行解密,得到一份情书的明文。通过这个加密与解密的过程,Alice与Bob之间实现了点对点的数据传递。
在区块链的信息传递过程中,信息传递双方的公私钥加密与解密往往是成对出现的,即信息发送方使用私钥对信息签名、使用信息接收方公钥对信息加密,信息接收方使用对方公钥验证信息发送方的身份、使用私钥对加密信息解密。
区块链用Merkle树结构简化验证程序
Merkle树是区块链的基本组成部分,Merkle树的叶子节点存储的是数据文件的哈希值,非叶子节点存储的是对其下面所有的叶子节点值的组合结果进行哈希计算后得出的哈希值。区块链利用Merkle树这种数据结构存放所有叶子节点的哈希值,并以此为基础生成一个统一的哈希值。区块中的任何一笔交易的发生和交易信息的变动都会使Merkle树发生改变。在交易信息的处理、比对及验证的过程中,尤其是在分布式环境下进行比对或验证时,Merkle 树会大大减少数据的传输量和计算的复杂度。
Merkle 树结构图
区块链为每一笔交易盖上时间戳
黄老邪在传授记账方法时,要求居民将发生在桃花岛上的每一笔交易都记录下来,并且要求他们将交易发生的时间也一并记录在账本上,这就相当于区块链为每- -笔交易在发生时盖上了时间戳。
在区块链中,时间戳的应用是对每一次交易记录的认证,它就像交易合同公证一样,能够显示交易记录的真实性。时间戳作为区块元数据的一部分,具有天然的时间特性。从某种意义上讲,区块链的本质可以被理解为构造了一个永不停息、无坚不摧的时间戳系统。
在现实经济交易中,常常会出现信息欺诈等虚假交易现象。为了减少这些不法行为给交易中诚实守信的一方带来的损失,人们通常会寻求有公信力的第三方机构对交易进行核验。区块链通过时间戳来保证分布式账本的唯一一性, 避免双花问题的产生。时间戳从区块生成的一刻起就存在于区块之中,它扮演了区块链中的公证人的角色。与现有的公证机制相比,基于时间截的公证系统更为经济,并且完全可信。
区块链中的时间截比传统的公证制度更为可信,是因为时间签名是直接写在区块链上的,区块链中已经生成的区块不能以任何方式进行修改。一旦区块被修改,生成的哈希值就无法匹配,操纵行为也将由此而被系统检测到。区块链根据分布式的协议,构建了一个分布式的开放结构体系,交换的信息可以通过分布式记账的方式确定信息数据内容,加盖时间戳后生成区块数据,再通过分布式广播发送给各个节点,最终实现分布式存储。
对数据应用安全散列算法加盖时间戳,并将该随机哈希值在全网中进行广播能够证实一组数据在某一 -时刻是真实存在的,因为数据只有在该时刻的确存在,才能获取相应的随机哈希值。每个时间戳会将前一个时间戳纳入其随机哈希值之中, 每一个后面位置的时间截都会对前面的时间戳进行增强,这过程不断重复、依次推进,最终形成一个完整 的链条。时间戳与哈希算法、Merkle树共同作用,增强了区块链的安全性能。
时间戳证明存在性的功能可能是区块链的另一种用途,它或许会彻底改变人类的未来。由于区块哈希值的不可伪造性,一个区块能提供出哈希值即可证明区块哈希值存在于该区块生成时刻之后,就像你在一张白纸上写下了一串数字,说明的是数字出现的时间晚于白纸 这也称为时间点后向证明。时间点前向证明则需要构造一个包含数字摘要的交易,当该交易进入区块后,便可以证明你在该区块时刻之前拥有该数字摘要。
区块链使智能合约成为现实
1994年,密码学家尼克萨博(Nick Szabo)首次提出了智能合约的理念。 然而在过去的中心化体系下,智能合约几乎是没有意义的,因为保存在中心化系统中的合约可以被系统所有者随时修改甚至删除。但是有了区块链以后,智能合约可以被事先写入到区块链的分右式网络体系中。当合约中的某一事项发生时, 智能合约就会被触发并自动执行相应的合约条款。在这个过程中,某一个人或者某一个机构都不能够修改或删除合约,也无法阻碍智能合约的自动执行。
智能合约指的是一段部署在分布式账本中的代码,它可以处理信息,接收、储存和发送价值,是一个能够自动执行合约条款的计算机程序。从本质上讲,智能合约的工作原理类似于计算机程序中的if-then判断语句,智能合约以这样一种方式 与现实世界里的资产进行交互。
智能合约见图3-6。
智能合约拥有自治、自足和分布式的特点,它由代码定义并独立执行。智能合约的执行流程从双方达成合约协定时开始,通过将合约中的内容进行数字化编码并写入区块链中实现对合约内容的形式化。合约中约定的条件事项的发生将自动触发合约的执行程序。借助区块链技术,智能合约可能会在未来对人们的生活带来极大的改变。智能合约能够使得人与人之间的价值交易过程自动化和信任化,通过智能合约实现价值交易不仅节省了时间和金钱,还提高了交易的效率。在区块链技术中,智能合约在分布式交易所、金融衍生品、身份认证、医疗健康和科学发现等领域均有着广泛的应用。