丰富的线上&线下活动,深入探索云世界
做任务,得社区积分和周边
最真实的开发者用云体验
让每位学生受益于普惠算力
让创作激发创新
资深技术专家手把手带教
遇见技术追梦人
技术交流,直击现场
海量开发者使用工具、手册,免费下载
极速、全面、稳定、安全的开源镜像
开发手册、白皮书、案例集等实战精华
为开发者定制的Chrome浏览器插件
从业务流程上看,基于区块链的可信电子证照是一个典型的分布式应用(DApp),因此我们采用以太坊的技术底层作为支撑,其基础技术架构自下而上包括数据层、网络层、共识层、合约层和应用层。结合电子证照应用的需要,我们设计了如下技术架构(见图1-3),主要分为技术层、服务层和用户层。□技术层运用以太坊平台,将证照信息及使用记录进行区块化封装,连接成区块链;□服务层以技术层为基础,向用户提供会员制服务、区块链服务、电子证照服务;□用户层主要表现形式为公民用户App、发证机构前端,以实现用户与用户之间、用户与发证机构之间的信息交互。
根据不同证件的业务类型,采用主链和侧链[10]双向锚定的设计加以区分。如图1-5所示,主链用于身份证明,用户利用身份证、护照或社保卡在主链上完成身份认证,再通过主链锚定其他电子证照;不同的证照对应各自的侧链,以便于划分不同的业务数据,提高登记、查验效率。侧链的双向锚定技术允许信任在不同网络间传递,建立个人信用体系;同时允许发布试用版本的电子证照区块链,对主链不造成影响。
1.身份认证阶段身份认证系统主要涉及区块链平台、用户App和后台管理系统的交互。对于业务系统注册账号分3个不同的角色:普通用户、制证机关用户、查验机构用户。普通用户身份认证如图1-6所示,发证机构身份认证如图1-7所示。
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.2节提到的,可信电子证照采用许可链作为区块链技术底层。许可链分为联盟链和私有链两种,为简单起见,本节将以私有链为例,讨论如何搭建并部署一条属于自己的以太坊私有链。考虑到便捷性,我们提供私有链底层平台的部署脚本,基于该脚本可实现私有链的自动化快速部署。在环境准备方面,私有链平台部署在政府内网,区块链节点运行于若干PCServer,在IP层保证区块链节点间的互联互通。□测试环境:3台全节点服务器(虚拟机)。□服务器系统:centos6.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":{
geth--datadirdatainitgenesis.json运行上述命令后会看到图1-15所示的界面。
至此,创世节点的初始化就完成了,现在我们来启动创世节点:geth--datadirdata--mine--etherbase0--minerthreads2--port30303--rpc--rpcapi"db,eth,net,web3,personal"--rpcaddr10..129.--rpccorsdomain“*”console运行上述命令后会看到图1-16所示的界面。
注意,需要记住图1-16所示方框中的信息,后面需要在从节点添加监听地址来同步主节点的区块。我们的创世区块的主节点已经启动了。可以查看创世节点的一些信息,如图1-17所示。
第二步:部署从节点,并且同步主节点的区块信息。首先,把主节点服务上的genesis.json复制到从节点服务器,并初始化节点:
geth--datadirdatainitgenesis.json运行上述命令,会看到如图1-18所示的界面。
personal.newAccount(234test;“0xabc147e7d648b3513f3fbad853ddc242e7f00gjs”
目前市场上还没有完善的存证链服务。身份验证、学历验证等都是某一类证照的查验服务,无法形成个人、企业、组织的完整信用数据体系。区块链技术为政府、第三方机构的存证服务提供统一可信的服务平台,形成完整的存证服务链条,积累大量的信用数据,构建诚实可信的信用平台,为政府、金融机构、商业企业、社会组织提供信用服务,市场潜力巨大。
我们可以采取与政府及第三方机构合作运营的方式(见图1-21),由其提供证照业务数据,并在电子证照平台上发证;服务民生,为公众用户提供免费的存证服务,发展活跃用户;对于有查验需求的商业机构及社会组织,则按次数或流量收费,提供有偿存证服务。