区块链浅识

论坛 期权论坛 期权     
程序员写文章   2019-10-27 12:03   3324   0










区块链浅识
作者:刘兴兵









把区块链作为核心技术自主创新重要突破口
                                           ---习近平


前言
2019年5月17日,清华大学电子商务交易技术国家工程实验室柴跃廷主任给MEM同学做了有关电子商务和数字经济方向的《最佳工程管理实践》的前沿讲座[1],在讲到有关下一代电子商务的可靠性问题的时候,解读了当下非常热门的一项技术——区块链。本文试图在柴老师讲座内容的基础上通过查阅文献,对区块链技术及发展现状做基本解读。
区块链的由来
区块链的由来[1]
区块链是随着比特币等数字加密货币的日益普及而逐渐兴起的一种全新的去中心化基础架构与分布式计算范式。被认为是继大型机、个人电脑、互联网、移动/社交网络之后计算范式的第五次颠覆式创新,是人类信用进化史上继血亲信用、贵金属信用、央行纸币信用之后的第四个里程碑[2]。
比特币是世界上第一种较为完善的、广为流传的数字货币。2008年10月31日,一个化名为中本聪的人提出了比特币的概念并发表了设计白皮书。首个比特币于2009年1月3日产生。比特币是一种完全去中心化的实现,货币的发行与流通不需要任何中心化机构参与。
和法定货币相比,比特币没有一个集中的发行方,而是由网络节点的计算生成,谁都可能参与发行比特币,而且可以全世界流通,可以在任意一台接入互联网的电脑上流通,不管身处何方,任何人都可以挖掘、购买、出售或收取比特币。
比特币的的本质其实是一组复杂方程的解,发行或制造比特币的过程被称为“挖矿”,以人民币来比喻的话,比特币就是人民币的序列号,你知道了某张钞票上的序列号,你就拥有了这张钞票。而挖矿的过程就是通过庞大的计算量不断的去寻求方程组的某个解,这个方程组被设计成了只有2100万个解,所以比特币的上限就是2100万。
要挖掘比特币可以下载专用的比特币运算工具,完成Bitcoin客户端安装后,可以直接获得一个Bitcoin地址,并被分配一个公有密钥和一个私有密钥,当别人付钱的时候,只需要把把自己的地址共享给别人,就能通过同样的客户端进行付款。同时,你需要备份你包含有私有密钥的钱包数据,保证财产不丢失,如果不幸格式化银盘,个人的比特币就将完全丢失。
比特币可以用来兑换,可以兑换成大多数国家的货币。使用者可以用比特币购买一个虚拟物品,比如网络游戏中的衣服,帽子,装备等,只要有人接受,也可以使用比特币购买现实生活中的物品。
比特币创造性的集成了众多的成熟技术,设计了巧妙的机制,解决了去中心化条件下数字货币面临的诸多难题,可以说是数十年的密码学和分布式系统的巅峰之作:
  • 一种去中心化的点对点网络(P2P网络),避免货币被操控。
  • 一种基于分布式交易账簿的货币流通记录机制和技术(区块链)。   
  • 一种去中心化的货币发行机制与技术(分布式挖矿)。
  • 基于密码学的加解密过程,确保安全。
区块链概念[1]
区块链狭义来讲,区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据记录与存储方式。并以密码学方式保证数据的不可篡改和不可伪造。广义来说,区块链技术是利用块链式数据结构来验证和存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学方式来保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构和计算方式。

区块链的特点[2]
  • 首先是去中心化:区块链数据的验证、记账、存储、维护和传输等过程均是基于分布式系统结构,采用纯数学方法而不是中心结构来建立分布式节点间的信任关系, 从而形成去中心化的可信任的分布式系统;
  • 其次是时序数据:区块链采用带有时间戳的链式区块结构存储数据,从而为数据增加了时间维度,具有极强的可验证性和可追溯性;
  • 第三是集体维护:区块链系统采用特定的经济激励机制来保证分布式系统中所有节点均可参与数据区块的验证过程(如比特币的“挖矿”过程),并通过共识算法来选择特定的节点将新区块添加到区块链;
  • 第四是可编程:区块链技术可提供灵活的脚本代码系统,支持用户创建高级的智能合约、货币或其他去中心化应用。例如,以太坊(Ethereum)平台即提供了图灵完备的脚本语言以供用户来构建任何可以精确定义的智能合约或交易类型;
  • 最后是安全:可信区块链技术采用非对称密码学原理对数据进行加密,同时借助分布式系统各节点的工作量证明等共识算法形成的强大算力来抵御外部攻击、保证区块链数据不可篡改和不可伪造,因而具有较高的安全性。
区块链关键技术
区块链的基础模型[2]
一般说来,区块链系统由数据层、网络层、共识层、激励层、合约层和应用层组成。其中,数据层封装了底层数据区块以及相关的数据加密和时间戳等技术;网络层则包括分布式组网机制、数据传播机制和数据验证机制等;共识层主要封装网络节点的各类共识算法;激励层将经济因素集成到区块链技术体系中来,主要包括经济激励的发行机制和分配机制等;合约层主要封装各类脚本、算法和智能合约,是区块链可编程特性的基础;应用层则封装了区块链的各种应用场景和案例。该模型中,基于时间戳的链式区块结构、分布式节点的共识机制、基于共识算力的经济激励和灵活可编程的智能合约是区块链技术最具代表性的创新点。

区块链的核心技术[2-4]
从技术角度讲,区块链所涉及的领域比较繁杂,包括分布式系统、存储、密码学、心理学、经济学、博弈论、控制论、网络协议等。归纳起来有如下四个方面:
第一,分布式账本。交易记账由分布在不同地方的多个节点共同完成,而且每一个节点都记录的是完整的账目,因此它们都可以参与监督交易合法性,同时也可以共同为其作证。不同于传统的中心化记账方案,没有任何一个节点可以单独记录账目,从而避免了单一记账人被控制或者被贿赂而记假账的可能性。另一方面,由于记账节点足够多,理论上讲除非所有的节点被破坏,否则账目就不会丢失,从而保证了账目数据的安全性。
第二,对称加密和授权技术。存储在区块链上的交易信息是公开的,但是账户身份信息是高度加密的,只有在数据拥有者授权的情况下才能访问到,从而保证了数据的安全和个人的隐私。
第三,共识机制。所有记账节点之间怎么达成共识,去认定一个记录的有效性,这既是认定的手段,也是防止篡改的手段。区块链提出了四种不同的共识机制,适用于不同的应用场景,在效率和安全性之间取得平衡。
第四,智能合约。这是基于这些可信的不可篡改的数据,可以自动化的执行一些预先定义好的规则和条款。

共识算法
共识问题在计算机科学已经有很长的研究历史。计算机科学领域的早期共识研究一般聚焦于分布式一致性,即如何保证分布式系统集群中所有节点的数据完全相同并且能够对某个提案达成一致的问题,是分布式计算的根本问题之一。虽然共识(Consensus)和一致性(Consistency)在很多文献和应用场景中被认为是近似等价和可互换使用的,但二者涵义存在着细微的差别:共识研究侧重于分布式节点达成一致的过程及其算法,而一致性研究则侧重于节点共识过程最终达成的稳定状态;此外,传统分布式一致性研究大多不考虑拜占庭容错问题,即假设不存在恶意篡改和伪造数据的拜占庭节点,因此在很长一段时间里,传统分布式一致性算法的应用场景大多是节点数量有限且相对可信的分布式数据库环境。与之相比,区块链系统的共识算法则必须运行于更为复杂、开放和缺乏信任的互联网环境下,节点数量更多且可能存在恶意拜占庭节点。因此,即使VR和Paxos等许多分布式一致性算法早在上世纪80年代就已经提出,但是如何跨越拜占庭容错这道鸿沟、设计简便易行的分布式共识算法,仍是分布式计算领域的难题
  • 传统分布式一致性算法
分布式领域的共识问题是由马歇尔·皮斯(Marshall Pease)、罗伯特·肖斯塔克(Robert-Shostak) 和莱斯利·兰伯特 (Leslie Lamport) 提出, 并把其命名为拜占庭将军问题[5]。提出了基于口头消息和基于签名消息的两种算法来解决该问题。拜占庭假设是对现实世界的模型化,强调的是由于硬件错误、网络拥塞或断开以及遭到恶意攻击,计算机和网络可能出现的不可预料的行为。此后,分布式共识算法可以分为两类,即拜占庭容错和非拜占庭容错类共识。早期共识 算法一般为非拜占庭容错算法,例如广泛应用于分布式数据库的VR和Paxos,目前主要应用于联盟链和私有链;2008 年末,比特币等公有链诞生后,拜占庭容错类共识算法才逐渐获得实际应用。需要说明的是,拜占庭将军问题是区块链技术核心思想的根源,直接影响着区块链系统共识算法的设计和实现, 因而在区块链技术体系中具有重要意义。
拜占庭将军问题有两个交互一致性条件, 即一致性和正确性. 由于大多数情况下, 正确性涉及到人的主观价值判断, 很难施加到分布式节点上, 因此算法共识采用的是 “降级的正确性 (Degraded correctness), 即“正确地表达”。
1985年,Michael Fisher、Nancy Lynch和Michael Paterson 共同发表了论文 “Impossibility of distributed consensus with one faulty process”[6],提出了FLP不可能定理。文章证明:“在含有多个确定性进程的异步系统中, 只要有一个进程可能发生故障, 那么就不存在协议能保证有限时间内使所有进程达成一致”。FLP不可能定理同样指出,存在故障进程的异步系统的共识问题不存在有限时间的理论解, 因而必须寻找其可行的“工程解”。为此,研究者们只能通过调整问题模型来规避FLP不可能定理,例如牺牲确定性、增加时间等;
早期的共识算法一般也称为分布式一致性算法。大多不考虑拜占庭容错问题,即假设系统节点只发生宕机和网络故障等非人为问题,而不考虑恶意节点篡改数据等问题。1988年, Brian M. Oki和Barbara Liskov提出了VR一致性算法[7],采用主机备份(Primary-backup)模式,规定所有数据操作都必须通过主机进行, 然后复制到各备份机器以保证一致性。
1989年, 莱斯利·兰伯特(Leslie Lamport)在工作论文“The part-time parliament”中提出Paxos算法[8],Paxos是基于消息传递的一致性算法,主要解决分布式系统如何就某个特定值达成一致的问题。VR和Paxos算法均假设系统中不存在拜占庭故障节点,因而是非拜占庭容错的共识算法。除以上共识算法外,获得较多研究关注的早期共识算法还有两阶段提交(Two-phase commit)算法、三阶段提交(Three-phase commit)算法、Zab、Zyzzyva、Kafka等。
  • 区块链共识算法
区块链狭义来讲,区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据记录与存储方式。并以密码学方式保证数据的不可篡改和不可伪造。广义来说,区块链技术是利用块链式数据结构来验证和存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学方式来保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构和计算方式。图1列举了区块链的一些关键技术。
1993年,美国计算机科学家Cynthia Dwork首次提出了工作量证明思想[9],用来解决垃圾邮件问题。该机制要求邮件发送者必须算出某个数学难题的答案来证明其确实执行了一定程度的计算工作,从而提高垃圾邮件发送者的成本。1999年,Markus Jakobsson正式提出了“工作量证明”概念[10]。这些工作为后来中本聪设计比特币的共识机制奠定了基础。
1999年,Barbara Liskov等提出了实用拜占庭容错算法(Practical Byzantine fault tolerance,PBFT)[11],解决了原始拜占庭容错算法效率不高的问题,将算法复杂度由指数级降低到多项式级,使得拜占庭容错算法在实际系统应用中变得可行。PBFT实际上是Paxos算法的变种,通过改进Paxos算法使其可以处理拜占庭错误,因而也称为Byzantine Paxos算法,可以在保证活性(Liveness)和安全性(Safety)的前提下提供(n1)/3的容错性,其中n为节点总数。
2000 年,Eric Brewer教授提出了一个猜想: 分布式系统无法同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance),最多只能同时满足其中两个。其中,一致性是指分布式系统中的所有数据 备份在同一时刻保持同样的值; 可用性是指集群中 部分节点出现故障时, 集群整体是否还能处理客户 端的更新请求; 分区容忍性则是指是否允许数据分区,不同分区的集群节点之间无法互相通信。2002 年Seth Gilbert和Nancy Lynch在异步网络模型中证明了这个猜想, 使其成为CAP定理或布鲁尔定理[12]。该定理使得分布式网络研究者不再追求同时满足三个特性的完美设 计,而是不得不在其中做出取舍,这也为后来的区块链体系结构设计带来了影响和限制。
2008年,中本聪发表的比特币创世论文催生了基于区块链的共识算法研究。比特币采用了PoW共识算法来保证比特币网络分布式记账的一致性,这也是最早和迄今为止最安全可靠的公有链共识算法。PoW的核心思想是通过分布式节点的算力竞争来保证数据的一致性和共识的安全性。
2011年,一位名为Quantum Mechanic的数字货币爱好者首次提出了权益证明PoS共识算法[13]。PoS由系统中具有最高权益而非最高算力的节点获得记账权,其中权益体现为节点对特定数量货币的所有权,称为币龄或币天数(Coin days)。PPC将PoW和PoS两种共识算法结合起来,初期采用PoW挖矿方式以使得Token相对公平地分配给矿工,后期随着挖矿难度增加,系统将主要由PoS共识算法维护。PoS一定程度上解决了PoW算力浪费的问题,并能够缩短达成共识的时间。
2013年,Vitalik Buterin在比特币杂志网站详细地介绍了Ripple (瑞波币) 及其共识过程的思路。2014年,David Schwartz等提出了瑞波协议共识算法 (Ripple Protocol Consensus Algorithm, RPCA)[14],该共识算法解决了异步网络节点通讯时的高延迟问题,通过使用集体信任的子网络(Collectively-trusted subnetworks),在只需最小化信任和最小连通性的网络环境中实现了低延迟、高鲁棒性的拜占庭容错共识算法。目前,Ripple已经发展为基于区块链技术的全球金融结算网络。
2013年, 比特股(Bitshares)项目提出了一种新的共识算法, 即授权股份证明算法(DPoS)[15]。DPoS共识的基本思路是系统中每个节点可以将其持有的股份权益作为选票授予一个代表,获得票数最多且愿意成为代表的前N个节点将进入“董事会”,按照既定的时间表轮流对交易进行打包结算、并且签署(即生产) 新区块。如果说PoW和PoS共识分别是“算力为王”和“权益为王”的记账方式的话,DPoS则可以认为是“民主集中式”的记账方式,其不仅能够很好地解决PoW浪费能源和联合挖矿对系统的去中心化构成威胁的问题,也能够弥补PoS中拥有记账权益的参与者未必希望参与记账的缺点,其设计者认为DPoS是当时最快速、最高效、最去中心化和最灵活的共识算法。
2013年, Diego Ongaro和John Ousterhout提出Raft共识算法[16]。Raft的初衷是为设计一种比Paxos更易于理解和实现的共识算法.目前, Raft已经在多个主流的开源语言中得以实现。

表2.1列举了目前主要的区块链共识算法。则给出了每一种共识算法的提出时间、拜占庭容错性能、基础算法以及具有代表性的应用系统或平台。

区块链的应用
几种典型的区块链平台
比特币是最成功的区块链应用,但其仅限于数字货币类型的应用,为此业界推出了多种支持通用应用的区块链平台。公有链中应用最广泛的通 用 平 台 是 以 太 坊 ,Quorum 2 、Monax3、DFINITY4、HydraChain5和BCOS6等众多区块链平台都是基于Ethereum构建和扩展.联盟链中应用最广泛的通用平台是Hyperledger Fabric,其拥有IBM、Intel、J.P.Morgan、R3、DTCC、SWIFT等130多名成员[18]。

  • 以太坊[19]
Ethereum(以太坊)是一个平台和一种编程语言,使开发人员能够建立和发布下一代分布式应用。其在2013年由Vitalik Buterin提出,它的目的是为建立去中心化的应用创建一种可替代的协议,给一大类的去中心化的应用程序提供一组不同的平衡机制,这对需要快速开发、安全性要求低、很少使用的应用程序以及在不同应用之间能有效互动很重要。
以太坊是一个编程平台,它提供了各种模板,用户只需要把以太坊提供的各种模板链接到一起就能搭建自己的应用。因此,在以太坊上创建应用的成本大大减少、速度大大提高,这也造就了以太坊成为区块链中最好的项目之一。具体来说,以太坊通过一种图灵完备的脚本语言(Ethereum Virtual Machine Code,EVM语言)来创建应用,类似于汇编语言,但编写以太坊应用并不需要直接使用EVM,而是使用Solidity,Serpent,U 等编程语言,再通过编译器转换成EVM语言供以太坊平台使用。
开发者可以通过以太坊这一平台创建自己的区块链应用。一般来讲,以太坊上有3种应用:1)金融应用,包括电子货币、金融衍生品、对冲交易合约、存储钱包、遗嘱,甚至是一些最终的完善就业合同;2)半金融应用,这类应用涉及金钱,但不是完全看重金钱,也有重要的非金钱的应用,一个典型的例子就是为解决计算问题的自实施奖励;3)非金融应用,例如在线投票和去中心化管理。
  • Hyperledger[19]
Hyperledger是Linux基金会于2015年发起的旨在推进区块链技术发展的开源项目。它领导全球各行业,包括金融、银行、物联网、供应链、制造以及技术领域等,在区块链技术上进行合作,建立一个开放平台,以满足来自各行各业的不同需求,并简化业务流程。
目前Hyperledger中主要有4个比较成熟的项目:Blockchain Explorer,Fabric,Iroha和Sawtooth Lake,本节只以Blockchain Explorer为例。Blockchain Explorer是由Christopher Ferris(IBM),Dan Middleton(Intel)和Pardha Vishnumolakala(DTCC)提出的孵化项目,旨在为Hyperledger创建一个用户友好型的Web应用程序,用以查看/查询区块、事务和关联数据、网络信息(名称、状态、节点列表)、链码/事务族(查看/调用/部署/查询)以及存储在账本中的任何其他相关信息。
区块链的行业应用
区块链可以应用在很多场景,按照目前区块链技术的发展脉络,区块链技术将会经历以可编程数字加密货币体系为主要特征的区块链1.0模式、以智能合约为主要特征的区块链2.0模式和以可编程社会为主要特征的区块链3.0模式。目前,一般认为区块链技术正处于2.0模式的初期。如下是TIAGO等列举的区块链行业应用[20]:

  • 基于区块链的金融应用
区块链技术,作为数字货币的背后支撑,已经引起了金融行业的高度重视。麦肯锡的研究报告指出了区块链行业在金融行业应用的5大场景[19]。
数字货币:提高货币发行的便利性;
跨境支付和结算:实现点对点交易,减少中间费用;
票据与供应链金融业务:减少人为介入,降低成本与操作风险;
证券发行与交易:实现实时资产转移,加速交易清算速度。
客户征信与反欺诈:降低法律合规成本,防止金融犯罪。
最近Facebook发布了Libra白皮书[21],计划在2020年实现一种全球化的数字货币和新的金融架构。
  • 基于区块链的智能合约[19]
智能合约这一理念最早是在1994年出现的,几乎和互联网同时出现。这个术语是由密码学家Nick Szabo提出的,定义如下:一个智能合约是计算机协议,它促进、验证或者执行合约的协商或履行,或使合约条款不必要。核心上,这些智能合约的工作原理与任何其他编程语言中的if-then语句类似,当满足一个预先编好的条件时,智能合约就被触发执行相应的条款。
区块链技术的出现,使得智能合约再次活跃起来,并被认为是应用在区块链技术上的又一热门技术;并且重新定义了智能合约:智能合约是由事件驱动的、具有状态的、运行在一个可复制和共享的账本上、且能够保管账本上资产的程序。
智能合约与以太坊结合得最好,以太坊中有自己的虚拟机供智能合约使用;Siacoin文件存储系统采用智能合约来规范用户主机之间的存储协议;而在Hyperledger中则称其为chain-code。
智能合约可以应用在很多方面,例如:1)证券。智能合约状态可以记录证券所有权的所有信息,因此可以用来进行证券的登记和清算。2)智能遗嘱。现今网络带来便利的同时也存在弊端,例如个人在网上存有很多钱,但是亲属并不知道密码,某天这个人去世了,那么他存在网络账户上的钱就不能被提取出来。这时就可以应用智能合约,可以在合约中设定每过一定的时间就必须登录自己的账户确认一次,否则账户中的资金就会按照合约中设定的方式转移出去,这样就能避免前面所说的问题。3)投票、金融衍生品、博彩、预付款等其他方面。
  • 基于区块链的数据存储[19]
区块链能够保存所有完整信息,这是它的优势,并且任何人、任何节点在任何情况下都可以用加密哈希验证数据块。区块链利用序列化链路,按照时间顺序把所有数据区块串联起来,每个区块包含父区块的哈希值,由此形成了一个去中心化的数据账本。
作为公有链使用,这个账本可以是公开的,因此可以清楚地了解到整个事件的发展顺序;也可以作为私有链或行业链,许可型的,只对外开放一定的接口,严格限制其访问权限。
但无论这个账本是公有化的还是私有化的,它都能够实现连贯一致的数据存储;而且去中心化的特性可以防范外部或内部的恶意破坏。
更重要的是,区块链采取高度冗余的存储策略,可以在大多数节点备份数据;即使在网络连接不稳定或者网络不安全的情况下也不受影响。至于安全性,区块链技术本身十分安全,不存在安全缺陷。
  • 基于区块链的物流[4, 22]
物流供应链中往往涉及多个实体,包括资金流、信息流、物流等,这些实体之间存在大量的复杂协作和信息交流。不同的实体各自保存各自的供应链信息,导致供应链信息严重不透明,造成较高的时间成本和金钱成本,出现问题(冒领、假冒等)难以追查和处理。但是通过区块链技术可以很好的避免甚至解决这个问题。
一个很好例子是,基于射频识别(RFID)和供应链技术的可追溯的农产品供应链系统,涵盖了数据采集和处理全过程,可以对供应链各环节的信息管理实现监控、跟踪和追溯,保证了农产品的质量安全。
但是,这些研究仍然存在一些亟待解决的问题。1)现在还基本处于概念证明的阶段,需要实现系统框架和原形,并逐步优化细节。2)相应的成本比较高,如RFID标签最低为0.3美元;并且建立这种可追溯系统需要对配套设备进行大量投资,并对原有系统进行更新。3)区块链的交易能力受限制,但是闪电支付或许是一个突破口。4)区块链并不能提供一些模型中需要的技术,需要进行相互磨合。
  • 基于区块链的资源共享[4]
资源共享面临的主要难题包括:1)共享成本过高;2)用户身份评分难;3)共享服务管理难。例如,社区能源共享的Consensvs和微电网开发商L03,主要难题有交易系统的构建,但是通过区块链技术打造的平台可以很容易地实现社区内低成本的可靠交易系统。还有大数据共享,问题是如何评估数据价值、如何进行交易和交换、如何避免数据在未经许可的情况下泄露出去。使用区块链技术构成的统一账本,数据在多方之间的流动将得到实时的追踪和管理,并且通过对访问权限的管控,可以有效降低对数据共享过程的管理成本。
Aitzhan、Sikorski等多位学者,都对“区块链+能源互联网”的新模式进行了探讨及研究。主要提出将区块链技术应用到能源互联网中,其优势包括:1)不再需要统一的中心机构进行调度管控,系统中的所有个体都可以自调度决策;2)跨能源系统的通用型,给不同的能源系统信息提供统一的平台;3)数据的保密性与可靠性;4)实现了使用区块链技术、多签名和匿名加密信息的分散式能源交易系统的概念验证能够使同行匿名协商能源价格并安全地进行交易;5)很好地解决了精确计量问题、交互问题、自律控制、优化决策等问题。随着微电网案例的成功,区块链技术在资源领域的应用充满了希望。
  • 基于区块链的分布式DNS
近年来随着比特币的出现,很多比特币或者区块链领域的相关技术被应用到DNS上。基于Bitcoin先是出现了NameCoin[23],随后又出现了Blockstack[24]。Brendan Benshoof等在2016年基于Bitcoin技术提出了Distributed Decentralized Domain Name Service(D^3 NS)[25]。Xinan Duan等也于2018年提出基于Bitcoin的DNSLedger[26]。
在解决DNS中心化问题上,国内也有很多团队进行了深入的研究。方滨兴2014年提出了“域名对等扩散”的概念[27],2017年已经基本实现了一套“自主开放的互联网根域名解析体系”[28],并且在实验室中实现相应的原型系统进行初步的验证[29]。2018年,方滨兴又提出了基于区块链实现分布式的域名解析解决方案[30]。蒋文保团队提出了“一种去中心化的网络域名服务系统模型”理论[31]。并且基于此实现了“安全可信的网络互联协议(STiP)模型”[32]。
延志伟等基于传统的DNS解决方案,提出了一种通用化的加速DNS解析过程的解决方案[33]。
  • 基于区块链的其它应用[19]
·    存在性证明。由于区块链技术的不可篡改性,可把区块链技术应用于存在性证明,把过去的某一个状态存在区块链上,未来就可以证明在过去确实存在。
·    身份验证。智能合约可以存储个人的身份信息,可以保存现有的身份状态,一旦身份信息被篡改就会触发一定的条款,身份所有者就会知晓。
·    预测市场。例如Augur,它是一个基于区块链技术的去中心化的预测市场的平台,任何人都可以随时随地的访问和使用Augur,利用这种技术可以消除中心化服务器的风险。
·    电子商务。把比特币无监管模式应用于电商,应用这一模式不仅可以免去中间冗余的环节,还能达到市场和谐。例如OpenBazaar,直接用比特币进行交易,类似于一个去中心化的淘宝平台。
·    社交通讯。例如去中心化通信平台Gems,它试图打破现有的社交媒体的模式,不仅社交公司可以赚钱,用户也能从中获利。
区块链的发展前景
发展前景
根据邵奇峰等人的文献[18],未来的区块链还需在以下几个方面进一步发展。
  • 共识机制
共识机制目前已经成为了区块链系统性能的关键瓶颈。在基于证明机制的共识算法中,经受多年实践性安全检验的PoW机制有着消耗大量计算资源及性能低下的问题。在基于投票机制的共识算法中,有着完善理论证明的PBFT算法面临着广播带来的网络开销过大的问题。如何提高系统吞吐率是共识机制最迫切需要解决的问题。因此,包括在少部分可信节点中选取主节点的共识算法、保证高概率正确性的异步共识算法、基于特定安全性前提并减少网络广播的共识算法、基于可信硬件的共识算法、同时融合PoW与PBFT优势的共识算法在未来都是值得关注的。
  • 隐私保护
因为能够隐藏交易内容,零知识证明和同态加密是最受关注的隐私保护解决方案。零知识证明目前更多被应用于数字货币领域,只有Zero-cash和Hawk基于零知识证明构建了区块链应用和模型。同态加密算法可抵抗量子计算的攻击,但其运算效率低,距离实际应用尚有较大差距。因此,针对零知识证明、同态加密等隐私保护方案,如何扩大应用领域、提高运算效率、加快应用落地,将会是今后最迫切的研究工作。
  • 部分存储
比特币平台的每个网络节点都全量的存储着所有历史交易数据,这虽然保证了数据的公开性、透明性及系统的高可用性,但也带来数据隐私问题;另外,每个交易都需同步到全网所有节点,也会带来性能问题。所以,很多平台采用了只存储部分交易数据的解决方案。Corda主要应用于对数据隐私要求较高的金融领域,所以从一开始就反对区块链中每个节点存储全部数据,而使得数据仅对交易双方及监管可见。Hyperledger Fabric1.0的多通道技术从性能和隐私两个角度考虑,使每个通道仅存储与通道节点有关的交易。以太坊2.0的分片技术将全网交易数据按片数等分,使得每个分片存储的交易数据尽可能均衡。随着交易量和数据量的剧增,区块链节点由全量存储到部分存储将会成为未来的一个趋势。
  • 链外交易
为了提高交易处理能力,比特币社区提出了增大区块、隔离见证(segregated witness)1和闪电网络(lightning network)等扩容方案。当前比特币区块尺寸上限为1MB,比特币社区提出增大区块尺寸上限至2MB以容纳2倍的交易量。比特币交易的输入脚本包含有发送者的签名数据以证明其拥有该笔比特币,但签名数据仅仅用于矿工挖矿时做交易验证,没有其它额外的用途。隔离见证是将交易中的签名数据移出以减少交易尺寸使区块容纳更多交易。增大区块和隔离见证只是增加了区块容量,无法从根本上改善性能,但闪电网络可达到每秒百万级的交易量。闪电网络是一种提供比特币链外(off-chain)双向快速支付的通道,其提供了高频、小额、立即确认的支付方式,并且具有更好的隐私性和更低的手续费。雷电网络(Raiden network)是根据闪电网络提出的以太坊链外快速支付通道。闪电网络和雷电网络把小额交易放在链外,既实现了高速交易,也减轻了主链压力,主链只处理最终的交易及作为争议仲裁的最后手段。闪电网络和雷电网络是目前提高交易处理能力最有效的方案,未来会有一定的发展空间。
  • 多链与侧链
传统区块链平台的单链设计方案使得系统整体处理能力受限于单个计算节点。多链设计方案可使互不相关的交易实现分片存储和并发执行,不但提高了系统的可扩展性,使全网不再受限于单个节点,而且链间隔离还保证了交易数据的隐私。除了以太坊中的分片、Hyperledger Fabric中的多通道,Monax、Multi-Chain等区块链平台也提供了自己的多链方案。侧链(sidechain)最初是通过锚定比特币而实现数字资产交易的区块链技术,主要解决比特币平台应用单一、性能受限等问题。侧链是一个独立的区块链,有自己的账本、共识机制、交易类型和智能合约,通过锁定主链上的比特币,可使得相应数量的比特币在侧链上流通。例如,Block-stream推出的元素链通过与比特币双向锚定,既实现了比特币在主链和侧链间的互转,还提供了智能合约,私密交易等特性。通过为每个应用分别创建一个锚定到主链的侧链,可扩展传统区块链支持多种应用类型。多链与侧链能够解决现有区块链的问题和不足,未来需要进行更多研究。
  • 跨链
面对数量众多、类型各异的区块链平台,跨链技术可以实现它们之间的互联、互通及互信。以数字资产为例,如果能够打破不同区块链间的壁垒,即可实现各类数字资产的跨链交易,形成融合多种资产的价值互联网。目前较有影响力跨链技术是Polkadot和Cosmos。Polkadot的主干网络被称为中继链(relay chain),其以以太坊为主实现了与各种平行链(para-chain)的互连,每个平行链就是一个单独的区块链网络。Polkadot还以其它公有链为升级目标,最终让以太坊直接可与任何链进行通讯。Cosmos把不同种类的区块链子网看做Zone,通过主干网络Cosmos Hub上运行的Inter-Blockchain Communication(IBC)协议实现不同Zone之间的互联。Cosmos专注于实现跨链的数字资产交易,而Polkadot则专注于实现通用的跨链通信。跨链技术目前还在研究和试验阶段,但如同TCP/IP在当今互联网的地位,未来非常需要对应的方案来实现区块链间的“万链互联”。

  • 区块树和区块图
区块之间未必要由链表来组织,业界已提出用树和图来组织区块的方案。为了应对出块间隔时间减小带来的分叉问题,以太坊中引入GHOST协议,该协议承认树块使得以太坊区块链实质上成为了树形结构。为了适应于物联网小额支付的场景,IOTA区块链平台提出使用有向无循环图(DAG)来组织区块的方案Tangle,每块只包含一个交易且至少链接之前的两个区块以表示确认过两个交易,整个图根据结点权重计算最长链并作为主链。未来非常需要在区块树和区块图方面进行更多的研究与实践。
  • SQL on Blockchain
随着区块链系统性能的改善及交易数据的积累,基于区块链的数据分析工作将会成为迫切需求。现有的技术人员更熟悉传统的关系数据库,现有的数据分析工具也基本都基于SQL构建,区块链中的区块数据、交易数据及状态数据更趋近于结构化数据。如同Hadoop编程由MapReduce转向SQL on Hadoop、Spark编程由RDD转向Spark SQL的发展历程一样,主流区块链平台在未来非常需要SQL on Blockchain的查询引擎,从而使现有技术人员能够快速上手,使现有数据分析工具能够无缝接入。
  • Blockchain DB
类似互联网企业的快速发展催生了一批优秀的NoSQL数据库,随着一批去中心、去中介的新互联网应用的出现,未来迫切需要一种从底层到上层都直接支持现有区块链特性的数据库,可称其为Blockchain DB。Blockchain DB在各层的设计上可完全借鉴数据库领域已有的成果和技术。Blockchain DB在网络层上应该是基于P2P协议的,便于实现各种节点的动态加入与退出,从底层网络协议支持去中心化的架构。数据库领域在P2P数据库管理方面已有了多年的研究及实际产品,可借鉴其相关成果。Blockchain DB在共识层上应该支持具有拜占庭容错的共识算法,为了支持公有链、联盟链的不同应用场景,其应该分别提供证明机制、投票机制的共识算法。尽管数据库领域更多采用的是Paxos、Raft等CFT共识算法,但其设计经验仍然值得借鉴。为了便于存储和检索,Blockchain DB在数据层上可直接应用现有数据库的存储与索引技术来处理区块链中的状态数据与索引数据。区块数据和传统数据库的预写式日志非常类似,它们都维护了所有的历史操作记录,都是在表数据之前写入,都是追加形式的写且支持数据重放,只不过预写日志不具备不可篡改性且不支持查询,但预写日志在高速写入等方面的研究可用于区块数据。另外,区块中的交易数据具有可追溯的特性,但不论在基于交易还是基于账户的模型中,目前的追溯查询并不高效,因此可借鉴数据仓库和科学数据管理领域的数据溯源(data provenance)来解决,数据溯源的查询表达具有严格的代数学基础,且可在关系数据库上实现。在智能合约层,智能合约与当前数据库的存储过程类似,其响应外部事件的机制与触发器类似,因此可借鉴存储过程与触发器的设计经验,甚至可以实现类似PL/SQL或TSQL编写的智能合约。Blockchain DB在应用层上应该原生支持SQL,提供支持访问区块数据、交易数据、状态数据的SQL语句,使应用程序获得与访问传统数据库相同的接口,以降低应用开发人员、数据库管理员的学习门槛。由于去中心化的区块链与中心化的传统数据库在体系上的差异,传统数据库相关技术并非可直接应用于Blockchain DB,这就需要根据区块链的特性开展进一步研究。

总  结
区块链技术是继蒸汽机、电力、信息和互联网科技之后,目前最有潜力触发第五轮颠覆性革命浪潮的核心技术;基于区块链技术的应用有可能颠覆现有的行业规则,并且可能会重塑行业标准,不仅能降低交易的成本、提高效率,还可能会衍生出许多的商业模式。区块链将会给众多行业带来深远影响。



参考文档
[1]柴跃廷. 最佳工程管理实践 [D], 2019.
[2]袁勇, 王飞跃. 区块链技术发展现状与展望 [J]. 自动化学报, 2016, 42(04): 481-94.
[3]杨宇光, 张树新. 区块链共识机制综述 [J]. 信息安全研究, 2018, 4(4): 369-79.
[4]章峰, 史博轩, 蒋文保. 区块链关键技术及应用研究综述 [J]. 网络与信息安全学报, 2018, 4(4): 22-9.
[5]LAMPORT L, SHOSTAK R, PEASE M. THE BYZANTINE GENERALS PROBLEM [J]. ACM Trans Program Lang Syst, 1982, 4(3): 382-401.
[6]FISCHER M J, LYNCH N A, PATERSON M S. IMPOSSIBILITY OF DISTRIBUTED CONSENSUS WITH ONE FAULTY PROCESS [J]. J Acm, 1985, 32(2): 374-82.
[7]OKI B M, LISKOV B H. Viewstamped replication: a new primary copy method to support highly-available distributed systems [J]. Proceedings of the Seventh Annual ACM Symposium on Principles of Distributed Computing, 1988, 8-17.
[8]LAMPORT L. The part-time parliament [J]. ACM Trans Comput Syst, 1998, 16(2): 133-69.
[9]DWORK C, NAOR M. Pricing via processing or combatting junk mail [J]. Advances in Cryptology - CRYPTO '92 12th Annual International Cryptology Conference Proceedings, 1993, 139-47.
[10]JAKOBSSON M, JUELS A. Proofs of work and bread pudding protocols (extended abstract) [M]//PRENEEL B. Secure Information Networks: Communications and Multimedia Security. Norwell; Kluwer Academic Publishers. 1999: 258-72.
[11]CASTRO M, LISKOV B, USENIX A, et al. Practical Byzantine fault tolerance [M]. Berkeley: Usenix Assoc, 1999.
[12]GILBERT S, LYNCH N. Brewer's conjecture and the feasibility of consistent, available, partition-tolerant Web services [J]. SIGACT News (USA), 2002, 33(2): 51-9.
[13]Proof of stake [M]. https://enbitcoinit/wiki/Proof_of_Stake. 2018.
[14]The Ripple protocol consensus algorithm [M]. https://ripplecom/files/ripple_consensus_whitepaperpdf. 2018.
[15]Delegated proof of stake [M]. https://bitsharesorg/technology/delegated-proof-of-stake-consensus/. 2018.
[16]ONGARO D, OUSTERHOUT J. In search of an understandable consensus algorithm [M]. Proceedings of the 2014 USENIX conference on USENIX Annual Technical Conference. Philadelphia, PA; USENIX Association. 2014: 305–20.
[17]袁勇, 倪晓春, 曾帅, et al. 区块链共识算法的发展现状与展望 [J]. 自动化学报, 2018, 44(11): 2011-22.
[18]邵奇峰, 金澈清, 张召, et al. 区块链技术:架构及进展 [J]. 计算机学报, 2018, 41(5): 969-88.
[19]何蒲, 于戈, 张岩峰, et al. 区块链技术与应用前瞻综述 [J]. 计算机科学, 2017, 44(4): 1-7,15.
[20]FERNANDEZ-CARAMES T M, FRAGA-LAMAS P. A Review on the Use of Blockchain for the Internet of Things [J]. IEEE Access, 2018, 6(32979-3001.
[21]FACEBOOK. The Libra Blockchain [M]. https://libraorg/en-US/white-paper/. 2019.
[22]TIJAN E, AKSENTIJEVIC S, IVANIC K, et al. Blockchain Technology Implementation in Logistics [J]. Sustainability, 2019, 11(4): 13.
[23]Namecoin [M]. https://namecoinorg/.
[24]ALI M, NELSON J, SHEA R, et al. Blockstack: A Global Naming and Storage System Secured by Blockchains [M]. Berkeley: Usenix Assoc, 2016.
[25]BENSHOOF B, ROSEN A, BOURGEOIS A G, et al. Distributed Decentralized Domain Name Service [M]. 2016 Ieee 30th International Parallel and Distributed Processing Symposium Workshops. New York; Ieee. 2016: 1279-87.
[26]DUAN X A, YAN Z W, GENG G G, et al. DNSLedger: Decentralized and Distributed Name Resolution for Ubiquitous IoT [M]. New York: Ieee, 2018.
[27]方滨兴. 从“国家网络主权”谈基于国家联盟的自治根域名解析体系 [J]. 信息安全与通信保密, 2014, (12): 35-8.
[28]张宇, 夏重达, 方滨兴, et al. 一个自主开放的互联网根域名解析体系 [J]. 信息安全学报, 2017, 2(4): 57-69.
[29]刘井强. 基于私有根域名的DNS解析试验系统设计与实现 [D]. 计算机技术; 哈尔滨工业大学, 2017.
[30]方滨兴. 基于区块链的联盟式国家根域名体系建设 [M]. https://itforumadmhmaoru/upload/iblock/e68/binxing-fangpdf. 2018.
[31]朱国库;蒋文保. 一种去中心化的网络域名服务系统模型 [J]. 网络空间安全, 2017, 8(1): 14-8.
[32]蒋文保;朱国库. 一种安全可信的网络互联协议(STiP)模型研究 [J]. 网络空间安全, 2017, 8(1): 24-31.
[33]李晓东 延 耿 李. DNS根服务体系的发展研究 [J]. 网络与信息安全, 2017, 3(3): 1-12.


作者 / 刘兴兵



分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:
帖子:
精华:
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP