私募基金区块链信息共享方案

2022-08-16 03:27牛保宁赵羽龙
计算机工程与设计 2022年8期
关键词:以太合约加密

李 鹏,牛保宁,赵羽龙

(太原理工大学 信息与计算机学院,山西 晋中 030600)

0 引 言

私募机构通过探索项目、成立私募基金、吸引投资人、促成项目成功、实现资产增值,来获取收益。一方面,私募基金把项目信息和投资人信息看作核心资产,在其价值得不到体现的情况下,不愿意与其它机构共享。另一方面,项目的探索和投资人的资质认证需要投入高昂的成本,对于规模大的项目,单个机构无法支撑,需要多个彼此信任的机构投资人共同推动。这两个因素促使私募基金有共享项目信息和投资人信息的意愿。因此,在保证信息价值实现的前提下,实现信息的共享,是困扰私募基金行业发展的一个痛点。

利用区块链及其衍生技术存储公平性和防篡改的特性有望解决私募基金行业痛点。本文为解决私募基金信息共享现存痛点基于以太坊、智能合约、星际文件系统和加密等技术提出以下解决思路:

(1)私募机构、投资人、监管方之间搭建以太坊联盟链,为业务数据构建实体。数据在企业端加密使用区块链和IPFS存储和传递,将联盟链区块摘要信息定期备份至以太坊公有链,提升安全性和降低直接采用公有链系统的运行成本,有利于数据的验证和虚假数据的溯源;

(2)结合私募基金业务,机构间通过智能合约对接,定制化激励方案,利用加密数字货币和贡献度作为后期共享交易的奖励和筹码,实现信息的资产化,促进信息的流通性。

1 相关工作

自2009年区块链[1]诞生以来,随之衍生出各类具有对等存储、自主分布式管理特性的存储技术,被广泛地应用到身份管理和隐私管理等领域。以太坊[2,3](Ethereum),作为区块链2.0首个可编程的分布式应用(DApp)平台,以太坊虚拟机(ethereum virtual machine,EVM)和智能合约的引入为DApp的开发提供了便利。星际文件系统[4,5](interplanetary file system,IPFS)是典型的去中心化、点对点的分布式文件系统,将不同的计算机采用统一的文件系统构建成高吞吐量、高可用、基于内容寻址的集群,解决了区块链上存储大数据成本高的问题。

目前针对信息的共享方案与区块链等技术相结合在经过探索和研究后已经取得了一些成果。任延辉、刘炜等[6,7]使用以太坊构建私有的去中心化的医疗数据访问与权限管理系统,实现了病人对自身医疗数据的使用权,自主对医疗数据共享,该系统将所有的医疗数据采用中心化方式存储,仅将权限记录写入合约,导致系统过度依赖中心化存储,并未有效避免源数据的安全风险。Wang等[8]基于公有IPFS、公有链以太坊和智能合约等技术实现了分布式存储系统和共享方案,虽然保证了数据的安全性,但增加了存储成本和共享成本以及降低的数据的隐私性。谭海波等[9]通过公有链、联盟链、智能合约、非对称加密和IPFS等技术实现了数字档案的保护、验证和恢复,该方案相比于其它信息共享模型明显具备一定的优势,在数据可靠安全共享的前提下,降低了系统的维护成本,但由于缺少激励方案使档案机构的共享主动性下降,造成联盟链的稳定运行受到阻碍。以上研究均为私募基金区块信息共享方案提供了可借鉴的思路和方案,对以上方案实例比较见表1。

表1 信息存储技术方案对比

此外,当前区块链技术在私募基金领域的研究较为丰富。周凯[10]指出私募基金行业信息不对称性、流通性匮乏的痛点,分析区块链技术应用于私募基金行业的应用性和可行性。王向辉等[11]为解决私募基金电子合同易被篡改的问题,提出了利用区块链将不同阶段的合同以及签名散列码存储和分发,并实现了三方合同的全程电子化监管和防丢失、可追溯的功能。

私募基金行业为实现数据安全存储也取得实质性的突破和落地的应用方案。肖风等[12]将区块链存证技术运用于信托管理,对重要数字资产直接通过哈希处理生成唯一不可逆推的特征值并上链,用于原始数据正确性校验。但是原始数据仍然采用中心化存储,无法保证数据的安全,同时将数据存放在公有链增加了运行和维护的成本。马小峰等[13]认为金融行业由于信息不对称导致的信任问题可借助区块链技术得到有效解决,给出了一个基于联盟链的金融平台架构设计方案,设计业务链和数字资产链彼此隔离的两条链。但该方案对原始数据并未采用加密处理和有效的联盟节点数量导致方案仍然存在安全性和稳定性等隐患。

区块链用于解决私募行业信息封闭和内容可信性等问题成为主要趋势,但由于私募行业基于供需模型[14],共享必然会引发资金流失或者收益降低等问题,比如:项目信息共享造成其它投资方抢占市场、投资人信息共享造成投资人流失。对于目前的很多研究成果,存储方式和共享渠道已不再是难点,但很多研究并未深入探讨私募行业如何从根源上解决原始数据的安全问题和提出共享激励方案。

2 私募基金区块链信息共享方案

本文设计的私募基金区块链信息共享方案,主要通过智能合约实现身份认证、信息定向共享,激励机制提升共享积极性,数字签名技术和IPFS解决安全存储问题。在实现信息共享的同时较大程度上保证了信息的隐私性和安全性,并降低存储成本。本章节主要介绍方案整体架构和运行机制、合约架构和共享方案的具体业务逻辑等。

2.1 整体架构和运行机制

本文主要研究如何利用区块链以及衍生技术完成共享方案的设计和应用,为此,本文首先设计了私募基金区块链信息共享方案的体系架构。如图1所示,该方案体系架构自下而上主要分为4部分:以太坊和IPFS构建的数据存储层、智能合约和Web3 J组合中间件、对外提供的系统服务层、私募机构联盟。

图1 方案体系架构

私募基金行业对系统的需求决定了系统的使用者,主要包含了各私募机构的基金管理人、投资人、监管人员;数据存储层主要由以太坊联盟链、公有链、私有IPFS和加密服务接口构成:私募机构以太坊节点和IPFS节点分别通过约定共享genesis.json和swarm.key在完成身份校验后加入联盟,将联盟链区块摘要信息根据动态调整周期写入以PoW作为共识机制的公有链,所有信息公平对等的存储到各机构的联盟节点中,实现信息的安全存储;中间件主要由智能合约和Web3J组合而成,通过分析实际业务(机构认证、共享流程、基金去向和收益等)构建符合实体模型的智能合约,永久上链,利用Web3J实现后端业务和智能合约数据的读写,为系统服务层提供基础链上信息交互功能;系统服务层使用分布式应用(DApp)架构,对外提供RESTful接口,接口内部调用由中间件提供的合约交互功能,并结合业务进一步封装实现对外数据读写的接口;机构联盟提供主要权威节点,为联盟提供服务并接受由系统服务层的权限认证、项目和投资人信息读写、共享、校验等服务。

传统的区块链由于结构特性导致存储和查询效率低,并不适合存放文件类型的数据,所以该系统的文件存储采用IPFS私有集群存储方案。为保证原始文件的隐私性和安全性,采用硬件加密方式由硬件加密服务器对文件加密后存储至IPFS,然后将索引追加至联盟链所运行的智能合约作为文件检索的依据。同时,在以太坊联盟节点中设置定时任务,将联盟区块摘要信息定期写入公有链。

系统运行机制如图2所示,整个系统的运行设备包括:IPFS服务器、以太坊联盟节点、公有链节点、原始数据服务器(内网)、硬件加密服务器、Web服务器。

图2 私募机构设备架构及运行机制

写入请求到达Web服务器时,工作流程如下:

(1)由Web服务器对写入字段和文件进行校验,验证通过进入步骤(2),当验证失败直接返回错误信息;

(2)将原始数据上传至原始数据服务器,根据文件数量通过硬件服务器生成新的公私钥列表和生成原始文件哈希列表;

(3)分别使用私钥对文件数据加密,并同步上传至IPFS服务器,并映射至硬件加密服务器;

(4)将加密文件列表(原始文件哈希、加密文件摘要信息、IPFS地址)整合为JSON再次加密上传至IPFS,将最终JSON的IPFS地址写入以太坊联盟链;

(5)若联盟链节点区块符合周期,将区块摘要信息写入批量写入公有链。

读取请求到达Web服务器时,工作流程如下:

(1)由Web服务器对请求进行校验,验证通过执行步骤(2),反之,返回错误信息;

(2)将通过以太坊节点获取JSON加密文件JSON的IPFS地址;

(3)通过IPFS地址向硬件服务器请求公钥并进行文件解密;

(4)依次对原始文件哈希与解密文件哈希进行比对,若文件哈希一致,则证明文件未被篡改并返回文件预览地址,反正,进入步骤(5);

(5)验证联盟链区块摘要信息和公有链区块备份是否一致,若一致,将文件错误信息返回,反之,则返回区块信息错误。

所有私募机构可选择性搭建自身的应用服务器,为了防止联盟节点数量过少而产生数据安全问题,建议私募机构成员搭建自身联盟链节点,降低数据篡改风险。

2.2 系统合约架构

该方案所使用的设计思路主要基于以太坊是一个拥有智能合约的公共区块链平台,提供去中心化的以太虚拟机处理点对点合约,可灵活的使用常规模式进行DApp的开发,通过对业务抽象化,设计存储模型和符合业务逻辑的智能合约构成方案的底层架构,整个合约框架分为引用合约和信息存储合约,引用合约采用保存信息存储合约地址的方式,防止系统运行过程中身份丢失、信息泄漏和功能替换等问题出现时增加合约部署难度和成本。整个合约架构设计如图3所示,主要包含的智能合约以及功能如下:

(1)投票管理合约(vote manage contract,VMC),全局共享的合约,提供了投票功能,记录了所有的投票记录。当联盟机构申请加入联盟,生成永久联盟身份信息和可变状态量(VOTING,FINISHED,FAILED)记入VMC,当投票状态转变为Finished时,代表成功加入联盟,通过系统提供的身份验证IDC接口完成设备和运行环境的自动化部署。

(2)机构成员管理智能合约(institution member manage contract,IMMC),全局共享变量,存放了所有合格机构的信息和身份标识。每个成员机构在成功通过投票并加入联盟时,会自动创建相关的管理合约(Manage Contract)以及相应的下级子合约:存储合约(Store Contract)和共享合约(Share Contract)。

(3)基金项目、文件、投资人管理合约(Project、File、Investor Manage Contract,PMC/FMC/IRMC)属于每个机构成员的专属合约,用于将数据在安全隔离存储时可提供共享服务,采用所有数据自我治理的方式进行授权访问,只有访问者通过身份的确认或者管理员确认授权之后才能对相关成员子合约中的数据进行访问和更新操作。

图3 系统合约架构

(4)项目、文件、投资人信息存储子合约(Project、File、Investor Store Contract,PSTC、FSTC、IRSTC)和项目、文件、投资人共享合约(Project、File、Investor Share Contract,PSAC、FSAC、IRSAC)主要用于记录业务逻辑所需要的项目信息、文件数据、合格投资人的认证信息,整个方案所提供的共享信息,均来源于这些底层合约。由于数据的隐私性和重要性,为保证数据的安全性,所有的数据都被二次加密存储,只有在被授权的情况下才可以获取到合约数据,然后将数据解密读取。即使在IPFS中获取到加密之后的数据,在没有获得公钥的情况下仍无法读取到原始数据。

(5)功能合约(function contract,FC)主要提供身份校验和共享功能,操作用户通过身份校验后可对自身合约数据共享,避免文件依赖关系出现错误,导致数据的泄漏。

2.3 数字身份

对于整个联盟平台,系统并非全部对外开放,部分功能需要在获取数字身份的认证之后才能访问。项目初始团队维护私募基金管理系统网络,并由创始团队启动初期节点,初始节点构成最早的管理委员会,后续联盟成员可以由管理委员会和已加入机构共同通过投票决定,机构在获取数字身份时需要经过以下流程。

私募机构将基金交由基金管理人负责,通过系统客户端提供的“基金管理人认证登记表”,如图4所示,主要使用外部接口api/apply/add/alliance录入信息存储至VMC,若已经在其它机构备案成功,可直接填写认证链接,系统随机抽取奇数位初始成员和已备案机构成员作为投票人,并建立新的投票请求;然后生成密钥对,将申请机构信息加密写入IPFS,并以二维码方式返回给申请机构用于结果查询;管理委员会对申请机构进行审批投票,通过调用由SDK封装接口api/voting/to/{IM-ID}进行投票,投票信息经过该机构的私钥加密后通过web请求进行信息的传输,由解密接口api/decrypted/json/vote解密,如果解析正确将追加至投票管理合约,半数以上同意则激活ADD_INSTITUTION_EVENT事件,管理人的投票信息状态由VOTING更新为FINISHED,为申请机构生成联盟内部账户和相关成员合约以及子合约,并自动化部署至联盟链。

图4 基金管理人认证登记表

机构的认证成功意味着该机构拥有投资人认证功能,投资人可通过方案提供的用户界面“合格投资人审批登记表”完成认证等功能,如图5所示。

图5 合格投资人审批登记表

2.4 项目的保护和存储

私募机构对项目信息的存储和保护主要以大量的文档信息为主,所有的数据使用对等存储,为避免其它节点的数据被随意读取,造成信息泄漏,所有数据将通过加密流程存储至IPFS,然后将IPFS地址写入联盟链智能合约,以达到存储和保护目的;将联盟链区块摘要信息同步至公链,进而实现验证的功能。基金管理人在创建项目或者对项目信息进行维护时候,必然需要对依赖的文档进行操作,操作的文档信息将被批量整理为JSON对象统一存至IPFS,并将JSON加密存入IPFS返回地址,并写入合约形成映射关系,图6为具体信息加密存储的具体流程。

图6 项目的存储和保护

2.5 共享业务

方案为私募基金管理人录入的项目信息提供在联盟内部的共享功能,其它私募基金管理人或投资者在被授权后可对感兴趣项目的详细信息以及报告文档等内容查看。基金项目信息由智能合约、IPFS、结合多种加密方式和共享接口之间的调用通过网络传输实现在联盟内部和认证投资人之间的共享和交易。具体定向共享业务主要分为两部分:发送共享和接受共享。详细共享方案流程如图7所示。

图7 项目共享流程

发送共享:基金管理人在通过身份认证后,使用接口api/project/shareTo通过传入机构ID和项目ID等参数,将共享记录追加至该机构的项目共享合约,涉及的相关文件使用接口api/file/shareTo将项目文件的共享记录追加至文件共享合约,然后通过加密服务service/send/key将共享文件的公钥列表使用对方的公钥加密之后发送,由对方决定是否存入本机构密钥库。

接受共享:其它机构的基金管理人在收到共享时,可直接通过项目ID和文件ID进行获取相应的加密信息,然后利用自己的私钥进行解密,通过接口api/decrypted/file将json文件解密,然后解析获得完整的文件列表如下内容,通过api/json/analysis/files将文件逐个解析进行预览。

2.6 激励方案

整个网络设置贡献度机制作为激励措施。包括基金发行、LP导入、尽调报告上传、节点记账等增加生态丰富度的行为都将获得一定程度的贡献度,贡献度可以理解为该网络的Token。贡献度的规则可由网络管理委员会设定,如单次记账获得的贡献度数值、发行产品获得的贡献度数值。举例:单个机构账户贡献度=基金规模/万元+尽调报告份数*100+记账次数*0.1。

贡献度使用途径包括但不限于:①项目路演消耗贡献度,将来可以作为Token交易;②购买其它私募基金管理人的尽调报告,以便更加全面的了解项目本身情况,可以使用贡献度购买;③开源社区话语权,根据贡献度投票技术发展路径;④某些特殊功能或权限使用;⑤设置贡献度排名列表,使得该私募基金管理人能够被优先浏览到;⑥后续可以不断增加贡献度使用场景,提升贡献度价值。

3 分析和评估

正文本系统基于以太坊网络搭建,智能合约使用Solidity编写,通过Truffle框架自动化部署。初始测试环境为部署1台公有以太坊节点作为快照节点,3台由Go-enhereum作为客户端的定制化以太坊私有集群,采用Geth搭建节点用于区块数据的同步和校验,由以上3台机器构成初始管理委员会。之后分别部署IPFS,通过共享swarm.key搭建IPFS文件存储系统,其中每个节点服务器同时具备轻节点和全节点的服务功能,其中每台主机的硬件环境为单核2.5 GHZ CPU,4 GB内存,1 TB硬盘。用户只需安装客户端连接联盟链中任一节点即可完成环境搭建。

实验针对私募基金区块链信息共享方案从系统的运行维护成本、性能效率、可扩展性、安全性和可靠性等方面进行测试,主要测试方案所提供的功能是否可满足需求。测试所需数据和用例由前期随机生成,利用脚本实现自动化测试,调用系统提供的用户接口以及对响应值、响应时间和系统性能等指标进行分析。

3.1 功能测试

(1)加密功能验证

文件加密存储功能是该系统的基本功能,本次测试内容为基金管理人对项目文件上传后,从系统后台获取整个加密流程中涉及的原始文件列表、原始文件哈希列表、加密文件列表、加密文件列表JSON等数据。并通过测试接口对数据进行比对是否一致,测试内容和结果见表2。经过算法比对,文件加密功能与预期设想一致,项目文件加密存储满足需求规定。

表2 业务文件验证对比

(2)定向共享功能测试

实验根据需求为依据,核实项目定向功能是否与需求一致。基金管理人将项目发起共享,并批量选择共享接收人,除被选择共享接收人之外,其它基金管理人和投资人无权查阅项目任何信息,如图8所示,共享接收人具备该项目涉及的所有文件验证权限,经过对实际功能的操作以及操作结果分析,共享功能满足设定需求。并且项目所有者可以获得共享奖励贡献度,占比为融资的0.01%,可用于主动获取其它机构项目信息。

图8 共享项目业务实现

3.2 性能测试

(1)限定条件下交易平均响应时间

根据ETH 2.0白皮书中介绍,区块打包消耗的Gastx和数据的比特长度呈正相关。假设N0、N1代表交易中比特位为0和1的位数;Gtx、Gbit0、Gbit1分别代表调用合约执行消耗的Gas、写入数据0和1需要消耗的Gas;Ntx代表交易s的数量。每笔交易需要消耗的Gas记为GasperTx计算方式如式(1),估算区块打包所需消耗的Gas见式(2)。所以在实验中可通过限制GasLimit来控制区块打包的交易数量

GasperTx=(Gtx+Gbit0×N0+Gbit1×N1)

(1)

GasLimit=GasperTx×Ntx

(2)

已部署的合约采用相同的数据结构和字段,交易类型大致可分为认证交易、投票交易、修改共享信息交易等,同类型交易的数据大小基本一致,可认为提交同一类型的交易所消耗的Gas基本一致。

该部分实验主要对用户提交写入请求后智能合约对提交数据交易打包的响应时间。在实际的使用中,传统私募基金平台每秒写入请求数量在200左右,考虑到本身的业务场景与实际需求,将难度值统一降低,我们以用户每秒提交200笔交易作为基数,通过系统提供的api/test/txBatchSubmit接口统一提交,获得不同响应时间进行分析。在测试过程中,分别对节点数量、区块大小(限制区块)进行限制的情况下获取交易平均响应时间。

在实验过程中,将联盟链区块的Gas限制为1 000 000(单个区块分别打包认证交易,投票交易,修改、共享交易的数量为7、47、50)作为前提。对图9分析,相同配置节点的加入,对于同类型的交易平均响应时间呈现缓缓上升的状态。部分数据点出现异常现象,分析该现象产生的原因是PoW中随机数过大。对图10分析,将节点限制为5,通过扩大区块提升每次打包的交易数,每次提交增加100笔交易,同类型的交易并没有随着区块大小的增加而降低交易响应时间,而是交易响应时间缓慢增长,但最终趋于平缓状态,造成该现象的原因是区块大小的增加,PoW难度提升,区块同步时间的增加。

图9 不同网络规模下交易平均响应时间

图10 不同GasLimit下的交易平均响应时间

经过多次的实验和对数据的分析对比,总体交易的平均响应时间在0.3 s~1.8 s,对于正常交易来说,等待时间可被用户接受。在不影响用户体验度的情况下,适当降低难度值,提升区块大小,可明显提高系统的吞吐量。

(2)成员节点故障可用性测试

该部分实验主要测试联盟集群中部分节点损坏时系统的可用性。整体系统正常运行的过程中,由于网络的中断或服务器本身的硬件问题,部分节点出现异常,造成节点数量下降,可能对数据的安全性和系统的可用性造成影响。实验在故障节点中通过MetaMask轻量级钱包提供的JSON-RPC接口连接至联盟链,模拟提交不同类型的交易和链上数据的查询交易,通过对比无故障节点情况下和故障节点情况下的交易平均响应时间对系统可用性进行测试对比,见表3。

表3 节点故障对系统可用性影响

4 结束语

本文中所提出私募基金区块链信息共享方案,主要利用智能合约、非对称加密技术和公有链的结合使数据的安全性得以保障,同时将大文件存储于IPFS文件系统集群,降低了链上存储数据的成本。实质是利用信息化的手段,对私募行业的业务数据进行“数字化管理”,实现了数据的定向共享和数据的安全保护,有效消除信息封闭、减少整个行业的重复劳动(比如合格投资者审核、项目信息分析),提高私募机构验证客户信息以及监管效率,降低运营成本,通过激励方案提升了系统用户的积极性。在系统可用性方面,基本可以达到用户的需求。目前该方案中提出的系统平台仍然在开发和完善阶段。在今后的工作中将进一步完善智能合约的清算功能,并通过改进联盟链中的共识机制提升系统的业务处理效率,增加吞吐量,提升在大规模高并发下的交易处理效率,逐步向公募基金系统需求方向发展。

猜你喜欢
以太合约加密
一种新型离散忆阻混沌系统及其图像加密应用
基于活跃节点库的以太坊加密流量识别方法
以太万物理论概述
一种基于熵的混沌加密小波变换水印算法
车易链:做汽车业的“以太坊”
加密与解密
A Study on the Contract Research Organization
我国古代对军事信息的加密与传递