站内搜索

区块链技术原理、应用详解与未来发展

  近年来,随着以比特币为代表的新型数字货币的迅速发展,作为比特币底层支撑技术的区块链技术也越来越受到人们的关注。与传统的中心化数据库相比,区块链通过对分布式数据存储、P2P传输、共识机制、加密算法和智能合约等传统技术的应用,使区块链具有去中心化、不可篡改、可溯源、多方维护、公开透明等特点。

  在区块链的相关研究方面,Yao等对区块链原理进行了简要概述,介绍了以太坊、Adept系统、超级账本等典型开源项目,但该工作对共识算法、智能合约等的介绍较为简单。文献介绍了区块链的基础技术,归纳了区块链的类型,指出了区块链的结构和工作原理,但对共识算法、隐私保护、智能合约等关键技术的研究过于简单。文献介绍了一些常见的共识算法,并对算法进行了对比,但其只是从比特币的交易脚本出发,简单介绍了智能合约的工作原理。本文梳理了PBFT,PoW,PoS,DPoS等共识算法的原理和流程。从智能合约的生命周期、运行原理、运行环境着手详细介绍了智能合约在区块链中的应用,列举了区块链中的常见安全问题,并对其攻击原理进行了详细介绍。

一、 概述

1.1 发展历程

  2008年,“Bitcoin:A Peer-to-Peer Electronic Cash System”中提出了被称为“比特币”的数字货币,比特币的设计初衷是在不信任环境下进行数字货币的支付,通过哈希函数、非对称加密、签名等密码学方法来实现用户的匿名以及交易的确认,通过共识机制对共同维护的数据达成一致,对信任危机提出了一种新的解决思路。

  自比特币问世以来,比特币的底层技术——区块链技术也在不断的发展,目前区块链的发展可分为3个阶段。

(1)区块链 1.0

  区块链1.0阶段也可以被称为可编程货币阶段,区块链使互不信任的人在没有权威机构介入的情况下,可以直接使用比特币进行支付。比特币以及随后出现的莱特币、狗狗币、以太币等电子货币的出现,使得价值得以在互联网上流通,而去中心化、跨国支付、随时交易等特点使数字货币对传统金融造成了强烈的冲击。

(2)区块链 2.0

  区块链2.0阶段可以被称为可编程金融阶段。受比特币交易的启发,人们开始尝试将区块链应用到包括股票、清算、私募股权等其他的金融领域。2016年4月,花旗银行、德意志银行、汇丰银行等80多家金融机构和监管成员依托R3公司发布的区块链平台Corda组成了R3联盟。2015年10月,纳斯达克在Money20/20大会上宣布上线用于私有股权交易的区块链平台—Linq,避免了人工清算可能带来的错误,同时大大减小了人力成本。2015年10月,Ripple公司提出跨链协议—Interledger,该协议旨在打造全球统一的支付标准,简化跨境支付流程。区块链技术的应用使金融行业有希望摆脱人工清算、复杂流程、标准不统一等带来的低效和高成本,使传统金融行业发生颠覆性改变。

(3)区块链 3.0

  区块链3.0阶段可以被称为可编程社会阶段。随着区块链的发展,人们根据其特点将区块链应用到各种有需求的领域。例如应用区块链匿名性特点的匿名投票领域,利用区块链溯源特点的供应链、物流等领域,以及物联网、智慧医疗、智慧城市、5G、AI等领域。区块链将不可避免地对未来的互联网以及社会产生巨大的影响。

1.2 工作原理

  根据目前已有的区块链平台,按准入机制可以将区块链分为3类:公有链、联盟链、私有链。私有链多用于搭建本地区块链以及对智能合约进行发布前的调试,因此本文主要介绍公有链和联盟链。

1.2.1 公有链

  在公有链中,任何节点无需许可便可自由地加入或退出区块链网络,加入区块链网络的节点可以得到从创世区块到当前区块上的所有数据,全部节点通过共识机制对新区块的产生以及对区块上记录的交易达成一致,共同维护区块链的稳定。

  公有链以比特币(Bitcoin)与以太坊(Ethereum)为代表。图1给出了比特币的工作流程。节点A与节点B之间发生转账交易,节点A首先将自己的交易广播到网络中的所有节点,节点在收到交易请求后验证节点A的签名,验证通过后将一段时间内接收到的交易组成新的区块,各节点(矿工)通过工作量证明(ProofofWork,PoW)竞争算力来获得新区块的记账权,在节点取得记账权后将该区块发布到网络中,其余节点在监听到新区块后检查区块及交易的正确性,若新区块符合要求则将新区块保存到本地并与之前的区块链接形成区块链,同时作为对矿工消耗的计算、电力等资源的补偿,获得记账权的矿工将得到一定的比特币(2020-2024年为6.25个比特币)以及其中的交易费作为奖励。
………………

二、区块链架构

  随着区块链的发展,不同实现目的的区块链平台相继出现,虽然它们的体系结构并不完全相同,但依然存在着诸多共性。当前通常把区块链平台分为5层,分别是数据层、网络层、共识层、合约层和应用层。

2.1 数据层

  数据层是所有区块链平台中的最底层,通过封装的链式结构、非对称加密、共识算法等技术手段来完成数据的存储和交易的安全实现,通常选择LevelDB数据库来存储索引数据。区块链在Haber等的研究基础上,使用更简单、运算更快的哈希指针来完成区块之间的链接—通过每个区块头中包含的前块哈希(除创世区块外)使当前区块指向前一区块,从而将一个个孤立的区块在逻辑上连接起来,形成一条链状结构。其在块内通过使用Merkle树来组织块内交易,如图4所示。每个叶子节点为块内交易数据的哈希值,交易数据两两哈希形成它们的父节点,父节点再两两哈希形成它们的上一层节点,如此重复执行直到生成最终的Merkle根,这样保证了任何交易数据的更改都可以通过对比Merkle根而被察觉,从而为交易查询提供了快捷可靠的保障。节点之间通过共识算法来保证数据的一致性,使区块链在全网公开的情况下保证数据的不可篡改和可追溯。

  每个区块都是由区块头和区块体两部分组成。区块头中通常存放着前块哈希、时间戳、Merkle根、随机值、难度目标等数据,区块体中存放着交易数据。目前,数据存储模型主要分为基于交易的模型和基于账户的模型。比特币采用基于交易的模型,在每笔交易中都可以有多项输入和多项输出,通过输入可以一直向前追溯该笔金额到最初的挖矿奖励,通过输出可以向后追溯该笔金额是否被花费,如果一笔交易的输出没有与之对应的输入,则说明该笔金额未被花费;通过获取所有关联比特币地址的未花费输出(UnspentTransactionOut-puts,UTXO)形成一个集合,可以快速地验证交易中的比特币是否被花费,以防止针对数字货币的双花攻击。以太坊、HyperledgerFabric等采用基于账户的模型。在以太坊中,账户分为外部账户(ExternallyOwnedAccount)和合约账户(ContractAccount),外部账户的地址是由用户的公钥通过加密产生的,用户通过自己的私钥来控制外部账户完成数字货币的转移和智能合约的部署,以及货币余额状态的查询。合约地址是智能合约的调用地址,根据合约创建者地址和该地址发送过的交易数进行 RLP编码,再通过 Keccak-256进行哈希计算得到,可保存货币余额状态及合约状态,合约账户有对应的代码关联并由代码控制。

2.2 网络层

  区块链通过对等节点(Peer-to-Peer)的方式完成组网,消息和数据的传输直接在节点之间完成,节点可以选择在任意时刻加入或退出网络而无需中间环节或中心服务器的参与,因此网络层采用P2P协议作为传输协议。若某一节点发布了一个新交易到区块链网络中,时刻监听网络的其余节点,在监听到新的交易后验证交易的签名,验证通过后将交易放入新区块中,获得记账权的节点将新区块发布到网络中,其余节点在监听到新区块后若验证通过,则将新区块存入本地区块链中,并且以新区块的哈希值作为前块哈希继续运行PoW算法来争取下一区块的记账权。
………………

三、共识机制

  共识算法的研究由来已久,可分为证明类、随机类、选举类、联盟类、混合类[21]。解决传统分布式数据库一致性的算法有Paxos、基于Paxos且更容易理解与实现的Raft算法,但这些共识算法均是默认节点诚实可靠的非拜占庭容错(CrashFaultTolerance,CFT)算法,不能直接运用在无法保证节点诚实性的区块链网络中。1982年,Lamport等正式提出了“拜占庭将军问题”:拜占庭的将军们需要在有叛徒干扰的情况下对进攻和撤退等作战计划达成一致。对于解决“拜占庭将军问题”,Lamport于同年提出了拜占庭容错算法(ByzantineFaultTolerance,BFT),随后Castro等于1999年提出了实用拜占庭容错算法(PracticalByzantineFaultTolerance,PBFT),PBFT算法将BFT算法的复杂度从指数级降到了多项式级,使PBFT算法能够真正地在实际中应用。拜占庭容错算法的研究也让共识算法从解决传统的分布式数据一致问题进入到解决区块链共识的全新阶段。
………………

四、智能合约

  智能合约的概念是由Nick于1994年提出的,智能合约最初的定义是一套以数字形式定义的承诺,包括合约参与方可以在上面执行这些承诺的协议。但是,由于早期的技术和使用场景的限制,智能合约在很长一段时间进展缓慢,直到比特币的底层技术—区块链的出现,才使人们发现区块链的去中心化、可信执行环境完美契合智能合约,智能合约同样也为区块链提供了可编程性,拓展了区块链的应用前景。

4.1 生命周期

  智能合约的生命周期可大致概括为协商、开发、部署、运行、销毁这5个阶段。智能合约的主要工作是在开发、部署、运行这几个阶段完成的。智能合约的本质是将传统合约变成一段可以自动执行的程序,在合约形成之初合约的创造者们应就合约内容进行协商,此时的合约与传统合约一样从法律、商业等角度形成了一套行为规则,通过规则的触发产生不同的结果。在规则确定之后,就由专业的技术人员将规则程序化,在经过验证测试后得到逻辑与原合约规则相一致的代码,最后将合约发布到区块链上。在合约发布之后,用户可以通过触发合约的事件来完成合约的调用,而当合约不再被需要时则由合约的部署者通过调用合约函来数完成合约的自毁。
………………

五、隐私与安全

  随着区块链的不断发展,不断增加的使用人数和不断扩大的应用领域使区块链承担了越来越多的价值,随之而来的隐私与安全问题也越来越受到人们的关注,甚至影响到了区块链的后续发展。

5.1 隐私性

  中本聪在设计比特币时,通过每一次交易都生成一个新地址的方法来避免第三方对用户的交易行为进行归纳分析,进而保护用户的身份信息。但比特币并没有做到完全的匿名,同时所有节点都可以任意读取区块链上的交易记录,这也会造成用户的隐私泄露。
………………

六、区块链的进展与未来

6.1 可扩展性

(1)多链技术

  多链指在区块链中有多条并行存在的链。分片是属于多链技术的一种应用。现在主流区块链几乎都是采用PoW共识、PoS共识、PBFT共识或是它们的改进算法,但是吞吐量一直是制约区块链发展的重要瓶颈。分片技术[74-75]是当前解决区块链交易处理速度慢、系统吞吐量低的较好思路,具有很好的研究前景,以太坊就计划在其新版本中使用分片技术来提高系统的吞吐量。区块链中的分片技术的核心思想是将区块分配到不同的片区,该片区内的节点只负责处理以及验证该分片内的交易,这样在整个区块链网络中通过各个片区并行地运行使区块链网络的处理速度成倍增长。但分片技术若要很好地在区块链中运用,则必须要解决跨片通信和状态交换等问题。除此之外,多链技术还包括HyperledgerFabric的通道技术、Cosmos中的zone。

(2)侧链技术

  侧链技术指在主链之外还存在一条独立的区块链,这条区块链上可以有自己的账本、交易类型、共识机制、智能合约,通过双向锚定的方式可以实现数字资产在主链和侧链上的互转,是一种可以在不改变主链的情况下扩展主链性能的一种方式。闪电网络是比特币的一种侧链,是一种实现微支付的手段,能够满足微支付的高频、小额、立即确认的需求。在闪电网络中支付是在主链之外完成的,主链只记录交易的最终执行结果,这不仅变相扩展了主链的存储空间,也保护了交易的隐私性。MimbleWimble也是一种比特币的侧链方案,它通过取消比特币的交易地址、隐藏交易金额、删除交易的中间状态使其具有较强的隐私保护性能,同时能节省主链的存储空间。

………………

  区块链技术原理与应用综述 PDF 完整版下载(文字可复制):

https://www.aliyundrive.com/s/k5rZG7d1Qfd 提取码: g81q
Copyright © XiakeShu.com 版权所有 | 备案号:浙ICP备11004787号-12