面向教育的区块链应用合约架构和数据隐私研究

2022-09-26 13:06黄超然金澈清杨英杰
关键词:调用代理合约

黄超然 ,佟 兴 ,张 召 ,金澈清 ,杨英杰 ,秦 钢

(1.华东师范大学 数据科学与工程学院,上海 200062;2.欧冶云商股份有限公司 数智供应链研发中心,上海 201999)

0 引 言

随着教育“数字化转型”的浪潮袭来,新型教育模式将进一步提升教育质量、推动教育行业发展,其中,如何保障资源分配与共享过程的公平可信、保障教育证书与评分可信和实现教育数据的隐私保护是数字教育发展的关键问题.区块链为上述问题提供了解决方案: 智能合约能够保证资源分配规则和知识共享的可信执行、提供知识产权和教育证书的可验证数字凭证;通过公私钥加解密保护教育数据互换中交易方身份信息不被泄露.

但是,在实际应用场景中,区块链数据不可篡改的特性使得智能合约一旦部署就不可修改.而教育资源分配规则仍在不断发展和完善,知识共享、知识产权认证和教育证书认证的模式也在不断变化,从更通用的应用场景来看,也很难有一次即完美实现的代码.然而智能合约只能通过重新部署完整的新合约进行合约升级,导致存储和开发成本高,拖慢上层应用更新效率.因此,如何便捷高效地升级智能合约成为一个亟待解决的问题.另外,区块链虽然保护了参与者的身份隐私,但其公开透明的特性使得链上的数据能够被任意参与者获取,而教育数据涵盖类型众多,包括师生数据、知识数据和教学数据等各类敏感数据,数据一旦泄露仍然会面临众多安全问题.在已有的链上数据隐私保护研究工作中,同态加密、零知识证明和多方安全计算等隐私保护方法被尝试应用到区块链中,但这些方法各自存在加解密耗时、计算成本高和建模复杂等问题,在实际应用中可行性较低.因此,如何实现教育场景中的实用数据隐私保护是一个关键问题.

针对上述问题,本文做了以下3 点拓展与贡献:

(1) 提出了一个高效的完全解耦合的智能合约架构.将合约完全解耦为代理逻辑合约、代理数据合约、逻辑合约和数据合约4 类合约集,从而支持任意子合约的独立升级;将代理逻辑合约与代理数据合约的数据缓存在链下,减少了复杂的合约架构带来的通信交互代价;优化数据合约升级时数据迁移方法,减少了数据迁移带来的时间和空间开销.

(2) 提出了一个实用的区块链应用数据隐私保护方案.在合约层以用户为粒度,设计访问权限控制方案,在保证区块链运行效率的同时提高数据隐私安全性;进一步设计了基于本地化差分隐私(Local Differential Privacy,LDP)[1]的隐私保护方案,提高了面向全链公开的统计类数据隐私安全性.

(3) 基于开源区块链系统CITA (Cryptape Inter-enterprise Trust Automation)[2]及华东师范大学与欧冶云商联合研发的CITA 数据管理组件SQL (Structured Query Language)-CITA[3]实现上述方案,进行实验验证实际效果,并将功能集成落地在区块链教育平台中.设计并实现了以知识资源为主体的基于区块链的知识社区应用和以学生信息为主体的基于区块链的学生成长轨迹跟踪与评价应用.

本文提出的区块链教育平台支持可信的知识产权确权与交易、知识资源分配与加密共享、学生教育记录存证与分析和可信电子简历生成等功能,并且优化了应用的更新性能,解决了应用数据的隐私安全问题,为数字教育发展面临的问题提供了应用实例.

1 系统架构与功能模块

本文提出了一个可信、高效且安全的区块链教育平台,围绕知识资源与学生信息两大核心主体,解决了数字教育发展中面临的问题.平台系统架构如图1 所示,从下往上依次为底层链、合约层、数据管理层和应用层.底层链采用开源的区块链内核系统CITA;在合约层设计并实现了基于智能合约的可信知识资源管理、学生信息管理,以及链上数据隐私保护方案;数据管理层采用基于CITA 设计的数据管理中间件SQL-CITA,使得应用层能够通过SQL 语句简单高效地管理链上数据;在应用层实现了知识社区应用和学生成长轨迹跟踪与评价应用.

图1 区块链教育平台的系统架构Fig.1 System architecture of blockchain education platform

其中,知识社区应用是以知识资源为核心的可信在线交流平台,包括三大功能模块: ①知识产权认证与保护模块,支持知识产权的和产权所有者对信息的查询与修改,以及知识产权的交易等功能;② 知识资源分享模块,支持课程资源按需分配、加密知识资源共享、加密知识资源交易等功能;③知识交流与问答模块,支持有偿问答激励机制等功能.

学生成长轨迹跟踪与评价应用是以学生信息为主体的可信分析与评价系统,包括两大功能模块:①学生在校信息存证模块,支持学生成长信息上链存证与查询;② 可信个人简历模块,提供由区块链系统与官方机构背书的可验证个人简历.

2 智能合约架构

本文提出的区块链教育平台中,依靠智能合约连接应用与区块链.智能合约作为区块链上的可执行代码,为区块链提供了丰富的操作和构建上层教育应用的可能.通过对智能合约的设计,实现对知识产权的确权、共享与交易,以及对学生信息的存证和可信简历的生成.但是这些功能都需要持续地迭代与更新.区块链技术虽然保证了教育公平和数据安全,但其不可篡改特性使得合约升级需重新部署完整合约,使得更新时智能合约开发成本高、合约代码冗余存储,因而合约层无法便捷有效地支撑上层教育应用的迭代更新.

针对上述问题,文献[4]提出了数据与逻辑分离的松耦合智能合约架构.但是该工作中的架构设计考虑较简单,只支持逻辑合约功能内容升级,不支持数据合约更新和接口增删.并且,调用接口时总是需要访问接口合约-数据合约获得逻辑合约地址,再通过接口合约-逻辑合约响应需求,最后还需要再访问数据合约修改数据.合约调用流程复杂、耗时且低效,其流程如图2 所示.

图2 智能合约架构Fig.2 Smart contract framework

本章节提出了一个高效的完全解耦合智能合约架构,架构中将合约分为以下4 类.

(1) 代理逻辑合约: 向应用层提供功能接口和set 接口 (用于变更逻辑合约地址)、保存接口对应的逻辑合约地址和代理数据合约地址.

(2) 代理数据合约: 向逻辑合约提供数据接口和set 接口 (用于变更数据合约地址)、保存接口对应的数据合约地址.

(3) 逻辑合约: 封装并实现应用层功能需求、缓存流程中的调用参数.

(4) 数据合约: 实现对链上合约数据的查询和修改操作、保存合约数据.

完全解耦合的智能合约架构流程如图3 所示,以调用逻辑合约A1为例: ①去中心化应用(Decentralized Application,DAPP) 调用代理逻辑合约接口获得逻辑合约A1的地址DA1以及ABI 接口信息;② 用获得的合约地址DA1和ABI 接口调用逻辑合约A1;③A1需要读写数据时从代理逻辑合约获取代理数据合约地址,并调用代理数据合约获得数据合约B1的地址DB1;④ 用获得的合约地址DB1调用数据合约B1进行数据操作,最后响应DAPP.

图3 完全解耦合的智能合约架构Fig.3 Fully decoupled smart contract framework

该架构借助两个代理合约将逻辑合约与数据合约完全解耦合,当合约更新完善时,可以针对具体逻辑子合约和数据子合约分别进行升级.下面以知识产权上链存证和查改链上知识产权信息的应用场景为例,介绍了不同类型合约的升级方案 (代理逻辑合约和代理数据合约的升级流程和数据合约升级类似,不做另外介绍).

(1) 在完善知识产权上链存证的构造证明流程时,需要升级存证功能对应的逻辑合约A1.首先将新的逻辑合约A2部署至链上,获得A2的合约地址后,调用代理逻辑合约的set 接口,更新存证功能接口对应的合约地址变量.

(2) 当链上知识产权存证信息需要加入一个新的数据字段时,需要升级知识产权对应的数据合约B1.首先将新的数据合约B2部署至链上并同步获取B1的合约数据,获得B2的合约地址后,调用代理逻辑合约获得代理数据合约地址,再调用代理数据合约的set 接口,更新知识产权对应的合约地址变量.

完全解耦合的智能合约架构支持便捷实用的任意子合约升级,减少了合约升级时的开发成本,能灵活地支持上层教育应用更新.但是,仍然存在合约调用流程复杂带来的通信开销问题和合约升级时数据迁移带来的内存开销问题,使得应用性能低下.因此,本章节在提出该架构的基础上,做了以下两点优化与拓展.

(1) 设计了代理合约的数据链下缓存机制,借助时间戳校验保证链上链下代理合约数据的同步,简化代理逻辑合约 (代理数据合约) 和逻辑合约 (数据合约) 之间的交互,缩短DAPP 响应时间.

(2) 当代理逻辑合约、代理数据合约、数据合约升级时,需要对新旧版本的合约数据做迁移或是继承,直接复制迁移数据会导致不必要的存储开销,针对此问题提出了面向升级过程的合约数据迁移方法,减少了升级时的存储开销.

2.1 代理合约的数据链下缓存机制

为了减少多次合约间的互相调用带来的额外耗时,将代理逻辑合约 (代理数据合约) 的接口-逻辑合约地址映射表 (接口-数据合约地址映射表) 缓存至链下.这一缓存机制简化了合约调用的流程,如图4 所示,DAPP 从链下缓存的地址映射表获取接口对应的逻辑合约地址和数据合约地址,再调用逻辑合约执行功能操作,逻辑合约调用数据合约进行相应数据操作.

图4 链上链下协作的智能合约架构Fig.4 Smart contract framework with off-chain collaboration

代理合约数据缓存在链下时,会存在链上链下数据的一致性问题.为了保证数据同步,设计了简单的数据一致性校验机制,如伪代码1 所示,为所有逻辑合约和数据合约增加一个校验参数F及其set 和get 接口.只有最新版本合约的F值为true,升级合约时先将旧版本合约F值赋为false,再将新合约部署上链,新合约构造时F值默认为true.调用合约时需对F值进行校验,若当前调用的逻辑合约 (数据合约) 非最新版本,从链上同步最新的代理合约数据.

该缓存机制使得代理逻辑合约和代理数据合约仍存在于架构的逻辑调用中,但实际上从链下进行读取,节约调用操作中近半的链上操作,能够有效减少解耦合架构中多层次合约带来的交互开销.

2.2 面向升级过程的合约数据迁移方法

当代理逻辑合约、代理数据合约和数据合约升级时,新版本合约需要同步旧版本合约的数据,例如,接口-逻辑合约地址映射表、接口-数据合约地址映射表和存证数据等.读取旧版本链上数据并复制到新版本合约是最直接的数据迁移方法,但也导致每次升级都需要复制所有合约数据.随着升级版本的增多、合约数据量的线性增加,不仅降低合约升级时的效率,也会使数据重复冗余,产生额外的存储开销.

为了降低存储开销,复用旧版本合约数据,本节提出了在存储层将新版本合约的状态树叶子节点指向旧版本合约的存储树根的合约数据迁移方法.

图5(a)为区块链底层存储原理,每部署一个新的合约上链,区块里会记录一个新生成的合约账户,账户指向一棵状态树,状态树叶子节点指向合约数据存储树.因此,当A 合约由1.0 版本升级至2.0 版本时,区块链会覆盖其状态树叶子节点并生成一个A 合约2.0 版本对应的存储树.图5(b)为本节提出的优化方案流程,将合约升级区别于新合约部署,新版本合约不再生成新的存储树,A 合约2.0 版本对应的状态树叶子节点直接指向A 合约1.0 版本的存储树根节点.传统合约升级时,每次都需要生成一棵新的存储树,数据则同步复制旧版本合约的存储树上数据,会造成合约数据迁移过程中额外时间开销和存储开销.本节提出的新迁移方法复用旧版本数据,能够进一步减少合约升级成本.

图5 合约升级时数据迁移示意图Fig.5 Data migration on contract upgrade

3 隐私保护方案

本文提出的系统中,以知识和学生为核心的教育应用数据丰富且多元,其中包括许多敏感数据,例如私有知识资源、非公开课程信息、师生信息等.而区块链数据公开透明的特性使得所有参与者都能拿到完整的数据,无法保证教育数据隐私安全.现有链上数据隐私保护的相关研究,主要考虑对链上数据加密,使访问者不可解密数据内容,并保证加密后数据的可用性,例如仍然能正确进行身份验证和交易执行等.基于这一思路提出的各类密码学方法 (如同态加密) 安全性高,但是这类方案计算复杂、加解密成本高,在实际应用中难以广泛应用.因此,本章针对合约层和应用层提出了实用隐私保护方案,保护数据隐私的同时减少额外的计算和开发成本.

3.1 基于权限管理的链上数据隐私保护方案

在合约层提出了面向用户的细粒度权限管理方案,通过智能合约管理不同用户对数据的读写权限,提高数据隐私安全性.方案针对每个合约将用户分为合约发起者、数据管理者、数据查阅者和外部用户4 类,不同用户拥有的权限关系见表1.将方案应用在具体的在线课程管理场景中时,可以将学校教务、教师、课程参与学生、其他学生分别赋予不同类别的用户身份,从而在合约层进行权限管理.

表1 用户分类与不同权限说明Tab.1 User categories and permissions

权限管理的控制主要在逻辑合约中实现,用户权限表存储在一个专属数据合约中.实现权限管理方案如图6 所示 (图6 省去了本地缓存的代理合约,主要用于说明权限管理流程),用户发起请求时,DAPP 将用户身份证明传给调用的逻辑合约,逻辑合约访问用户管理身份合约获取该用户身份的权限证明,在逻辑合约中进行权限判断,对合法的访问请求按正常流程执行.

图6 权限管理流程示意图Fig.6 Permission management process

3.2 基于LDP 的链上数据隐私保护方案

教育数据包含众多如教育评价体系、学生群体发展轨迹和课程数据分析等统计分析类数据,这一类数据往往用于体现群体特征,因此其统计结果通常面向全体用户公开.用户可以通过这些统计结果和一些辅助信息推测并获取他人隐私,例如,学生A 得知某时间区间内只有学生B 参与了课程及格率的统计,而该时间区间前后课程及格率下降了,那么学生A 可以得知学生B 课程未及格这一隐私,我们称这一类隐私问题为差分隐私 (Differential Privacy,DP)[5].显然,这一类数据隐私问题无法依靠权限管理解决,已有的相关研究主要采用在统计结果中添加噪声的DP 方法和在个人数据中添加噪声后收集的LDP 方法对该类数据进行隐私保护.LDP 方法与DP 方法相比,能够防止数据收集中心恶意披露数据.因此,本节针对此问题在合约层设计了基于LDP 的链上数据隐私保护方案,提供对用户群体数据的分析统计查询和差分隐私保护.

具体流程如图7 所示,个体用户将数据传至本地DAPP,由DAPP 添加噪声得到干扰后数据,再由DAPP 调用提交至合约层,这里数据干扰采用随机响应 (Random Response,RR) 方法,设置全局统一的概率P.以布尔类型为例,收集数据时,以P的概率回答真实数据,否则回答任意0/1 值.在合约层,由相应逻辑合约负责权限访问控制、数据收集和非法数据过滤,防止恶意用户为了影响统计结果提供超出阈值的非法数据.再将收集的数据存入相应数据合约,并在逻辑合约实现干扰数据的统计计算与统计结果校准,使得干扰数据统计结果与真实数据统计结果的误差值在可接受范围内,并将统计结果更新保存在数据合约中.

图7 基于LDP 的隐私保护方案流程Fig.7 LDP-based privacy protection scheme

基于LDP 的链上隐私保护方案使得公开的统计结果由准确值变为一个误差可接受的近似值,因此,用户由该近似值推测他人隐私也只能获取干扰信息,有效避免了统计类教育数据存在的隐私安全风险.并且,结合区块链教育平台去中心化的特点,采用LDP 方法取代中心化数据收集者的DP 方法,降低了数据泄露风险.

4 实验评估

4.1 实验环境

基于开源区块链内核CITA 和数据管理中间件SQL-CITA,结合“区块链教育平台”上的具体应用场景,本文实现了完全解耦合的智能合约架构及其优化以及基于权限管理和LDP 的隐私保护方案,以验证所提出方法的有效性.实验在配备Intel(R) 2.90 GHz 的CPU、64 G 的RAM 和1 TB 的硬盘上进行,运行在Ubuntu16.04 上,基于SQL-CITA 开发了一个测试客户端,用户通过POST 请求访问SQL-CITA,SQL-CITA 处理用户请求并与CITA 交互.

以知识产权存证和学生信息统计查询两个场景为例进行实验: 实现对知识产权摘要和归属者信息的上链存证,实现对学生数据上链以及全体学生某课程的及格率统计,实现一个模拟的数据生成器构造知识产权数据和学生信息数据.表2 给出了负载测试的5 个主要样例,包括知识产权与学生信息数据建表、存证、及格率查询,在SQL-CITA 中进行语义分析与交易构造,再发送至CITA 进行指定合约调用.

表2 实验负载Tab.2 Workloads

4.2 完全解耦合智能合约架构性能

本节以知识产权上链存证功能为例,实现了本文提出的完全解耦合智能合约架构和一个原始合约进行实验对比,通过部署时合约代码二进制大小来衡量升级时的开发成本和存储开销.如图8 所示,其中,图8(a)和图8(b)分别在添加对知识产权存证的获取验证功能和添加对产权数据修改功能两个升级场景下,对原始合约升级和完全解耦合架构中合约升级的代码量进行对比,可见完全解耦合架构升级时成本显著低于原始合约,针对知识产权确权功能不同场景的合约升级实验得出,升级成本平均降低28.2%.

图8 完全解耦合合约架构下的升级成本Fig.8 Upgradation cost of smart contract scheme

基于该实例,进一步实现了代理合约数据缓存机制和升级时数据迁移方法,以此作为优化方案进行实验比对性能.以表2 中测试语句2 为测试负载实例,请求次数从单次增长到50 次,实验对比了两种方案相应的处理请求用时.如图9 所示,优化方案对用户请求的处理用时约减少至原方案的一半,延时显著降低.

图9 完全解耦合智能合约架构下的请求处理用时Fig.9 Performance of smart contract scheme

4.3 本地化差分隐私方案性能

在围绕学生信息上链存证和统计分析的应用场景中,实现了本文提出的实用隐私保护方案.以表2中测试语句4 为测试负载实例,调用参数PASSRATE对应的及格率计算合约接口以查询某一课程的学生及格率,学生课程分数为基于均匀分布生成的测试数据.在LDP 相关参数的设置中,隐私预算ε设为0.5 (ε为0 到1 区间中的任一浮点值,作为一个计算参数,用于平衡分析结果数据的真实性和安全性,并不影响计算性能,因此此处取0.5 作为平衡值),随机响应概率P根据隐私预算计算设为0.622.实验对比了真实数据收集和统计与基于LDP 方法的数据处理用时,如图10 所示,随着数据总量由100 条 (课程学生人数) 增加至10 000 条,数据处理的时间略有上升,其中差分方法和真实数据统计处理时间基本一致,可见该隐私保护方法对性能影响十分微弱.

图10 LDP 隐私保护改进前后性能对比Fig.10 Performance of pass-rate statistics with LDP

5 相关工作

面对数字教育发展中的资源分配公平、数据可信和安全问题,我国当下的主要应对方案为由政府教育部门中心化管控保障[6],为了使学校、企业和研究机构等能够参与教育数据的构建和价值利用,教育部门现维护一套复杂的授权协议和监管流程,存在工作量大、人力成本高等问题.区块链作为一种去中心化、不可篡改、可追溯、多方共同维护的分布式数据库,解决了现代互联网应用中多方不可信交互场景下的数据可信问题[7],为中心化结构走向去中心化提供了技术支持.近年有大量面向教育的区块链研究工作,解决数字教育证书可验证和安全可追溯的教育记录存储问题[8],但是都只解决了应用功能问题,没有考虑区块链应用的更新性能局限性,对教育数据隐私的研究主要考虑身份隐私的保护,还不够全面.针对通用区块链应用的智能合约升级和链上数据隐私保护有以下相关工作.

在智能合约升级相关研究中,Huang 等[9]统计发现,智能合约的代码重复率很高,并提出了基于分析合约的差异化代码进行合约更新与升级的方法.刘云霞等[4]提出了基于数据与逻辑分离的松耦合智能合约模型,从一定程度上解决了合约升级开发成本高、合约代码冗余存储的问题.Shao 等[10]提出了一个基于日志文件的自适应智能合约更新框架.

在区块链隐私保护相关研究中,一类研究侧重于保护区块链数据在网络传输中的安全性,Hyperledger[11]通过第三方机构颁发的CA 限制进入网络的节点来保证网络环境的安全.另一类研究侧重于加密和干扰数据,保证即使数据公开,非数据所有者也不能获取其真实价值,其中,混币、环签名、同态加密、零知识证明和保序加密等多种方法被用于区块链上的数据加密.例如,Mixcoin[12]、Blindcoin[13]等是基于混币机制的交易隐私保护方案,门罗币[14]是基于环签名的加密数据保护方案,Zcash[15]是基于零知识证明的加密数据保护方案,BlockOPE[16]是基于保序加密的加密数据保护方案.在差分隐私相关研究中,已经有成熟的基于差分隐私的加密分析型数据库PrivateSQL[17]和FLEX[18].

6 结 论

本文分析了当下教育数字化转型面临的问题,将教育与区块链结合,解决了教育发展的公平和数据可信问题.针对面向数字教育的区块链应用场景,发现并分析了区块链教育应用中的合约升级瓶颈和数据隐私安全两个关键问题,进一步提出了有效的解决方案.从智能合约架构和链上数据加密两方面对区块链应用进行优化,在保留区块链去中心化的核心应用价值时,从区块链应用的功能、性能和成本等多方面提升其实用性,并且在实际场景中完成了应用落地.

但仍然存在需要进一步探讨的问题: 2.2 节中提出的数据迁移方法提高了更新效率、减少了数据迁移的复制量,但带来了对版本管理的局限性;在隐私保护问题的研究中,访问权限控制方案仍然存在恶意节点获取数据的可能,LDP 不能保护非分析型个人数据隐私,因此,链上数据隐私问题仍需进一步探究.能否在保证性能的前提下进一步结合安全性更高的加密方法对链上数据进行保护,是我们未来的研究方向.

猜你喜欢
调用代理合约
核电项目物项调用管理的应用研究
系统虚拟化环境下客户机系统调用信息捕获与分析①
复仇代理乌龟君
108名特困生有了“代理妈妈”
胜似妈妈的代理家长
利用RFC技术实现SAP系统接口通信
一个村有二十六位代理家长
C++语言中函数参数传递方式剖析