基于区块链的金融资产存证系统设计与开发

2021-01-28 03:35李晋
微型电脑应用 2021年1期
关键词:哈希合约指纹

李晋

(国家开发银行四川省分行客户三处, 四川 成都 610041)

0 引言

本文针对当前数字金融存证问题(如证据效能薄弱、信息安全防护级别低),利用区块链技术开发了数字金融资产存证系统,该系统可通过动态加入、身份验证等操作使普通存证功能得到完善。具体实施主要是通过使用IPFS提取和挂载数据等来确保数字资产的安全性。通过运用区块链的链式的形态方式将存储的安全级别大幅度提升,保护数据存储安全[1]。这种方式也可借助web.js架构起网络客户端与区块链网络之间的媒介平台,使两者能够融合使用。智能合约能够保障客户端在业务操作中的逻辑,并能提供程序代码的支持,有了它,一切事宜皆可形成自动化操作。当结果返回时还可借助POA共识机制筛选出记账节点,然后打包入链。这些操作用户必须通过身份验证或授权才能完成,很大程度上提升了数据的安全性[2]。

1 存证系统总体设计

1.1 网络拓扑图结构

为了能够清晰的了解该系统的运作过程,采用网络拓扑图的形式,如图1所示。

它是建立在区块链基础上的,通过这种方式将数字资产进行存证。第一,将数字资产的哈希指纹保全到区块链中,这项操作主要借助存证平台进行操作。与此同时,区块链网络中的其它节点主要承担起区块数据同步的责任。当存证用户在存储的过程中出现了问题,便可通过司法机构的授权查看并下载原始文件,并且在司法机构介入调查后会将此操作生成鉴定报告,也会将此鉴定报告提交给存证用户一份。

图1 系统网络拓扑

1.2 改进的区块链框图

区块链作为现代存储中所应用的一种共享记账方式,被应用的同时也在不断的改善[3]。它的弊端性主要显现在存储空间局限性方面,不仅空间容量低,存储形式更是单一,存储空间过小,仅有1MB,这在实际应用中极为不便[4]。在了解它的优劣性后,就要结合运用IPFS,将它们两者结合运用,如图2所示。

图2 改进的区块链框图

经过改进的区块链框图。该框图的优越性能在于,它能将占据存储空间容量大的文件转化为哈希指纹的形式,将原本占据较大空间的文件压缩为占据空间小的文件,适合上链存储的哈希指纹值这样一种充满技术含量的形式。

1.3 系统底层架构设计

通过分析区块链的可信数字资产存证系统的结构形态,可以看出,它主要分为六层架构模式,如图3所示。

图3 系统底层架构

(1) 数据层。用来存储各种有关可信数字资产存证信息的地方。包括用户的账户、用户的数据指纹等。

(2) 网络层。用来封装与存储相关的各种网络机制,包括P2P组网机制以及与数据保存、验证相关的内容等。这些机制也可掌控节点之间的区块数据的相关操作,如数据同步或数据验证。

(3) 共识层。将所在区块链的应用内容通过筛选,找出各个节点间的同质部分然后进行去中心化操作,这种操作目的是将各节点并置到一起,如果是单个节点,就需经过去中心化操作后使其融入到全网节点中,方可打包进链。这种特性与POA机制极为相似,因此可作为共识标准。

(4) 激励层。为了能够使网络运行顺畅,该层通过经济学方式,以代币发行机制和代币分配机制作为它的主要组成部分,控制记账的节点给予奖励,目的就是要保证网络的良好运行。

(5) 合约层。该层作为重点保护层,涉及到与机密相关的重要内容,如身份认证、审计追踪等,都是为了保护客户的利益而特别设定的。

(6) 应用层。这一层是基础操作层,如账户登录、注册等。

1.4 系统总体框架设计

系统总体架构,如图4所示。

图4 系统总体架构

数字资产存证应用的整体运行形态,最上层所展示的主要有企业或个人等所有相关的信息内容。在网络化时代各种企业不论大小都预借助数字网络进行信息传播,也因此更加注重数字资产的存证。

存证对象包括方方面面,凡是涉及到数字资产的内容都涵盖在内,不论是图像的,还是音频的。之所以如此,也是为了最大程度的确保所用信息的安全性,毕竟数据信息的安全隐患会导致巨大的经济损失。

IPFS作为一种全新的网络协议,与传统的HTTP协议相比,它具有显著的优势。它不仅存储空间容量大,传输速度快,并且在存证用户将所要保存的文件进行加密后可以通过IPFS系统进行生成,也就是哈希指纹值。该数据具有稳定性、唯一性,并且它不能任意的进行篡改[5]。这些重要部分可以通过区块链中的去中心化操作,将使信息数据的安全级别大大提升。并且这层区块链在进行转化的过程中,也需经过授权的验证,方可进行进一步的操作。这些授权可通过凭证管理中心(CA)或司法鉴定机构等来完成,这些内容均是其重要组成部分。POA被称为共识算法,属于授权类共识机制的范畴。这些链条节点需要投票来选择,这为挖矿环节节省了大量的时算力。当所有相关的区块环节完全被确定后,在主链的位置上便会又多了一项内容,而其它参与的节点也会进行同样的操作来完成。

最底层是基础服务层,关于文件的一些相关内容的操作如证据保全等。

2 存证系统功能开发

2.1 系统总体功能模块

数字资产存证系统的总体功能模块,如图5所示。

图5 系统总体功能

当关注点落实到用户管理模块中时,会发现它的功能很简单,就是用户登录与注册两个部分。做进行登录与注册的用户多是存证用户和联盟用户,他们中的存证用户作为低级别的用户,只涉及到存证的内容,与联盟用户不同的是,联盟用户作为高级别用户,所肩负的职责主要包括区块的产生和验证,也要为普通用户中的一些需求进行回复操作,如可以借助联盟用户来帮助普通用户开具司法鉴定报告。在节点管理模块中主要包括节点的删除或添加两个部分。本存证应用使用的联盟链是一种授权区块链,因此在进行节点内容的删减内容操作过程中也要经过授权的环节方可进行,而这种授权的方式是以授权节点的投票来完成。在进行存储或加密的操作中,只有作为授权用户才有权限进行查看,这也是为了能够保障系统的安全性。而文件管理的内容主要涉及到文件的下载、查看等相关内容的功能模块操作。

2.2 关键功能开发

(1) 用户管理子系统的设计与实现

用户管理子系统主要负责验证用户的身份,只有这样系统方可进行下一步的存证操作。本文在实施操作中用户的注册信息并未和带有身份标签的DID分离,它们一并被放置到区块链这块封闭系统中,在这块区域中用户的身份能够实现自行验证,这也是它优越性体现,如图6所示。

图6 用户注册流程图

(2) 文件加密功能模块的设计与实现

作为普通用户如果想要完成存证的操作就必须要对文件进行处理,如设置加密这样的操作,加密的方法可以选择RSA公开密钥算法。该方法应用较广泛。该方法并不属于对称加密的范畴,而属于非对称加密,它会借助所生成的公钥和私钥之间的制约性来确保数据的安全性。作为用户在存证的过程中可以选择加密或是不加密。该系统的默认操作是加密,如若更改则可通过手动修改来完成。具体流程,如图7所示。

图7 文件加密流程

作为存证用户可对加密操作进行自主选择。如果选择不加密,则可将原文件中的哈希值记入到账本中;在进行加密的过程中,需要通过GPG提供的RSA公开密钥加密算法来实现对数字资产的加密;加密完成后系统会将文件传输到IPFS系统中,再由它分配存放到多个节点中,以生成哈希值;并将这些哈希值直接保全在区块链上的记账本中,也就是文档。

(3) 智能合约的设计与实现

运行在EVM中的智能合约是实现数据资产上链保全的首要满足条件,利用它可有效规避人为性干扰因素的出现,能让信息保全的安全性更强。WEB前端通过Web3.js调用预先部署在区块链网络上的存储合约,能够将所要保全的数字资产的哈希值放置到区块链上进行固定,这样便不可进行篡改的操作,以此来保证司法鉴定的权威性或为此提供相应的鉴权依据。作为EVM,Solidity被普遍运用。除此之外,还有LLL、Serpent等同样被运用,但相比Solidity,其普及性并不高。在本文中通过两种智能合约的形式实现资产数据的相关操作。第一种是用于资产数据登记,就是要将有关资产的文件转换为数据中的哈希指纹,然后在配送到特殊区域区块链系统中,第二种是用于数据确权,以此来证明资产数据的存在。在误差向量幅度中存在的智能合约,它的整个运行,如图8所示。

图8 智能合约程序流程

首先,通过加载Web3,为Web前端与区块链网络的交互提供JSON.RPCAPI;用Solidity这种高级编程语言来完成相应的操作,这是将需要存储的文件转换为哈希指纹上链的形式来完成,这项功能的实现需要借助智能合约配合完成。因为该操作需要进行编程,变成的方式可以选择线上来完成,也就是说既可使用Remixide提供的在线编译,也可利用Geth客户端中安装Sole编译器来完成。编译的过程就是不断输出的过程,里边所经编译的字节码会作为数据源被发送,发送的地址是空的。而智能合约需要绑定于区块链上的EVM中,形成合约地址,以便有相关事务出现时进行调用。存储合约的源代码如下所示。

pragma solidity ^0.4.17; //^0.4.17表示所用solidity语言的版本号

contract StoreHash {//合约名为StoreHash.sol

string ipfsHash;

//将经由IPFS系统返回的哈希指纹记录到区块链中

function sendHash(string x) public {//检索保全在区块链中的哈希指纹

ipfsHash=x;

}

function getHash() public view returns (string x) {

return ipfsHash;

}

}

在智能合约完成编写操作后就可通过Remix进行编译了,在这里编译只是作为转化语言的一种智能化手段,也就是说,通过该手段智能合约转化为EVM可以识别的字节码,进而生成一个ABI(应用系统二进制接口)。以便将带有账户余额的Metamask钱包会携带有关于编译的内容经过智能合约被覆盖在Kovan上,这种反馈地址的方式便于开发人员调用。

(4) 区块生成的设计与实现

区块是所有重要资产数据存放的地方,涵盖了区块头和区块体两部分。如果资产数据在处理之前就要被默认进行哈希指纹化操作,然后会自动放置到区块中,这样的自动化操作不但能够节省时间的成本,对空间的存储量而言无疑也会增加,在足够多的存储空间范围内能够更好的保存资产数据的完整。区块生成的整个流程,如图9所示。

图9 区块生成流程

详细执行步骤为:用户从客户端发起一笔交易,该交易就会通过网络遍布到其它参与节点,最后被暂存到各自的交易池(TxPool)中;各个节点都会将这些交易池中交易数据进行签名验证,这样数据会被完整保存且带有加密性。在系统运行此程序中虚拟机会派上用场,与交易相关的列表和回执随着程序的完成也会自动生成,一旦签名无效,则这笔交易也随之取消;在组装区块操作中,首先要由POA共识机制筛选出的主节点来参与所进行交易的排序和打包,在排序与打包的过程中当有无记账权的提示出现时,则要等待下一轮的挖矿才能开启;区块在被挖到后,即可将所进行的交易打包,而主节点就会将该事件进行广播;当节点接收到广播后,其它的节点数据会进行同步操作;把前边的区块Hash值放到本区块头中,形成一条如链式结构的数据区域,该区域就是区块链。

3 总结

综上所述,该系统能够实现对文件的各种操作,从文件上传、下载、查看等基础性操作,到为文件进行加密、授权等更多的功能需求均可满足,它在满足上述需求的操作过程中智能合约完成相关文件的数据转换及编译,在用户进行数据调用的操作中,存证用户需要完成Web前端的相关操作,如通过Web3.js封装的JSON-RPCAPI与Kovan测试网络进行交互,有了程序的执行后,作为司法鉴定机构就有获取授权的条件了,它能够以此来获取区块链上的存证数据了,经过程序的进一步的验证操作,如与原始文件的比对,这样一份具有科学效应的司法鉴定报告便可生成。本文对企业数字资产的存证和保全有着非常重要的意义,值得推广。

猜你喜欢
哈希合约指纹
基于特征选择的局部敏感哈希位选择算法
哈希值处理 功能全面更易用
像侦探一样提取指纹
为什么每个人的指纹都不一样
文件哈希值处理一条龙
基于自适应稀疏变换的指纹图像压缩
巧用哈希数值传递文件
可疑的指纹
合约必守,谁能例外!——对“情势变更”制度不可寄于过高期望