基于区块链的健康链系统设计与实现

基于区块链的健康链系统设计与实现

2023年7月17日发(作者:)

Vol.48No.122888计算机与数字工程Computer&DigitalEngineering总第374期第482020年第12卷期基于区块链的健康链系统设计与实现雷志伟1李加福1张桂刚2赵旭3北京张勇3北京邢春晓3100084)北京100084)(1.清华大学行业可信区块链应用技术联合研究中心(2.中国科学院自动化研究所100190)(3.清华大学信息国家研究中心,计算机系,互联网产业研究院摘要新冠疫情在全球范围肆虐,公共场合中的体温测量和行踪登记是控制疫情蔓延的关键手段,目前的信息记录主要依赖人工纸张录入的方式。纸张录入的方式不仅效率低下,而且还面临着易损易丢失的存档风险,同时难以对过往人员与行踪进行快速筛查。该系统基于微信小程序的开发框架,实现了扫码快速注册以及信息登记的功能,同时基于区块链技术来实现底层数据存储和优化,保证数据的不可篡改和快速溯源,最后通过Nginx服务器进行数据通信。关键词比特币;区块链;微信小程序;健康链;NginxTP393DOI:10.3969/.1672-9722.2020.12.016中图分类号DesignandImplementationofHealthChainSystemBasedonBlockchainLEIZhiwei1LIJiafu1ZHANGGuigang2ZHAOXu3ZHANGYong3XINGChunxiao3100084)100190)100084)(esearchCenterforIndustryTrustBlockchainApplicationTechnology,TsinghuaUniversity,Beijing(uteofAutomation,ChineseAcademyofSciences,Beijing(uteofInternetIndustry,DepartmentofComputerScienceandTechnology,BeijingNationalResearchCenterforInformationScienceandTechnology(BNRist),TsinghuaUniversity,tinformationrecordingmainlyreliesonmanualpaperentrywhichisnotonlyinefficient,butalsofragileDuringtheCOVID-19,temperaturemeasurementandwhereaboutsregistrationinpublicarethekeytocontroltheandeasytolose,stemisbasedontheWechatMiniProgram,theinformationre⁃er,managingthestorageandoptimizationoftheunderlyingdatabasey,dsClassNumberTP393Bitcoin,blockchain,Wechatminiprogram,healthchain,Nginx1引言在抗击新冠肺炎疫情初期,各地各部门企业纷能加强政府部门的管理,另一方面简化现实中人力物力消耗[1]。在人员进出公共场所的跟踪管理方面,相应有应用于广西地区的“扫码抗疫情”、云南地区的“云南抗疫情”等。它们都是基于微信小程纷贡献己力,自主开发疫情防控信息系统。一方面∗收稿日期:2020年6月13日,修回日期:2020年7月26日基金项目:科技部重点研发项目“现代服务可信交易理论与技术研究(面向服务可信交易的新型区块链分布式架构)”(编号:2018YFB1402701)资助。作者简介:雷志伟,男,工程师,研究方向:区块链、游戏引擎开发。李加福,男,高级工程师,研究方向:区块链、图像处理。张桂刚,男,博士,副研究员,研究方向:区块链和人工智能。赵旭,男,硕士,研究方向:区块链、机器翻译。张勇,男,博士,副研究员,研究方向:数据管理、云存储、海量信息处理。邢春晓,男,博士,研究员,研究方向:数据库和数据仓库,大数据和知识工程、人工智能,软件工程,区块链技术,智慧城市、智慧医疗、数字图书馆和电子政务关键技术等。2020年第12期计算机与数字工程2889序开发,其功能和使用方式大抵相同,群众以个人身份注册,另一个则是公共场所的工作人员以公共场所的身份进入系统并生成二维码进行张贴,进出人员手动扫码实现数据上传,从而减免了手工登记流程。区块链作为一个分布式数据库,记录着区块链从创世块到当前块的所有交易,具有去中心化、不可更改性、匿名性和可审计性这几个特点。鉴于微信小程序基于微信平台拥有庞大用户量,不需要下载安装反复登录与卸载,对用户而言,大大简化了使用程序。因此使用微信小程序展现基于区块链的进出登记系统是一个不错的选择。与别的出入登记系统不同,健康链系统将由公共场所工作人员对出入人员进行扫码,并保存当前测量的温度值,以加强疫情工作的防控。2系统分析2.1微信小程序分析ML5微信小程序本质上是一种由原生在原生混合开发的App里内置浏览器,HyBirdApp采用网页的形式来呈现技术方案。即是一种APP和HT⁃功能的系统架构。它既解决了原生App下载安装和更新、应用商店发布审核周期长的问题,又解决了纯WebApp安全性相对较低,数据容易泄露或者被劫持的问题。微信小程序的系统架构如图1,它以微信APP作为宿主进程,通过云端下载动态的Web资源文件到本地并动态渲染Web界面。在纯WebApp中,界面渲染跟JavaScript的脚本执行在一个单线程中,这就容易导致一些逻辑任务抢占渲染的资源。因此微信小程序采用双线程模型,打开一个微信小程序,相当于进程启动了两个线程。其中一个线程用来渲染View视图,另外一个AppService逻辑线程动态执行JavaScript脚本,用来处理逻辑、数据请求和接口调用。在微信APP和Web模块之间有一个JSBridge跨语言双向通讯机制,这个通信层协调Web模块的视图线程与逻辑线程的数据和事件交互,逻辑线程把数据变化通知到视图线程,触发视图页面更新,视图线程把触发的事件通知到逻辑线程进行业务处理。更为重要的是,它不但负责传递Web模块对系统权限的相关功能调用,还包括传递Web视图渲染和JavaScript脚本执行[2]。在安卓系统里,渲染和脚本引擎都是调用基于开源Webkit库优化和扩展的腾讯X5浏览器。在iOS系统里,苹果基于Web⁃KitWebKit开发了的C/C++WKWebView实现和包装实现了组件来渲染视图,JavaScriptCore并基于脚本执行框架。整套网页开发工具包,JS-SDK就是对JSBridge开放了拍摄、的一个包装,录音、它是一语音识别、二维码、地图、支付、分享、卡券等几十个API。最后,AppService线程运行在沙箱环境中,从而方便管控与安全,比如避免JavaScript脚本随意地跳转网页或者改变界面上的内容[3]。图1小程序架构2.2前发展最成熟的开源区块链平台之一,Bitcoin区块链平台分析(比特币)作为区块链技术的起源,拥有大量的是目开发人员和活跃的开发社区。Ethereum(以太坊)核心是支持智能合约的EVM(以太坊虚拟机),提供了大量方便接口便于开发者进行深度应用开发。HyperledgerFabric(超级账本)使用诸如单节点共识、分布式队列共识等共识方式,并支持智能合约和外部组件扩展。但Ethereum和Fabric部署困难相对困难。EOS区块链采用DPOS共识机制,生成区块速度快、延迟低,能支持数百万级别用户。但EOS作为新兴的区块链平台发展还不成熟,同时开发社区及开发人员相对较少,进行开发研究较为困难[4]。比特币作为一种以交易为模型的数字货币系统,其交易的数据结构如图2。交易由交易输入和2890雷志伟等:基于区块链的健康链系统设计与实现第48卷交易输出组成,交易输入和交易输出可以有多个,表示一次交易可以将先前多个账户中的比特币合并后转给另外多个,每个输入主要由上笔交易的哈希PrevTxHash、上笔交易的输出索引Index和输入脚本ScriptSig组成,其中ScriptSig是持有者对当前交易的签名。通过对某个交易的输入可构成多条以交易为结点的链表,并一直向前追溯至源头的Coinbase交易(即挖矿所得的比特币)。如果一笔则说明该输出中的比特币未被花费。[5]所有交易计算得到的默克尔树根哈希值都可以保证数据的不可篡改和完整[6]。2.3Apache、Tomcat和Jetty,它具备高扩展、热部署、单靠的特性。Nginx是一个跨平台的Web服务器,相比Web服务器分析机支持10万以上的并发连接、低内存消耗和高可Nginx提供了异步的、非阻塞的Web服务,它的交易的输出没有任何另一笔交易的输入与之对应,系统架构如图4,它主要由一个Master主进程、多个Worker工作进程、一个可选的Cachemanager缓存引进程组成。索引管理进程以及一个可选的Cacheloader缓存索Master主进程用来启动和管理Worker工作进程,使用管道机制与工作进程通信,并且通过信号务。Worker进程是提供Web服务的主体,它收到器进行数据处理和页面组织后返回数据。其中动态脚本语言间通信的应用层通信协议,PHP作为机制与外界通信来实现重启、退出、停止等系统服Web请求通过代理转发给后端服务器,由后端服务FastCGI是一个可伸缩地、高速地在Nginx服务器和一种服务端、跨平台的HTML嵌入式的脚本语言,它的PHP-FPM模块实现了FastCGI协议并负责处图2比特币的交易数据结构理PHP动态请求,从而分担了Nginx前端的压力,使Nginx专注处理静态请求[7]。Cachemanager进程和Cacheloader进程主要是区块是区块链的一个数据单元,它由区块头和区块体组成。比特币的区块数据架构如图3,区块体包含所有的交易内容,区块头包含版本号、时间戳、随机值和难度值等基本信息,并包含上一个区块的哈希值和交易的默克尔树根哈希值。区块的哈希值通过对区块头进行两次SHA256哈希运算得到。通过指向上一个区块的哈希值所有的区块构成一个链条,同时,区块的哈希值和对区块内的将历史应答数据进行本地缓存,从而提高请求的响应效率,降低网络压力。Cacheloader进程在Nginx服务启动一段之后(默认是1min)由主进程生成,在缓存元数据重建完成后就自动退出。Cacheman⁃ager进程存在于主进程的整个生命期,负责管理缓存索引,支持工作进程对缓存数据的快速查询。图3比特币的区块数据架构2020年第12期计算机与数字工程2891图4Nginx架构多个Worker进程之间是对等的,它们同等竞争来自客户端的请求,通过互斥锁机制保证最终由一个Worker进程进行处理,从而做到资源的负载均衡[8]。3系统设计3.1系统整体设计系统架构如图5,系统将搭建SDK接口服务器作为微信程序和区块链的通讯中介。微信程序通过Https协议与SDK接口进行数据交互,SDK接口与区块链系统通过JSON-RPC协议进行数据交互。SDK接口程序由进出人员的个人数据接口、公共场所的数据接口和进出人员记录的数据接口等等组成。系统配备传统数据库存储数据以避免区块链数据查询效率低下问题。图5系统架构由于区块链平台的共识机制,数据上链有时间延迟,接口程序通过将采用定时查询机制来得到数据上链等其他数据操作结果。SDK接口与区块链系统的数据流程如图6。在增强数据的隐私和安全方面,Https协议在HttpTLS协议的基础上加了一层SSL/TLS加密层,SSL/息认证码,通过将对称密码、伪随机数生成器和数字签名等技术相结公钥密码、单向散列函数、消合来实现安全通信。此外,SSL/TLS还可以通过切换密码套件来使用强度更高的密码算法[9]。图6SDK接口与区块链系统的数据流程鉴于数据的隐私和安全需求,比特币系统将采用私有链的方式布置节点。3.2积小、MySQL传统数据库设计速度快、作为一个关系型数据库管理系统,源码开放,且对PHP有很好的支持。其体因此数据库基于MySQL开发,主要包含三个表:个人信息表、公共场所表和进出记录表。表1个人信息表属性数据是否为类型主键备注UserIDstring是用openid户微信的Name否姓名PhoneNumberstringstring否电话号码CredentialsNumberstring否证件类型表2公共场所表属性数据是否为类型主键备注Publicstring是用户微信的openidNameIDstring否公共场所名称RequesterNamestring否申请人姓名RequesterPhonestring否申请人电话号码Regionstring否行政区域Addressstring否详细地址3.3微信小程序设计代码主要通过微信开发者工具开发,开发者可以完成API和页面的开发调试、代码查看和编辑、小程序预览和发布等等功能。微信小程序1个Page页面对应本系统1个模块,1个page页面主要2892雷志伟等:基于区块链的健康链系统设计与实现第48卷由4个文件构成,js脚本文件即是页面逻辑,wxml是页面结构展示,wxss是纯前端的页面样式表,用于辅助wxml展示,json则是页面配置文件[10]。表3进出记录表属性数据是否为类型主键备注IDstring是Person个人IDPublicIDstring否id公共场所IDTimeIDstring否string否时间TemperatureValuestring否温度值小程序在使用HTTPS发起网络请求时只可以跟指定的域名与进行网络通信,因此需要在微信公众平台账号里对应的项目设置里面设置一个通讯域名,并将域名完成备案。3.4区块链设计比特币加入了OP_RETURN脚本命令,它后面可以紧跟一定容量的数据,专门用于存储和交易逻辑无关的数据。这个交易输出不会加入UTXO集合,从而避免了UTXO数据库的大小不断“膨胀”[11]。另外,由于比特币基于LibEvent开源库实现了一个JSON-RPC个自定义的的远程调用RPCAPIServer接口。端,一系统主要增加两个是创建包含turnOPReturn数据。数据的交易,一个是查询交易的OPRe⁃4系统实现4.1SDKSDK接口主要是基于接口展库实现了基于Http的JSON-RPCPHP语言通过客户端libcurl[12]。其扩主要函数代码如下。//$curl=curl_init("{$this->proto}://{$this->host}:{$this->初始化一个CURL会话port}/{$this->url}"AUTH_BASIC,$options=array(CURLOPT_HTTPAUTH=>CURL⁃pwd,CURLOPT_USERPWD=>$this->username.':'.$this->CURLOPT_RETURNTRANSFERCURLOPT_FOLLOWLOCATION=>true,CURLOPT_MAXREDIRS=>CURLOPT_HTTPHEADER=>array(10,=>true,cation/json'),'Content-type:appli⁃CURLOPT_POST=>true,CURLOPT_POSTFIELDS=>$request);//curl_setopt_array($curl,$options);设置选项//$this->raw_response执行并获取结果=curl_exec($curl);//释放连接4.2curl_close($curl);微信小程序系统主要包括首页还有其他模块。图7是个人注册页面,图8是公共场所扫码页面,图9是个人进出记录页面,图10是公共场所进出记录页面。图7个人注册页面图8公共场所扫码页面图9个人进出记录图10公共场所进出记录4.3区块链主要功能添加OPReturn数据到交易的API函数主要包含创建交易、交易签名和发送交易三个过程,此处展示创建交易的部分代码。tion&staticvoidcreateCustomTransaction(constCTxDestina⁃data,CMutableTransaction&dest,constCAmount&amount,conststd::string&custom⁃//rawTx){uint32_t创建输入nSeq=td::numeric_limits::max();2020年第12期计算机与数字工程_back(in);in(outpoint,CScript(),nSeq);//std::vectordata;_back(customdata[i]);i++)_back(out);CTxOutout(0,CScript()<

发布者:admin,转转请注明出处:http://www.yc00.com/web/1689581591a268010.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信