基于区块链的Web3接口调用方法、系统、装置以及存储介质与流程

allin2023-03-09  121


基于区块链的web3接口调用方法、系统、装置以及存储介质
技术领域
1.本技术涉及区块链技术领域,尤其涉及一种基于区块链的web3接口调用方法、系统、装置以及存储介质。


背景技术:

2.互联网应用是基于互联网承载的应用,一般分为服务端和客户端,分为c/s和b/s模式,c/s模式即client/server(客户端/服务器)模式,b/s模式即browser/server(浏览器/服务器)模式;互联网应用一般在服务器端开启超文本传输协议(英文全称:hyper text transfer protocol,英文缩写http)服务或web socket服务,即基于tcp(中文全称:传输控制协议,英文全称:transmission control protocol,英文缩写:tcp)的长连接服务,由客户端应用或浏览器端应用与服务器端通信,从而达成服务模式。
3.互联网应用经历了web1.0、web2.0、web3.0等3个时代,其中:
4.web1.0主要由中央服务器生产数据内容并供用户访问使用,不存在用户资产确权问题;
5.web2.0主要由用户生产数据并在服务端存储,用户所生产的数据并没有成为用户的数据资产;
6.web3.0同样由用户生产数据,并以去中心化身份(英文全称:decentralized identity,英文缩写:did)的私钥,由用户对数据进行签名,从而绑定数据与用户身份的关系,实现用户生成内容的资产确权,并通常以区块链方式存储数据。
7.互联网如今是一个web2.0应用为主流的时代,用户可以在游戏、社交、电商、教育等web2.0互联网应用系统中产生海量的用户行为数据、虚拟资产数据、交易数据、物品数据等,而这些数据都存储在中央服务器上,用户所生产的数据并没有成为用户的数据资产。web3.0的服务端通常是去中心化的,多以区块链原生应用或智能合约应用的方式存在,可以通过did身份将用户资产进行确权,从而将数据资产价值还原给用户。
8.而将目前主流的多类互联网web2.0应用升级为web3.0应用,将是一个复杂的系统工程;例如,目前区块链是一个多链并存的时代,包括以创新性推出智能合约和区块链2.0知名的ethereum,以速度快和低燃料费(gas fee)为特征的polygon,以速度快、历史证明(proof of history,poh)创新技术著称的solana,等;传统web2.0互联网应用要对接这些区块链并进行智能合约开发,将面临选择哪条链并将服务端程序改造成安全的去中心化智能合约程序的技术问题,并需要花费大量的研发成本和时间成本进行设计开发和测试部署上线。


技术实现要素:

9.为了解决上述技术问题,本技术提供了一种基于区块链的web3接口调用方法、系统、装置以及存储介质。
10.本技术第一方面提供了一种基于区块链的web3接口调用方法,所述方法包括:
11.接收对目标接口的调用请求;
12.并根据所述调用请求获取对应的输入参数,并将所述输入参数封装至所述目标接口中,生成接口参数,所述接口参数中包含有用于指定所需要访问的区块链的标识字段;
13.从所述目标接口中解析出所述接口参数;
14.对所述接口参数进行验证;
15.若验证通过,则根据所述接口参数中包含的标识字段对存储于相应区块链中的数据执行对应的数据访问。
16.可选的,所述对所述接口参数进行验证包括:
17.对所述接口参数进行时间戳验证。
18.可选的,所述对所述接口参数进行时间戳验证包括:
19.通过如下式子进行时间戳验证:
20.t1《tv-tu《t2;
21.若满足上述式子,则确定验证通过;
22.其中,tv为当前的时间,tu为所述调用请求的发送时间,t1以及t2为预设的时间窗口的上下阈值。
23.可选的,在所述生成接口参数之后,还包括:
24.对所述接口参数进行私钥签名。
25.可选的,所述对所述接口参数进行验证包括:
26.对所述接口参数进行签名验证。
27.可选的,所述对所述接口参数进行私钥签名包括:
28.对所述接口参数中的关键参数进行串接,并将串接后的参数进行哈希计算,得到第一哈希值;
29.根据用户的私钥对所述第一哈希值进行私钥签名;
30.所述对所述接口参数进行签名验证包括:
31.根据所述私钥签名得到的签名结果以及所述第一哈希值,恢复出用户的用户名,得到恢复用户名;
32.将所述恢复用户名与宣称的用户名进行比对;
33.若一致,则确定验证通过。
34.可选的,在所述根据所述调用请求执行对应的数据访问之前,还包括:
35.对所述调用请求进行权限令牌验证。
36.可选的,所述对所述调用请求进行权限令牌验证包括:
37.从所述接口参数中读取出对应的关键参数,所述接口参数中包含有第二哈希值;
38.将所述关键参数进行串接,并通过协定的哈希函数对串接后的参数进行哈希计算,得到第三哈希值;
39.将所述第二哈希值与所述第三哈希值进行比对;
40.若一致,则验证通过。
41.可选的,所述对存储于区块链中的数据执行对应的数据访问包括:
42.通过智能合约中间件对存储于区块链中的数据执行对应的数据访问。
43.可选的,在所述接收对目标接口的调用请求之前,所述方法还包括:
44.通过用户的去中心化身份did确认所述用户的身份。
45.本技术第二方面提供了一种基于区块链的web3接口调用系统,包括:
46.接口单元,用于接收对目标接口的调用请求;
47.所述接口单元还用于根据所述调用请求获取对应的输入参数,并将所述输入参数封装至所述目标接口中,生成接口参数,所述接口参数中包含有用于指定所需要访问的区块链的标识字段;
48.数据解析服务单元,用于从所述目标接口中解析出所述接口参数;
49.验证单元,用于对所述接口参数进行验证;
50.智能合约单元,用于当所述验证单元确定验证通过后,根据所述接口参数中包含的标识字段对存储于相应区块链中的数据执行对应的数据访问。
51.可选的,所述智能合约单元设置有智能合约中间件,所述智能合约单元通过所述智能合约中间件与区块链进行数据访问。
52.可选的,所述接口单元包括:
53.用户权限接口模块,用于执行用户的登录操作、权限令牌的管理和分享;
54.资产属性改变模块,用于创建数据资产、摧毁数据资产以及转移数据资产。
55.可选的,所述验证单元包括:
56.时间戳验证模块,用于对所述接口参数进行时间戳验证;
57.签名验证模块,用于对所述接口参数进行签名验证;
58.权限令牌验证模块,用于对用户的权限令牌进行验证。
59.本技术第三方面提供了一种基于区块链的web3接口调用装置,所述装置包括:
60.处理器、存储器、输入输出单元以及总线;
61.所述处理器与所述存储器、所述输入输出单元以及所述总线相连;
62.所述存储器保存有程序,所述处理器调用所述程序以执行第一方面以及第一方面中任一项可选的所述方法。
63.本技术第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质上保存有程序,所述程序在计算机上执行时执行第一方面以及第一方面中任一项可选的所述方法。
64.从以上技术方案可以看出,本技术具有以下优点:
65.本技术提供的方法中,在进行目标接口的调用过程中,将用户所指定的输入参数封装到目标接口中,再从目标接口中解析出接口参数,当对接口参数进行验证通过后,再根据调用请求对区块链存储中的数据执行相应的访问操作,从而确保应用的安全迁移和数据的安全存储。
66.并且互联网应用在进行数据接入时,本方法的接口参数中包含有用于指定所需要访问的区块链的标识字段,支持应用指定所需要访问的一条或者多条链,从而根据实际需求在多条区块链上选择一条或者多条链写入应用数据,从而给予应用多种选择,确保应用数据所需的存储安全性、tps、燃料费需求的最佳适配。(例如ethereum链的安全性最高、tps低于100、燃料费高;而solana链安全性中等、tps高达5万+、燃料费极低)。
附图说明
67.为了更清楚地说明本技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
68.图1为本技术中提供的基于区块链的web3接口调用系统的一个实施例结构示意图;
69.图2为本技术中提供的基于区块链的web3接口调用方法的一个实施例流程示意图;
70.图3为本技术中提供的基于区块链的web3接口调用方法的另一个实施例流程示意图;
71.图4为本技术中提供的基于区块链的web3接口调用方法的另一个实施例流程示意图;
72.图5为本技术中提供的基于区块链的web3接口调用装置的一个实施例结构示意图。
73.图6为本技术中提供的基于区块链的web3接口调用系统的一个实施例部署示意图。
具体实施方式
74.本发明构架了对接多条区块链的智能合约中间件,并为互联网应用提供统一的数据安全确权接口,支持将游戏、社交、电商、教育等多类web2.0互联网应用的数据快速、平滑、安全的迁移到区块链存储上,解决多类web2.0互联网应用跨多链快速迁移到web3.0应用的技术问题,其中,跨多链指互联网应用可以指定迁移到哪条链,从而给予应用多种选择,确保应用数据所需的存储安全性、tps(中文全称:每秒事务处理量,英文全称:transactionpersecond,英文缩写:tps)、燃料费需求的最佳适配;本发明可大幅度降低应用迁移的研发成本投入,提升开发效率,提升安全性。
75.本技术提供的方法应用于基于区块链的web3接口调用系统中,请参阅图1以及图6,图1为本技术中提供的基于区块链的web3接口调用系统的一个实施例结构示意图,图1和图6中,实线框表示属于本系统的部分,虚线框表示非本系统的部分。该系统包括:
76.接口单元101、数据解析服务单元102、验证单元103、智能合约单元104,智能合约单元104中设置有智能合约中间件1041,接口单元101是web3.0接口,接口单元101通过开放的http、json rpc、web socket等接口形态与上层多类互联网应用对接,将web2.0的游戏、社交、电商、教育等应用和数据平滑快速迁移到web3.0空间,快速升级为web3.0应用;接口单元101将应用数据经由对接多链的智能合约单元104,写入底层的多条区块链链存储,区块链例如可以包括ethereum、polygon、solana等。
77.请参阅图1以及图6,本技术提供的系统通过对接多条区块链的智能合约中间件,为互联网应用提供统一的数据安全确权接口,支持将游戏、社交、电商、教育等多类web2.0互联网应用的数据快速、平滑、安全的迁移为web3.0应用。
78.系统可以采用解耦设计,各模块可独立部署,并可以分布式多节点方式部署,使系统实现高性能、高可靠、易扩展。
79.系统由:接口单元、数据解析服务器、验证服务器以及智能合约单元组成;外部部分包括互联网应用和区块链存储;接口单元通过开放的http、json rpc、web socket等接口形态与上层多类互联网应用对接;接口单元将应用数据经由对接多链的智能合约单元,写入底层的多条区块链存储,每条区块链存储都承载在各条区块链的去中心化集群上。
80.接口单元由用户权限接口服务器、资产属性改变接口服务器、基于令牌读取接口服务器、开放读取接口服务器组成;其中:
81.用户权限接口服务器上部署用户权限接口单元的用户登录、令牌管理、令牌分享等模块,以接口方式提供用户登录、令牌管理、令牌分享服务。
82.资产属性改变接口服务器上部署资产属性改变接口单元的创建数据资产、摧毁数据资产、转移数据资产、铸造nft、摧毁nft、转移nft等模块,以接口方式提供相应服务。
83.基于令牌读取接口服务器上部署令牌读取接口单元的用户拥有的数据资产查询、用户拥有的nft查询、分享资产查询、分享nft查询等模块,以接口方式提供相应服务。
84.开放读取接口服务器上部署开放读取接口单元的数据资产的拥有用户查询、nft的拥有用户查询、交易数据查询等模块,以接口方式提供相应服务。
85.数据解析服务器上部署数据解析服务模块,负责接收接口单元传送过来的数据,进行数据解析,形成结构化数据。
86.验证服务器上部署时间戳验证、用户签名验证、用户令牌验证模块,分别提供时间戳验证、用户签名验证、用户令牌验证服务。
87.多类智能合约虚拟机上部署智能合约单元的多个智能合约中间件,负责接口调用在区块链存储的数据读写,方便应用开发者面向接口编程,即只需要关心其应用本身的业务逻辑,不需要关心底层的区块链技术细节。
88.基于此,请参阅图2,本技术提供了一种基于区块链的web3接口调用方法,该方法包括:
89.201、接收对目标接口的调用请求;
90.系统通过接口模块接收用户的调用请求,例如用户需要调用权限令牌管理或者分享接口、调用资产属性改变接口、调用基于权限令牌的读取接口、调用开放读取接口等,在实际中,用户可以通过did(中文全称:去中心化身份,英文全称:decentralized identity,英文缩写did)来登录系统,登录时可以通过用户的私钥签名,并获得相应的账户信息,例如用户可以通过第三方钱包插件,申请一个did账户,从而使用该账户登录系统。根据用户的令牌管理或令牌分享等操作,应用开发者开发的web3应用将相应调用生成/修改/删除令牌或令牌分享接口;例如,当用户在web3应用的界面上进行生成令牌操作时,将发起对令牌管理中生成令牌接口的调用。
91.202、根据调用请求获取对应的输入参数,并将输入参数封装至目标接口中,生成接口参数,接口参数中包含有用于指定所需要访问的区块链的标识字段;
92.根据调用请求获取对应的操作信息,当用户生成权限令牌时,需要指定权限令牌的相应权限信息。
93.在一种可选的实施例中,接口参数可以是json格式,其中还可以包含有用于指定所需要访问的单个或者多个区块链的标识字段。例如需要指定令牌要访问的数据资产(dataassethash),访问权限(auth)、令牌过期时间(expiration)等信息,由web3应用生成
json接口参数:{“username”:“user1”,“tokenid”:“123”,“token”:“tokenxxx”,“dataassethash”:“12fa

12aa”,“auth”:“rw”,“expiration”:1668848511,“destid”:3,“timestamp”:1637671437,“sig”:“de241

22”},表示用户user1将生成了一个tokenid为123,令牌名为tokenxxx的令牌,该令牌可以访问数据资产哈希值为“12fa

12aa”的数据资产,权限为可读写,令牌过期时间为1668848511(以unix时间戳表示,是格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数,1668848511表示2022年11月19日17时01分51秒),用户指定的上链目的地通过标识字段destid表示,destid为3表示将令牌信息上链到ethereum,当前时间戳timestamp=1637671437表示北京时间2021年11月23日的20时43分57秒,签名sig=“de241

22”是对前面所有字段串接的哈希值的签名。
94.该可选的实施例支持跨多链读写应用数据,适配应用的安全性/tps/燃料费需求,互联网应用在进行数据接入时,本系统提供的接口支持应用指定destid参数,从而根据实际需求在多个区块链上选择一条或者多条链写入应用数据,从而给予应用多种选择,确保应用数据所需的存储安全性、tps、燃料费需求的最佳适配。(例如ethereum链的安全性最高、tps低于100、燃料费高;而solana链安全性中等、tps高达5万+、燃料费极低)。
95.203、从目标接口中解析出接口参数;
96.204、对接口参数进行验证,若验证通过,则执行步骤205,若验证不通过,则执行步骤206;
97.通过数据解析服务单元102从目标接口中解析出接口参数,从而通过验证单元103对接口参数进行验证。其中对接口参数进行验证可以有多种方式进行验证,例如进行时间戳验证以及签名验证等,具体图3对应的实施例将进行详细阐述。通过对接口参数进行验证能够确保应用的安全迁移以及数据的安全存储。
98.205、根据接口参数中包含的标识字段对存储于相应区块链中的数据执行对应的数据访问。
99.如果对接口参数的验证通过,那么则允许用户对接口的调用,并根据实际调用请求对调用的接口执行相应的访问,例如如果调用的是令牌管理或者令牌分享接口,则将用户的令牌信息写入区块链中,具体可以是通过智能合约中间件将令牌信息写入区块链存储中。如果是调用资产属性改变接口,则通过智能合约中间件将资产属性信息写入区块链存储中,如果是调用基于令牌读取接口,则通过智能合约中间件从区块链存储中读取相应的信息。
100.206、结束流程。
101.如果对接口参数的验证不通过,则结束流程,还可以向用户返回相应的错误信息。
102.在实际应用中,对接口参数的验证可以有多种方式,例如可以通过多重安全机制确保应用的安全迁移和数据安全存储,在进行数据资产的接口访问时,通过时间戳验证抵御重放攻击,通过用户私钥签名验证为用户数据资产确权(即确定数据资产的用户所有权),具体将通过下述实施例进行详细阐述。
103.请参阅图3,该实施例包括:
104.301、接收对目标接口的调用请求;
105.302、根据调用请求获取对应的输入参数,并将输入参数封装至目标接口中,生成
接口参数,所述接口参数中包含有用于指定所需要访问的区块链的标识字段;
106.303、对接口参数进行私钥签名;
107.当涉及用户权限类以及资产属性改变类等接口调用时,可以对接口参数进行私钥签名,例如将接口参数中的关键参数进行串接,对串接后的关键参数进行哈希计算,得到第一哈希值,哈希算法可以采用keccak-256算法,再对第一哈希值进行私钥签名,私钥签名可以采用非对称加密算法,例如椭圆曲线签名算法(elliptic curve digital signature algorithm,ecdsa)的标准算法secp256k1,或rsa算法,以确保接口安全。例如:
108.创建数据资产时,输入参数包括(username,data,metadata,destid,timestamp,msgkeccak256,sig),其中username是用户名,data是用户发送的数据,metadata是数据的元数据,destid是用户指定的上链目的地id(例如:3表示ethereum,4表示polygon),timestamp是接口调用时的时间戳,msgkeccak256是以上输入参数通过keccak-256计算的结果,即:
109.msgkeccak256=keccak-256(username||data||metadata||destid||timestamp);
110.其中,sig是msgkeccak256的私钥签名结果,基于用户私钥,使用非对称加密算法进行:
111.sig=secp256k1(privatekey of username,msgkeccak256)。
112.从而在进行接口调用时,就可以进行时间戳验证以及签名验证,验证过程详见步骤305以及步骤306。
113.304、从目标接口中解析出接口参数;
114.305、对接口参数进行时间戳验证,若验证通过,则执行步骤306,若验证不通过,则执行步骤308。
115.通过时间戳验证模块对接口参数进行验证,具体可以通过设定一个合适的时间窗口,对接口调用的时间戳进行验证,防止接口的重放攻击;可根据接口调用发起方到接口服务方的网络延迟、容忍度等情况设置合适的时间窗口,例如设置时间窗口为(t1,t2),通过如下式子进行时间戳验证:
116.t1《tv-tu《t2;
117.其中,tv为当前的时间,tu为调用请求的发送时间,t1以及t2为预设的时间窗口的上下阈值。如果满足上述式子,说明调用请求的发送在该时间窗口内,验证通过,如果不满足上述式子,则验证不通过。例如:
118.将时间窗口设置为(0s,10s),即从接口的调用方发起调用请求到时间戳验证模块接收到调用请求的时间差必须小于10秒,任何位于时间窗口外的调用请求都会被拒绝,确保不被恶意用户用重复请求重放攻击。
119.306、对接口参数进行签名验证,若验证通过,则执行步骤307,若验证不通过,则执行步骤308。
120.当需要调用用户权限接口或者资产属性改变接口时,可以对接口参数进行签名验证,以步骤303中的输入参数以及签名方式为例,对接口参数进行验证的过程可以是:根据私钥签名得到的签名结果以及第一哈希值,恢复出用户的用户名,得到恢复用户名;将恢复用户名与宣称的用户名进行比对;若一致,则确定验证通过。例如:
121.进行签名验证时,可以通过从msgkeccak256以及sig中计算出恢复的用户的公钥,并从公钥推导出用户名,并比较所宣称的用户名username和恢复用户名recoveredusername是否相等,来判断宣称的用户是否等于签名用户,从而验证签名是否正确。相等则签名验证通过,不相等则签名验证不通过。
122.例如:
123.首先通过式子:recoveredpub,=sigtopub(msgkeccak256,sig)推导出进行签名时用户所使用的公钥;
124.再通过式子:recoveredusername=pubkeytoaddress(recoveredpub)恢复出该公钥所对应的用户名,即得到恢复用户名。
125.307、若验证通过,则根据接口参数中包含的标识字段对存储于相应区块链中的数据执行对应的数据访问。
126.308、返回相应的访问结果。
127.如果验证通过,则返回相应的访问结果,如果验证不通过,返回相应的错误信息。
128.该实施例中,多重安全机制确保应用的安全迁移和数据安全存储:在进行数据资产的接口访问时,通过时间戳验证抵御重放攻击;通过用户私钥签名验证为用户数据资产确权,通过用户令牌对数据资产进行访问控制;并且,为确保数据的高可用性,系统支持用户将数据资产跨多链进行存储,并支持在多链铸造nft,即通过标识字段destid指定所需要访问的一条或者多条链;支持用户进行数据压缩,并基于用户公钥进行加密,在接口参数的元数据字段(例如metadata字段)协定压缩或加密所使用的算法参数,以用于解压缩或解密。
129.进一步的,还可以通过用户所持有的权限令牌对数据资产进行安全访问控制,从而确保数据的高可用安全存储,例如当涉及基于令牌读取类接口调用时,就可以进行权限令牌验证。具体的方式将通过下述实施例进行阐述。
130.请参阅图4,该实施例包括:
131.401、接收对目标接口的调用请求;
132.402、根据调用请求获取对应的输入参数,并将输入参数封装至目标接口中,生成接口参数,所述接口参数中包含有用于指定所需要访问的区块链的标识字段;
133.403、从目标接口中解析出接口参数;
134.404、对接口参数进行验证,若验证通过,则执行步骤405;若验证不通过,则执行步骤407;
135.405、对调用请求进行权限令牌验证;若验证通过,则执行步骤406,若验证不通过,则执行步骤407;
136.当涉及基于令牌读取类接口调用时,就可以进行权限令牌验证,权限令牌验证的方式可以有多种,可以是用户侧在进行接口调用时,将其持有的权限令牌叠加接口参数中的关键参数,并进行哈希计算,得到第二哈希值,并随同接口参数一同发送至系统,从而由系统进行验证,系统在接收到接口参数后,从接口参数中读取出对应的关键参数,接口参数中包含有第二哈希值;将关键参数进行串接,并通过协定的哈希函数对串接后的参数进行哈希计算,得到第三哈希值;将第二哈希值与第三哈希值进行比对;若一致,则验证通过。通过该验证方式确保接口参数不被中间人篡改。
137.下面将进行举例说明:
138.例如输入的接口参数包括(username,usertoken,timestamp,msgkeccak256),其中username是用户名,usertoken是用户的权限令牌;
139.msgkeccak256-2=keccak-256(username||usertoken||timestamp);
140.系统从中读取出关键参数username、usertoken、timestamp并进行串接,再使用协定的keccak-256函数对串接后的关键参数进行哈希计算,得到第三哈希值msgkeccak256-3=keccak-256(username||usertoken||timestamp),
141.再比对第二哈希值msgkeccak256-2和第三哈希值msgkeccak256-3,如果相一致,则说明接口参数与发送的一致,如果不一致,则说明接口参数在发送过程中可能已经被篡改。
142.406、根据接口参数中包含的标识字段对存储于相应区块链中的数据执行对应的数据访问。
143.407、返回相应的访问结果。
144.如果验证通过,则返回相应的访问结果,如果验证不通过,返回相应的错误信息。
145.上述实施例对本技术中提供的方法进行了详细阐述,下面将对本技术中提供的系统、装置以及存储介质进行阐述。
146.请参阅图1,该实施例提供的系统包括:
147.接口单元101,用于接收对目标接口的调用请求;
148.接口单元101还用于根据调用请求获取对应的输入参数,并将输入参数封装至目标接口中,生成接口参数,所述接口参数中包含有用于指定所需要访问的区块链的标识字段;
149.数据解析服务单元102,用于从目标接口中解析出接口参数;
150.验证单元103,用于对接口参数进行验证;
151.智能合约单元104,用于当验证单元确定验证通过后,根据接口参数中包含的标识字段对存储于相应区块链中的数据执行对应的数据访问。
152.可选的,智能合约单元设置有智能合约中间件1041,智能合约单元通过智能合约中间件1041与区块链进行数据访问;
153.可选的,接口单元101包括:
154.用户权限接口模块1011,用于执行用户的登录操作、权限令牌的管理和分享;
155.资产属性改变模块1012,用于数据资产和nft的创建、摧毁和转移;
156.基于令牌读取接口模块1013,用于对用户所拥有的数据资产/nft进行查询以及其它用户分享的数据资产/nft查询。
157.开放读取接口单元1014,用于对数据资产的拥有用户进行查询,对nft的拥有用户进行查询,对交易数据进行查询等。
158.可选的,验证单元103包括:
159.时间戳验证模块1031,用于对接口参数进行时间戳验证;
160.签名验证模块1032,用于对接口参数进行签名验证;
161.权限令牌验证模块1033,用于对用户的权限令牌进行验证。
162.可选的,时间戳验证模块1031具体用于:
163.通过如下式子进行时间戳验证:
164.t1《tv-tu《t2;
165.若满足上述式子,则确定验证通过;
166.其中,tv为当前的时间,tu为调用请求的发送时间,t1以及t2为预设的时间窗口的上下阈值。
167.可选的,在生成接口参数之后,用户侧可以对接口参数进行签名,具体的签名过程可以是:对接口参数中的关键参数进行串接,并将串接后的参数进行哈希计算,得到第一哈希值;根据用户的私钥对第一哈希值进行私钥签名;
168.进一步的,在服务侧,通过签名验证模块1032对接口参数进行签名验证,对接口参数进行签名验证的过程可以是:
169.根据私钥签名得到的签名结果以及第一哈希值,恢复出用户的用户名,得到恢复用户名;
170.将恢复用户名与宣称的用户名进行比对;
171.若一致,则确定验证通过。
172.可选的,权限令牌验证模块1033具体用于:
173.从接口参数中读取出对应的关键参数,接口参数中包含有第二哈希值;
174.将关键参数进行串接,并通过协定的哈希函数对串接后的参数进行哈希计算,得到第三哈希值;
175.将第二哈希值与第三哈希值进行比对;若一致,则验证通过。
176.请参阅图5,本技术还提供了基于区块链的web3接口调用装置,包括:
177.处理器501、存储器502、输入输出单元503、总线504;
178.处理器501与存储器502、输入输出单元503以及总线504相连;
179.存储器502保存有程序,处理器501调用程序以执行如上任一基于区块链的web3接口调用方法。
180.本技术还涉及一种计算机可读存储介质,计算机可读存储介质上保存有程序,其特征在于,当程序在计算机上运行时,使得计算机执行如上任一基于区块链的web3接口调用方法。
181.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
182.在本技术所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
183.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
184.另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
185.所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。

技术特征:
1.一种基于区块链的web3接口调用方法,其特征在于,所述方法包括:接收对目标接口的调用请求;根据所述调用请求获取对应的输入参数,并将所述输入参数封装至所述目标接口中,生成接口参数,所述接口参数中包含有用于指定所需要访问的区块链的标识字段;从所述目标接口中解析出所述接口参数;对所述接口参数进行验证;若验证通过,则根据所述接口参数中包含的标识字段对存储于相应区块链中的数据执行对应的数据访问。2.根据权利要求1中所述的基于区块链的web3接口调用方法,其特征在于,所述对所述接口参数进行验证包括:对所述接口参数进行时间戳验证。3.根据权利要求2中所述的基于区块链的web3接口调用方法,其特征在于,所述对所述接口参数进行时间戳验证包括:通过如下式子进行时间戳验证:t1<tv-tu<t2;若满足上述式子,则确定验证通过;其中,tv为当前的时间,tu为所述调用请求的发送时间,t1以及t2为预设的时间窗口的上下阈值。4.根据权利要求1中所述的基于区块链的web3接口调用方法,其特征在于,在所述生成接口参数之后,还包括:对所述接口参数进行私钥签名。5.根据权利要求4中所述的基于区块链的web3接口调用方法,其特征在于,所述对所述接口参数进行验证包括:对所述接口参数进行签名验证。6.根据权利要求5中所述的基于区块链的web3接口调用方法,其特征在于,所述对所述接口参数进行私钥签名包括:对所述接口参数中的关键参数进行串接,并将串接后的参数进行哈希计算,得到第一哈希值;根据用户的私钥对所述第一哈希值进行私钥签名;所述对所述接口参数进行签名验证包括:根据所述私钥签名得到的签名结果以及所述第一哈希值,恢复出用户的用户名,得到恢复用户名;将所述恢复用户名与宣称的用户名进行比对;若一致,则确定验证通过。7.根据权利要求1中所述的基于区块链的web3接口调用方法,其特征在于,在所述根据所述调用请求执行对应的数据访问之前,还包括:对所述调用请求进行权限令牌验证。8.根据权利要求7中所述的基于区块链的web3接口调用方法,其特征在于,所述对所述调用请求进行权限令牌验证包括:
从所述接口参数中读取出对应的关键参数,所述接口参数中包含有第二哈希值;将所述关键参数进行串接,并通过协定的哈希函数对串接后的参数进行哈希计算,得到第三哈希值;将所述第二哈希值与所述第三哈希值进行比对;若一致,则验证通过。9.根据权利要求1至8中任一项所述的基于区块链的web3接口调用方法,其特征在于,所述对存储于区块链中的数据执行对应的数据访问包括:通过智能合约中间件对存储于区块链中的数据执行对应的数据访问。10.根据权利要求1至8中任一项所述的基于区块链的web3接口调用方法,其特征在于,在所述接收对目标接口的调用请求之前,所述方法还包括:通过用户的去中心化身份did确认所述用户的身份。11.根据权利要求1至8中任一项所述的基于区块链的web3接口调用方法,其特征在于,所述接口参数为json格式,所述接口参数中包含有用于指定所需要访问的区块链的标识字段。12.一种基于区块链的web3接口调用系统,其特征在于,包括:接口单元,用于接收对目标接口的调用请求;所述接口单元还用于根据所述调用请求获取对应的输入参数,并将所述输入参数封装至所述目标接口中,生成接口参数,所述接口参数中包含有用于指定所需要访问的区块链的标识字段;数据解析服务单元,用于从所述目标接口中解析出所述接口参数;验证单元,用于对所述接口参数进行验证;智能合约单元,用于当所述验证单元确定验证通过后,根据所述接口参数中包含的标识字段对存储于相应区块链中的数据执行对应的数据访问。13.根据权利要求11中所述的基于区块链的web3接口调用系统,其特征在于,所述智能合约单元设置有智能合约中间件,所述智能合约单元通过所述智能合约中间件与区块链进行数据访问。14.根据权利要求11中所述的基于区块链的web3接口调用系统,其特征在于,所述接口单元包括:用户权限接口模块,用于执行用户的登录操作、权限令牌的管理和分享;资产属性改变模块,用于创建数据资产、摧毁数据资产以及转移数据资产。15.根据权利要求11中所述的基于区块链的web3接口调用系统,其特征在于,所述验证单元包括:时间戳验证模块,用于对所述接口参数进行时间戳验证;签名验证模块,用于对所述接口参数进行签名验证;权限令牌验证模块,用于对用户的权限令牌进行验证。16.一种基于区块链的web3接口调用装置,其特征在于,所述装置包括:处理器、存储器、输入输出单元以及总线;所述处理器与所述存储器、所述输入输出单元以及所述总线相连;所述存储器保存有程序,所述处理器调用所述程序以执行如权利要求1至11任一项所
述方法。17.一种计算机可读存储介质,所述计算机可读存储介质上保存有程序,所述程序在计算机上执行时执行如权利要求1至11中任一项所述方法。

技术总结
本申请公开了一种基于区块链的Web3接口调用方法、系统、装置以及存储介质,用于应用迁移的安全性和数据存储的安全性。本申请方法包括:接收对目标接口的调用请求;根据所述调用请求获取对应的输入参数,并将所述输入参数封装至所述目标接口中,生成接口参数,所述接口参数中包含有用于指定所需要访问的区块链的标识字段;从所述目标接口中解析出所述接口参数;对所述接口参数进行验证;若验证通过,则根据所述接口参数中包含的标识字段对存储于相应区块链中的数据执行对应的数据访问。应区块链中的数据执行对应的数据访问。应区块链中的数据执行对应的数据访问。


技术研发人员:刘祥涛
受保护的技术使用者:深圳番多拉信息科技有限公司
技术研发日:2022.02.16
技术公布日:2022/7/5
转载请注明原文地址: https://www.8miu.com/read-5746.html

最新回复(0)