CN115757648B - 基于联盟链did的多模态成绩上链方法及系统 - Google Patents
基于联盟链did的多模态成绩上链方法及系统 Download PDFInfo
- Publication number
- CN115757648B CN115757648B CN202310031378.7A CN202310031378A CN115757648B CN 115757648 B CN115757648 B CN 115757648B CN 202310031378 A CN202310031378 A CN 202310031378A CN 115757648 B CN115757648 B CN 115757648B
- Authority
- CN
- China
- Prior art keywords
- intelligent contract
- user
- data
- chain
- score
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 142
- 238000012795 verification Methods 0.000 claims abstract description 44
- 238000012544 monitoring process Methods 0.000 claims abstract description 13
- 230000008859 change Effects 0.000 claims abstract description 12
- 238000013507 mapping Methods 0.000 claims description 54
- 238000002715 modification method Methods 0.000 claims description 22
- 238000011068 loading method Methods 0.000 claims description 19
- 238000004590 computer program Methods 0.000 claims description 11
- 238000005516 engineering process Methods 0.000 abstract description 10
- 230000000694 effects Effects 0.000 abstract description 4
- 238000012986 modification Methods 0.000 description 26
- 230000004048 modification Effects 0.000 description 26
- 238000013461 design Methods 0.000 description 14
- 238000007726 management method Methods 0.000 description 14
- 238000010586 diagram Methods 0.000 description 13
- 238000004422 calculation algorithm Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 8
- 230000001960 triggered effect Effects 0.000 description 7
- 238000011156 evaluation Methods 0.000 description 4
- 235000013305 food Nutrition 0.000 description 4
- 238000011160 research Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 3
- 235000006679 Mentha X verticillata Nutrition 0.000 description 2
- 235000002899 Mentha suaveolens Nutrition 0.000 description 2
- 235000001636 Mentha x rotundifolia Nutrition 0.000 description 2
- 230000002457 bidirectional effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 239000000872 buffer Substances 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 239000003814 drug Substances 0.000 description 1
- 150000002170 ethers Chemical class 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000011835 investigation Methods 0.000 description 1
- 239000003607 modifier Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提供了基于联盟链DID的多模态成绩上链方法及系统,首先搭建一个多节点共识的联盟链网络,接着设计成绩上链智能合约,并创建智能合约管理员、教师、学生及教务人员账户,然后将智能合约部署到联盟链网络;依据区块链项目的信任需求设计多模态成绩上链方法,接着将学生成绩由合适身份的用户提交上链,期间完成对该用户身份的链上验签。后端运行的合约监测事件实时检测到链上数据的变动,最后将链上变动的数据回写到关系数据库中,便于快速查询和统计。本系统利用了区块链去中心化技术结合项目的信任需求,将学生成绩数据分别以前端上链和后端上链模式永久保存在区块链上,具有可溯源、数据不可篡改和去中心化的效果。
Description
技术领域
本发明涉及区块链技术领域,尤其涉及基于联盟链DID的多模态成绩上链方法及系统。
背景技术
区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式,是一种分布式、去中心化的数据库。具有可溯源、信息不可篡改、去中心化、分布式存储等特点。区块链技术奠定了坚实的“信任“基础,创造了可靠的“合作”机制,近年来在金融、医药、食品溯源、物联网等领域有了初步的应用。
区块链技术是利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用脚本代码组成的智能合约来编程和操作数据的一种新的分布式计算方式。数据要写入区块链,需要经过共识过程,即多个区块链节点对上链数据进行计算验证,并经由其中一个节点写入区块链树状存储结构中。目前,国内外已相继开展区块链技术研究及其应用,不同的区块链项目其信任需求不同。例如,组成联盟链的节点往往对前端用户而言是不可见的,此时不能直接访问,需要设计后端上链。区块链上智能合约编程和数据上链等内容逐渐成为区块链技术研究的热点。因此,如何设计智能合约、数据上链及应用,具有重要的应用价值和实践意义。
李博等人发表的《面向食品溯源场景的PBFT优化算法应用研究》,计算机科学,vol, 49, pp. 723-728, 2022 (《Application Research of PBFT OptimizationAlgorithm for Food Traceability Scenario》(Computer Science, vol. 49, pp. 723-728, 2022))中提出一种适用于食品溯源场景的优化PBFT算法(t-PBFT),将供应链中节点划分为3个等级,根据节点在共识中的时机通信量动态更新节点状态并以此评价节点的可靠性和选作主节点的依据。结果表明t-PBFT算法在通信开销、吞吐量方面表现更优,但该模型在实际应用中仍有待探索。隋源等人发表的《一种面向区块链的链下数据库高吞吐量可验证查询方法》,小型微型计算机系统,pp. 1304-1312, 2021(《High throughputverifiable query method for blockchain- oriented off-chain database》(Journalof Chinese Computer Systems, pp. 1304–1312, 2021))中提出一种多模式可验证查询方法,根据节点之间信任程度的不同,提供不同代价花费的验证查询方法,从实验方面说明这种模式在系统吞吐量和可验证查询方面有较好的效果。但是链下数据库与区块链之间的交互方式值得进一步研究。
现有技术中,“一种调用区块链上的智能合约的方法及系统(CN107688927A)”公开了一种调用区块链上的智能合约方法,阐述了如何生成业务数据,但未提及数据上链中的技术细节;“一种基于区块链技术记录成绩的方法及系统(CN110110532A)”公开了一种基于区块链技术记录学生成绩的方法及系统,该技术方法着重论述了对学生成绩加解密,并使用认证机构(CA)对用户的数字证书进行签名,而CA证书管理复杂,过于冗繁,且证书是中心化管理;“一种基于区块链的学生成绩管理方法(CN111241584A)”公开了一种使用椭圆曲线加密算法生成用户的公钥和私钥,教师通过自己的私钥将学生成绩上传到教务管理中心,同时教务管理者将成绩上链处理,类似地使用CA对用户的数字证书进行签名,CA证书仍然是中心化管理;“一种基于区块链的评优及奖学金管理方法、设备及介质”公开了一种使用区块链技术对学生评奖用的评价数据进行加密并写入到区块链,未提及数据提交者的身份验证问题。然而,CA证书管理过于复杂,从根本上说仍然是中心化管理,不利于区块链应用的拓展,远不及区块链账户简明。
发明内容
本发明通过提供一种基于联盟链DID的多模态成绩上链方法及系统,用以解决或者至少部分解决现有技术中存在的对用户账户的管理过于复杂冗繁、仍然停留在中心化管理的技术问题。
为了解决上述技术问题,本发明第一方面提供了基于联盟链DID的多模态成绩上链方法,包括:
S1:搭建一个包含四个结点的联盟链,四个结点分别布置在校教学中心、教务科、学院教务办和教师端;
S2:分析智能合约需求,编写智能合约,包括根据需要存储的数据设计智能合约存储数据的数据结构、实现智能合约方法以及定义智能合约中的事件;
S3:将编写好的智能合约部署到搭建的联盟链上;
S4:调用智能合约方法进行多模态成绩上链,其中,当进行前端上链时,利用智能合约对用户进行身份验证,当验证通过后执行成绩上链,前端上链是指用户通过前端与智能合约直接交互;当进行后端上链时,后端接收用户发送的签名信息,对签名信息进行验证,当验证通过后执行成绩上链,后端上链是指用户将生成的签名信息提交到后端,由后端与智能合约进行交互;
S5:对联盟链上智能合约定义的事件进行监听,监测联盟链上的数据是否发生变化,如果发生变化,则将变化后的数据回写至关系数据库中。
在一种实施方式中,步骤S1包括:
S1.1:编写创世区块配置文件;
S1.2:编写四个结点的配置文件;
S1.3:启动四个结点。
在一种实施方式中,智能合约方法包括身份验证方法、签名信息验证方法、成绩修改方法、任课教师修改方法。
在一种实施方式中,在步骤S2之后,所述方法还包括:
对智能合约进行修饰。
在一种实施方式中,步骤S4中进行前端上链包括:
用户调用智能合约的身份验证方法,将当前用户的区块链地址作为输入;
智能合约查询链上预先存储的两个映射表,一个为区块链地址与令牌ID之间的映射表,另一个为令牌ID与DID数据之间的映射表,提取出DID数据中的用户别名,其中,DID数据由用户向智能合约注册时,由智能合约生成,DID数据封装有用户的区块链地址、用户别名;
检查用户别名是否在预先设置的白名单中,如果在,则表明身份验证通过;
调用智能合约的成绩修改方法进行成绩上链。
在一种实施方式中,步骤S4中进行后端上链包括:
用户将生成的签名信息提交至后端,后端调用智能合约的签名信息验证方法,根据生成的签名信息解算出用户的区块链地址作为输入;
智能合约查询链上预先存储的两个映射表,一个为区块链地址与令牌ID之间的映射表,另一个为令牌ID与DID数据之间的映射表,提取出DID数据中的用户别名,其中,DID数据由用户向智能合约注册时,由智能合约生成,DID数据封装有用户的区块链地址、用户别名;
检查用户别名是否在预先设置的白名单中,如果在,则表明签名验证通过;
调用智能合约的成绩修改方法进行成绩上链。
在一种实施方式中,调用智能合约的成绩修改方法进行成绩上链,包括:
将用户的账户信息以及成绩信息作为智能合约方法的参数,调用智能合约中对应的成绩上链方法,生成一笔交易产生新的区块,并触发智能合约内成绩变更的事件,实现成绩上链。
基于同样的发明构思,本发明第二方面提供了基于联盟链DID的多模态成绩上链系统,包括:
联盟链搭建模块,用于搭建一个包含四个结点的联盟链,四个结点分别布置在校教学中心、教务科、学院教务办和教师端;
智能合约编写模块,用于分析智能合约需求,编写智能合约,包括根据需要存储的数据设计智能合约存储数据的数据结构、实现智能合约方法以及定义智能合约中的事件;
智能合约部署模块,用于将编写好的智能合约部署到搭建的联盟链上;
多模态成绩上链模块,用于调用智能合约方法进行多模态成绩上链,其中,当进行前端上链时,利用智能合约对用户进行身份验证,当验证通过后执行成绩上链,前端上链是指用户通过前端与智能合约直接交互;当进行后端上链时,后端接收用户发送的签名信息,对签名信息进行验证,当验证通过后执行成绩上链,后端上链是指用户将生成的签名信息提交到后端,由后端与智能合约进行交互;
链上数据回写模块,用于对联盟链上智能合约定义的事件进行监听,监测联盟链上的数据是否发生变化,如果发生变化,则将变化后的数据回写至关系数据库中。
基于同样的发明构思,本发明第三方面提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被执行时实现第一方面所述的方法。
基于同样的发明构思,本发明第四方面提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现第一方面所述的方法。
相对于现有技术,本发明的优点和有益的技术效果如下:
首先搭建一个多节点共识的联盟链网络,接着设计并编写了成绩上链智能合约,然后将智能合约部署到联盟链网络;依据区块链项目的信任需求设计多模态成绩上链方法,接着将学生成绩由合适身份的用户提交上链,期间完成对该用户身份的链上验签。后端运行的合约监测事件实时检测到链上数据的变动,最后将链上变动的数据回写到关系数据库中,便于快速查询和统计。本发明使用去中心化身份(DID)管理用户的身份凭证,DID是建立在区块链技术上的信任,是去中心化的,它存储了用户的区块链地址,链下编号,用户别名,以及区块链地址和其它数据之间的映射。因此,DID更加直观和明了,它简化了CA证书过于繁琐的管理过程,利用区块链去中心化技术结合项目的信任需求,将学生成绩数据分别以前端上链和后端上链模式永久保存在区块链上,具有可溯源、数据不可篡改和去中心化的效果。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的基于联盟链DID的多模态成绩上链方法的整体流程图;
图2为本发明实施例中智能合约设计的流程图;
图3为本发明实施例中数据上链的流程图;
图4为本发明实施例中验证用户身份的流程图;
图5为本发明实施例中链上数据回写的流程图;
图6的(a)为中心化DB存储的流程图,(b)为去中心化链上存储的流程图;
图7为本发明实施例中基于联盟链DID的多模态成绩上链系统的运行结果图;
图8为本发明实施例中基于联盟链DID的多模态成绩上链系统的模块结构图;
图9是本发明实施例中提供的计算机可读存储介质的结构图;
图10是本发明实施例中提供的计算机设备的结构图。
具体实施方式
针对现有技术中存在的对用户账户的管理过于复杂冗繁、仍然停留在中心化管理的技术问题,本发明提供了基于联盟链DID的多模态成绩上链方法及系统,依据区块链项目的信任需求提出了多模态成绩上链方法,具体是前端上链和后端上链,合理设计与之相适应的区块链账户的身份验证方式,为区块链数据上链提供有力的方法及系统支撑。
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
本发明实施例提供了基于联盟链DID的多模态成绩上链方法,包括:
S1:搭建一个包含四个结点的联盟链,四个结点分别布置在校教学中心、教务科、学院教务办和教师端;
S2:分析智能合约需求,编写智能合约,包括根据需要存储的数据设计智能合约存储数据的数据结构、实现智能合约方法以及定义智能合约中的事件;
S3:将编写好的智能合约部署到搭建的联盟链上;
S4:调用智能合约方法进行多模态成绩上链,其中,当进行前端上链时,利用智能合约对用户进行身份验证,当验证通过后执行成绩上链,前端上链是指用户通过前端与智能合约直接交互;当进行后端上链时,后端接收用户发送的签名信息,对签名信息进行验证,当验证通过后执行成绩上链,后端上链是指用户将生成的签名信息提交到后端,由后端与智能合约进行交互;
S5:对联盟链上智能合约定义的事件进行监听,监测联盟链上的数据是否发生变化,如果发生变化,则将变化后的数据回写至关系数据库中。
请参见图1,为本发明实施例提供的基于联盟链DID的多模态成绩上链方法的整体流程图。
具体来说,步骤S2分析合约需求,包括对合约需要存储的数据,合约需要对外提供的方法以及合约需要定义的事件进行分析,然后根据分析情况编写和设计智能合约。
图3为本发明实施例中数据上链的流程图;图4为本发明实施例中验证用户身份的流程图。
本发明提供的成绩上链方法包括前端上链和后端上链,前端上链时,用户直接与智能合约交互,通过身份验证后则可以进行成绩上链,后端上链时,用户将生成的签名信息提交至后端,后端调用智能合约求解出用户的账户地址(区块地址)然后进行签名验证,验证通过后由后端进行成绩上链。
请参见图5,为本发明实施例中链上数据回写的流程图。
步骤S5在数据成功上链后,通过对链上事件的监听,将变动的数据回写到数据库中,保证数据的一致性。具体实施过程中,可以调用ethers.js库的方法对任课教师修改和成绩修改两个事件进行监听。当监听到事件时,同时会获取到事件里的数据,而这些数据就是链上变动的数据。获取到数据变化后,通过axios将数据发送到Java后端,再回写到关系数据库中。
通过定义合约事件进行监听,就可以感知链上数据的变动并获取变化后的数据,再将这些数据回写到数据库中,就可以获得一致性的数据副本,便于查询和统计。
在一种实施方式中,步骤S1包括:
S1.1:编写创世区块配置文件;
S1.2:编写四个结点的配置文件;
S1.3:启动四个结点。
具体实施过程中,使用Hyperledger Besu搭建联盟链,采用Ethash算法生成新区块。四个结点分别布置在校教学中心、教务科、学院教务办和教师端,这些结点放置在校园网内不同的物理位置, 构成一个联盟链网络。创世区块配置文件为genesis.json文件。
在一种实施方式中,智能合约方法包括身份验证方法、签名信息验证方法、成绩修改方法、任课教师修改方法。
具体来说,对于成绩修改方法、任课教师修改方法,成绩修改方法设计为要求传入要修改的成绩对应学生的DID,对应的课程id以及分数,在方法体内将存储课程成绩的嵌套的mapping映射中对应的成绩值赋为传入的成绩值。修改任课教师的方法与修改成绩的方法同理,要求传入的参数有课程id以及任课教师的DID,在方法体内将存储任课教师的mapping映射的对应的任课教师DID赋为传入的任课教师的DID。
智能合约还需要定义的事件有成绩修改和任课教师修改,其中在修改成绩时,将触发成绩修改事件,而任课教师被修改时,会触发任课教师修改事件。
智能合约方法的修饰,具体来说包括只允许合约部署人添加教师和只允许任课教师修改学生成绩。
在一种实施方式中,在步骤S2之后,所述方法还包括:
对智能合约进行修饰。
请参见图2,为本发明实施例中智能合约设计的流程图。
具体来说,根据区块链项目的信任需求来进行合约的设计。在前端直接上链时,组成联盟链网络中的节点可供前端用户直接访问,当前账户将在身份验证合法后通过前端直接和链端进行交互,数据直接上链。下面从智能合约设计中用户身份信息存储、业务数据修改方法及修饰、定义的合约事件具体说明本实施例的合约设计。
在用户身份的存储管理上,每个用户将进行注册并提交其信息到智能合约中,由相应的智能合约方法生成用户的DID数据,它封装了该用户的区块链地址,链下编号,昵称(用户别名),头像链接等基本数据,并将用户的DID数据作为NFT的属性存储到链上。
具体可以通过下述方式来实现:
(1)编写一个遵循ERC721规范的非同质化代币(NFT)合约,实现所要求的方法,包括铸造(mint)方法,生成当前用户的tokenId;
(2)为上述用户tokenId创建映射表<tokenId, DID>,其中键是tokenId,值是DID;
(3)为上述用户创建双向映射表<Address, tokenId>,就可以由区块链账户查询到他的tokenId,反之亦可。
ERC721合约中本身存在NFT拥有者(Owner)的地址,此地址建立了与DID的联系,使得每个区块链上的账户都可以绑定一个数字身份DID。
相对于区块链上的账户地址,DID包含了更多信息,使用DID作为链上的身份标识对用户和第三方应用更加友好。
根据业务需求对合约方法进行定义和修饰。根据区块链项目的信任需求来进行合约的设计。在合约设计时,要考虑有效的用户身份认证方式、合适的数据上链方法及修饰、定义的合约事件。同时,还要考虑与传统业务系统之间的数据交互,设计合适的智能合约方法来感知链上数据的变化。将用户最为关心的敏感数据以合适的形式储存到链上,缓解用户对敏感数据的信任问题。
智能合约还需要存储业务数据,修改业务数据的方法,定义数据变化感知的事件。智能合约还需要存储的数据有学生的课程成绩,还有合约部署人的账户地址,由于使用Solidity语言编写智能合约,所有课程成绩以嵌套的mapping映射的形式存储(相当于是一个课程成绩的二维表),把学生的DID和课程的id一起作为key,学生的课程成绩作为value。
在一种实施方式中,步骤S4中进行前端上链包括:
用户调用智能合约的身份验证方法,将当前用户的区块链地址作为输入;
智能合约查询链上预先存储的两个映射表,一个为区块链地址与令牌ID之间的映射表,另一个为令牌ID与DID数据之间的映射表,提取出DID数据中的用户别名,其中,DID数据由用户向智能合约注册时,由智能合约生成,DID数据封装有用户的区块链地址、用户别名;
检查用户别名是否在预先设置的白名单中,如果在,则表明身份验证通过;
调用智能合约的成绩修改方法进行成绩上链。
具体来说,映射表是指不同数据项之间的一一对应关系的表,预先设置的白名单包括用户别名和账户地址。
在进行前端上链时,由前端获取当前所需的账户信息以及成绩信息,作为智能合约方法所需的参数;然后进行身份验证,身份验证通过后,执行数据上链。
数据上链可以通过下述方式来实现:
将账户信息(包括用户的区块链地址)以及成绩信息作为智能合约方法的参数,调用智能合约中对应的成绩上链方法,生成一笔交易产生新的区块,并触发智能合约内成绩变更的事件。
具体实施时,由前端通过以太坊的提供的JSON-RPC接口实现对智能合约方法的调用。由前端调用metaMask插件进行交易签名并提交到链上,链上部署好的智能合约通过传入的参数以及msg.sender对应的DID(msg.sender是记录合约当前调用者的地址的)这个全局变量来判断当前试图修改学生成绩的账户是否是要修改的成绩对应的课程的任课教师。如果是那么智能合约会修改成绩为传入的值,如果不是,那么智能合约会拒绝执行。
前端上链时,是通过前端直接调用智能合约提供的方法,也就是步骤S3中设计的方法。区块链会记录下每一次修改链上数据的调用记录,这个记录中包括了合约的调用者。在前端上链这种模态下,合约调用者就是当前用户。所以可以查询到每一笔数据从被提交到链上到当前状态所经过的所有修改以及每一次的修改者。这解决了用户之间的信任问题(比如学生担心教师随意修改成绩的信任问题)。
在一种实施方式中,步骤S4中进行后端上链包括:
用户将生成的签名信息提交至后端,后端调用智能合约的签名信息验证方法,根据生成的签名信息解算出用户的区块链地址作为输入;
智能合约查询链上预先存储的两个映射表,一个为区块链地址与令牌ID之间的映射表,另一个为令牌ID与DID数据之间的映射表,提取出DID数据中的用户别名,其中,DID数据由用户向智能合约注册时,由智能合约生成,DID数据封装有用户的区块链地址、用户别名;
检查用户别名是否在预先设置的白名单中,如果在,则表明签名验证通过;
调用智能合约的成绩修改方法进行成绩上链。
具体来说,在后端上链时,当前用户将自己的签名信息打包发送到后端,由后端管理员提交数据到链上进行验签操作。此时,智能合约方法被触发,由交易数据中的用户签名信息解算出其账户地址,在链上自动验证该用户的身份。用户的签名无法被伪造,避免了有人假冒身份的信任问题,可信度大大提高了。用户身份信息存储、业务数据修改方法及修饰、定义的合约事件具体说明本实施例的合约设计。
在用户身份的存储管理上,每个用户将进行注册并提交其信息到智能合约中,由相应的智能合约方法生成用户的DID数据,它封装了该用户的区块链地址,链下编号,姓名,昵称,头像链接等基本数据,并将用户的DID数据作为NFT的属性存储到链上。具体为:
(1)编写一个遵循ERC721规范的非同质化代币(NFT)合约,实现所要求的方法,包括铸造(mint)方法,生成当前用户的tokenId;
(2)为上述用户tokenId创建映射表<tokenId, DID>,其中键是tokenId,值是DID;
(3)为上述用户创建双向映射表<Address, tokenId>,就可以由区块链账户查询到他的tokenId,反之亦可。
ERC721合约中本身存在NFT拥有者(Owner)的地址,此地址建立了与DID的联系,使得每个区块链上的账户都可以绑定一个数字身份DID。
相对于区块链上的账户地址,DID包含了更多信息,使用DID作为链上的身份标识对用户和第三方应用更加友好。
智能合约还需要存储的数据有学生的课程成绩,课程对应的任课教师的DID,还有合约部署人的账户地址,由于使用Solidity语言编写智能合约,所有课程成绩以嵌套的mapping映射的形式存储(相当于是一个课程成绩的二维表),把学生的DID和课程的id一起作为key,学生的课程成绩作为value;而任课教师以mapping映射的形式存储,课程的id作为key,教师的DID作为value,一个课程对应一个任课教师。
智能合约还需要设计的方法有修改成绩的方法以及修改任课教师的方法,修改成绩的方法设计为要求传入要修改的成绩对应的学生的DID,对应的课程id以及分数,在方法体内将存储课程成绩的嵌套的mapping映射中对应的成绩值赋为传入的成绩值。修改任课教师的方法与修改成绩的方法同理,要求传入的参数有课程id以及任课教师的DID,在方法体内将存储任课教师的mapping映射的对应的任课教师DID赋为传入的任课教师的DID。
智能合约还需要定义的事件有成绩修改和任课教师修改,其中在修改成绩时,将触发成绩修改事件,而任课教师被修改时,会触发任课教师修改事件。
智能合约方法的修饰,具体来说包括只允许合约部署人添加教师和只允许任课教师修改学生成绩。
相较于前端上链,Java后端上链在合约方法的设计上有所不同。在成绩后端上链的整体设计中,上链调用智能合约的过程统一由管理员提交,智能合约在验证身份时不能用全局变量msg.sender(msg.sender是记录合约当前调用者的地址,此时记录的是管理员账户地址),所以需要添加额外的用户签名信息验证的方法,来帮助进行用户身份验证;其他合约方法与前端上链几乎相同,只需在修改成绩时添加一个用户签名信息的参数,同时在修改成绩方法的方法体内,要求验证签名成功后再进行成绩修改。
智能合约需要定义的事件与前端上链相同,有成绩的修改和任课教师的修改。其中在修改成绩时,将触发成绩修改事件,而任课教师被修改时,会触发任课教师修改事件。
合约方法的修饰是对合约方法的修饰与前端上链相同,具体来说包括只允许合约部署人添加教师和只允许任课教师修改学生成绩。
具体实施时,由前端获取当前所需的账户信息以及成绩信息,也就是合约方法所需的参数,与前端上链相比,账户信息还包括了当前账户的签名信息。
利用智能合约进行签名验证。根据数据上链所使用的后端上链模式,将用户的签名消息解算出账户地址,用作输入,查询链上智能合约预存储的两个映射表<Address,tokenId>和<tokenId, DID>,然后提取出DID中的用户别名,并检查其是否在管理员设置的地址白名单中,如果结果不为空,则被视为合法用户,否则被视为不合法用户;
执行数据上链。将账户信息以及成绩信息作为智能合约方法的参数,调用智能合约中对应的成绩上链方法,生成一笔交易产生新的区块,并触发智能合约内成绩变更的事件;
具体实施时,与前端上链相比,前端不再直接调用合约方法,而是将上述签名等数据传递给Java后端,再由Java后端与智能合约交互。
请参见图7为本发明实施例中基于联盟链DID的多模态成绩上链系统的运行结果图。
在一种实施方式中,调用智能合约的成绩修改方法进行成绩上链,包括:
将用户的账户信息以及成绩信息作为智能合约方法的参数,调用智能合约中对应的成绩上链方法,生成一笔交易产生新的区块,并触发智能合约内成绩变更的事件,实现成绩上链。
具体实施时,采用Ethhash算法产生新区块,其过程如下:
S6-1:预生成新区块
S6-2:确认区块所在周期
S6-3:生成种子(Seed)哈希
S6-4:生成16MB伪随机缓存
S6-5:生成1GB数据集
S6-6:区块头编码(RLP)
S6-7:当前的随机数加1
S6-8:数据聚合计算
S6-9:更新区块头
S6-10:提交区块
成绩记录中心化DB存储的主流程如图6的(a)部分所示:
S7-1:创建MySql的连接;
S7-2:执行SQL语句,将数据回写到MySql数据库中。
所述的成绩记录去中心化链上存储的主流程如图6的(b)部分所示:
S7-1:向链上提交一笔特定的交易(由当前账户向合约账户转账的交易,且input字段为合约方法加上调用时传入的参数的abi编码),调用智能合约方法;
S7-2:区块链网络对交易进行处理,产生新的区块。
S7-3:执行对应的智能合约方法代码,完成数据上链。
实施例二
基于同样的发明构思,本实施例提供了基于联盟链DID的多模态成绩上链系统,请参见图8,该系统包括:
联盟链搭建模块201,用于搭建一个包含四个结点的联盟链,四个结点分别布置在校教学中心、教务科、学院教务办和教师端;
智能合约编写模块202,用于分析智能合约需求,编写智能合约,包括根据需要存储的数据设计智能合约存储数据的数据结构、实现智能合约方法以及定义智能合约中的事件;
智能合约部署模块203,用于将编写好的智能合约部署到搭建的联盟链上;
多模态成绩上链模块204,用于调用智能合约方法进行多模态成绩上链,其中,当进行前端上链时,利用智能合约对用户进行身份验证,当验证通过后执行成绩上链,前端上链是指用户通过前端与智能合约直接交互;当进行后端上链时,后端接收用户发送的签名信息,对签名信息进行验证,当验证通过后执行成绩上链,后端上链是指用户将生成的签名信息提交到后端,由后端与智能合约进行交互;
链上数据回写模块205,用于对联盟链上智能合约定义的事件进行监听,监测联盟链上的数据是否发生变化,如果发生变化,则将变化后的数据回写至关系数据库中。
请参见图7为本发明实施例中基于联盟链DID的多模态成绩上链系统的运行结果图。
由于本发明实施例二所介绍的系统为实施本发明实施例一中基于联盟链DID的多模态成绩上链方法所采用的系统,故而基于本发明实施例一所介绍的方法,本领域所属人员能够了解该系统的具体结构及变形,故而在此不再赘述。凡是本发明实施例一中方法所采用的系统都属于本发明所欲保护的范围。
实施例三
基于同一发明构思,请参见图9,本发明还提供了一种计算机可读存储介质300,其上存储有计算机程序311,该程序被执行时实现如实施例一中所述的方法。
由于本发明实施例三所介绍的计算机可读存储介质为实施本发明实施例一中基于联盟链DID的多模态成绩上链方法所采用的计算机可读存储介质,故而基于本发明实施例一所介绍的方法,本领域所属人员能够了解该计算机可读存储介质的具体结构及变形,故而在此不再赘述。凡是本发明实施例一的方法所采用的计算机可读存储介质都属于本发明所欲保护的范围。
实施例四
基于同一发明构思,请参见图10,本申请还提供了一种计算机设备,包括存储器401、处理器402及存储在存储器上并可在处理器上运行的计算机程序403,处理器执行上述程序时实现实施例一中的方法。
由于本发明实施例四所介绍的计算机设备为实施本发明实施例一中基于联盟链DID的多模态成绩上链方法所采用的计算机设备,故而基于本发明实施例一所介绍的方法,本领域所属人员能够了解该计算机设备的具体结构及变形,故而在此不再赘述。凡是本发明实施例一中方法所采用的计算机设备都属于本发明所欲保护的范围。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (8)
1.基于联盟链DID的多模态成绩上链方法,其特征在于,包括:
S1:搭建一个包含四个结点的联盟链,四个结点分别布置在校教学中心、教务科、学院教务办和教师端;
S2:分析智能合约需求,编写智能合约,包括根据需要存储的数据设计智能合约存储数据的数据结构、实现智能合约方法以及定义智能合约中的事件;
S3:将编写好的智能合约部署到搭建的联盟链上;
S4:调用智能合约方法进行多模态成绩上链,其中,当进行前端上链时,利用智能合约对用户进行身份验证,当验证通过后执行成绩上链,前端上链是指用户通过前端与智能合约直接交互;当进行后端上链时,后端接收用户发送的签名信息,对签名信息进行验证,当验证通过后执行成绩上链,后端上链是指用户将生成的签名信息提交到后端,由后端与智能合约进行交互;
S5:对联盟链上智能合约定义的事件进行监听,监测联盟链上的数据是否发生变化,如果发生变化,则将变化后的数据回写至关系数据库中;
其中,步骤S4中进行前端上链包括:
用户调用智能合约的身份验证方法,将当前用户的区块链地址作为输入;
智能合约查询链上预先存储的两个映射表,一个为区块链地址与令牌ID之间的映射表,另一个为令牌ID与DID数据之间的映射表,提取出DID数据中的用户别名,其中,DID数据由用户向智能合约注册时,由智能合约生成,DID数据封装有用户的区块链地址、用户别名;
检查用户别名是否在预先设置的白名单中,如果在,则表明身份验证通过;
调用智能合约的成绩修改方法进行成绩上链;
步骤S4中进行后端上链包括:
用户将生成的签名信息提交至后端,后端调用智能合约的签名信息验证方法,根据生成的签名信息解算出用户的区块链地址作为输入;
智能合约查询链上预先存储的两个映射表,一个为区块链地址与令牌ID之间的映射表,另一个为令牌ID与DID数据之间的映射表,提取出DID数据中的用户别名,其中,DID数据由用户向智能合约注册时,由智能合约生成,DID数据封装有用户的区块链地址、用户别名;
检查用户别名是否在预先设置的白名单中,如果在,则表明签名验证通过;
调用智能合约的成绩修改方法进行成绩上链。
2.如权利要求1所述的基于联盟链DID的多模态成绩上链方法,其特征在于,步骤S1包括:
S1.1:编写创世区块配置文件;
S1.2:编写四个结点的配置文件;
S1.3:启动四个结点。
3.如权利要求1所述的基于联盟链DID的多模态成绩上链方法,其特征在于,智能合约方法包括身份验证方法、签名信息验证方法、成绩修改方法、任课教师修改方法。
4.如权利要求1所述的基于联盟链DID的多模态成绩上链方法,其特征在于,在步骤S2之后,所述方法还包括:
对智能合约进行修饰。
5.如权利要求1所述的基于联盟链DID的多模态成绩上链方法,其特征在于,调用智能合约的成绩修改方法进行成绩上链,包括:
将用户的账户信息以及成绩信息作为智能合约方法的参数,调用智能合约中对应的成绩上链方法,生成一笔交易产生新的区块,并触发智能合约内成绩变更的事件,实现成绩上链。
6.基于联盟链DID的多模态成绩上链系统,其特征在于,包括:
联盟链搭建模块,用于搭建一个包含四个结点的联盟链,四个结点分别布置在校教学中心、教务科、学院教务办和教师端;
智能合约编写模块,用于分析智能合约需求,编写智能合约,包括根据需要存储的数据设计智能合约存储数据的数据结构、实现智能合约方法以及定义智能合约中的事件;
智能合约部署模块,用于将编写好的智能合约部署到搭建的联盟链上;
多模态成绩上链模块,用于调用智能合约方法进行多模态成绩上链,其中,当进行前端上链时,利用智能合约对用户进行身份验证,当验证通过后执行成绩上链,前端上链是指用户通过前端与智能合约直接交互;当进行后端上链时,后端接收用户发送的签名信息,对签名信息进行验证,当验证通过后执行成绩上链,后端上链是指用户将生成的签名信息提交到后端,由后端与智能合约进行交互;
链上数据回写模块,用于对联盟链上智能合约定义的事件进行监听,监测联盟链上的数据是否发生变化,如果发生变化,则将变化后的数据回写至关系数据库中;
其中,多模态成绩上链模块中的前端上链包括:
用户调用智能合约的身份验证方法,将当前用户的区块链地址作为输入;
智能合约查询链上预先存储的两个映射表,一个为区块链地址与令牌ID之间的映射表,另一个为令牌ID与DID数据之间的映射表,提取出DID数据中的用户别名,其中,DID数据由用户向智能合约注册时,由智能合约生成,DID数据封装有用户的区块链地址、用户别名;
检查用户别名是否在预先设置的白名单中,如果在,则表明身份验证通过;
调用智能合约的成绩修改方法进行成绩上链;
多模态成绩上链模块中的后端上链包括:
用户将生成的签名信息提交至后端,后端调用智能合约的签名信息验证方法,根据生成的签名信息解算出用户的区块链地址作为输入;
智能合约查询链上预先存储的两个映射表,一个为区块链地址与令牌ID之间的映射表,另一个为令牌ID与DID数据之间的映射表,提取出DID数据中的用户别名,其中,DID数据由用户向智能合约注册时,由智能合约生成,DID数据封装有用户的区块链地址、用户别名;
检查用户别名是否在预先设置的白名单中,如果在,则表明签名验证通过;
调用智能合约的成绩修改方法进行成绩上链。
7.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被执行时实现如权利要求1至5任一项权利要求所述的方法。
8.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至5任一项权利要求所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310031378.7A CN115757648B (zh) | 2023-01-10 | 2023-01-10 | 基于联盟链did的多模态成绩上链方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310031378.7A CN115757648B (zh) | 2023-01-10 | 2023-01-10 | 基于联盟链did的多模态成绩上链方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115757648A CN115757648A (zh) | 2023-03-07 |
CN115757648B true CN115757648B (zh) | 2023-03-31 |
Family
ID=85348864
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310031378.7A Active CN115757648B (zh) | 2023-01-10 | 2023-01-10 | 基于联盟链did的多模态成绩上链方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115757648B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109934005A (zh) * | 2019-03-15 | 2019-06-25 | 北京物资学院 | 一种基于区块链的学位认证系统及认证方法 |
CN111738893A (zh) * | 2020-07-17 | 2020-10-02 | 百度在线网络技术(北京)有限公司 | 一种基于区块链的身份认证方法、装置、设备和介质 |
CN112417037A (zh) * | 2020-11-05 | 2021-02-26 | 杭州云象网络技术有限公司 | 一种工业领域分布式身份认证的区块链构建方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108876401B (zh) * | 2018-05-29 | 2022-03-01 | 创新先进技术有限公司 | 基于区块链的商品理赔方法及装置、电子设备 |
CN111835500B (zh) * | 2020-07-08 | 2022-07-26 | 浙江工商大学 | 基于同态加密与区块链的可搜索加密数据安全共享方法 |
-
2023
- 2023-01-10 CN CN202310031378.7A patent/CN115757648B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109934005A (zh) * | 2019-03-15 | 2019-06-25 | 北京物资学院 | 一种基于区块链的学位认证系统及认证方法 |
CN111738893A (zh) * | 2020-07-17 | 2020-10-02 | 百度在线网络技术(北京)有限公司 | 一种基于区块链的身份认证方法、装置、设备和介质 |
CN112417037A (zh) * | 2020-11-05 | 2021-02-26 | 杭州云象网络技术有限公司 | 一种工业领域分布式身份认证的区块链构建方法 |
Non-Patent Citations (1)
Title |
---|
Manoj Taleka.A Blockchain Based Decentralized Identifiers for Entity Authentication in Electronic Health Records.Cogent Engineering.2022,第9卷(第1期),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN115757648A (zh) | 2023-03-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11469886B2 (en) | System or method to implement record level access on metadata driven blockchain using shared secrets and consensus on read | |
US20210243193A1 (en) | Systems, methods, and apparatuses for implementing consensus on read via a consensus on write smart contract trigger for a distributed ledger technology (dlt) platform | |
CN111461723B (zh) | 基于区块链的数据处理系统及方法、装置 | |
US10790971B1 (en) | Preventing misrepresentation of input data by participants in a secure multi-party computation | |
US20200252406A1 (en) | Systems, methods, and apparatuses for implementing a declarative and metadata driven blockchain platform using distributed ledger technology (dlt) | |
CN110800254B (zh) | 用于生成数字标记的系统和方法 | |
US20200250174A1 (en) | Systems, methods, and apparatuses for implementing efficient storage and validation of data and metadata within a blockchain using distributed ledger technology (dlt) | |
CN104025106B (zh) | 验证码提供方法 | |
CN109299058B (zh) | 学历存储方法、学历查询方法及计算机存储介质 | |
CN108960825A (zh) | 基于区块链的电子签名方法及装置、电子设备 | |
CN110959282B (zh) | 用于智能合约的软件接口 | |
CN110334175A (zh) | 医疗文档的零知识证明方法、系统及存储介质 | |
CN113966597B (zh) | 使用多个解析器解析分散标识符 | |
CN110851127A (zh) | 一种基于区块链的通用存证方法 | |
CN115114372A (zh) | 基于区块链的数据处理方法、装置、设备及可读存储介质 | |
CN117561508A (zh) | 可验证凭证的跨会话颁发 | |
CN110795432A (zh) | 一种特征数据的检索方法、装置及存储介质 | |
CN115757648B (zh) | 基于联盟链did的多模态成绩上链方法及系统 | |
CN111178896B (zh) | 乘车支付方法、装置及存储介质 | |
CN111062060B (zh) | 一种基于智能合约的投票提案生命周期管理方法 | |
LU101756B1 (en) | Verifiable credential with dynamic claim | |
CN111489211A (zh) | 一种开票处理方法、装置以及介质 | |
EP4394638A1 (en) | Artificial intelligence content generation control using nonfungible tokens | |
CN111985928B (zh) | 一种验证方法、装置、电子设备和存储介质 | |
WO2022271669A1 (en) | Systems and methods for transaction validation in layer 2 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
PE01 | Entry into force of the registration of the contract for pledge of patent right | ||
PE01 | Entry into force of the registration of the contract for pledge of patent right |
Denomination of invention: A multimodal performance uplink method and system based on alliance chain DID Effective date of registration: 20231026 Granted publication date: 20230331 Pledgee: Guanggu Branch of Wuhan Rural Commercial Bank Co.,Ltd. Pledgor: WUHAN TECHNOLOGY AND BUSINESS University Registration number: Y2023980062886 |