大数跨境

一个存证链的解决方案4

一个存证链的解决方案4 数组智控产业发展科技院
2021-09-16
1
导读:以太坊虚拟机与智能合约以太坊的核心元素是以太坊虚拟机(Ethereum Virtual Machine,EV

以太坊虚拟机与智能合约


以太坊的核心元素是以太坊虚拟机(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.电子证照数据的存储与接入


由于区块链是一个共享的账本,为了保证电子证照数据的私密性,共享数据不会直接存储在区块链上,而是通过智能合约将其锚定为区块链上的数字资产。


当以数据库方式提供时,将政府业务库中共享的数据同步一份到其前置机的ODS中后,再将该部分共享数据在ODS中的访问信息加密后作为数字资产的元数据;


当以数据文件方式提供时,是将政府业务库中可共享的数据经过加密后,写到ODS的文件系统中,形成一个共享数据文件,再将该共享数据文件的完整性哈希值作为数字资产的元数据存储在区块链上,而共享数据文件本身依然存储在政府业务库前置机的ODS中。


其中,数字资产包括头信息和数字资产元数据两部分,具体如下:


(1)头信息:包括版本号、数据类型、哈希算法。其中,版本号表示数字资产解析标准使用的版本的编号;数据类型表示数字资产是非结构化数据(文件存储方式)还是结构化数据(数据库存储方式);哈希算法表示计算文件完整性所采用的哈希算法,如MD5、SHA1、SHA256、SHA3等,当数据类型为非结构化数据时该字段才生效。


(2)数字资产元数据:如果共享数据为结构化数据,则数字资产元数据表示政府业务系统前置机ODS的访问接口信息的加密字符串;如果共享数据为非结构化数据,则数字资产元数据表示共享数据文件的完整性哈希值。即,结构化数据的数字资产为:版本号+数据类型+数字资产元数据;非结构化数据的数字资产为:版本号+数据类型+哈希算法+数字资产元数据。


数据共享方通过区块链客户端发布数字资产时,数字资产被记录在交易负载中后提交到预置智能合约,实现数字资产的发布。


可信电子证照实际上是采用一种链上链下相结合的存储方式,以此来实现共享数据的存储与接入,并能保障数据在存储上的私密性和区块链的存储效率。


这样做的好处是,在区块链的持续记账过程中,可防止区块链的链上数据过度膨胀,保障交易效率。


具体而言,对占用空间较小的文本数据直接采用链上存储,对占用空间较大的数据或者文件则将访问这类数据的元数据信息采用链上存储,文件本身采用链下存储。


链下存储可以是任意网络文件系统、文件链接、点对点分布式文件系统等,如IPFS等。


2.共享数据注册与发布


区块链通过将共享数据转化为数字资产,再通过智能合约来对共享数据即数字资产在区块链上进行注册与发布。


发布数字资产的智能合约由政府业务系统提供,并由政府业务系统通过其前置终端部署在区块链上。


智能合约部署完成后,其合约的内容可被区块链中所有参与方共享和查看,但智能合约的所有者只有一个,即该智能合约的部署者也即政府业务系统。


通过智能合约,政府业务系统可以方便地实现链下共享数据与链上数字资产的关联。


基于智能合约实现数字资产的注册与发布,智能合约的所有者即为该数字资产的所有者,以此来明晰数字资产的所有权。


智能合约的每次触发执行均会对触发消息的发送者做一次用户权限检查,只有数字资产拥有者即智能合约的所有者才有权更改智能合约的共享规则,甚至转移数字资产的所有权。


此外,数字资产所有者可以在智能合约中预先设置一个可授权数字身份列表,列出具有共享数字资产获取权限的需求方,并维护该列表。


智能合约在执行时会匹配请求者身份,只有列表中的数字身份才能通过智能合约来请求共享数据。


以出生医学证为例,给出了电子证照数据共享的流程和部署架构。


其中市民的出生医学证明数据存储于政府内网的业务系统,通过前置终端将经过Hash运算和电子签名的某个市民的数据发送给他本人,并在区块链上保存为电子证件。


出生医学证明联盟链位于政府部门内外网的隔离区,查验终端通过专用通道访问链上数据完成电子证照的查验,以此做到用户只拥有本人数据的访问权限,提高数据的安全性与私密性。



3.全局共享数据资源目录


区块链客户端通过扫描区块链的方式,获取区块链上已通过智能合约注册并发布的数字资产,以形成一个全局的共享数据资源目录。


查验方通过其区块链客户端中的全局共享数据资源目录,可以方便地查找所需的数据资源,获取相应的智能合约规则,并发送数据共享请求。全局共享数据资源目录是一个公开的目录。


在区块链上,虽然所有的参与者都能查看到有哪些数据被共享,并获取对应的智能合约内容,但智能合约保证了只有被授权的和符合权限触发规则的查验方才能触发数据共享流程的执行,智能合约在这里起到了访问控制的功能。


4.数据安全共享执行流程


在区块链上综合使用数字签名、加密算法、权限管理、访问控制等技术手段,对电子证照数据共享过程进行安全防护,保障数据不被泄露,同时提供可信的共享全过程的流程记录。


智能合约一旦获取到正确的需求方共享请求后,会自动迁移到等待共享方返回请求确认状态,以及等待共享方返回完成确认状态。


当出现状态超时或者其他异常时,智能合约均会进入预先设置的相应的处理流程,以保障共享过程的完整性。


在整个过程中,区块链中的每一次交易提交,都需要有发送者的数字签名,智能合约可基于此判定双方的数字身份,实现权限控制。


5.全流程周期的共享管理


在管理上,可信电子证照利用区块链在数据防篡改方面的特性,打通了电子证照共享数据的存储、共享、管理等环节,保证了数据共享在事前、事中、事后全流程周期的可审计,保证流程可追溯。


同时,由于区块链上所有交易验证,都需要有发送者的数字签名来保障,因此就在参与者之间建立了身份的信任关系。



【声明】内容源于网络
0
0
数组智控产业发展科技院
以AI技术为底层能力,聚焦智慧园区、城市公共安全、数智警务、健康医疗、能源电力、科研实验及平安校园等领域,提供从感知到决策的全流程软硬件一体化的国产装备智能体产品解决方案。
内容 986
粉丝 0
数组智控产业发展科技院 以AI技术为底层能力,聚焦智慧园区、城市公共安全、数智警务、健康医疗、能源电力、科研实验及平安校园等领域,提供从感知到决策的全流程软硬件一体化的国产装备智能体产品解决方案。
总阅读2.8k
粉丝0
内容986