区块链技术丛书
点击查看第二章
区块链工程实践
行业解决方案与关键技术
鲁静 著
第1章
基于区块链的可信电子证照
证件作为个人从事社会活动和企业生产经营的一种具有法定效力的文件,是现代生活中必不可少的工具。在严谨的证件审批管理*下,烦琐的程序和庞杂的材料证明使得“证件多、办证难、用证烦、核查慢”等办证问题频现,既影响民众生活,阻碍企业正常运营,又降低了行政效率,成为长期以来民众诟病的大问题。与此同时,传统的纸质证照不仅会造成资源浪费,促使重复性证明成为常态,更重要的是难以杜绝证件伪造现象,造成信任危机,同时还存在证照信息分享不畅、易丢失、易损毁等一系列问题。随着信息技术的发展,电子证照应运而生。电子证照不仅可以提高相关人员办事效率,还可以解决纸质证照无法解决的资源浪费和易伪造等问题,甚至可以打通不同的电子政务系统,从而更好地为民众服务。
1.1 背景与现状
1.1.1 电子证照的发展历史
自党的十八大召开以来,利用信息手段解决“证件多”和“用证难”等问题已成为社会共识。国务院办公厅《关于促进电子政务协调发展的指导意见》(国办发[2014]66号)明确指出:“积极推动电子证照、电子文件、电子印章、电子档案等在政务工作中的应用”;澳门在 2005 年年底正式推出《电子政务发展纲领(2005—2009)》,提出“运用资讯科技及行政现代化手段,提高*部门施政质素和效率,降低行政运作成本,持续令公民得到贴身且满意的公共服务”的愿景。自2016年以来,国务院先后发文提出构建电子证照库,并明确要求积极推动电子证照、电子公文、电子签章等在政务服务中的应用,实现“一号一窗一网”,为居民提供“记录一生,管理一生,服务一生”的服务。目前,国内已有80多个试点城市在不同程度地建设电子证照库,但各地都建有自己的信息系统,信息化水平也存在差异,电子证照库的实施困难重重。如何打通不同的信息系统、令证照互认,是亟须解决的技术问题。
国内目前的电子证照管理平台主要采用集*享模式,由中心数据库来完成证照的制作、存储、信息查询和交换共享,数据库的拥有者掌握着数据库的访问和更新权限。但由于需要管理的人口众多、社会发展水平不均衡,短时间内把不同地区、部门的公民信息完全集中并实时联网,建立“集中的公民信息库”很难实现,因为建立“集中的公民信息库”需要通过*改革与机构合并实现数据集中和信息联网,在当前条件下,这在管理和技术上的实现都相当困难,存在跨地区、跨部门应用流程复杂、管理性能不高等问题,无法适应大规模、多样化电子证照管理和验证服务需求。同时集中式数据库并没有有效控制证照信息的保密制度,或者有目的性的指定授权,使其对所有办事机构公开,这样证照持有人的信息没法得到有效保护,被攻击篡改和泄露的风险较大,致使证照可靠性打了折扣。
近几年各类研究机构、企业对电子证照也展开了日渐深入的研究。《一种电子证照信息交互的系统及方法》[1]公开了一种电子证照信息交互系统,包括主控端、存储端、签发端、授权端、查验端和服务端,证照持有人可以根据不同的办事流程对不同的办事机构进行电子证照的授权查验;《一种非介质电子证照系统》[2]包括远程信息数据库系统、通信网络和系统终端,提供了一种能克服现有介质证照不足且能基于GPS、智能手机满足社会智能管理条件的非介质证照系统;《电子认证在可信电子证照中的应用》[3]通过在电子证照中增加带有数字签名的二维码形成可信电子证照,保证了证照的真实性和不可篡改性;《基于数字证书互联互通的身份认证支撑平台及认证方法》[4]公开了一种基于数字证书互联互通的身份认证支撑平台以及身份认证方法,将各应用系统需要进行数字证书认证的请求统一集中到基于数字证书互联互通的身份认证支撑平台进行处理。以上研究均对信息系统进行了不同程度的优化,也取得了一定效果,但其基本思路仍是依托第三方认证机构,建立中心数据库存储数据,然后进行各部门共享,这并不能从根本上解决信息壁垒及证照信息互信互通的问题。
1.1.2 区块链在电子证件和身份认证领域的国内外发展现状
区块链(blockchian)技术[5]是随比特币等数字加密货币兴起的一种新型分布式数据组织方法及运算方式,通过去中心化来集体维护一个可靠数据库的技术。该技术将一段时间内的两两配对数据(比特币中指交易)打包成数据块(block),然后利用具有激励性质的共识算法让点对点对等网(p2p网络)中的所有节点产生的数据块保持一致,并生成数据指纹验证其有效性然后链接(chain)下一个数据块。在这个过程中,所有节点的地位都是对等的,没有所谓的服务器和客户端之分,因此被称为去中心化的方式,这很好地解决了数据在存储和共享环节中存在的安全和信任问题。通过区块链技术,在数据共享过程中可明确数据的来源、所有权和使用权,达到数据在存储上不可篡改、在流通上路径可追溯、在数据管理上可审计的目的,保证数据在存储、共享、审计等环节中的安全,实现真正意义上的数据全流程管理,进一步拓展数据的流通渠道、促进数据的共享共用、激发数据的价值挖掘、增强数据在流通中的信任。同时,基于区块链的分布式共享“总账”这一特点,在平台安全方面,可达到有效消除单点故障、抵御网络攻击的目的。这些特点使得区块链技术特别适合应用于具有保密要求的大数据运算领域。
近年来,国外已有一些研究机构和企业将区块链应用在电子证件认证和身份认证领域(见图1-1)。2015年7月,区块链初创公司ShoCard获150万美元投资,将实体身份证件的数据指纹保存在区块链上。用户用手机扫描自己的身份证件,ShoCard应用会把证件信息加密后保存在用户本地,把数据指纹保存到区块链。区块链上的数据指纹受一个私钥控制,只有持有私钥的用户自己才有权修改,ShoCard本身无权修改。同时,为了防范用户盗用他人身份证件扫描上传,ShoCard还允许银行等机构对用户的身份进行背书,确保真实性。2015年9月,去中心化的管理项目比特国(Bitnation)在区块链上实施“电子公民”(e-Residents)计划。用户在其官网上通过区块链登记成为Bitnation的“公民”,并获得Bitnation“世界公民身份证”。2015年12月,Bitnation与爱沙尼亚*签署协议,将为“电子公民”项目提供公证服务,无论他们身居何处,在何处做生意,都可以在区块链上享受结婚证明、出生证明、商务合同和其他服务。区块链是一个公共账本,全世界数以千万计的计算机都存储着其副本,具备公开公证的可复制性与不可更改性,比目前各国使用的传统公证方法更安全。2016年6月,美国国安局向区块链初创公司Factom拨款19.9万美元用于物联网设备数字身份安全性开发,利用区块链技术来验证物联网设备,阻止因设备欺骗而导致的非授权访问,以此来确保数据完整性;美国区块链公司Certchain为文档建立数据指纹,提供去中心化的文件所有权证明;OneName公司则提供了另一种身份服务,即任何比特币的用户都可以把自己的比特币地址和自己的姓名、Twitter、Facebook等账号绑定起来,相当于为每个社交账户提供了一个公开的比特币地址和进行数字签名的能力。
在国内,有一些研究机构也在开展区块链在电子政务方面的应用研究。闵旭蓉等人[6]设计了一种电子证照共享平台,利用区块链技术的去中心化、不可篡改、分布式共同记账、非对称加密和数据安全存储等特点,实现电子证照的安全可信共享,实现各地、各部门和各层级间政务数据的互联互通,支撑*高效施政。黄步添等人[7]明确了电子证照参与者的权利和义务,基于联盟链思想和轮值机制,设计区块链平台的系统架构、数据结构和业务流程,提供电子证照的颁发、存储、更新、验证等功能,实现多中心、协同式电子证照管理,从而为电子证照拥有者以及相关应用系统提供便捷的电子证照服务。蒋海等人[8]提供了一种区块链身份构建及验证方法,有效缓解了因个别认证机构的问题影响用户身份信息准确性的情况,然而其原始数据来源为第三方认证机构,未能解决数据的真实性问题,且其只进行身份验证,未与其他证件锚定,扩展性不强,发挥的作用有限。
此外,有一些教育和科研机构将区块链技术应用于教育证书领域。2015 年,麻省理工学院的媒体实验室(The MIT MediaLab)应用区块链技术研发了学习证书平台,并发布了一个类似“比特币钱包”的手机App[9]。学习者可以利用该App存储和分享自己的学习证书,随身携带、随时展示,且拥有重申成绩的权力。学习者不能擅自更改学习证书的内容,但能自主决定将什么证书展示给哪个访问者。在查询时,将数字证书的密钥点对点地发送给用人单位或学生等有关需求方,确保证书不会被恶意查询。无独有偶,位于旧金山的软件培训机构—Holberton School从2017年开始利用区块链技术记录学历,并在区块链上共享学生的学历证书信息。同样,学分也可以通过这项技术认证和交换。对于学生来说,这一应用拓宽了他们获得教育评价的途径,方便了学习记录和学历信息的保存。从更长远的眼光来看,利用区块链记录跨地区、跨院校甚至跨国学习者的信息,可以使在不同环境中学习的学习者获得同样有效的学习记录。区块链技术在教育证书方面可能的应用方式包括:为在线教育提供有公信力和低成本的证书系统;作为智能合约,完成教育契约和存证;作为分布式的学习记录存储,记录学习轨迹,共享学习学分。从应用规模和范围来看,区块链在教育领域的应用范围可以小到单个教育机构、学校联盟,大到全国甚至全球性的教育互认互通联盟。
1.2 区块链与电子证照的匹配度分析
在电子证照应用中引入区块链技术,可以借助区块链的去中心化同步记账、身份认证、数据加密和数据不可篡改等特征,确保电子证照信息可信任且可追溯,使各社会主体共同建造、共同维护、共同监督,从而满足公众的知情权、监督权,增强电子证照的客观性与可信度,提高政务工作效率及公民和法人的办事效率。区块链与电子证照的匹配度分析如下所示。
(1)打破*信息壁垒:区块链采用分布式数据库架构,不需要跨部门、跨地区的数据集中,不需要构建多级数据管理中心,不改变*部门的现有业务系统。区块链构建新型的部门协作模式,提高其协同的流通效应,促进*部门间信息的可信流动。与中心数据库集*享模式比较起来,这种模式建设难度更低,实施可行性更高。
(2)规避道德风险:*业务部门只需要将市民信息开放给市民使用,不需要对其他部门开放,防止用户信息泄露。同时,点对点查证实现证照信息仅在持证人与查证人之间流动,规避第三方参与时的道德风险。
(3)可信的存在性证明:发证机构通过对电子证照文件签名,将发证记录保存在区块链上,可证明其于某一确定时刻合法存在,杜绝证件伪造现象,从而促进社会互信,降低公众信任成本和企业商业活动成本。
(4)持证人可监督证照使用过程:区块链通过交易打包的形式保存不可篡改的发证、用证、验证及更改记录。持证人可在客户端实时查看电子证照在何时何地被查验和使用过,避免证照在不知情的状况下被他人冒用,大大降低了使用风险。通过加盖时间戳,区块链衔接更新后的证照与原始版本,连续性也会得到保证。
(5)可审计性高:电子证照文件经过哈希运算多点备份保存在区块链上,数据安全性高。由于加盖了时间戳使得证件使用记录可追溯,可为审计部门提供更可信的数据支撑,避免重复认证,减少资源浪费。
(6)证照信息互信互通:主链进行身份认证,侧链认证各种证照(结婚证、不动产证、学位学历证、营业执照证、卫生许可证),侧链与主链双向锚定,实现证照信息*流动,积累大量应用数据,逐步提供征信服务,助力诚信社会建设。
1.3 基于区块链的可信电子证照方案设计
1.3.1 业务设计
基于区块链的可信电子证照用于*部门给公民发放电子证照,以取代纸质证照,并通过区块链保存不可篡改的发证、收证、查证记录,使各社会主体共同建造、共同维护、共同监督,从而满足公众的知情权、监督权,增强电子证照的客观性与可信度。
从业务功能上来说,可信电子证照应用包括登记、发证、收证、查验几个环节,如图1-2所示。登记环节由公民在指定业务部门完成实名登记,申请开通电子证照;发证环节由公民根据需要申请个人电子证件,并由*或第三方机构发放电子证照;收证环节用于公民接收、存储、管理自己的电子证照;查验环节主要由查验工作人员对公民提供的电子证照进行查验,证明个人身份或办理相关业务。
1. 登记
实现公民电子证照的日常开通、注销、变更申请工作。公民根据个人在指定的业务部门完成实名登记后,即可办理电子证照的开通、注销、更改等日常业务。
2. 发证
实现公民电子证照的发放。公民申请开通电子证照后,由公民提出申请,可信电子证照应用平台根据申请信息为公民发放个人电子证照。电子证照通过彩信、手机客户端等几种渠道进行发放,申请的个人电子证照通过手机客户端进行统一管理。具体流程如下:
(1)持证人通过手机客户端向*的发证机构提供个人信息,申请一个数字身份。
(2)发证机构审核持证人信息,生成持证人的数字身份;发证机构用其私钥对持证人的数字身份签名后,发送给持证人,以及向电网信息中心报审/备案。
(3)持证人使用自己的公钥对接收到的有发证机构签名的数字身份进行加密,并提交数字身份区块链。
(4)数字身份区块链完成验证和共识过程,实现数字身份的记账。
3. 查验
实现工作人员对公民电子证照的查验,对公民身份进行识别、核对,完成个人身份证明。查验人员可通过手机客户端、PC工作端进行查验操作,查验操作记录保存在统一管理中心,以保证事后审计。具体流程如下:
(1)持证人出示客户端上的数字身份码,供查证人扫描;
(2)查证人利用发证机构的公钥验证数字身份是否为发证机构所发;
(3)查证人对持证人数字身份信息进行查证。
可信电子证照应用平台包括统一管理中心、用证端、发证端和查证端四部分。其中统一管理中心为用证端、发证端和查证端提供基础支撑功能服务和数据网络服务。用证端是提供给公民使用,即持证人获取、管理及使用电子证照的应用程序,持证人可以通过彩信、手机客户端两种方式获取电子证照。发证端将与*的各个业务系统实现对接,采用嵌入式,不影响现有业务系统的运行,并提供相应的调用发证服务。查验端是提供给查验工作人员查验电子证照时使用的应用程序,其可以安装在PC端,也可以安装到移动端。
1.3.2 架构设计
从业务流程上看,基于区块链的可信电子证照是一个典型的分布式应用(DApp),因此我们采用以太坊的技术底层作为支撑,其基础技术架构自下而上包括数据层、网络层、共识层、合约层和应用层。结合电子证照应用的需要,我们设计了如下技术架构(见图1-3),主要分为技术层、服务层和用户层。
□技术层运用以太坊平台,将证照信息及使用记录进行区块化封装,连接成区块链;
□服务层以技术层为基础,向用户提供会员制服务、区块链服务、电子证照服务;
□用户层主要表现形式为公民用户App、发证机构前端,以实现用户与用户之间、用户与发证机构之间的信息交互。
如图1-4所示,对数据进行区块化封装,每个区块细分为区块头和区块体两部分。其中,区块当前的版本号、上一个区块的地址、时间戳、当前区块哈希值与随机数封装在区块头内;当前区块的交易数量以及经过验证的、区块创建过程中生成的所有记录封装在区块体中。区块体由Merkle树组成,在Merkle树的叶子节点上,保存着每一笔发证、收证、查证和换证的记录,这些数据通过两两Hash计算向上形成Merkle树的根记入区块头。
根据不同证件的业务类型,采用主链和侧链[10]双向锚定的设计加以区分。如图1-5所示,主链用于身份证明,用户利用身份证、护照或社保卡在主链上完成身份认证,再通过主链锚定其他电子证照;不同的证照对应各自的侧链,以便于划分不同的业务数据,提高登记、查验效率。侧链的双向锚定技术允许信任在不同网络间传递,建立个人信用体系;同时允许发布试用版本的电子证照区块链,对主链不造成影响。
1.3.3 交互设计
1. 身份认证阶段
身份认证系统主要涉及区块链平台、用户App和后台管理系统的交互。对于业务系统注册账号分3个不同的角色:普通用户、制证机关用户、查验机构用户。普通用户身份认证如图1-6所示,发证机构身份认证如图1-7所示。
首先,用户登录系统ID,后台管理系统进行身份认证。如果通过则将用户身份信息写入身份管理数据库,并向用户返回注册成功信息,否则重新注册。
其次,注册区块链ID,由用户信息(姓名、单位、城市、国家及其他代表用户身份的信息)生成全网唯一的身份标识,根据这一身份标识,判断用户是否为新用户。我们利用Hash算法生成全网唯一身份标识。原则上,同样的输入会产生同样的Hash输出,而不同的输入产生的输出肯定不同。这类的Hash算法有很多,我们主要采用SHA3 、最大量2128算法。后台管理系统可以保存当前区块链中所有用户的全网唯一身份标识,可将认证机构根据用户信息生成的全网唯一身份标识与存储过的全网唯一身份标识进行对比,来判断该用户是新用户还是老用户:若未找到存储过的全网唯一身份标识则为新用户,否则为老用户。
2. 发证、收证阶段
收发证系统主要涉及用户端、区块链平台、发证机构前端和*业务库的交互,如图1-8所示。
首先,用户A由App向发证机构B请求签发电子证照。
其次,*业务库未查找到证照记录则返回申请步骤,查找成功则通过发证机构前端进行制证发证,发证机关签名,通过请求信息获取用户A(持证人)的公钥(地址)。
再次,发证机构用自己的私钥和用户A的公钥加密,平台输出该笔交易的Hash值,向全网广播用户A的发证记录,记录证件信息的区块编号,写入区块链。其他机构收到了发证机构B的广播信息,并对用户A的身份信息进行确认。
最后,持证人在App上验证发证机构签名,确保信息未被篡改,在区块链上用私钥解密完成收证,发证机构公钥解密作为存证。
3. 换证阶段
换证系统同样涉及用户端、区块链平台、发证机构前端和*业务库的交互,如图1-9所示。
用户A由App向发证机构B请求更改电子证照,输入A的区块链地址、发证组织机构代码以及用户公钥加密的证件信息。发证机构B接收到用户A的更新请求后,首先根据用户信息查询该用户的已有身份证书,如果未找到,则更新失败;如果找到已有身份证书,则比较已有证书中的用户公钥、颁发者、有效期等信息与更新请求中的信息是否一致,如果一致则更新失败,如果不一致则为用户创建新的电子证书(同发证步骤)。
4. 查验阶段
查验系统主要涉及查证人用户端、持证人用户端、区块链平台的交互,分为远程查验(见图1-10)和线下查验(见图1-11)。
远程查验步骤如下:
(1)查证人C通过用户端直接向持证人A申请查验证照信息,若持证人A拒绝请求则查证失败,通过请求则会调出带有发证机构B签名的电子证照,由查证人C用其公钥加密后,向其他节点广播查证记录;
(2)查证人C验证发证机构签名,用私钥解密套用模板进行证照查验。
远程查验满足了用户随时随地进行证照查验的需求,大幅节省了社会交往、商务活动的成本。
线下查验则首先需要查证人C扫描持证人A的含有其自身ID标识的二维码,之后向持证人A发出证照查验申请,并按远程查验步骤进行。
1.4 关键技术及方法
1.4.1 以太坊的账户体系
从计算机科学的角度出发,以太坊可以看作是一个分布式状态机,其中交易区块等同于状态转换函数,新的交易区块由从状态A到状态B的状态转换记录构成。因此,以太坊就像一个巨大的虚拟状态引擎或去中心化的计算机,可供多方共享计算平台并基于此运行智能合约。以太坊有一种原生资产—以太币,它是以太坊生态系统中的价值基础。以太币用于调整运营智能合约的激励机制,同时提高网络的安全性。
与比特币比较起来,以太坊是一个应用程序平台,而不仅是加密货币。比特币主要用于交易,而以太坊则可以执行更为复杂的规则,是一个用于构建分布式应用程序的平台。以太坊有一个图灵完备的脚本语言,利用程序代码将合约规则实例化成智能合约。智能合约是表达、验证并协商或强制执行数字合约的一段计算机代码,它可以在没有任何第三方的情况下被以太坊网络自动执行。以太坊的脚本语言比比特币的脚本语言要强大得多,可以实现复杂的智能合约规则。借助以太坊计算平台,开发人员可以用分布式应用程序(DApp)替代集中式应用程序。因为没有集中的数据库可以成为黑客的目标,DApp极大地增强了网络安全性。典型的DApp案例包括去中心化的内容发布平台Steemit、社交网络Synereo、去中心化的打车平台LaZooz、音乐版权平台Ujo Music和去中心化的就业市场Ethlance等。
比特币和以太坊之间的另一个区别在于,比特币是基于UTXO(未花费的交易(tx)输出)的,而以太坊是基于账户体系的区块链。在比特币中,交易的所有输入必须在UTXO数据库中才有效。UTXO是先前交易中未支出的金额,需要确认为未花费用作为当前交易的输入,比特币用户的可用余额是由其私钥控制的UTXO总和。而以太坊使用基于账户的模型,用户的可用余额记录在用户的账户中,该账户具有用户的地址、余额以及可选代码字段中的任何数据。例如在比特币中,Alice拥有控制一组UTXO的私钥;在以太坊中,Carol拥有控制由地址、余额和代码字段组成的账户的私钥。通过账户模型,以太坊节点只需更新其账户余额而不是存储每个UTXO,因此更节省空间。同时,以太坊也更直观,因为智能合约是一种更有效的编程机制,其可以在账户之间转移余额,而不是不断更新UTXO集来计算用户的可用余额。
以太坊有两种账户类型:外部账户(EOA)和合约账户,这两种账户都有用户地址和以太币余额。EOA通常被用于某种形式的外部实体(如个人或公司),这类用户在注册以太坊网络时都被分配为EOA账户。EOA具有加密地址,它可以发送交易(将以太币转移到其他账户或触发合约代码)。第二种账户类型是合约账户,这些账户具有地址、以太币余额以及任何关联的合约代码。代码执行由从其他合约或EOA中收到的交易或消息(函数调用)触发。这意味着合约是以太坊网络上的自主账户,其他账户(EOA或合约账户)可以与它们进行交互,但没有人控制它们(因为一旦启动,它们就是自治的)。由于其他程序可以调用合约上的函数,因此可以与合约账户交互或执行某些交易,但是不能直接控制合约账户。以太坊账户以交易为媒介,与以太坊网络上的其他账户、其他合约和合约状态进行交互。
以太坊某一时刻的所有账户状态构成了整个以太坊的网络状态,它们需要就每个账户的当前余额、存储状态和合约代码达成共识。每个新的区块都需要获取前一个区块的信息并更新新的以太坊网络状态,每个网络节点都必须就新的网络状态达成一致。因此,交易区块是以太坊网络状态之间的状态转换函数。
1.4.2 许可链的节点准入机制
目前有很多以太坊项目都是基于以太坊公链开发的,同时以太坊也可用于构建联盟链和私有链。公链的特征是任何人都可以加入、读取区块链数据和发送交易,一般需要激励机制来鼓励记账节点(挖矿);联盟链是由若干个机构或组织共同参与管理的区块链,每个机构或组织都运行着一个或多个节点共同参与记账;私有链的写入权限由某一个组织或机构控制,参与节点的资格由该组织或机构严格限制。与公链的任何人都可以随时加入不同,未经许可的节点不可以加入到联盟链和私有链,因此联盟链和私有链又被称为许可链,需要进行权限设计。许可链拥有更高的共识效率、更好的隐私保护和更强的安全性,能被更好地应用于金融、政务等领域。考虑到电子证照数据共享业务的安全性需求,本章以许可链的方式设计和搭建区块链底层平台,并加入节点准入机制。任何参与区块链的网络节点都需要先完成身份注册,通过验证后,其数字身份才能被允许接入私有链网络中参与交易,形成自主可控的底层区块链平台。
具体来说,以类似会员制的方式实现一种区块链节点的准入机制,通过会员制的注册服务对区块链参与者的身份和权限进行管理。区块链网络中的分布式记账节点、数据共享方节点、查验方节点、其他访问节点等,都需要事先完成节点注册,以使其数字身份合法。特别的,分布式记账节点作为区块链底层平台的核心节点,由*部门统一部署和维护,并有这些节点执行整个区块链的共识记账功能,其他参与节点无权成为分布式记账节点。参与节点通过区块链客户端完成会员注册后,系统会自动完成注册节点公私钥的分配,并生产合法的数字身份即交易地址。
1.4.3 以太坊的共识机制
通过共识机制,区块链网络能够在决策权高度分散的去中心化分布式系统中让各节点高效地针对区块数据的有效性达成共识,完成新区块的确认和记账。区块链上的典型共识算法有多种,如工作量证明(PoW)、权益证明(PoS)、代理权益证明(DPoS)、实用拜占庭将军(PBFT)、验证池(Pool)等。
最为常用的共识算法是比特币使用的PoW(Proof of Work)共识算法:首先收集网络上广播的交易报文信息,验证有效性,若合法则加入候选交易队列,打包成区块结构,并算出该区块的Block Hash;然后通过不断对随机数NOUNCE试错并做哈希运算,直到Block Hash和NOUNCE合并后的哈希是由N个(N为当前难度)前导零构成;最后找到矿工当前看到的最长链,并将当前区块的哈希、之前区块的哈希、随机数添加到区块的头部,通过这种方式将刚刚得到的区块连接到这个最长链的最后形成新的区块。
PoW算法共识达成的周期较长,约10分钟才能产生1个新区块,不适合商业应用。因此随后又出现了很多效率更高的共识算法,例如PoS(Proof of Stake)共识。它本质上是采用权益证明来代替PoW中的基于哈希算力的工作量证明,由系统中具有最高权益而非最高算力的节点获得区块记账权。权益体现为节点对特定数量货币的所有权,称为币龄或币天数(Coin days)。币龄是特定数量的币与其最后一次交易的时间长度的乘积,每次交易都将会消耗掉特定数量的币龄。PoS共识过程仅依靠内部币龄和权益而不需要消耗外部算力和资源,从根本上解决了PoW共识算力浪费的问题,并且能够在一定程度上缩短达成共识的时间,因而比特币之后的许多竞争币均采用PoS 共识机制。
DPoS(Delegated Proof of Stake)共识的基本思路类似于“董事会决策”,即系统中每个股东节点可以将其持有的股份权益作为选票授予一个代表,获得票数最多且愿意成为代表的前101个节点将进入“董事会”,按照既定的时间表轮流对交易进行打包结算并且签署(即生产)一个新区块。DPoS共识机制中每个节点都能自主决定其信任的授权节点且由这些节点轮流记账生成新区块,因而大幅减少了参与验证和记账的节点数量,可以实现快速共识验证。
著名的R3联盟超级账本(Hyperledger)使用PBFT(Practical Byzantine Fault Tolerance)共识机制,通过运行3类基本协议(一致性协议、检查点协议和视图更换协议)将拜占庭系统共同维护为一个状态,使得所有节点采取的行动一致。其优点是记账节点有准入机制,系统有强一致性和最终态,不会分叉;缺点是当有1/3或以上记账人停止工作后,系统将无法提供服务。
验证池(Pool)共识不需要依赖代币就可以工作,在成熟的分布式一致性算法(Paxos、Raft)基础之上,可以实现秒级共识验证,更适用有多方参与的多中心商业模式。不过,Pool验证池也存在一些不足,例如该共识机制能够实现的分布式程度不如Pow机制等。
在以太坊中,新区块的创建时间是12秒左右,而比特币是10分钟。这意味着以太坊每12秒就有一个新的交易区块产生,交易执行几乎是即时的。以太坊使用了所谓的魔鬼协议(Ghost Protocol)来协调共识,并提供激励机制让网络阻塞时间变得更为短暂。截至2017年12月,比特币的完整账本大小约为180 GB,以太坊的完整账本大小约为225 GB,但是运行以太坊节点只需要20~30 GB的空间。以太坊虽然曾经使用PoW共识机制,但其采用的一致性算法和比特币是不同的。2018年,以太坊改用了自己创建的PoS与PoW混合的共识机制—Casper投注共识,期待这种新的共识机制给以太坊注入新的活力。
1.4.4 以太坊虚拟机与智能合约
以太坊的核心元素是以太坊虚拟机(Ethereum Virtual Machine,EVM),它是智能合约的执行环境。EVM分散储存在以太坊网络的每个节点上,智能合约代码被对外隔离,并分布在每个节点上执行,因此以太坊EVM又被称为世界电脑。合同代码不是用图灵完备的高级程序语言编写的,而是由简单的、基于堆栈的低级程序语言编写的,看起来就像JVM的字节码(Java虚拟机)。每个以太坊节点都运行EVM,这意味着对于以太坊网络的参与者,每个节点都参与验证新块是否有效以及计算是否已正确,都是运行EVM代码的独立实例。由于每个节点都参与计算,虽然不一定是最高效的模型,但它具有很高的加密安全性。
从技术上讲,EVM以状态转换作为函数的运作模式,其工作原理是将一串参数输入EVM,以获取整个以太坊网络的新区块状态和gas数量,具体过程为输入(block_state,gas,memory,transaction,message,code,stack,pc)→EVM→输出(block_state,gas)。其中block_state是以太坊网络的全局状态,包括所有账户、账户余额和长期存储;gas是运行这些计算所需的费用,由计算的类型和工作量决定;memory是执行内存;transaction代表交易;message是有关交易的元数据;code就是代码本身;stack和pc是与执行相关的堆栈和程序计数器。这一串参数被输入到EVM以生成整个以太坊网络的新block_state和账户拥有的新gas数量。
以太坊EVM的设计目标有5个:简单、高效、确定性、专用化和安全性。EVM设计简单,可以轻松证明智能合约的安全性,这也有助于保护平台本身。EVM组件尽可能紧凑,以提高空间效率。EVM具有确定性,即相同的输入状态应始终产生相同的输出状态。确定性的虚拟机必然会限制应用范围,例如以太坊的HTTP请求不可用。EVM具有专用的内置函数,例如可以轻松处理20字节地址加密的加密函数、用于自定义加密的模块化指数算法、读取区块数据、读取交易数据的函数,以及与block_state交互的函数。以太坊EVM的安全性在于每次计算都要预先消耗gas,这增加了DoS攻击的成本,使得攻击者无法发动大规模的无效合约。EVM的主要编程语言是Solidity,智能合约用Solidity写好后,通过Solidity Compiler(solc)编译并生成EVM代码。合约语言的复杂性通过Solidity Compiler进行管理,但在架构层面,Solidity仍然是一种简单的基于堆栈的语言。
智能合约是在以太坊EVM上自动执行的合约代码,一般包括合约所有人、合约对象、合约条款、合约算法、合约触发条件等内容。对于可信电子证照应用,数据共享规则被转换为智能合约并部署在区块链上之后,常规共享条款和违约处理条款就可以自动履行,且执行过程由区块链完整记录,其执行状态可被随时查看和审计,从而提供一个公平、公正、公开的合约执行环境。此外,通过智能合约还可对参与方身份进行权限检查,针对交易者身份进行访问控制。
用智能合约完成可信电子证照应用的注册、发证、查验等过程,具体包括5个主要功能模块和5个API。5个主要功能模块为公民用户App、发证机构前端、区块链平台、*业务库和后台身份管理数据库;5个API包括注册区块链用户、发送制证信息、查验电子证照信息、查询用户公钥和查询电子证明信息,具体分析如下所示。
1. 注册区块链用户
用于新用户注册区块链信息管理账户。对于业务系统注册账号来说分为3个不同的角色:普通用户、制证机关用户、查验机构用户。
输入:账户名称(用于登录系统的ID)。
输出:账户地址(注册用户在区块链上的地址,用于用户之间传输信息)和账户公私钥(普通用户的公私钥用于用户证件信息的加解密,制证机关用户的公私钥用于对发证机构的数字签名进行验证,查验机构用户的公私钥用于对查验信息的加解密)。
2. 发送制证信息
用于制证机构用户存储新增证件信息以及发送给办证用户。以制证机构用户在区块链上给办证用户发送一笔交易为载体,把新增的证件信息保存在区块链上,并发送给办证用户。
输入:申请制证用户的区块链地址(发证机构制证后给该地址用户发送制证信息)、发证机构组织机构代码(发证机构的唯一标示)、申请制证用户的证件信息(需要用户公钥加密)。
输出:该笔交易的Hash值(交易信息地址唯一标识)、记录证件信息的区块编号(交易信息地址唯一标识)。
3. 查验电子证照信息
用于普通用户向查验机构发送证照信息。以普通用户在区块链上给查验用户发送一笔交易为载体,把电子证照信息发送给查验用户。
输入:查验用户的区块链地址(普通用户的电子证照信息)、发证机构组织机构代码(发证机构的唯一标示)、被查验普通用户的证件信息(需要查验用户公钥加密)。
输出:该笔交易的Hash值(交易信息地址唯一标识)、记录证件信息的区块编号(交易信息地址唯一标识)。
4. 查询用户公钥
根据区块链交易地址查询对应的公钥信息,用于普通用户同步账户时获取制证单位用户的公钥信息来验证制证信息的数字签名。
输入:地址信息。
输出:公钥信息。
5. 查询电子证照信息
根据区块数以及交易Hash查询电子证照信息,用于普通用户更新电子证照信息,或者普通用户的新移动设备同步电子证照信息,以及查验方查询普通用户的电子证照信息。
输入: 用户区块链交易地址(指定查找的交易地址)、记录交易信息的区块数(指定查找的区块)、记录电子证照的交易Hash(指定查找的交易)。
输出:制证机构组织机构代码(获取发证机构信息)、电子证照信息(获取电子证照具体信息)。
1.4.5 基于区块链的数据安全共享
1. 电子证照数据的存储与接入
由于区块链是一个共享的账本,为了保证电子证照数据的私密性,共享数据不会直接存储在区块链上,而是通过智能合约将其锚定为区块链上的数字资产。当以数据库方式提供时,将*业务库*享的数据同步一份到其前置机的ODS中后,再将该部分共享数据在ODS中的访问信息加密后作为数字资产的元数据;当以数据文件方式提供时,是将*业务库中可共享的数据经过加密后,写到ODS的文件系统中,形成一个共享数据文件,再将该共享数据文件的完整性哈希值作为数字资产的元数据存储在区块链上,而共享数据文件本身依然存储在*业务库前置机的ODS中。
其中,数字资产包括头信息和数字资产元数据两部分,具体分析如下。
(1)头信息:包括版本号、数据类型、哈希算法。其中,版本号表示数字资产解析标准使用的版本的编号;数据类型表示数字资产是非结构化数据(文件存储方式)还是结构化数据(数据库存储方式);哈希算法表示计算文件完整性所采用的哈希算法,如MD5、SHA1、SHA256、SHA3等,当数据类型为非结构化数据时该字段才生效。
(2)数字资产元数据:如果共享数据为结构化数据,则数字资产元数据表示*业务系统前置机ODS的访问接口信息的加密字符串;如果共享数据为非结构化数据,则数字资产元数据表示共享数据文件的完整性哈希值。即,结构化数据的数字资产为:版本号+数据类型+数字资产元数据;非结构化数据的数字资产为:版本号+数据类型+哈希算法+数字资产元数据。
数据共享方通过区块链客户端发布数字资产时,数字资产被记录在交易负载中后提交到预置智能合约,实现数字资产的发布。
可信电子证照实际上是采用一种链上链下相结合的存储方式,以此来实现共享数据的存储与接入,并能保障数据在存储上的私密性和区块链的存储效率。这样做的好处是,在区块链的持续记账过程中,可防止区块链的链上数据过度膨胀,保障交易效率。具体而言,对占用空间较小的文本数据直接采用链上存储,对占用空间较大的数据或者文件则将访问这类数据的元数据信息采用链上存储,文件本身采用链下存储。链下存储可以是任意网络文件系统、文件链接、点对点分布式文件系统等,如IPFS等。
2. 共享数据注册与发布
区块链通过将共享数据转化为数字资产,再通过智能合约来对共享数据即数字资产在区块链上进行注册与发布。发布数字资产的智能合约由*业务系统提供,并由*业务系统通过其前置终端部署在区块链上。智能合约部署完成后,其合约的内容可被区块链中所有参与方共享和查看,但智能合约的所有者只有一个,即该智能合约的部署者也即*业务系统。通过智能合约,*业务系统可以方便地实现链下共享数据与链上数字资产的关联。
基于智能合约实现数字资产的注册与发布,智能合约的所有者即为该数字资产的所有者,以此来明晰数字资产的所有权。智能合约的每次触发执行均会对触发消息的发送者做一次用户权限检查,只有数字资产拥有者即智能合约的所有者才有权更改智能合约的共享规则,甚至转移数字资产的所有权。
此外,数字资产所有者可以在智能合约中预先设置一个可授权数字身份列表,列出具有共享数字资产获取权限的需求方,并维护该列表。智能合约在执行时会匹配请求者身份,只有列表中的数字身份才能通过智能合约来请求共享数据。
图1-12所示以出生医学证为例,给出了电子证照数据共享的流程和部署架构。其中市民的出生医学证明数据存储于*内网的业务系统,通过前置终端将经过Hash运算和电子签名的某个市民的数据发送给他本人,并在区块链上保存为电子证件。出生医学证明联盟链位于*部门内外网的隔离区,查验终端通过专用通道访问链上数据完成电子证照的查验,以此做到用户只拥有本人数据的访问权限,提高数据的安全性与私密性。
3. 全局共享数据资源目录
区块链客户端通过扫描区块链的方式,获取区块链上已通过智能合约注册并发布的数字资产,以形成一个全局的共享数据资源目录。查验方通过其区块链客户端中的全局共享数据资源目录,可以方便地查找所需的数据资源,获取相应的智能合约规则,并发送数据共享请求。
全局共享数据资源目录是一个公开的目录。在区块链上,虽然所有的参与者都能查看到有哪些数据被共享,并获取对应的智能合约内容,但智能合约保证了只有被授权的和符合权限触发规则的查验方才能触发数据共享流程的执行,智能合约在这里起到了访问控制的功能。
4. 数据安全共享执行流程
在区块链上综合使用数字签名、加密算法、权限管理、访问控制等技术手段,对电子证照数据共享过程进行安全防护,保障数据不被泄露,同时提供可信的共享全过程的流程记录。智能合约一旦获取到正确的需求方共享请求后,会自动迁移到等待共享方返回请求确认状态,以及等待共享方返回完成确认状态。当出现状态超时或者其他异常时,智能合约均会进入预先设置的相应的处理流程,以保障共享过程的完整性。在整个过程中,区块链中的每一次交易提交,都需要有发送者的数字签名,智能合约可基于此判定双方的数字身份,实现权限控制。
5. 全流程周期的共享管理
在管理上,可信电子证照利用区块链在数据防篡改方面的特性,打通了电子证照共享数据的存储、共享、管理等环节,保证了数据共享在事前、事中、事后全流程周期的可审计,保证流程可追溯。同时,由于区块链上所有交易验证,都需要有发送者的数字签名来保障,因此就在参与者之间建立了身份的信任关系。
1.4.6 搭建及部署以太坊私有链
如1.4.2节提到的,可信电子证照采用许可链作为区块链技术底层。许可链分为联盟链和私有链两种,为简单起见,本节将以私有链为例,讨论如何搭建并部署一条属于自己的以太坊私有链。
考虑到便捷性,我们提供私有链底层平台的部署脚本,基于该脚本可实现私有链的自动化快速部署。在环境准备方面,私有链平台部署在*内网,区块链节点运行于若干PC Server,在IP层保证区块链节点间的互联互通。
□测试环境 :3台全节点服务器(虚拟机)。
□服务器系统:centos 6.8。
□服务器性能:4核,8GB内存。
□以太坊客户端:geth(Go语言版本的客户端,如图1-13所示)。
搭建及部署以太坊私有链的具体步骤如下。
第一步:部署主节点,在该节点上生成创世区块。
首先,通过制定的参数配置,在控制台启动geth服务,如图1-14中方框部分所示。
在图1-14中,通过参数console启动一个带命令行的geth服务。接着,通过带有命令行的geth服务,注册一个新用户。
□personal.newAccount("test1234”):注册新用户的web3接口。
□0xfc3147e7d648b3513f3fbad853ddc242e7f003ba:注册成功后为新用户生成的地址address,对于以太坊来说也是公钥,记住这个地址,在配置创世节点的时候需要。
新用户创建成功后,输入命令 “exit” 退出服务,如果不退出,geth服务会自动同步公链区块,搭建私有链则不需要同步以太坊公链。
然后,通过创世节点配置配置文件(genesis.json),初始化创世节点。初始化配置文件内容如下:
{
"alloc": {
"0xfc3147e7d648b3513f3fbad853ddc242e7f003ba": { //创世节点的初始用户地址,我们刚创建的用户地址
"balance": “1000000000000000000000000000000” //初始化账户的以太币,1(eth) = 1^18(wei) (eth为以太币的基本单位, wei为以太币的最小单位)
}
},
"nonce": "0x0000000000000042”, //随机数,用于挖矿,详细信息可以参考以太坊黄皮书
"difficulty": "0x020000”, //设置区块挖矿复杂度,设置太高,产出区块的速度会比较慢,设置太低,产出垃圾区块(分叉)的概率会比较高
"mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000”, // 与nonce一起配合用于挖矿,详细信息可以参考以太坊黄皮书
"coinbase": "0x0000000000000000000000000000000000000000”, // coninbase地址
"timestamp": "0x00”, //时间戳
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000”, //创世区块父区块的地址,由于是创世区块,没有父区块,所以为0
"extraData": "0x11bbe8db4e347b4e8c937c1c8370e4b5ed33adb3db69cbdb7a38e1e50b1b82fa”, //备注信息
"gasLimit": “0x4c4b40” // 设置gas的消耗总量限制,用于限制区块能包含交易的信息综合,这里我们用于私链测试开发,所以填最大值
}
获取创世节点配置文件的参数以后,通过命令来初始化创世节点:
geth --datadir data init genesis.json
运行上述命令后会看到图1-15所示的界面。
至此,创世节点的初始化就完成了,现在我们来启动创世节点:
geth --datadir data --mine --etherbase 0 --minerthreads 2 --port 30303 --rpc --rpcapi "db,eth,net,web3,personal" --rpcaddr 10..129. --rpccorsdomain “*” console
运行上述命令后会看到图1-16所示的界面。
注意,需要记住图1-16所示方框中的信息,后面需要在从节点添加监听地址来同步主节点的区块。
我们的创世区块的主节点已经启动了。可以查看创世节点的一些信息,如图1-17所示。
在图1-17所示命令中,指令含义分析如下所示。
eth.accounts :查看当前geth服务下的账户列表;
eth.getBalacne(“0xfc3147e7d648b3513f3fbad853ddc242e7f003ba”) :查询指定账户的余额信息,单位为wei。
至此,我们的创世节点已经成功启动了。
启动命令的参数如表1-1所示。
第二步:部署从节点,并且同步主节点的区块信息。
首先,把主节点服务上的genesis.json复制到从节点服务器,并初始化节点:
geth --datadir data init genesis.json
运行上述命令,会看到如图1-18所示的界面。
然后,启动从节点geth服务:
geth --datadir data console
从服务启动成功,服务启动后的显示信息与主服务的类似。
接着,在从服务器上创建账户,与主服务创建账户相同:
personal.newAccount(?234test?;
“0xabc147e7d648b3513f3fbad853ddc242e7f00gjs”
为了从服务添加对主服务的监听,在从服务的geth服务控制台输入如下命令:
admin.addPeer(“enode://707124b6dba10fad0ad776539038310aace4f73f7c906885e9064c943ab8e92e819cce40805919f6bc314492ef220ee2eb40b9c60e5b16361bc4a32e843dcd3b@10.37.129.2:30303”);
此时主从服务就可以互相同步区块了。
添加创世节点的监听端口有如下3种方式。
(1)在geth服务控制台使用如下命令:
admin.addPeer(“enode://707124b6dba10fad0ad776539038310aace4f73f7c906885e9064c943ab8e92e819cce40805919f6bc314492ef220ee2eb40b9c60e5b16361bc4a32e843dcd3b@10.37.129.2:30303”);
(2)在geth启动参数设置,使用参数--bootbodes:
“enode://707124b6dba10fad0ad776539038310aace4f73f7c906885e9064c943ab8e92e819cce40805919f6bc314492ef220ee2eb40b9c60e5b16361bc4a32e843dcd3b@10.37.129.2:30303”
(3)使用配置文件,添加文件/static-nodes.json :
[
"enode://707124b6dba10fad0ad776539038310aace4f73f7c906885e9064c943ab8e92e819cce40805919f6bc314492ef220ee2eb40b9c60e5b16361bc4a32e843dcd3b@10.37.129.2:30303",
]
最后我们要让主从服务的矿工工作了,目前该私有链的以太币只能依靠矿工挖矿来产出。分别在主从节点的geth控制台输入以下命令:
personal.unlockAccount(“0xabc147e7d648b3513f3fbad853ddc242e7f00gjs”);
分别在对应的服务器上填入对应的矿工用户地址,即刚注册的用户的地址。这时,控制台需要我们输入注册时地址对应的用户名(也就是注册新用户时设定的test1234)。
然后,使用miner.start(2) 命令开始挖矿,这里需要设置cpu使用的个数。看到图1-19所示的提示就说明已经开始挖矿了。之后可以使用miner.stop()命令来停止挖矿。
至此,我们已经搭建好两个全节点的区块链服务了。可以使用脚本来启动geth服务,而不需要在geth控制台中启动相关服务。
创建geth.sh脚本:
geth --datadir /data/Ethereum/data --port 30303 --bootnodes "enode://b70d74575119486999877d08f07aa2e9cb4aa908
f78d3e58d91e19eb790a3723f8aedc25fd9823aa0e7cc2c4ca54c431ab785211cb111aa9c28461ca72adb67f@10.51.110.19:30303" --mine
--minerthreads 2 --nat "extip:10.51.110.21" --rpc --rpcapi "db,eth,net,web3,personal" --rpcaddr 10.51.110.21 --rpc
corsdomain “*” console
脚本启用服务以后,可以通过curl命令来调用geth服务的json-rpc接口(rpc服务的地址就是启动命令--rpcaddr设定的地址,服务端口默认为8545),例如:
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBalance","params":[“0xabc147e7d648b3513f3fbad853ddc242e7f00gjs", "latest"],"id":1}’ 10.51.110.21:8545
1.5 应用与实践
本章讨论的基于区块链的可信电子证照原型系统在中关村区块链产业联盟试点推广的过程中,获得了175万的网络投票和1万多条用户评论,吸引了极大的社会关注度,具体可见中关村区块链产业联盟官方网站 http://www.cyberledger.org/dasai/。
图1-20是可信电子证照的运行截图,其中图1-20a所示为持证人的所有证照一览;图1-20b所示为证照二维码,包含该证件在区块链上的业务信息、区块号、区块地址、交易地址等数据,查证人可通过扫描该二维码获取持证人在区块链上的证照信息;图1-20c所示为电子证件的原件,其中包含有发证机构的签名以及证照二维码;图1-20d所示是用证和查证记录的通知推送。可信电子证照将用户的发证、查证、用证信息保存在区块链上,不可篡改,可追溯性强,可以避免身份伪造和冒用。
1.6 商业模式
1.6.1 市场空间及潜力
目前市场上还没有完善的存证链服务。身份验证、学历验证等都是某一类证照的查验服务,无法形成个人、企业、组织的完整信用数据体系。
区块链技术为*、第三方机构的存证服务提供统一可信的服务平台,形成完整的存证服务链条,积累大量的信用数据,构建诚实可信的信用平台,为*、金融机构、商业企业、社会组织提供信用服务,市场潜力巨大。
1.6.2 商业模式
我们可以采取与*及第三方机构合作运营的方式(见图1-21),由其提供证照业务数据,并在电子证照平台上发证;服务民生,为公众用户提供免费的存证服务,发展活跃用户;对于有查验需求的商业机构及社会组织,则按次数或流量收费,提供有偿存证服务。
1.6.3 应用前景
1. 实现公众办证“零跑动”
当前各行政单位在办理或审核相应证件时,仍然以纸质证件信息为主,易造成证照材料损坏、丢失,并且民众在办理相关业务时,经常由于缺少某些材料而导致数次往返。电子证照的产生可以从根本上解决当前政务活动中民众多次往返、反复提交纸质材料的顽疾,民众主动申请获得电子证照,纸质证照审批后可以生成电子的电子证照,因其以二维码的形式存储于手机中,方便携带和使用,可以实现证照的无纸化审批,减少了纸质证照的使用,降低了社会成本与资源浪费,缓解了证件多、用证烦等证照乱象,如图1-22所示。
2. 智慧政务
电子证照建设在不改变*现有管理模式及制度的前提下,通过系统构建了业务部门之间的联系,实现了申请、查证、验证、用证的全程电子化管理,简化了*流程服务,符合珠海市提出的推进信息化建设和应用以达到深化行政审批制度改革的目的,对推进珠海市电子政务发展起到了积极的作用,电子政务也将成为智慧城市发展的重要组成部分,在城市发展过程中,*依托电子政务,在其管辖范围最大限度发挥职能效能,创造更加智慧的城市环境。因电子证照系统可以提升*部门行政服务效率,故其也会推动*智慧转型,向着为民、务实、廉洁、高效的服务型*转变。
传统的证件验证工作烦琐,行政工作人员要投入大量精力进行人工检查,既费时又费力,这种非信息技术手段的工作模式使得行政工作人员无法快速响应民众的多重需求。电子证照系统的建设将改变这一现状,证照电子化可以对列入电子证照服务目录的证照材料实行机器自动查验,减少了人工检查,这样降低了行政成本,提高了*原有体系的行政服务效率,也会提升行政服务机关在民众心目中的满意水平,如图1-23所示。
3. 商务应用,助力诚信社会
虚假证照因其制作成本低廉、利润高等原因而屡禁不止,假证扰乱了社会秩序,损害了社会诚信,也给行政审批工作带来了不必要的麻烦。假证的危害很多,所以保证证件的真实性尤为重要,电子证照因其多重加密,并且要配合身份证明信息共同使用等因素,大大提升其安全性,伪造电子证照的概率被降到了最低,保障了证照的真实性,也维护了证照持有人的权益。电子证照通过信息技术手段有力地加强了社会诚信建设,符合十八届四中全会《**关于全面推进依法治国若干重大问题的决定》中对信用工作的要求。图1-24所示是将区块链在商务应用的一个场景:企业招投标。传统的竞标方式是由企业代表通过向招投标中心递交企业营业执照、完税、社保证明、资质证明等一系列证件完成企业身份和资质验证,然后再参与投标。在这个过程中需要招投标中心、投标企业反复验证这些证件,安全系数相对较低,重复查验效率也很低下;如果应用了区块链电子证照,只需要由企业代表出示企业证件二维码,授权招投标中心在区块链上在线查验并永久保存查验结果,一次查验可反复使用,安全系数高,查验效率也将大大提高。