区块链技术原理

2019-11-01 17:20:32 3309

1.区块链的基本架构

区块链本质上是一串由数据块(区块)相互关联形成的网络系统,类似于一本账簿,则每个区块相当于一张帐页。如图1所示,一个区块主要分为两部分:区块头和交易数据。区块头里记录的是这个区块的元数据,包括区块的高度(即在链上的位置编号)、版本号、创建的时间戳(timestamp)、前后两个区块链的哈希(hash)值、用于计算工作量证明的Nonce值和难度目标、梅克尔(Merkle)树的根哈希值。交易数据部分用梅克尔树的方式记录了一定时间(比特币是10分钟)内产生的所有交易的信息,每个区块可以记录数百或上千条交易信息。在一个区块链中,最早被构建的第一个区块称为“创世块”,只包括自身的哈希值。后面每个区块都包含两个哈希值,分别是验证上一个区块(父区块)和该区块信息有效性的识别码。这样通过两个哈希值之间的前后指向关系,所有区块依次相连就构成了区块链(图1)。


640wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1.jpg

梅克尔树(Merkle tree)相当于区块链信息的数字指纹或DNA,可以验证交易数据在链上各节点传递过程中是否已经被篡改。从创建过程来看,是自下而上分层的哈希二叉树。首先,在最底层利用SHA256算法求出每笔交易的哈希值。然后,以此作为“叶子节点”两两相连再次代入SHA256算法,得到上一层32个字节的哈希值。如果“叶子节点”只有奇数个,则需要复制最后一个节点。如此循环归结到最上层单个节点,得到梅克尔根的哈希值。这个值又相当于每个区块的数字指纹,详细记录其中包含的所有交易数据。即便对交易数据稍作修改都会引起梅克尔根值发生很大变化、进而改变整个区块的的哈希值。任意变动父区块的数据也会导致子区块和后面所有区块的数据(哈希值)发生变动。因此,要修改任意一个区块链的数据只能将后续所有区块都重新生成。但是,重新生成区块面临着巨大的工作量。当后面存在6个以上区块时,巨大的工作量和时间、资源消耗造成实际上不可能全部篡改这些区块的数据。正是这种历史数据不可更改的特性,确保区块链具有较高可信度和安全性。


2.区块链的运作流程


在区块链网络中,每个参与者(peer)控制的计算机终端构成一个节点(node),他们彼此平等、各自独立拥有全网数据的副本,称为分布式存储(distributed storage)。区块链本质上是分布式账本技术,各个节点构成一个对等网络(peer to peer network),又称P2P网络。每个节点通过唯一对应的密码(即私钥)和地址(即经哈希运算得到的公钥,相当于用户名)来管理自己的“钱包”。如图2所示,在区块链上完成交易的过程包括以下几个步骤:


4.jpg

(1)创立交易。交易双方经过协商达成协议,买方使用存储在“钱包”中的地址和私钥进行数字签名,证明自己对数字货币的所有权并且不能被其他人更改。

(2)链内广播。由买卖的某一方在区块链上发出申请,并通过P2P网络的泛洪(flooding)路由协议等广播通知链上所有节点的参与方。如果后续被任一节点验证无效,则停止在区块链上的广播。

(3)检查确认。各个节点在区块链的本地副本上分析数字签名、验证买方身份合法性,以及是否有足够多的货币余额,即区块链上所有指向该节点的未完成交易输出(UTXO)。所有节点验证通过后,交易信息被记入各节点副本中。

(4)封装区块。在10分钟内产生的所有交易通过各节点验证后,被分别集中打包构成一个候用区块。每个参与者都可以对未记入区块链的交易内容进行记录。为了避免多节点同时记账带来的信息混乱,每次只有一个参与者能够将自己记录的内容写入区块链,并获得相应的收益。以比特币为例,2009年1月创立之初每个区块奖励获胜节点50个比特币,此后每4年减少一半,直到大约2140年约2100万个比特币全部发行完毕。此外,交易方还要支付给记账节点一定的交易费用。

(5)竞争记账权。区块链会根据某种资源占有率来决定记账权归属,经各节点普遍认可的决定机制称为分布式共识(distributed consensus)。其中,最常用的工作量证明(proof of work,PoW)依据的资源是计算能力。其他的共识机制中,权益证明(proof of stake, PoS)依据各节点持有的加密货币数量,委托权益证明(delegated proof of stake, DPoS)则是指用户将自己持有的加密货币换成股票,从而竞争记账并获得奖励的权利。


其中,PoW的具体过程如下:①生成用于给记账权节点发放奖励和手续费的交易创币(coinbase)交易,并与其他所有将要写入区块的交易组成列表,通过梅克尔树算法生成梅克尔树根哈希值,②将其和区块版本、父区块哈希值、时间戳、难度目标和Nonce值等字段打包组装成80字节的区块头,采用SHA256等运算求出区块头的哈希值。③其中,难度值决定产生一个合法区块所需要的哈希运算次数。例如,比特币系统为了保证平均10分钟产生一个区块,每产生2016个区块(2周时间)会根据全网算力的变化所有节点自动统一调整难度值。调整公式:新难度值=旧难度值×(过去2016个区块花费时长/20160分钟)。难度目标值是最大目标值与当前难度值的比率,其中最大目标值为恒定值。④参与竞争的节点不断修改区块头中的Nonce字段值(通常是递增1),对每次变更后的的区块头做双重SHA256运算。当结果值小于当前网络的目标值时则解题成功,工作量证明完成。竞争记账权的行为和参与者又分别称为“挖矿”和“矿工”。


(6)记账上传。首先完成工作量证明的参与者在链上广播解题答案。经多数节点验证后得到记账权,把新区块记入已存在的区块链中,每个节点都更新本地副本。

(7)交割转账。数字货币从买方转移到买方的“钱包”,记账的“矿工”账户转入相应收益,以补偿其“挖矿”所进行的高强度运算和设备、电力等资源付出。



3.区块链的主要特征

区块链的基本架构和交易运行流程说明,它依靠加密算法、分布式记账和共识机制等技术,在链上各节点间构建起了一种新的信任体系、实现了安全、可验证、平等的价值传输,打破了传统的中心化机构对授信的垄断以及由此带来的低效率、信息不对称等问题。总体而言,区块链具有以下五个方面的特征。


(1)分布式结构。此处英文为“decentralized”,可以直接翻译成“去中心化”。但是,软件系统的网架结构包括单中心、多中心和分布式3种,区块链的“点对点”(P2P)模式指的是第3种,第2种虽然存在多个中心也属于“去中心化”结构。这是区块链颠覆性特点和核心优势。所有数据的存储、传输、验证和交易都通过各节点的电脑或手机等终端上的应用程序完成,不依赖于任何中心化的硬件或机构。实现点对点达成共识基础上的直接交互,可以实现实时交易结算,使交易更加自主、简单和节约资源。所有节点具有同等的权利和义务,排除了被银行、信用卡公司和征信机构等中心化代理的风险,加速了资金和资产的流通、提升了价值的流动性。分布式结构还意味着系统中的数据块由所有具备记账功能的节点共同维护,任一节点数据的损坏或灭失都不会影响整个系统的运作,也降低了节点参与人故意作恶的道德风险。

(2)防篡改性。采用分布式记账技术,链上每个节点都可以复制持有一份完整的数据。任何人要改变区块链里面的信息,至少要有能够控制链上51%节点的算力,这显然几乎无法做到。每个新区块保留时间戳、严格按照时间先后顺序被上传到链上。区块链采取不可逆的单向哈希算法,将父区块身份识别哈希值和所有交易信息压缩换算成新的唯一的身份密码。内部数据信息的任意改动都会导致哈希值彻底改变,从而被后续的节点所察觉和排斥。借助分布式系统各节点的工作量证明等共识算法,可以用强大的算力消耗或代币数量等增加破坏系统难度。所有这些都使得篡改区块内的数据成本极高,拥有足够强算力的节点可以通过竞争记账权获取更多的奖励和收益。

(3)可追溯性。分布式记账、时间和哈希换算上的不可逆性,使得每个节点的行为数据都被所有节点清晰无误地记录下来,参与各方只能自动化依规处理,避免欺诈、伪造等失信行为。此外,也便于监管机构实时监控、追踪和还原链上活动,提高监管透明度和工作效率。

(4)保密性。各节点之间基于正确的地址和算法即可进行彼此识别和数据交换,无需获取对方的真实身份,也不需要传统的通过第三方认证中心(certificate authority, CA)颁发数字证明进行实名认证。采用公钥公布地址、私钥进行签名和身份认证相配合的方法,使链上交易具有高度的匿名性,解决了中心化机构数据存储不安全的问题。

(5)开放性。区块链技术通常是开源的,除了交易各方的私有信息被加密外,公共链的代码高度透明、对所有人开放,任何人都可以通过公开接口查询链上数据。以太坊(ethereum)等区块链平台还具有图灵完备性(即代替计算机解决所有问题)和高度灵活的脚本代码系统,支持用户创建高级货币、精确定义智能合约(smart contract)、开发应用终端。


提交成功!非常感谢您的反馈,我们会继续努力做到更好!

这条文档是否有帮助解决问题?

非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

在文档使用中是否遇到以下问题: