APP下载

区块链技术研究综述

2020-08-14沈梦姣张厚军

无线互联科技 2020年10期
关键词:挖矿哈希块体

沈梦姣,张厚军

(嘉兴职业技术学院,浙江 嘉兴 314036)

相较于区块链技术,人们最先认识的是基于区块链技术而诞生的比特币。比特币的历史可追溯到2008年11月1日,中本聪在P2P foundation网站上发布了白皮书《比特币:一种点对点的电子现金系统》[1],比特币是一种新型的虚拟数字货币,由网络节点的计算生成,任何人通过一台连接在互联网的电脑,都可以挖掘、买卖比特币。2017年12月17日,比特币达到历史最高价19 850美元,飞速攀登的市值成功地让金融、医疗、物流等各行业的相关人士开始关注比特币背后的实现技术—区块链。区块链技术正在迅速得到全世界的认可,是学术研究中的前沿领域。

1 区块链技术

区块链不是一种单一全新的技术,而是数学、密码学、互联网和计算机编程等多学科融合的技术。这些学科技术与数据库相结合,可以有效地对数据进行验证、存储、生成、更新、传输、访问等操作,所谓有效即可以保证数据的一致性、连续性、完整性,数据是难以被篡改的,且由于区块是通过去中心化和去信任的方式集体维护一个可靠数据库,所以也被称为分布式账本。其中,去中心化是区块链最显著的特征,所谓去中心化,就是说不依赖于中心节点来进行记账,网络中所有节点地位平等,共同来管理系统中的数据。这种数据管理是基于块链结构来验证与存储数据,利用共识算法生成与更新数据,利用密码学方式传输与保护数据,网络上的每个节点共同监督,所以不需要第三方信任机构的背书。传统的中心化方式进行数据管理,存在中心节点易于被攻击的问题,而区块链去中心化的特征,使得攻击者需要对整个网路节点进行控制和破坏,显然比集中攻击一个节点要难得多。去信任实际上就是将信任人转换为信任机器,即所有参与者对共识机制的认同。区块链技术可以通过去中心化和去信任的方式集体维护一个可靠数据库,其实现的最基本原理可以简单概括为区块数据存储、区块成链和挖矿。

2 区块数据存储

区块链具有独特的数据存储方式[3],是以“块”的概念保存数据的。比如比特币在区块链上存储的是比特币的交易数据,以块为单位进行存储,一块的大小在1 MB左右。数据按产生的先后顺序写入块中,一个块的数据写满之后(到达1 MB大小),再开一个新的块存储数据。每个区块可以根据职能分为区块头和区块体两个部分,其中,区块体主要用来存放交易数据,而区块头存放区块的元数据。

(1)区块体:交易数据是以默克尔树(Merkle)[1]结构进行存储的,即数据被存储在默克尔树的叶节点上,叶节点的交易数据产生的哈希值被存放在该叶节点的父亲节点上,至于其他非叶节点,是存放在该节点的两个子节点哈希值两两合并之后的新哈希值上。具体的默克尔树结构存储交易数据情况如图1所示。

图1 区块体交易数据存储结构

(2)区块头:可以说是整个区块的核心,存放的是区块的元数据。元数据包含的数据类型很多,包括Hash值、父Hash,Merkle根、版本号、区块高度、时间戳、Nonce、难度目标等,具体数据类型和有关说明如表1所示。

表1 区块头数据字段

3 区块成链

在区块链中,区块和区块之间形成了一个链表的存储结构[2]。在上述区块数据存储中,提到过当前区块的哈希值,也就是区块的数字签名,是根据区块的内部数据,用哈希算法生成的一个特殊的(数字)签名。哈希算法是一个极其复杂的数学公式,将任意字符串代入公式,都会输出一个独一无二的64位字符串,可以作为区块的唯一标识,是区块身份的认证。哈希函数种类繁多,比特币区块链用的是其中一种著名的SHA-256哈希算法。在上述区块数据存储中,也提到了每一个区块都会保存其上一个区块的哈希值,有效地保障了链上的数据不被篡改。假设有3个区块,如图2所示。Block1生成的哈希值是Hash1,Block2是Hash2,Block3是Hash3,且Block2中保存了Hash1,Block3中保存了Hash2。如果Block1中的数据被篡改了,其对应的哈希值也会改变,假设变化为Hash1_1,此时Block1和Block2之间的链条就断了。区块一旦断链,就意味着该区块被篡改了。也可以继续去篡改Block2中保留的Hash1为Hash1_1,但是同时Block2的哈希值也不能再是Hash2了。也就是说,改掉一个区块上的数据,必须为该区块后续的所有区块重新去计算哈希值,被认为是几乎不可能实现的。

图2 区块成链

4 挖矿

在上述区块成链中,说到了一种篡改区块数据的想法,就是将篡改后的区块生成的新哈希值塞入下一个区块,然后逐个将之后的区块生成新的哈希值,从而使得区块链保持完整的链条。然而这种想法是很难实现的,因为区块链协议对于哈希值是有特殊要求的,只有生成了符合要求的哈希值的区块才能入链。在区块数据存储中,提到过区块头中有一个Nonce字段,是一个随机的数字,人们需要去找出一个Nonce,使得区块最终得到的哈希值是符合区块链协议要求的哈希值,这个过程就是众所周知的“挖矿”。假设有人恶意篡改了一个区块上的数据,区块的哈希值改变造成断链。为了隐瞒数据被篡改的事实,篡改者需要不断去通过“挖矿”来为该区块后续的区块们计算出新的符合区块链协议要求的哈希值。那么其他的用户也在不断地通过“挖矿”为区块链添加新的区块。这意味着一个矿工所拥有的算力需要超过全网其他矿工的总算力,“以一敌众”往往是不现实的。

5 区块链存在的技术问题

区块链在设计之初就从不同的维度保障数据进行验证、存储、生成、更新、传输、访问等操作,尽管区块链技术以其独有的共识机制、防篡改机制、共监管机制、可追溯机制等原生优势极大地保障、维护了一个可靠数据库,但是随着区块链规模的逐渐扩大和被广泛应用到教育、物联网、供应链、医疗等全新的领域,同时也面临着很多随之而来的中心化、效率、隐私和安全等方面的问题。尽管区块链并不完美,但仍然无法阻止各领域优秀的企业、专家、研究者对其进行不断的钻研。况且技术总是不断发展的,区块链作为一种技术创新,在未来必定能得到进一步改善。

猜你喜欢

挖矿哈希块体
合力攻坚 全面治理高校“挖矿”
多措并举 全流程整治“挖矿”
一种新型单层人工块体Crablock 的工程应用
一种Zr 基块体金属玻璃的纳米压入蠕变行为研究
块体非晶合金及其应用
基于维度分解的哈希多维快速流分类算法
波浪作用下斜坡上护面块体断裂破坏的数值模拟
基于同态哈希函数的云数据完整性验证算法
一种基于Bigram二级哈希的中文索引结构