查看原文
其他

中科院自动化所:区块链技术发展现状与展望(上) | 厚势

2017-10-19 袁勇、王飞跃 厚势


厚势按:中国科学院自动化研究所复杂系统管理与控制国家重点实验室袁勇博士与王飞跃教授发表在 2016 年 4 月出版的在《自动化学报》上关于区块链技术的综述论文。文章通过解构区块链的核心要素,提出了区块链系统的基础架构模型,详细阐述了区块链及与之相关的比特币的基本原理、技术、方法与应用现状,讨论了智能合约的理念、应用和意义。


在昨天推送的文章《至少滴滴优步危险了——区块链将如何重塑汽车产业?》中,初步介绍了区块链技术在汽车产业的潜在应用方面,旨在给大家留下一个初步的印象,但真正了解区块链技术本身的细节仍是必要的。
本文的原文篇幅较长(超过 2 万字,因此将分上下篇推送。今天推送的上篇主要介绍区块链的基础架构模型及其关键技术。等到介绍完区块链技术,将进一步专门撰文解释「为什么区块链技术会极大地威胁到滴滴和优步整个商业模式的基础?埃隆马斯克为所有汽车制造商想出来的、对付滴滴和优步的办法具体是什么?



区块链是以比特币为代表的数字加密货币体系的核心支撑技术。区块链技术的核心优势是去中心化,能够通过运用数据加密、时间戳、分布式共识和经济激励等手段,在节点无需互相信任的分布式系统中实现基于去中心化信用的点对点交易、协调与协作,从而为解决中心化机构普遍存在的高成本、低效率和数据存储不安全等问题提供了解决方案。


随着比特币近年来的快速发展与普及,区块链技术的研究与应用也呈现出爆发式增长态势,被认为是继大型机、个人电脑、互联网、移动/社交网络之后计算范式的第五次颠覆式创新,是人类信用进化史上继血亲信用、贵金属信用、央行纸币信用之后的第四个里程碑 [1]。区块链技术是下一代云计算的雏形,有望像互联网一样彻底重塑人类社会活动形态,并实现从目前的信息互联网向价值互联网的转变。


区块链技术的快速发展引起了政府部门、金融机构、科技企业和资本市场的广泛关注。2016 年 1 月,英国政府发布区块链专题研究报告 [2],积极推行区块链在金融和政府事务中的应用;中国人民银行召开数字货币研讨会探讨采用区块链技术发行虚拟货币的可行性,以提高金融活动的效率、便利性和透明度。美国纳斯达克于 2015 年 12 月率先推出基于区块链技术的证券交易平台 Linq,成为金融证券市场去中心化趋势的重要里程碑;德勤和安永等专业审计服务公司相继组建区块链研发团队,致力于提升其客户审计服务质量。截止到 2016 年初,资本市场已经相继投入 10 亿美元以加速区块链领域的发展。初创公司 R3CEV 基于微软云服务平台 Azure 推出的 BaaS(Blockchain as a Service,区块链即服务)服务,已与美国银行、花旗银行等全球 40 余家大型银行机构签署区块链合作项目,致力于制定银行业的区块链行业标准与协议。


区块链技术起源于 2008 年由化名为「中本聪」(Satoshi Nakamoto)的学者在密码学邮件组发表的奠基性论文《比特币:一种点对点电子现金系统》[3],目前尚未形成行业公认的区块链定义:


  • 狭义来讲,区块链是一种按照时间顺序将数据区块以链条的方式组合成特定数据结构,并以密码学方式保证的不可篡改和不可伪造的去中心化共享总账(Decentralized Shared Ledger),能够安全存储简单的、有先后关系的、能在系统内验证的数据。

  • 广义的区块链技术则是利用加密链式区块结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用自动化脚本代码(智能合约)来编程和操作数据的一种全新的去中心化基础架构与分布式计算范式。


区块链具有去中心化、时序数据、集体维护、可编程和安全可信等特点:


  • 首先是去中心化:区块链数据的验证、记账、存储、维护和传输等过程均是基于分布式系统结构,采用纯数学方法而不是中心机构来建立分布式节点间的信任关系,从而形成去中心化的可信任的分布式系统;

  • 其次是时序数据:区块链采用带有时间戳的链式区块结构存储数据,从而为数据增加了时间维度,具有极强的可验证性和可追溯性

  • 第三是集体维护:区块链系统采用特定的经济激励机制来保证分布式系统中所有节点均可参与数据区块的验证过程(如比特币的「挖矿」过程),并通过共识算法来选择特定的节点将新区块添加到区块链;

  • 第四是可编程:区块链技术可提供灵活的脚本代码系统,支持用户创建高级的智能合约、货币或其他去中心化应用。例如,以太坊(Ethereum)平台即提供了图灵完备的脚本语言以供用户来构建任何可以精确定义的智能合约或交易类型 [4];

  • 最后是安全可信:区块链技术采用非对称密码学原理对数据进行加密,同时借助分布式系统各节点的工作量证明等共识算法形成的强大算力来抵御外部攻击、保证区块链数据不可篡改和不可伪造,因而具有较高的安全性。


区块链技术是具有普适性的底层技术框架,可以为金融、经济、科技甚至政治等各领域带来深刻变革。按照目前区块链技术的发展脉络,区块链技术将会经历以可编程数字加密货币体系为主要特征的区块链 1.0 模式、以可编程金融系统为主要特征的区块链 2.0 模式和以可编程社会为主要特征的区块链 3.0 模式 [1]。


目前,一般认为区块链技术正处于 2.0 模式的初期,股权众筹和 P2P 借贷等各类基于区块链技术的互联网金融应用相继涌现。然而,上述模式实际上是平行而非演进式发展的,区块链 1.0 模式的数字加密货币体系仍然远未成熟,距离其全球货币一体化的愿景实际上更远、更困难。


目前,区块链领域已经呈现出明显的技术和产业创新驱动的发展态势,相关学术研究严重滞后、亟待跟进。截止到 2016 年 2 月,以万方数据知识服务平台为中文数据源、以 Web of Science 和 EI Village 为英文数据源的文献检索显示,目前篇名包含关键词「区块链/blockchain」的仅有 2 篇中文 [5,6] 和 9 篇英文文献 [6~14]。


本文系统性地梳理了区块链的基本原理、核心技术、典型应用和现存问题,以期为未来研究提供有益的启发与借鉴。本文组织结构为:

  • 第 1 节概述区块链与比特币的发展史及二者的关系;

  • 第 2 节阐述区块链的基础架构模型及其关键技术;

  • 第 3 节和第 4 节分别概要总结了区块链技术的应用场景与现存的问题;

  • 第 5 节介绍智能合约及其在区块链领域的应用现状;

  • 第 6 节展望了区块链驱动的平行社会发展趋势;

  • 第 7 节总结本文内容。



1. 比特币与区块链概述


比特币是迄今为止最为成功的区块链应用场景。据区块链实时监控网站 Blockchain.info 统计显示,平均每天有约 7500 万美元的 120000 笔交易被写入比特币区块链,目前已生成超过 40万个区块 [15]。加密货币市值统计网站 coinmarketcap.com 显示,截止到 2016 年 2 月,全球共有 675 种加密货币,总市值超过 67 亿美元,其中比特币市值约占 86%,瑞波币和以太币分别居二、三位 [16]。目前比特币供应量(即已经挖出的比特币数量)已经超过 1500 万枚,按照每枚比特币 389.50 美元的现行价格估算其总市值已超过 59 亿美元,在世界各国 2015 年 GDP 排名中占据第 144 位(略低于欧洲的摩尔多瓦)。换言之,在没有政府和中央银行信用背书的情况下,去中心化的比特币已经依靠算法信用创造出与欧洲小国体量相当的全球性经济体【注:近日比特币价格突破 5800 美元/枚,流通的比特币总价值达到 967 亿美元】。预计到 2027 年,全球 10% 的 GDP 将会通过区块链技术存储 [17]。


比特币区块链的第一个区块(称为创世区块)诞生于 2009 年 1 月 4 日,由创始人中本聪持有。一周后,中本聪发送了 10 个比特币给密码学专家哈尔芬尼,形成了比特币史上第一次交易;2010 年 5 月,佛罗里达程序员用 1 万比特币购买价值为 25 美元的披萨优惠券,从而诞生了比特币的第一个公允汇率。此后,比特币价格快速上涨,并在 2013 年 11 月创下每枚比特币兑换 1242 美元的历史高值,超过同期每盎司 1241.98 美元的黄金价格。据 CoinDesk 估算,目前全球约有 6 万商家接受比特币交易,其中中国是比特币交易增长最为迅速的国家 [18]。


比特币本质上是由分布式网络系统生成的数字货币,其发行过程不依赖特定的中心化机构,而是依赖于分布式网络节点共同参与一种称为工作量证明(Proof of Work,PoW)的共识过程以完成比特币交易的验证与记录。PoW 共识过程(俗称挖矿,每个节点称为矿工)通常是各节点贡献自己的计算资源来竞争解决一个难度可动态调整的数学问题,成功解决该数学问题的矿工将获得区块的记账权,并将当前时间段的所有比特币交易打包记入一个新的区块、按照时间顺序链接到比特币主链上。


比特币系统同时会发行一定数量的比特币以奖励该矿工,并激励其他矿工继续贡献算力。比特币的流通过程依靠密码学方法保障安全。每一次比特币交易都会经过特殊算法处理和全体矿工验证后记入区块链,同时可以附带具有一定灵活性的脚本代码(智能合约)以实现可编程的自动化货币流通。由此可见,比特币和区块链系统一般具备如下五个关键要素,即公共的区块链账本、分布式的点对点网络系统、去中心化的共识算法、适度的经济激励机制以及可编程的脚本代码。


区块链技术为比特币系统解决了数字加密货币领域长期以来所必需面对的两个重要问题,即双重支付问题和拜占庭将军问题 [19]:


  • 双重支付问题又称为「双花」,即利用货币的数字特性两次或多次使用「同一笔钱」完成支付。传统金融和货币体系中,现金(法币)因是物理实体,能够自然地避免双重支付;其他数字形式的货币则需要可信的第三方中心机构(如银行)来保证。区块链技术的贡献是在没有第三方机构的情况下,通过分布式节点的验证和共识机制解决了去中心化系统的双重支付问题,在信息传输的过程同时完成了价值转移。

  • 拜占庭将军问题是分布式系统交互过程普遍面临的难题,即在缺少可信任的中央节点的情况下,分布式节点如何达成共识和建立互信 [20]。区块链通过数字加密技术和分布式共识算法,实现了在无需信任单个节点的情况下构建一个去中心化的可信任系统。与传统中心机构(如中央银行)的信用背书机制不同的是,比特币区块链形成的是软件定义的信用,这标志着中心化的国家信用向去中心化的算法信用的根本性变革


图 1  比特币生态圈


比特币凭借其先发优势,目前已经形成体系完备的涵盖发行、流通和金融衍生市场的生态圈与产业链(如图1所示),这也是其长期占据绝大多数数字加密货币市场份额的主要原因。比特币的开源特性吸引了大量开发者持续性地贡献其创新技术、方法和机制;比特币各网络节点(矿工)提供算力以保证比特币的稳定共识和安全性,其算力大多来自于设备商销售的专门用于 PoW 共识算法的专业设备(矿机)。比特币网络为每个新发现的区块发行一定数量的比特币以奖励矿工,部分矿工可能会相互合作建立收益共享的矿池,以便汇集算力来提高获得比特币的概率。


比特币经发行进入流通环节后,持币人可以通过特定的软件平台(如比特币钱包)向商家支付比特币来购买商品或服务,这体现了比特币的货币属性;同时由于比特币价格的涨跌机制使其完全具备金融衍生品的所有属性,因此出现了比特币交易平台以方便持币人投资或者投机比特币。在流通环节和金融市场中,每一笔比特币交易都会由比特币网络的全体矿工验证并记入区块链。


比特币是区块链技术赋能的第一个「杀手级」应用,迄今为止区块链的核心技术和人才资源仍大多在比特币研发领域。然而,区块链作为未来新一代的底层基础技术,其应用范畴势必会超越数字加密货币而延伸到金融、经济、科技和政治等其他领域。比特币的现有技术、模式和机制,将会对区块链在新应用领域的发展提供有益的借鉴,而新领域的区块链创新也势必反过来促进解决比特币系统现存的问题。因此,比特币和区块链技术存在着协同进化、和谐共生而非相互竞争的良性反馈关系。



2. 区块链的基础模型与关键技术


本节将结合比特币系统的技术与应用现状,阐述区块链技术的基础模型、基本原理和关键技术,以及区块链在比特币系统之外的若干创新模式。现存的其他区块链应用大多都与比特币类似,仅在某些特定的环节或多或少地采用比特币模式的变种。


图 2  区块链基础架构模型


区块链技术的基础架构模型如图 2 所示。一般说来,区块链系统由数据层、网络层、共识层、激励层、合约层和应用层组成。其中,

  • 数据层封装了底层数据区块以及相关的数据加密和时间戳等技术;

  • 网络层则包括分布式组网机制、数据传播机制和数据验证机制等;

  • 共识层主要封装网络节点的各类共识算法;

  • 激励层将经济因素集成到区块链技术体系中来,主要包括经济激励的发行机制和分配机制等;

  • 合约层主要封装各类脚本、算法和智能合约,是区块链可编程特性的基础;

  • 应用层则封装了区块链的各种应用场景和案例。


该模型中,基于时间戳的链式区块结构、分布式节点的共识机制、基于共识算力的经济激励和灵活可编程的智能合约是区块链技术最具代表性的创新点。


2.1 数据层


狭义的区块链即是去中心化系统各节点共享的数据账本。每个分布式节点都可以通过特定的哈希算法和 Merkle 树数据结构,将一段时间内接收到的交易数据和代码封装到一个带有时间戳的数据区块中,并链接到当前最长的主区块链上,形成最新的区块。该过程涉及区块、链式结构、哈希算法、 Merkle 树和时间戳等技术要素。


  • 数据区块


图 3  区块结构


如图 3 所示,每个数据区块一般包含区块头(Header)和区块体(Body)两部分。区块头封装了当前版本号(Version)、前一区块地址(Prev-block)、当前区块的目标哈希值(Bits)、当前区块 PoW 共识过程的解随机数(Nonce)、Merkle 根(Merkle-root)以及时间戳(Timestamp)等信息 [21]。


比特币网络可以动态调整 PoW 共识过程的难度值,最先找到正确的解随机数 Nonce 并经过全体矿工验证的矿工将会获得当前区块的记账权。区块体则包括当前区块的交易数量以及经过验证的、区块创建过程中生成的所有交易记录。这些记录通过 Merkle 树的哈希过程生成唯一的 Merkle 根并记入区块头。


  • 链式结构

取得记账权的矿工将当前区块链接到前一区块,形成最新的区块主链。各个区块依次环环相接,形成从创世区块到当前区块的一条最长主链,从而记录了区块链数据的完整历史,能够提供区块链数据的溯源和定位功能,任意数据都可以通过此链式结构顺藤摸瓜、追本溯源。


需要说明的是,如果短时间内有两个矿工同时「挖出」两个新的区块加以链接的话,区块主链可能会出现暂时的「分叉」现象,其解决方法是约定矿工总是选择延长累计工作量证明最大的区块链。因此,当主链分叉后,后续区块的矿工将通过计算和比较,将其区块链接到当前累计工作量证明最大化的备选链上,形成更长的新主链,从而解决分叉问题 [19]。


  • 时间戳

区块链技术要求获得记账权的节点必须在当前数据区块头中加盖时间戳,表明区块数据的写入时间。因此,主链上各区块是按照时间顺序依次排列的。时间戳技术本身并不复杂,但其在区块链技术中的应用是具有重要意义的创新。


时间戳可以作为区块数据的存在性证明(Proof of Existence),有助于形成不可篡改和不可伪造的区块链数据库,从而为区块链应用于公证、知识产权注册等时间敏感的领域奠定了基础。更为重要的是,时间戳为未来基于区块链的互联网和大数据增加了时间维度,使得通过区块数据和时间戳来重现历史成为可能。


  • 哈希函数

区块链通常并不直接保存原始数据或交易记录,而是保存其哈希函数值,即将原始数据编码为特定长度的由数字和字母组成的字符串后记入区块链。哈希函数(也称散列函数)具有诸多优良特点,因而特别适合用于存储区块链数据。例如,通过哈希输出几乎不能反推输入值(单向性),不同长度输入的哈希过程消耗大约相同的时间(定时性)且产生固定长度的输出(定长性),即使输入仅相差一个字节也会产生显著不同的输出值(随机性)等。


比特币区块链通常采用双 SHA256 哈希函数,即将任意长度的原始数据经过两次 SHA256 哈希运算后转换为长度为 256 位(32字节)的二进制数字来统一存储和识别。除上述特点外,SHA256 算法还具有巨大的散列空间(2256)和抗碰撞(避免不同输入值产生相同哈希值)等特性,可满足比特币的任何相关标记需要而不会出现冲突。


  • Merkle 树

Merkle 树是区块链的重要数据结构,其作用是快速归纳和校验区块数据的存在性和完整性。如图 3 所示,Merkle 树通常包含区块体的底层(交易)数据库,区块头的根哈希值(即Merkle 根)以及所有沿底层区块数据到根哈希的分支。


Merkle 树运算过程一般是将区块体的数据进行分组哈希,并将生成的新哈希值插入到 Merkle 树中,如此递归直到只剩最后一个根哈希值并记为区块头的 Merkle 根。最常见的 Merkle 树是比特币采用的二叉 Merkle 树,其每个哈希节点总是包含两个相邻的数据块或其哈希值 [22],其他变种则包括以太坊的 Merkle Patricia Tree等 [4]。


Merkle 树有诸多优点:

  • 首先是极大地提高了区块链的运行效率和可扩展性,使得区块头只需包含根哈希值而不必封装所有底层数据,这使得哈希运算可以高效地运行在智能手机甚至物联网设备上;

  • 其次是 Merkle 树可支持「简化支付验证」协议,即在不运行完整区块链网络节点的情况下,也能够对(交易)数据进行检验 [3]。例如,为验证图 3 中交易 6,一个没有下载完整区块链数据的客户端可以通过向其他节点索要包括从交易 6 哈希值沿 Merkle 树上溯至区块头根哈希处的哈希序列(即哈希节点6,5,56,78,5678,1234)来快速确认交易的存在性和正确性。


一般说来,在 N 个交易组成的区块体中确认任一交易的算法复杂度仅为 log_2 N 。这将极大地降低区块链运行所需的带宽和验证时间,并使得仅保存部分相关区块链数据的轻量级客户端成为可能。


  • 非对称加密

非对称加密是为满足安全性需求和所有权验证需求而集成到区块链中的加密技术,常见算法包括 RSA、Elgamal、Rabin、D-H、ECC(即椭圆曲线加密算法)等。非对称加密通常在加密和解密过程中使用两个非对称的密码,分别称为公钥和私钥。非对称密钥对具有两个特点:


  • 首先是用其中一个密钥(公钥或私钥)加密信息后,只有另一个对应的密钥才能解开;

  • 其次是公钥可向其他人公开、私钥则保密,其他人无法通过该公钥推算出相应的私钥。


非对称加密技术在区块链的应用场景主要包括信息加密、数字签名和登录认证等,其中:


  • 信息加密场景主要是由信息发送者(记为 A)使用接受者(记为 B)的公钥对信息加密后再发送给 B,B 利用自己的私钥对信息解密。比特币交易的加密即属于此场景;

  • 数字签名场景则是由发送者 A 采用自己的私钥加密信息后发送给 B,B 使用 A 的公钥对信息解密、从而可确保信息是由 A 发送的;

  • 登录认证场景则是由客户端使用私钥加密登录信息后发送给服务器,后者接收后采用该客户端的公钥解密并认证登录信息。


  • 图 4  比特币非对称加密机制


以比特币系统为例,其非对称加密机制如图 4 所示:


  • 比特币系统一般通过调用操作系统底层的随机数生成器来生成 256 位随机数作为私钥。比特币私钥的总量可达 2256,极难通过遍历全部私钥空间来获得存有比特币的私钥,因而是密码学安全的。为便于识别,256 位二进制形式的比特币私钥将通过 SHA256 哈希算法和 Base58 转换,形成 50 个字符长度的易识别和书写的私钥提供给用户;

  • 比特币的公钥是由私钥首先经过 Secp256k1 椭圆曲线算法生成 65 字节长度的随机数。该公钥可用于产生比特币交易时使用的地址,其生成过程为首先将公钥进行 SHA256 和 RIPEMD160 双哈希运算并生成20字节长度的摘要结果(即 hash160 结果),再经过 SHA256 哈希算法和 Base58 转换形成 33 字符长度的比特币地址 [19]。公钥生成过程是不可逆的,即不能通过公钥反推出私钥。


比特币的公钥和私钥通常保存于比特币钱包文件,其中私钥最为重要。丢失私钥就意味着丢失了对应地址的全部比特币资产。现有的比特币和区块链系统中,根据实际应用需求已经衍生出多私钥加密技术,以满足多重签名等更为灵活和复杂的场景。


2.2 网络层


网络层封装了区块链系统的组网方式、消息传播协议和数据验证机制等要素。结合实际应用需求,通过设计特定的传播协议和数据验证机制,可使得区块链系统中每一个节点都能参与区块数据的校验和记账过程,仅当区块数据通过全网大部分节点验证后,才能记入区块链。


  • 组网方式

区块链系统的节点一般具有分布式、自治性、开放可自由进出等特性,因而一般采用对等式网络(Peer-to-Peer Network,P2P 网络)来组织散布全球的参与数据验证和记账的节点。P2P 网络中的每个节点均地位对等且以扁平式拓扑结构相互连通和交互,不存在任何中心化的特殊节点和层级结构,每个节点均会承担网络路由、验证区块数据、传播区块数据、发现新节点等功能。


按照节点存储数据量的不同,可以分为全节点轻量级节点


前者保存有从创世区块到当前最新区块为止的完整区块链数据,并通过实时参与区块数据的校验和记账来动态更新主链。全节点的优势在于不依赖任何其他节点而能够独立地实现任意区块数据的校验、查询和更新,劣势则是维护全节点的空间成本较高。以比特币为例,截止到 2016 年 2 月,创世区块至当前区块的数据量已经超过 60 GB。


与之相比,轻量级节点则仅保存一部分区块链数据,并通过第 2.1 节提到的简易支付验证方式向其相邻节点请求所需的数据来完成数据校验。


  • 数据传播协议

任一区块数据生成后,将由生成该数据的节点广播到全网其他所有的节点来加以验证。现有的区块链系统一般根据实际应用需求设计比特币传播协议的变种,例如以太坊区块链集成了所谓的「幽灵协议」以解决因区块数据确认速度快而导致的高区块作废率和随之而来的安全性风险 [4]。根据中本聪的设计,比特币系统的交易数据传播协议包括如下步骤 [3]:


  • 1) 比特币交易节点将新生成的交易数据向全网所有节点进行广播;

  • 2) 每个节点都将收集到的交易数据存储到一个区块中;

  • 3) 每个节点基于自身算力在区块中找到一个具有足够难度的工作量证明;

  • 4) 当节点找到区块的工作量证明后,就向全网所有节点广播此区块;

  • 5) 仅当包含在区块中的所有交易都是有效的且之前未存在过的,其他节点才认同该区块的有效性

  • 6) 其他节点接受该数据区块,并在该区块的末尾制造新的区块以延长该链条,而将被接受区块的随机哈希值视为先于新区块的随机哈希值。


需要说明的是,如果交易节点是与其他节点无连接的新节点,比特币系统通常会将一组长期稳定运行的「种子节点」推荐给新节点建立连接,或者推荐至少一个节点连接到新节点。此外,交易数据广播时,并不需要全部节点均接收到,而是只要足够多的节点做出响应即可整合进入区块账本中。未接收到特定交易数据的节点则可向邻近节点请求下载该缺失的交易数据 [19]。


  • 数据验证机制

P2P 网络中的每个节点都时刻监听比特币网络中广播的数据与新区块。节点接收到邻近节点发来的数据后,将首先验证该数据的有效性


  • 如果数据有效,则按照接收顺序为新数据建立存储池以暂存尚未记入区块的有效数据,同时继续向邻近节点转发;

  • 如果数据无效,则立即废弃该数据,从而保证无效数据不会在区块链网络继续传播。


以比特币为例,比特币的矿工节点会收集和验证 P2P 网络中广播的尚未确认的交易数据,并对照预定义的标准清单,从数据结构、语法规范性、输入输出和数字签名等各方面校验交易数据的有效性,并将有效交易数据整合到当前区块中。


同理,当某矿工「挖」到新区块后,其他矿工节点也会按照预定义标准来校验该区块是否包含足够工作量证明,时间戳是否有效等。如确认有效,其他矿工节点会将该区块链接到主区块链上,并开始竞争下一个新区块。


由网络层设计机理可见,区块链是典型的分布式大数据技术。全网数据同时存储于去中心化系统的所有节点上,即使部分节点失效,只要仍存在一个正常运行的节点,区块链主链数据就可完全恢复而不会影响后续区块数据的记录与更新。


这种高度分散化的区块存储模式与云存储模式的区别在于,后者是基于中心化结构基础上的多重存储和多重数据备份模式,即「多中心化」模式,而前者则是完全「去中心化」的存储模式,具有更高的数据安全性。


2.3 共识层


如何在分布式系统中高效地达成共识是分布式计算领域的重要研究问题。正如社会系统中「民主」和「集中」的对立关系相似,决策权越分散的系统达成共识的效率越低、但系统稳定性和满意度越高;而决策权越集中的系统更易达成共识,但同时更易出现专制和独裁。区块链技术的核心优势之一就是能够在决策权高度分散的去中心化系统中使得各节点高效地针对区块数据的有效性达成共识。


早期的比特币区块链采用高度依赖节点算力的工作量证明(Proof of Work,PoW)机制来保证比特币网络分布式记账的一致性。随着区块链技术的发展和各种竞争币的相继涌现,研究者提出多种不依赖算力而能够达成共识的机制,例如点点币首创的权益证明(Proof of Stake,PoS)共识 [23] 和比特股首创的授权股份证明机制(Delegated Proof of Stake,DPoS)共识机制 [24] 等。区块链共识层即封装了这些共识机制。


  • PoW 共识

中本聪在其比特币奠基性论文中设计了 PoW 共识机制,其核心思想是通过引入分布式节点的算力竞争来保证数据一致性和共识的安全性。


比特币系统中,各节点(即矿工)基于各自的计算机算力相互竞争来共同解决一个求解复杂但验证容易的 SHA256 数学难题(即挖矿),最快解决该难题的节点将获得区块记账权和系统自动生成的比特币奖励。


该数学难题可表述为:根据当前难度值,通过搜索求解一个合适的随机数(Nonce)使得图 3 中区块头各元数据的双 SHA256 哈希值小于或等于目标哈希值。比特币系统通过灵活调整随机数搜索的难度值来控制区块的平均生成时间为 10 分钟左右。一般说来,PoW 共识的随机数搜索过程如下(参照图3区块结构) [19]:


  • 步骤 1:搜集当前时间段的全网未确认交易,并增加一个用于发行新比特币奖励的 Coinbase 交易,形成当前区块体的交易集合;

  • 步骤 2:计算区块体交易集合的 Merkle 根记入区块头,并填写区块头的其他元数据,其中随机数 Nonce 置零;

  • 步骤 3:随机数 Nonce 加 1;计算当前区块头的双 SHA256 哈希值,如果小于或等于目标哈希值,则成功搜索到合适的随机数并获得该区块的记账权;否则继续步骤 3 直到任一节点搜索到合适的随机数为止;

  • 步骤 4:如果一定时间内未成功,则更新时间戳和未确认交易集合、重新计算 Merkle 根后继续搜索。


符合要求的区块头哈希值通常由多个前导零构成,目标哈希值越小,区块头哈希值的前导零越多,成功找到合适的随机数并「挖」出新区块的难度越大。据区块链实时监测网站 Blockchain.info 显示,截止到 2016 年 2 月,符合要求的区块头哈希值一般有 17 个前导零,例如第 398346 号区块哈希值为「0000000000000000077f754f22f21629a7975cf…」。按照概率计算,每 16 次随机数搜索将会有找到一个含有一个前导零的区块哈希值,因而比特币目前 17 位前导零哈希值要求 1617 次随机数搜索才能找到一个合适的随机数并生成一个新的区块。


由此可见,比特币区块链系统的安全性和不可篡改性是由 PoW 共识机制的强大算力所保证的,任何对于区块数据的攻击或篡改都必须重新计算该区块以及其后所有区块的 SHA256 难题,并且计算速度必须使得伪造链长度超过主链,这种攻击难度导致的成本将远超其收益。据估计,截止到 2016 年 1 月,比特币区块链的算力已经达到 800000000 Gh/s,即每秒进行8×10^18 次运算,超过全球 Top 500 超级计算机的算力总和。


PoW 共识机制是具有重要意义的创新,其近乎完美地整合了比特币系统的货币发行、交易支付和验证等功能,并通过算力竞争保障系统的安全性和去中心性。PoW 共识机制同时存在着显著的缺陷,其强大算力造成的资源浪费(如电力)历来为研究者所诟病,而且长达 10 分钟的交易确认时间使其相对不适合小额交易的商业应用。


  • PoS 共识机制

PoS 共识是为解决 PoW 共识机制的资源浪费和安全性缺陷而提出的替代方案。限于篇幅,本文主要聚焦于 PoS 相对于 PoW 的创新之处。PoS 共识本质上是采用权益证明来代替 PoW 中的基于哈希算力的工作量证明,是由系统中具有最高权益而非最高算力的节点获得区块记账权。


权益体现为节点对特定数量货币的所有权,称为币龄或币天数(Coin Days)。币龄是特定数量的币与其最后一次交易的时间长度的乘积,每次交易都将会消耗掉特定数量的币龄。例如,某人在一笔交易中收到 10 个币后并持有 10 天,则获得 100 币龄;而后其花掉 5 个币后,则消耗掉 50 币龄。显然,采用 PoS 共识机制的系统在特定时间点上的币龄总数是有限的,长期持币者更倾向于拥有更多币龄,因此币龄可视为其在 PoS 系统中的权益。


此外,PoW 共识过程中各节点挖矿难度相同,而 PoS 共识过程中的难度与交易输入的币龄成反比,消耗币龄越多则挖矿难度越低。节点判断主链的标准也由 PoW 共识的最高累计难度转变为最高消耗币龄,每个区块的交易都会将其消耗的币龄提交给该区块,累计消耗币龄最高的区块将被链接到主链。


由此可见,PoS 共识过程仅依靠内部币龄和权益而不需要消耗外部算力和资源,从根本上解决了 PoW 共识算力浪费的问题,并且能够在一定程度上缩短达成共识的时间,因而比特币之后的许多竞争币均采用 PoS 共识机制。


  • DPoS 共识机制

DPoS 共识机制的基本思路类似于「董事会决策」,即系统中每个股东节点可以将其持有的股份权益作为选票授予一个代表,获得票数最多且愿意成为代表的前 101 个节点将进入「董事会」,按照既定的时间表轮流对交易进行打包结算并且签署(即生产)一个新区块。每个区块被签署之前,必须先验证前一个区块已经被受信任的代表节点所签署。「董事会」的授权代表节点可以从每笔交易的手续费中获得收入,同时要成为授权代表节点必须缴纳一定量的保证金,其金额相当于生产一个区块收入的 100 倍。


授权代表节点必须对其他股东节点负责,如果其错过签署相对应的区块,则股东将会收回选票从而将该节点「投出」董事会。因此,授权代表节点通常必须保证 99% 以上的在线时间以实现盈利目标 [24]。


显然,与 PoW 共识机制必须信任最高算力节点和 PoS 共识机制必须信任最高权益节点不同的是,DPoS 共识机制中每个节点都能够自主决定其信任的授权节点且由这些节点轮流记账生成新区块,因而大幅减少了参与验证和记账的节点数量,可以实现快速共识验证。


除上述三种主流共识机制外,实际区块链应用中也衍生出了 PoW + PoS、行动证明(Proof of Activity)等多个变种机制。这些共识机制各有优劣势,比特币的 PoW 共识机制依靠其先发优势已经形成成熟的挖矿产业链,支持者众多,而 PoS 和 DPoS 等新兴机制则更为安全、环保和高效,从而使得共识机制的选择问题成为区块链系统研究者最不易达成共识的问题。


2.4 激励层


区块链共识过程通过汇聚大规模共识节点的算力资源来实现共享区块链账本的数据验证和记账工作,因而其本质上是一种共识节点间的任务众包过程。去中心化系统中的共识节点本身是自利的,最大化自身收益是其参与数据验证和记账的根本目标。因此,必须设计激励相容的合理众包机制,使得共识节点最大化自身收益的个体理性行为与保障去中心化区块链系统的安全和有效性的整体目标相吻合。区块链系统通过设计适度的经济激励机制并与共识过程相集成,从而汇聚大规模的节点参与并形成了对区块链历史的稳定共识。


以比特币为例,比特币 PoW 共识中的经济激励由新发行比特币奖励和交易流通过程中的手续费两部分组成,奖励给 PoW 共识过程中成功搜索到该区块的随机数并记录该区块的节点。因此,只有当各节点通过合作共同构建共享和可信的区块链历史记录、并维护比特币系统的有效性,其获得的比特币奖励和交易手续费才会有价值。比特币已经形成成熟的挖矿生态圈,大量配备专业矿机设备的矿工积极参与基于挖矿的 PoW 共识过程,其根本目的就是通过获取比特币奖励并转换为相应法币来实现盈利。


  • 发行机制

比特币系统中每个区块发行比特币的数量是随着时间阶梯性递减的。创世区块起的每个区块将发行 50 个比特币奖励给该区块的记账者,此后每隔约 4 年(21万个区块)每区块发行比特币的数量降低一半,依此类推,一直到比特币的数量稳定在上限 2100 万为止 [19]。


比特币交易过程中会产生手续费,目前默认手续费是万分之一个比特币,这部分费用也会记入区块并奖励给记账者。


这两部分费用将会封装在每个区块的第一个交易(称为 Coinbase 交易)中。虽然现在每个区块的总手续费相对于新发行比特币来说规模很小(通常不会超过 1 个比特币),但随着未来比特币发行数量的逐步减少甚至停止发行,手续费将逐渐成为驱动节点共识和记账的主要动力。同时,手续费还可以防止大量微额交易对比特币网络发起的「粉尘」攻击,起到保障安全的作用。


  • 分配机制

比特币系统中,大量的小算力节点通常会选择加入矿池,通过相互合作汇集算力来提高「挖」到新区块的概率,并共享该区块的比特币和手续费奖励。据 Bitcoinmining.com 统计,目前已经存在 13 种不同的分配机制 [25]。主流矿池通常采用 PPLNS(Pay Per Last N Shares)、PPS(Pay Per Share)和 PROP(PROPortionately)等机制。矿池将各节点贡献的算力按比例划分成不同的股份(Share),其中:


  • PPLNS 机制是指发现区块后,各合作节点根据其在最后 N 个股份内贡献的实际股份比例来分配区块中的比特币;

  • PPS 则直接根据股份比例为各节点估算和支付一个固定的理论收益,采用此方式的矿池将会适度收取手续费来弥补其为各节点承担的收益不确定性风险;

  • PROP 机制则根据节点贡献的股份按比例地分配比特币。


矿池的出现是对比特币和区块链去中心化趋势的潜在威胁,如何设计合理的分配机制引导各节点合理地合作、避免出现因算力过度集中而导致的安全性问题是亟待解决的研究问题。


2.5 合约层


合约层封装区块链系统的各类脚本代码、算法以及由此生成的更为复杂的智能合约。如果说数据、网络和共识三个层次作为区块链底层「虚拟机」分别承担数据表示、数据传播和数据验证功能的话,合约层则是建立在区块链虚拟机之上的商业逻辑和算法,是实现区块链系统灵活编程和操作数据的基础。包括比特币在内的数字加密货币大多采用非图灵完备的简单脚本代码来编程控制交易过程,这也是智能合约的雏形。


随着技术的发展,目前已经出现以太坊等图灵完备的可实现更为复杂和灵活的智能合约的脚本语言,使得区块链能够支持宏观金融和社会系统的诸多应用。本节将以比特币脚本为例,从技术角度简述合约层的基本技术和方法,关于智能合约的延伸内容将在第 5 节讨论。


比特币采用一种简单的、基于堆栈的、从左向右处理的脚本语言,而一个脚本本质上是附着在比特币交易上的一组指令的列表。比特币交易依赖于两类脚本来加以验证,即锁定脚本和解锁脚本,二者的不同组合可在比特币交易中衍生出无限数量的控制条件。其中,


  • 锁定脚本是附着在交易输出值上的「障碍」,规定以后花费这笔交易输出的条件;

  • 解锁脚本则是满足被锁定脚本在一个输出上设定的花费条件的脚本,同时它将允许输出被消费。


举例来说,大多数比特币交易均是采用接受者的公钥加密和私钥解密,因而其对应的P2PKH(Pay to Public Key Hash)标准交易脚本中的锁定脚本即是使用接受者的公钥实现阻止输出功能,而使用私钥对应的数字签名来加以解锁 [19]。


比特币脚本系统可以实现灵活的交易控制,例如:


  • 通过规定某个时间段(如一周)作为解锁条件,可以实现延时支付;

  • 通过规定接受者和担保人必须共同私钥签名才能支配一笔比特币,可以实现担保交易;

  • 通过设计一种可根据外部信息源核查某概率事件是否发生的规则并作为解锁脚本附着在一定数量的比特币交易上,即可实现博彩和预测市场等类型的应用;

  • 通过设定 N 个私钥集合中至少提供 M 个私钥才可解锁,可实现 M - N 型多重签名,即 N个潜在接受者中至少有 M 个同意签名才可实现支付。多重签名可广泛应用于公司决策、财务监督、中介担保甚至遗产分配等场景。


比特币脚本是智能合约的雏形,催生了人类历史上第一种可编程的全球性货币。然而,比特币脚本系统是非图灵完备的,其中不存在复杂循环和流控制,这在损失一定灵活性的同时能够极大地降低复杂性和不确定性,并能够避免因无限循环等逻辑炸弹而造成拒绝服务等类型的安全性攻击。


为提高脚本系统的灵活性和可扩展性,研究者已经尝试在比特币协议之上叠加新的协议,以满足在区块链上构建更为复杂的智能合约的需求。以太坊已经研发出一套图灵完备的脚本语言,用户可基于以太坊构建任意复杂和精确定义的智能合约与去中心化应用,从而为基于区块链构建可编程的金融与社会系统奠定了基础 [4]。


(未完待续)


参考文献




作者:厚势分析师盖布林

转载请注明来自厚势和厚势公号:iHoushi



-END-


厚势往期推送精选







文章精选


企业家

马斯克和贾跃亭 福特CEO下台正道汽车仰融

任正非裁员|电池大牛凯尔提离开特斯拉

智能驾驶

BBC自动驾驶纪录片自动驾驶第一案,谷歌讼Uber

高精地图自动驾驶的灾难英特尔收购Mobileye

苹果公司造车?库克又不傻!iPhone的挣钱效率比造车高多了!

OTA 助车主逃离飓风魔爪,特斯拉的又一次完美表演 

为什么最早发明无人驾驶汽车是谷歌而不是传统汽车制造商? 

在数据为王的时代,自动驾驶数据共享真的可行?

清华汽车李客强教授:智能车辆运动控制研究综述

同济汽车余卓平教授:无人车运动规划算法综述

新能源汽车

全国50个新能源汽车项目大盘点

锂电池发展趋势中国汽车产业电动化进程

苹果收购特斯拉?丰田和特斯拉决裂

全球汽车品牌价值榜德国螃蟹电动车

特斯拉Model Y无线充电大突破

2016市场分析和2017走势

麦肯锡:电动卡车市场为何在此刻集中爆发?(上) 

麦肯锡:电动卡车市场为何在此刻集中爆发?(下)

项目和评论

以色列最强10家自动驾驶创业公司

 37个汽车分时项目盘点百度投资蔚来汽车

马化腾或为共享单车最大赢家汽车产业3大趋势

Momenta获$4000万B轮

百度系自动驾驶初创公司 Pony.ai 的突围之路

这些大神从Google出走,创办了五家(命运各异的)无人车公司

戴世智能带你读懂自动驾驶高精度行车定位技术

无需基础知识,理解自动驾驶高精度行车定位技术


为您对接资本和产业

新能源汽车 自动驾驶 车联网




联系邮箱

bp@ihoushi.com

点击阅读原文,查看推送「至少滴滴优步危险了——区块链将如何重塑汽车产业?」

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存