CN117034369B - 地址数据处理方法、装置、设备以及介质 - Google Patents
地址数据处理方法、装置、设备以及介质 Download PDFInfo
- Publication number
- CN117034369B CN117034369B CN202311298519.8A CN202311298519A CN117034369B CN 117034369 B CN117034369 B CN 117034369B CN 202311298519 A CN202311298519 A CN 202311298519A CN 117034369 B CN117034369 B CN 117034369B
- Authority
- CN
- China
- Prior art keywords
- address
- character
- service
- blockchain
- transaction
- 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
- 238000003672 processing method Methods 0.000 title abstract description 14
- 238000000034 method Methods 0.000 claims abstract description 137
- 238000012795 verification Methods 0.000 claims abstract description 104
- 238000012545 processing Methods 0.000 claims abstract description 67
- 238000006243 chemical reaction Methods 0.000 claims abstract description 59
- 238000012546 transfer Methods 0.000 claims description 117
- 238000011161 development Methods 0.000 claims description 102
- 230000003993 interaction Effects 0.000 claims description 101
- 230000002452 interceptive effect Effects 0.000 claims description 27
- 238000004590 computer program Methods 0.000 claims description 17
- 230000000977 initiatory effect Effects 0.000 claims description 15
- 238000010276 construction Methods 0.000 claims description 13
- 238000013475 authorization Methods 0.000 claims description 8
- 238000004806 packaging method and process Methods 0.000 claims description 6
- 230000001960 triggered effect Effects 0.000 claims description 5
- 230000005540 biological transmission Effects 0.000 claims description 4
- 230000008520 organization Effects 0.000 claims 1
- 230000008569 process Effects 0.000 description 66
- 230000008859 change Effects 0.000 description 29
- 238000010586 diagram Methods 0.000 description 14
- 238000004422 calculation algorithm Methods 0.000 description 12
- 238000004891 communication Methods 0.000 description 9
- 238000013515 script Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 5
- 230000009286 beneficial effect Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 230000000007 visual effect Effects 0.000 description 3
- 238000012790 confirmation Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002441 reversible effect Effects 0.000 description 2
- 230000004069 differentiation Effects 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 230000002427 irreversible effect Effects 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
-
- 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
Abstract
本申请提供了一种地址数据处理方法、装置、设备以及介质,方法包括:对与交易业务相关联的初始业务地址进行第一地址编码处理,得到第一地址编码字符串;对第一地址编码字符串进行哈希转换处理,得到哈希转换地址,对哈希转换地址进行第二地址编码处理,得到第二地址编码字符串;在第二地址编码字符串中,将字符位置i上的第二字符作为参考字符,将参考字符的字符值与字符阈值进行对比;若参考字符的字符值不小于字符阈值,则在第一地址编码字符串中将字符位置i上的第一字符的字符属性由第一字符属性变更为第二字符属性之后,构建得到用于对初始业务地址进行地址校验的目标业务地址。本申请可以确保与交易业务相关联的地址的有效性和差异性。
Description
技术领域
本申请涉及区块链技术领域,尤其涉及一种地址数据处理方法、装置、设备以及介质。
背景技术
目前,在多区块链业务场景下,对于任意两个区块链网络中的大量区块链地址而言,容易存在一个区块链网络中的区块链地址(例如,用户U1在一个区块链上的地址D1)的与另一个区块链网络的区块链地址(例如,用户U2在另一个区块链上的地址D2)相似甚至相同的现象,以至于会将该地址D1的地址格式与地址D2的地址格式进行格式混淆。
基于此,发明人在实践中发现,当某个业务对象(例如,用户A)需要将某个数据(即业务数据)发送给这两个区块链网络中的某个区块链网络地址(例如,地址D1)时,若直接通过该区块链网络地址(例如,地址D1)来构建得到某笔交易,那么,在这笔交易的执行过程中,由于上述地址D1的地址格式与地址D2的地址格式容易存在地址格式混淆的问题,以至于可能会出现原本需要发送给地址D1的该资源转移交易的业务数据误发送给地址D2的现象。基于此,如何提升交易过程中的区块链地址的安全性和可靠性,是亟待解决的技术问题。
发明内容
本申请实施例提供一种地址数据处理方法、装置、设备以及介质,可以确保区块链地址的地址安全性和可靠性,进而提升交易业务的安全性。
本申请实施例一方面提供了一种地址数据处理方法,包括:
在获取到与交易业务相关联的字节数量为M的初始业务地址时,获取与交易业务相关联的区块链地址生成策略,基于区块链地址生成策略对初始业务地址进行第一地址编码处理,得到字符数量为N的第一地址编码字符串;第一地址编码字符串中的第一字符的字符属性为第一字符属性;M为大于1的正整数,N为M的整数倍;
对第一地址编码字符串进行哈希转换处理,得到字节数量为M的哈希转换地址,对哈希转换地址进行第二地址编码处理,得到字符数量为N的第二地址编码字符串;第二地址编码字符串中的第二字符的字符属性为第一字符属性;
在第二地址编码字符串中将字符位置i上的第二字符作为参考字符,将参考字符的字符值与第二地址编码字符串所关联的字符阈值进行对比,得到字符值比对结果;i为小于或者等于N的正整数;
若字符值比对结果指示参考字符的字符值大于或者等于字符阈值,则在第一地址编码字符串内的字符位置i上的字符为第一字符时,将字符位置i上的第一字符的字符属性由第一字符属性变更为第二字符属性;
基于字符位置i上的字符属性为第二字符属性的第一字符,构建得到用于对初始业务地址进行地址校验的目标业务地址。
本申请实施例一方面提供了一种地址数据处理装置,包括:
第一地址编码模块,用于在获取到与交易业务相关联的字节数量为M的初始业务地址时,获取与交易业务相关联的区块链地址生成策略,基于区块链地址生成策略对初始业务地址进行第一地址编码处理,得到字符数量为N的第一地址编码字符串;第一地址编码字符串中的第一字符的字符属性为第一字符属性;M为大于1的正整数,N为M的整数倍;
第二地址编码模块,用于对第一地址编码字符串进行哈希转换处理,得到字节数量为M的哈希转换地址,对哈希转换地址进行第二地址编码处理,得到字符数量为N的第二地址编码字符串;第二地址编码字符串中的第二字符的字符属性为第一字符属性;
参考字符确定模块,用于在第二地址编码字符串中将字符位置i上的第二字符作为参考字符,将参考字符的字符值与第二地址编码字符串所关联的字符阈值进行对比,得到字符值比对结果;i为小于或者等于N的正整数;
字符属性变更模块,用于若字符值比对结果指示参考字符的字符值大于或者等于字符阈值,则在第一地址编码字符串内的字符位置i上的字符为第一字符时,将字符位置i上的第一字符的字符属性由第一字符属性变更为第二字符属性;
目标地址构建模块,用于基于字符位置i上的字符属性为第二字符属性的第一字符,构建得到用于对初始业务地址进行地址校验的目标业务地址。
其中,第二地址编码模块,包括:
哈希编码单元,用于基于区块链地址生成策略确定与第一地址编码字符串相关联的哈希编码方法,基于哈希编码方法对第一地址编码字符串进行哈希编码处理,得到字节数量为K的哈希编码地址;K为大于M的正整数;
哈希地址确定单元,用于从字节数量为K的哈希编码地址中获取字节数量为M的哈希编码地址,将获取到的字节数量为M的哈希编码地址作为哈希转换地址;
字符属性编码单元,用于在对哈希转换地址进行第二地址编码处理时,将哈希转换地址中的每个字节位置上的字节序列作为待编码字节序列,将待编码字节序列中的每个第一字符的字符属性均编码为第一字符属性,将字符属性均编码为第一字符属性的每个第一字符所在的待编码字节序列,确定为已编码字节序列;
序列拼接单元,用于基于哈希转换地址中的每个字节位置,遍历对已编码字节序列进行序列拼接,得到拼接地址序列,将拼接地址序列中的序列字符串作为字符数量为N的第二地址编码字符串;第二地址编码字符串为不同于第一地址编码字符串的字符串。
其中,装置还包括:
字符属性维持模块,用于若字符值比对结果指示参考字符的字符值小于字符阈值,则在第一地址编码字符串中,将字符位置i上的第一字符的字符属性维持为第一字符属性。
其中,装置运行在业务终端上,业务终端上所部署的客户端包括第一业务对象所对应的第一资源管理客户端;
装置还包括:
账户地址接收模块,用于接收第二业务对象通过第二资源管理客户端发送的区块链账户地址,基于区块链账户地址确定字节数量为M的初始业务地址。
其中,账户地址接收模块,包括:
账户地址接收单元,用于接收第二业务对象通过第二资源管理客户端发送的区块链账户地址;区块链账户地址中的字符串的字节数量为M;区块链账户地址为第二业务对象在第一区块链上的链上账户地址;
接收地址确定单元,用于将字节数量为M的区块链账户地址,作为待录入至第一资源管理客户端的业务界面上的资源接收地址;
业务地址确定单元,用于在将资源接收地址录入至业务界面时,将资源接收地址确定为获取到字节数量为M的初始业务地址。
其中,装置还包括:
地址校验模块,用于通过目标业务地址对初始业务地址进行地址校验,在地址校验成功时,将初始业务地址确定为合法区块链地址;
业务交易构建模块,用于基于合法区块链地址构建得到与交易业务相匹配的目标业务交易。
其中,初始业务地址为第一业务对象通过第一资源管理客户端录入至业务界面上的资源接收地址;资源接收地址为第一资源管理客户端所获取到的由第二业务对象通过第二资源管理客户端发送的区块链账户地址;区块链账户地址为第二业务对象在第一区块链上的链上账户地址;
地址校验模块,包括:
目标格式确定单元,用于在目标业务地址中的地址字符的字符属性包括第一字符属性和第二字符属性时,将目标业务地址对应的地址格式作为目标地址格式;
校验条件获取单元,用于获取与目标业务地址相关联的地址校验条件,基于地址校验条件识别初始业务地址的地址格式;
地址校验单元,用于在识别到初始业务地址的地址格式为目标地址格式时,基于目标业务地址中的地址字符和初始业务地址中的地址字符,对初始业务地址进行地址校验,得到地址校验结果;
地址确定单元,用于若地址校验结果指示目标业务地址中的地址字符与初始业务地址中的地址字符均相同,则确定目标业务地址与初始业务地址为相同地址,将录入至业务界面的初始业务地址,确定为满足地址校验条件的合法区块链地址。
其中,地址校验模块还包括:
合法地址显示单元,用于在将录入至业务界面的初始业务地址,确定为满足地址校验条件的合法区块链地址时,在业务界面上显示合法区块链地址。
其中,地址确定单元,还用于若地址校验结果指示目标业务地址中的地址字符与初始业务地址中的地址字符存在不同,则确定目标业务地址与初始业务地址为不同地址,确定录入至业务界面的初始业务地址不满足地址校验条件;
地址确定单元,还用于将不满足地址校验条件的初始业务地址确定为非法区块链地址,在业务界面上显示针对非法区块链地址的风险管理页面;风险管理页面用于指示第一业务对象对非法区块链地址进行风险管理;风险管理包括删除显示在业务界面上的非法区块链地址,以及向第二业务对象返回针对非法区块链地址的通知消息中的一种或者多种。
其中,交易业务包括用于在第一区块链和第二区块链之间对虚拟资源进行资源转移的转账交易业务;
业务交易构建模块,包括:
目标地址确定单元,用于在第一资源管理客户端的业务界面上,创建与转账交易业务相关联的第一业务交易,将合法区块链地址作为第一业务交易的交易参数中的目的交易地址;合法区块链地址为第二业务对象在第一区块链上的链上账户地址;
发起地址确定单元,用于获取第一资源管理客户端所对应的第一业务对象在第二区块链上的对象账户地址,将对象账户地址作为第一业务交易的交易参数中的发起交易地址;
转移量确定单元,用于获取待由第一业务对象转移给第二业务对象的虚拟资源,将虚拟资源的资源额度作为第一业务交易的交易参数中的资源转移量;
业务交易确定单元,用于将交易参数包括目的交易地址、发起交易地址以及资源转移量的第一业务交易,作为与转账交易业务相匹配的目标业务交易。
其中,在第二区块链所对应的区块链网络与第一区块链所对应的区块链网络为同一区块链网络时;
装置还包括:
交易发送模块,用于将目标业务交易发送给第一区块链上的区块链节点设备,以使区块链节点设备在将目标业务交易打包至第一区块时,将包含目标业务交易的第一区块上链至第一区块链。
其中,装置运行在业务终端上,在交易业务为合约开发业务时,业务终端上部署的客户端包括合约开发业务所对应的合约开发客户端;业务终端所对应的第一业务对象为合约发开对象;
装置还包括;
开发界面输出模块,用于在合约开发客户端上输出与合约开发业务相关联的合约开发界面时,响应于合约开发对象针对合约开发界面触发的合约开发操作,从业务终端相关联的区块链节点设备上获取用于开发业务合约的合约模板,在合约开发界面上显示合约模板中的合约字段;业务合约为合约开发业务所关联的转账交易业务对应的资源转移合约;
地址字段确定模块,用于在合约字段中查找与地址类型字段相匹配的合约字段,将查找到的合约字段作为与转账交易业务相关联的地址字段;
业务地址配置模块,用于将合约开发对象为地址字段所配置的字节数量为M的业务配置地址,作为初始业务地址;业务配置地址包括合约调用地址和合约授权调用者的链上账户地址;合约调用地址为合约授权调用者请求执行转账交易业务时所需要调用的资源转移合约的地址;合约授权调用者为具备调用资源转移合约权限的业务对象。
其中,装置还包括:
编译提示模块,用于在基于目标业务地址确定初始业务地址为非法区块链地址时,在合约开发界面上显示资源转移合约对应的编译失败提示信息。
其中,装置运行在业务终端上;业务终端上运行有第一业务对象对应的第一数据交互客户端;交易业务包括数据交互业务;
装置还包括:
公钥列表获取模块,用于在第一业务对象与第二业务对象之间存在数据交互关系时,获取与第二业务对象相关联的公钥列表,将从公钥列表中所获取到的第二业务对象的公钥信息作为待比对公钥信息;
可信证书获取模块,用于从与第一数据交互客户端相关联的可信机构中,获取与第二业务对象相关联的可信证书,将从可信证书中所获取到的第二业务对象的公钥信息作为可信公钥信息;
公钥合法模块,用于在待比对公钥信息与可信公钥信息保持一致时,确定公钥列表中所存储的第二业务对象的公钥信息为合法公钥信息;
数据加密模块,用于在获取到第一业务对象用于向第二业务对象发送的数据交互信息时,通过合法公钥信息对数据交互信息进行数据加密处理,得到与数据交互业务相关联的数据加密信息;
账户地址确定模块,用于基于合法公钥信息,确定第二业务对象在区块链上的区块链账户地址,在区块链账户地址的字节数量为M时,将区块链账户地址作为与交易业务中的数据交互业务相关联的初始业务地址。
可选地,其中,装置还包括:
交互交易确定模块,用于在基于目标业务地址确定初始业务地址为合法区块链地址时,将数据加密信息和区块链账户地址添加至用于向区块链上的区块链节点设备发送的数据交互交易;
交互交易确定模块,还用于将数据交互交易发送给区块链节点设备,以使区块链节点设备在获取到第二业务对象发送的交互信息查询请求时,基于交互信息查询请求中所携带的交易信息查询地址,在区块链上查询与交易信息查询地址相匹配的链上账户地址,且在查询到链上账户地址为区块链账户地址时,将数据交互交易中所携带的数据加密信息返回给第二业务对象对应的第二数据交互客户端;第二数据交互客户端用于通过第二业务对象的私钥,对数据加密信息进行解密处理,以解密得到数据交互信息;交互信息查询请求为第二数据交互客户端在确定由第二业务对象所录入的交易信息查询地址为合法查询地址后所发送的。
本申请实施例一方面提供了一种计算机设备,包括存储器和处理器,存储器与处理器相连,存储器用于存储计算机程序,处理器用于调用计算机程序,以使得该计算机设备执行本申请实施例中上述一方面提供的方法。
本申请实施例一方面提供了一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,计算机程序适于由处理器加载并执行,以使得具有处理器的计算机设备执行本申请实施例中上述一方面提供的方法。
根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述一方面提供的方法。
本申请实施例可以在获取到与交易业务相关联的字节数量为M的初始业务地址(例如,地址A11)时,获取与交易业务相关联的区块链地址生成策略,并可以基于区块链地址生成策略对初始业务地址(例如,地址A11)进行第一地址编码处理,得到字符数量为N的第一地址编码字符串(例如,字符串A1);应当理解,该第一地址编码字符串中的第一字符的字符属性均为第一字符属性;M为大于1的正整数,N为M的整数倍;这意味着计算机设备在获取到地址A11时,会将该地址A11所对应的地址字符串中的所有字符(例如,所有字符中的每个第一字符)的字符属性均编码为第一字符属性,从而可以将字符属性均为第一字符属性的地址字符串作为第一地址字符串(例如,字符串A1)。进一步的,计算机设备可以对第一地址编码字符串(例如,字符串A1)进行哈希转换处理,从而可以进一步得到字节数量为M的哈希转换地址(例如,地址A12),进而可以对哈希转换地址(例如,地址A12)进行第二地址编码处理,以得到字符数量为N的第二地址编码字符串;应当理解,该第二地址编码字符串中的第二字符的字符属性均为第一字符属性;这意味着计算机设备在获取到哈希转换地址(例如,地址A12)时,会将该地址A12所对应的另一地址字符串中的所有字符(例如,所有字符中的每个第二字符)的字符属性也全部编码为第一字符属性,从而可以将字符属性均为第一字符属性的地址字符串作为第二地址字符串(例如,字符串A2)。进一步的,计算机设备可以在第二地址编码字符串中将字符位置i上的第二字符作为参考字符,并可以将参考字符的字符值与第二地址编码字符串所关联的字符阈值进行对比,得到字符值比对结果;i为小于或者等于N的正整数;进一步的,若字符值比对结果指示参考字符的字符值大于或者等于字符阈值,则计算机设备可以在第一地址编码字符串内的字符位置i上的字符为第一字符时,将字符位置i上的第一字符的字符属性由第一字符属性变更为第二字符属性,从而可以基于字符位置i上的字符属性为第二字符属性的第一字符,从而可以构建得到用于对初始业务地址(例如,上述地址A11)进行地址校验的目标业务地址(例如,地址A22)。由此可见,本申请实施例可以在获取到任意一个区块链地址(即初始业务地址,例如,上述地址A11)时,按照区块链地址生成策略进行两次地址编码,从而可以确保两次地址编码所得到的字节数量保持一致的两个地址编码字符串(即第一地址编码字符串可以与第二地址编码字符串)之间存在较大的字符差异性,这样,在通过判定出第二地址编码字符串中的某个字符位置(即字符位置i)上的字符(即第二字符)的字符值大于字符阈值时,可以反向对该第一地址编码字符串中的相同字符位置(即字符位置i)上的字符(即第一字符)字符属性进行变更(比如,可以将相同字符位置上的第一字符的字符属性由第一字符属性变更为第二字符属性),进而可以基于字符属性变更后的第一地址编码字符串,重新构建得到一个用于对初始业务地址(例如,地址A11)进行地址校验的目标业务地址(例如,地址A22)。换言之,本申请实施例可以通过区块链地址生成策略重新构建得到该目标业务地址,进而可以通过该重新构建得到的目标业务地址反向验证初始业务地址是否为合法区块链地址,从而可以确保与当前交易业务相关联的任意一个区块链地址(即初始业务地址)的安全性和可靠性,且可以检测出无效地址,这样,可以进一步通过有效且合法的区块链地址来提升该交易业务的安全性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种区块链系统到的网络架构的结构示意图;
图2是本申请实施例提供的一种进行数据交互的场景示意图;
图3是本申请实施例提供的一种地址数据处理方法的方法流程图;
图4是本申请实施例提供的一种将与交易业务相关联的业务地址作为初始业务地址的场景示意图;
图5是本申请实施例提供的一种通过区块链地址生成策略构建得到第二地址编码字符串的流程示意图;
图6是本申请实施例提供的一种构建得到目标业务地址的场景示意图;
图7是本申请实施例提供的另一种地址数据处理方法的方法流程图;
图8是本申请实施例提供的一种在业务界面上录入初始业务地址的场景示意图;
图9是本申请实施例提供的又一种地址数据处理方法的方法流程图;
图10是本申请实施例提供的一种在合约开发过程中输出编译失败提示信息的场景示意图;
图11是本申请实施例提供的再一种地址数据处理方法的方法流程图;
图12是本申请实施例提供的一种地址数据处理装置的结构示意图;
图13是本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
一、区块链:一种去中心化的分布式账本,多方维护,数据不可篡改。区块链,就是一个又一个区块组成的链条。每一个区块中保存了一定的信息,它们按照各自产生的时间顺序连接成链条。这个链条被保存在所有的服务器中,只要整个系统中有一台服务器可以工作,整条区块链就是安全的。在本申请实施例中,区块链所对应的区块链网络中的区块链节点设备可以在获取到某个业务终端所发送的与相应交易业务相关联的目标业务交易的情况下,将该目标业务交易打包至区块,进而可以在完成对该区块的区块共识之后,将该打包有目标业务交易的这个区块上链至区块链,以确保写入区块链上的目标业务交易的数据公开性和可查性。
二、区块链地址:区块链地址是指用于存储数字资产的公钥哈希值或脚本哈希值。它们是由一系列数字和字母组成的字符串,可以唯一标识数字资产的所有者。区块链地址通常通过加密算法从公钥或者脚本中派生而来,以确保某个业务对象(例如,用户U1)的身份和交易信息的安全性。这意味着在本申请实施例中,对于任意一个业务对象(例如,用户U1)而言,可以基于用户U1在用户注册区块链的时候,基于这个用户U1所提交的业务注册信息来为这个用户配置一个由公钥和私钥所构成的密钥对。其中,该密钥对中的公钥和私钥主要有两个作用:身份认证和数字签名。其中,身份认证是指验证某个业务对象(例如 ,用户U1)是否真的拥有某个地址或者账户。比如,当该用户 U1想要发送或者接收数据时,需要用自己的私钥对需要发送的数据进行数据加密或者对需要接收的数据进行数据解密,这样就可以证明该用户 U1是这个数据的真正拥有者或者接收者。
应当理解,通常情况下,每个区块链地址都是唯一的,且不可逆转,然而,对于不同区块链网络而言,存在某个区块链网络中的区块链地址与另一个区块链网络中的区块链地址相似甚至相同的可能,为确保业务对象在交易过程中的身份和交易信息的安全性,本申请实施例提出可以在创建与当前交易业务相关联的目标业务交易之前,对用于创建该目标业务交易的区块链地址进行地址校验,以确保当前所获取到的任意一个区块链地址的有效性和合法性。
三、区块链地址的结构,应当理解,区块链地址的结构和格式因不同的区块链平台和加密算法而异,但一般都包含以下几个主要部分:
1、版本号(Version):表示该地址格式的版本信息,用于确定如何解析和验证地址。比如,这里的版本号是由20字节的区块链地址中的首个字节所确定的;
2、公钥哈希(Public Key Hash):是由公钥通过哈希算法生成的值。公钥哈希一般用于标识数字资产的所有者,并作为接收者地址在交易中使用。比如,在本申请实施例中,对于一笔资源转账交易,交易发起者(也可以称之为资源支出对象)可以接收资源接收对象发来的区块链地址,并可以将当前所接收到的这个区块链地址作为待校验的初始业务地址,以便于后续在通过区块链地址生成策略生成用于对该区块链地址进行地址校验的目标业务地址之后,基于该新生成的目标业务地址确定该初始业务地址为合法区块链地址之后,将该确定合法的初始业务地址作为用于接收特定资源数量的转账资源的资源接收地址,写入到上述资源转账交易中,以得到上述与资源转账业务相关联的目标业务地址。应当理解,接收资源接收对象所发来给交易发起对象的这个区块链地址则是通过该接收资源接收对象的公钥进行哈希计算所得到的公钥哈希确定的。
3、脚本哈希(Script Hash):对于某些区块链平台,使用脚本来定义更复杂的交易逻辑。脚本哈希则是对这些脚本内容进行哈希计算得到的值。
4、校验和(Checksum):为了检测输入错误或恶意篡改,地址通常包含一个校验和(比如,可以将20个字节的区块链地址中的后4个字节作为校验和),以验证地址的有效性。在本申请实施例中,可以采用上述区块链地址生成策略生成用于对该区块链地址进行地址校验的目标业务地址,即此时该最新生成的目标业务地址可以视为另一种类型的校验和,用于验证当前所获取到的任意一个区块链地址(即初始业务地址)的地址有效性。
四、智能合约:一种以数字形式定义的协议,需运行在可信的环境中,比如区块链平台。智能合约(Smart contract)是依托计算机在网络空间运行的合约,它以信息化方式传播、验证或执行,由计算机读取、执行,具备自助的特点。区块链的去中心化,数据的防篡改,决定了智能合约更加适合于在区块链上来实现。因此区块链技术的发展,让智能合约拥有了更广阔的发展前景。智能合约事实上是由计算机代码构成的一段程序,其缔结过程是:第一步,参与缔约的双方或多方用户商定后将共同合作制定成一份智能合约;第二步,该智能合约通过区块链网络向全球各个区块链的支点广播并存储;第三步,构建成功的智能合约可以在等待条件达成后(例如,在读取并调用智能合约执行区块中的某笔交易时),自动执行合约内容。
应当理解,在本申请实施例中,可以在某个智能合约的开发过程中,对开发的智能合约进行合约编译,进而可以在合约编译成功之后,将该编译通过的智能合约发布至区块链上。应当理解,本申请实施例可以合约开发业务中,将赋值给地址变量(即地址类型的变量)的地址(这里指获取到的用于进行赋值的区块链地址)作为待校验的初始业务地址,进而可以在通过上述区块链地址生成策略所生成的目标业务地址对初始业务地址进行地址校验,且可以在校验通过时,将该初始业务地址作为合法区块链地址,进而可以基于该合法区块链地址完成地址变量的赋值,从而可以完成对该赋值后的地址变量所在的智能合约中的可信代码的编译,进而可以将编译通过的可信代码确定为上述开发好的智能合约。
五、区块链地址的使用场景:区块链地址在区块链生态系统中具有广泛的应用场景,主要包括以下几个方面:
1、数字资产交易:区块链地址可以用于接收、发送和存储各种数字资产,如数字资源、电子票据、电子票据中的核心数据信息等。用户可以使用自己的地址进行交易。比如,对于数字资源而言,可以在数字资产交易为资源转移交易时,通过该区块链地址可以在区块链上查看交易历史和资产余额。
2、去中心化应用(DApp):区块链地址是参与去中心化应用的先决条件之一。业务对象(例如,用户)需要使用自己的地址来访问和使用DApp中的功能,例如创建智能合约、投票、游戏等。所以,当业务对象(例如,用户)需要使用自己的地址来访问和使用DApp时,可以在该DApp的应用界面上录入该业务对象(例如,用户)的区块链账户地址。
3、身份验证:区块链地址可以用作身份验证机制,确保数字资产和交易的合法性和安全性。区块链地址提供了一种可验证用户身份的方式,而不需要直接暴露用户的敏感信息。
4、区块链浏览器:区块链浏览器是用于查询和清分区块链上数据和交易的工具。用户可以通过输入地址来查看特定地址上的交易历史、余额等信息。
六、进制,本申请实施例所涉及的进制是一种数字进位方法。比如,对于任何一种进制(例如,X进制),则可以表示某一位置上的数在运算时是逢X进一位,如:二进制就是逢二进一,八进制就是逢八进一, 十进制是逢十进一,十六进制是逢十六进一,以此类推。对于本申请实施例所涉及的字节数量为M的区块链地址而言,可以使用这里的X进制来表示区块链地址中的各个字节。
其中,二进制是Binary,简写为B,二进制只有0和1两个值,计算方法是逢二进一。比如01B+01B(其中B是Binary的首字母,即二进制的简写),结果就是10B,因为逢二进一,低位的1相加后得2就向高位进1;
其中,八进制是Octal,简写为O,八进制是指有0~7这8个值的表示法,计算方法是逢8进1。比如17O+23O=42O,因为逢8进一,低位的7+3=10,10在八进制就是12,加上原来高位的1+2,结果就是42O;
其中,十进制是Decimal,简写为D,十进制即咱们日常使用的0~9。咱们日常做的计算都是十进制的,计算方法是逢十进一,比如21D+11D=32D;
其中,十六进制是Hexadecimal,简写为H,十六进制用数字字符0-9和英文字符(例如,小写英文字母a-f或者大写英文字母A-F)表示0到15,计算方法是逢16进1,比如1DH+25H=42H,因为逢16进一,低位的D相当于十进制的13,而5可以看成是十进制的5,相加得18,而18-16=2,因此低位的值为2,高位的值即1+2再加上进位1即得4,高位结果就是4,最后结果是42H。
应当理解,本申请实施例所涉及的各个进制之间可以相互进行转换,例如,二进制可以转换为八进制,十进制以及十六进制。其中,1个字节(Byte)可以用8位二进制数表示,即1 Byte =8 bit(位)。应当理解,由于一位十六进制数(也可以称之为一个十六进制数)需要用4位二进制数表示,所以,一个字节也可以用两位十六进制数表示。所以,对于一个M字节的区块链地址而言,可以采用8M个二进制数来表示该区块链地址中的地址字符串,也可以采用2/>M个十六进制数表示该区块链地址中的地址字符串。
为便于理解,本申请实施例以当前获取到的任意一个字节数量为M的区块链地址所采用的进制为十六进制为例,这样,字节数量为M的区块链地址,可以使用2M个十六进制数表示该区块链地址中的地址字符串(即该地址字符串中的字符数量,N=2/>M),此时,该地址字符串中的每个字符的字符值(即取值)可以为十六进制取值范围(即由0123456789abcdef这16个十六进制数所构成的取值范围)中的任意一个十六进制数。
进一步的,请参见图1,图1是本申请实施例提供的一种区块链系统到的网络架构的结构示意图。如图1所示,该网络架构可以包括区块链网络100a和业务终端集群100b。其中,业务终端集群100b可以包括一个或者多个业务终端,这里不对业务终端的数量进行限制。如图1所示,多个业务终端可以具体包括业务终端120a、……、业务终端120n。这里的业务终端120a、……、业务终端120n可以以交易的形式与区块链网络100a中的区块链节点设备进行数据交互,即业务终端120a、……、业务终端120n中的任意一个业务终端,在构建得到与相应交易业务相关联的目标业务交易时,可以将该目标业务交易提交给该区块链网络100a中的区块链节点设备,以使这些区块链节点设备在接收到该目标业务交易之后,可以在该区块链网络100a中的各个区块链节点设备之间进行交易广播、交易打包、区块广播以及区块共识,进而可以在区块共识成功时,将该共识成功的区块上链至区块链(例如,图1所示的区块链10e)。
其中,区块链网络100a中可以包含多个区块链节点设备,这里不对区块链节点设备的数量进行限制。如图1所示,多个区块链节点设备至少可以包括节点设备10a、节点设备10b、节点设备10c以及节点设备10d。如图1所示,节点设备10a、节点设备10b、节点设备10c以及节点设备10d可以分别与图1所示的业务终端集群100b中的各个业务终端进行网络连接,进而可以基于相应的网络连接与各个业务终端进行数据交互。
其中,部署在该区块链网络100a中的区块链节点设备可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。
其中,部署在业务终端集群中的业务终端可以包括:智能手机、平板电脑、笔记本电脑、掌上电脑、移动互联网设备(mobile internet device,MID)、可穿戴设备(例如智能手表、智能手环等)、智能语音交互设备、智能家电(例如智能电视等)以及车载设备等具有可视化数据展示功能的电子设备。
应当理解,在本申请实施例中,可以通过部署在业务终端上的与相应交易业务相关联的业务客户端(简称为客户端)和网页浏览器(简称为浏览器)来提供可视化的数据展示页面。其中,这里的交易业务可以包括但不限于上述各业务场景下的资源转移业务(例如,转账交易业务、票据流转业务)、合约开发业务、数据交互业务和数据查询业务。可以理解的是,这里的客户端可以具体包括与资源转移业务相关联的资源管理客户端、与合约开发业务相关联的合约开发客户端、与数据交互业务相关联的数据交互客户端以及与数据查询业务相关联的数据查询客户端。
为便于理解,本申请实施例以在业务终端上部署的用于提供可视化数据展示功能的组件为与相应交易业务相关联的业务客户端(简称为客户端)为例,以阐述运行在该业务客户端上的业务客户端(简称为客户端)在获取到任意一个区块链地址(即初始业务地址)时,可以通过区块链地址生成策略生成用于对该初始业务地址进行地址校验的目标业务地址的具体过程。
进一步的,请参见图2,图2是本申请实施例提供的一种进行数据交互的场景示意图。如图2所示的业务终端20b上运行有与交易业务相关联的客户端。这里的交易业务可以为上述资源转移业务(例如,转账交易业务、票据流转业务)、合约开发业务、数据交互业务和数据查询业务中的一种或者多种,这里将不对其具体的交易业务的业务类型进行限定。其中,转账交易业务可以包含用于在同一区块链网络中的不同区块链地址之间进行资源转移的业务,以及在不同区块链网络中的不同区块链地址地址之间进行跨链资源转移的另一业务。
如图2所示的业务终端20a可以为上述图1所对应实施例中的业务终端120a,业务终端20b可以为上述图1所对应实施例中的业务终端120n。为便于对该交易业务中所涉及的不同业务对象进行区分,本申请实施例可以将业务终端20a所对应的用户U1称之为第一业务对象,并将该业务终端20a上所运行的客户端称之为与相应交易业务相关联的第一客户端。同理,本申请实施例可以将业务终端20b所对应的用户U2称之为第二业务对象,并将该业务终端20b上所运行的客户端称之为与相应交易业务相关联的第二客户端。
为便于进行理解,本申请实施例以这里的交易业务为上述转账交易业务为例,此时,该用户U1所对应的第一客户端(即客户端)具体可以为第一资源管理客户端,用户U2所对应的第二客户端(即客户端)具体可以为第二资源管理客户端。
其中,该转账交易业务具体可以为用户U1请求通过链上转账方式向用户U2支付一定数量的虚拟资源(例如,100块钱)的业务,此时,用户U1通过业务终端20a(即业务终端)所构建的与该转账交易业务相关联的目标业务交易具体可以为图2所示的交易TX1。
如图2所示,用户U2可以通过业务终端20b执行步骤S11,以向业务终端20a发送自己用于接收该虚拟资源(例如,100块钱)的区块链地址(例如,图2所示的区块链地址1)。比如,用户U2可以通过业务终端20b上的第二资源管理客户端录入自己的区块链地址(例如,图2所示的区块链地址1),并将成功录入至该第二资源管理客户端上的该区块链地址1发送给业务终端20a。这样,运行有第一资源管理客户端的业务终端20a可以在获取到该用户U2(即第二业务对象)发送的区块链地址1时,可以将该区块链地址1作为待校验的初始业务地址。应当理解,该区块链地址1可以为字节数量为M的区块链地址,为便于理解,这里以M的取值可以为20为例,以阐述业务终端20a对获取到的20字节的区块链地址1进行地址数据处理的具体过程。可以理解的是,本申请实施例将不对M的取值进行限定。
进一步的,如图2所示,对于运行有第一资源管理客户端的业务终端20a而言,可以基于该第一资源管理客户端所获取到的区块链地址生成策略,执行图2所示的步骤S21,以对当前作为初始业务地址的区块链地址1进行第一次编码处理(即进行地址编码处理),以得到字符数量为N的第一地址编码字符串(这里的第一地址编码字符串可以为图2所示的编码字符串A)。这里的N可以为M的整数倍,比如,若该区块链地址1所采用的进制为上述十六进制,则该区块链地址1中的每个字节可以用两位十六进制数表示,此时,N=2M。应当理解,本申请实施例将不对区块链地址1所采样的进制进行限定,为便于理解,这里以这20字节的区块链地址1所采用的进制为十六进制为例。可选地,可以理解的是,若业务终端20a所获取到的区块链地址所采用的进制不为十六进制,也可以将其按照一定的进制转换规则将其转换为十六进制,以得到十六进制表示的该区块链地址1。
进一步的,如图2所示,业务终端20a可以进一步执行步骤S22,以对当前编码得到的第一地址编码字符串(例如,编码字符串A)进行哈希转换处理,以得到哈希地址H(即哈希转换地址),进而可以对该哈希地址H(即哈希转换地址)进行第二次编码处理(即进行地址编码处理),以得到第二地址编码字符串(例如,图2所示的编码字符串B)。
应当理解,在本申请实施例中,第一次编码得到的编码字符串A中的英文字符(例如,小写字符)的字符属性可以为第一字符属性(例如,小写类属性),且第二次编码得到的编码字符串B中的英文字符(例如,小写字符)的字符属性也可以为第一字符属性(例如,小写类属性)。换言之,在编码字符串A中的英文字符和编码字符串B中的英文字符的字符属性为第一字符属性时,该第一字符属性的属性类型可以为小写类属性,即可以使编码得到的编码字符串A中的英文字符和编码字符串B中的英文字符均为小写英文字符。
可以理解的是,本申请实施例将不对第一字符属性的具体属性类型进行限定,比如,第一字符属性的具体属性类型还可以为大写类属性。所以,在一个或者多个可实现方式中,第一次编码得到的编码字符串A中的英文字符(例如,大写字符)的字符属性还可以为第一字符属性(例如,大写类属性),且第二次编码得到的编码字符串B中的英文字符(例如,大写字符)的字符属性也可以为第一字符属性(例如,大写类属性)。此时,应当理解,在编码字符串A中的英文字符和编码字符串B中的英文字符的字符属性为第一字符属性时,该第一字符属性的属性类型也可以为大写类属性,即可以使编码得到的编码字符串A中的英文字符和编码字符串B中的英文字符均为大写英文字符。
为便于理解,本申请实施例以采用上述区块链地址生成策略所编码得到的编码字符串A和编码字符串B的中的英文字符均为小写英文字符为例。进一步的,可以理解的是,为确保第二次编码所得到的第二地址编码字符串(例如,图2所示的编码字符串B)的字符值与该第一地址编码字符串(例如,图2所示的编码字符串A)中的字符值存在较大字符差异性,本申请实施例可以在对该第一地址编码字符串(例如,编码字符串A)进行哈希转换处理中,比如,具体可以对该第一地址编码字符串(例如,编码字符串A)进行哈希编码处理,以得到字节数量高于M的哈希编码地址,进而可以从使该字节数量高于M的哈希编码地址中获取M字节的哈希编码地址来得到图2所示的哈希地址H(即哈希转换地址)。
进一步的,如图2所示,业务终端20a可以进一步执行步骤S23,以将编码字符串B中的某个字符位置(即字符位置i)上的字符作为参考字符,进而可以执行步骤S24,判断该参考字符的字符值是否大于或者等于字符阈值,如果判断为是,则可以进一步执行步骤S25,进而可以在编码字符串A中的字符位置i上的字符为第一字符(例如,上述小写英文字符)时,对该编码字符串A中的字符位置i上的字符(例如,上述小写英文字符)的字符属性进行属性变更。比如,本申请实施例可以在第一字符属性为上述小写类属性时,将与参考字符处于同一字符位置上的这个字符(例如,上述小写英文字符)的字符属性由第一字符属性变更为第二字符属性(例如,大写英文字符)。
应当理解,在业务终端20a执行步骤S24时,若判定为否,则在确定参考字符的字符值小于字符阈值时,无需对与该参考字符处于同一字符位置上的这个字符(例如,上述小写英文字符)的字符属性进行属性变更。此时,业务终端20a可以进一步在编码字符串B中,遍历到字符位置i的下一字符位置,以通过遍历到的新的字符位置i,更新步骤S23中的参考字符,进而可以在执行步骤S24时,判断更新后的参考字符的字符值是否大于或者等于字符阈值,以此类推。
应当理解,在第一字符属性为小写类属性时,第二字符属性可以为大写类属性,反之,在第一字符属性为大写类属性时,第二字符属性可以为小写类属性。
进一步的,如图2所示,业务终端20a可以进一步执行步骤S26,进而可以基于属性变更后的编码字符串A,来构建得到一种具备全新地址格式的区块链地址(例如,区块链地址2),进而可以执行下述步骤S27,以通过该重新构建得到的区块链地址2,反向判断区块链地址1是否为合法区块链地址,若判断为是,则可以基于该合法区块链地址生成与当前交易业务相关联的目标业务交易(例如,图2所示的交易TX1)。
应当理解,这里的全新地址格式是指区块链地址2所对应的地址字符串中的字符是由数字字符、大写字符和小写字符所混合而成的。所以,在通过该重新构建得到的区块链地址2,判断区块链地址1是否为合法区块链地址时,其本质就是判断这里的区块链地址1是否为按照新地址格式所生成的合法区块链地址,如果是,则可以用该按照新地址格式所生成的合法区块链地址来构建得到用于提交给区块链节点设备的交易TX1。然后,业务终端20a可以进一步执行步骤S31,以向图2所示的区块链节点设备发送该交易TX1。其中,这里的区块链节点设备可以为上述图1所对应区块链网络100a中的任意一个节点设备,例如,节点设备10c。
其中,可以理解的是,在20字节的区块链地址1的地址字符串采用上述十六进制表达时,可以使用两位十六进制数来表达1个字节(即1Byte),且该区块链地址1的地址字符串中的每个字符的取值(即字符值)均为上述十六进制取值范围(即由0123456789abcdef这16个十六进制数所构成的第一取值范围,或者由0123456789ABCDEF这16个十六进制数所构成的第二取值范围)中的十六进制数。
换言之,在本申请实施例中,若该20字节的区块链地址1是按照新地址格式所生成的地址,即该20字节的区块链地址1所对应的地址字符串中包含数字字符和小写英文字符以及大写英文字符。例如,该区块链地址1可以为地址A11,此时,地址A11= 0x2D582dA751A2E74760639B891B0A42b65ef59756,则该业务终端20a在基于上述区块链地址生成策略所重新构建得到区块链地址2(即这里的区块链地址2本质上为按照新地址格式所生成校验地址)时,可以通过该重新构建得到的区块链地址2所具备的地址格式,识别出地址A11的地址格式(比如,A11的地址格式是由数字字符,大、小写英文字符所混合得到的),且识别到地址A11与地址A22中的字符的字符值均保持一致,进而可以确定当前用于构建上述交易TX1的地址A11为按照新地址格式所生成的合法区块链地址。例如,地址A22= 0x2D582dA751A2E74760639B891B0A42b65ef59756。
可以理解的是,本申请实施例将不对该区块链地址1所对应的地址字符串所包含的数字字符的数量、小写英文字符的数量以及大写英文字符的数量进行具体限定。
可以理解的是,由于不同区块链网络所采用的地址格式存在不同,所以,在不同区块链网络所使用的地址格式不同时,为避免不同区块链网络中的区块链地址出现地址格式混淆现象,本申请实施例提出可以将当前所获取到的任意两个地址格式相似的区块链地址(例如,地址A10和地址A20)作为初始业务地址,从而可以通过上述区块链地址生成策略生成用于对这两个初始业务地址分别进行地址校验的两个目标业务地址,进而可以通过两个目标业务地址中的同一字符位置上的字符值的不同,快速校验出这两个初始业务地址中的同一地址位置上的字符属性是否相同,这样,可以尽可能有效地区分出来源于不同区块链网络中的这两个地址格式相似的区块链地址。例如,对于这两个地址格式相似的区块链地址而言,地址A10中的第一个字节为9f,而地址A20中的第一个字节为9F,这意味着对于这两个地址格式相似的区块链地址而言,可以在同一字节的相同字符位置上用不同字符属性(即一个字符是用十六进制数中的小写英文字符表示,另一个则是用十六进制数中的大写英文字符),来区分地址格式相似的两个区块链地址。
基于此,为确保各交易业务的业务安全性,本申请实施例提出了一种全新的区块链地址生成方式,通过该全新的区块链地址生成方式(即区块链地址生成策略)所生成的区块链地址可以作为上述校验地址,这里的校验地址即为上述目标业务地址,这里的目标业务地址可以用于校验其他业务终端(例如,图2所示的业务终端20b)所发送来的不同区块链网络中的地址。
需要说明的是,本申请实施例中的计算机设备在获取用户的区块链地址、个人注册数据信息、电子票据以及电子票据中的核心票据信息等数据时,可以显示提示界面或者弹窗,该提示界面或者弹窗用于提示用户当前正在搜集区块链地址、个人注册数据信息、电子票据以及电子票据中的核心票据信息等数据,仅仅在获取到用户对该提示界面或者弹窗发出确认操作后,开始执行数据获取的相关的步骤,否则结束。
可以理解的是,在本申请的具体实施方式中,可能涉及到用户、企业、机构等对象的业务数据(例如,区块链地址、个人注册数据信息、电子票据以及电子票据中的核心票据信息),当本申请以上实施例运用到具体产品或技术中时,需要获得用户、企业、机构等对象的许可或同意,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
其中, 业务终端20a按照区块链地址生成策略生成用于对初始业务地址进行地址校验的目标业务地址的具体过程,可以参见图3-图11所对应实施例的描述。
进一步的,请参见图3,图3是本申请实施例提供的一种地址数据处理方法的方法流程图。该方法可以由用于进行地址校验的业务终端执行,该业务终端上所运行的客户端可以为与相应交易业务相匹配的业务客户端。应当理解,这里的业务终端可以为上述图2所对应实施例中的业务终端20a。其中,该地址数据处理方法至少可以包括以下步骤S101-步骤S105:
步骤S101,在获取到与交易业务相关联的字节数量为M的初始业务地址时,获取与交易业务相关联的区块链地址生成策略,基于区块链地址生成策略对初始业务地址进行第一地址编码处理,得到字符数量为N的第一地址编码字符串;
其中,第一地址编码字符串中的第一字符的字符属性为第一字符属性;M为大于1的正整数,N为M的整数倍;可以理解的是,在业务终端所获取到的初始业务地址所采用的进制为上述十六进制时,对于该初始业务地址中的M个字节(例如,20 Byte)而言,在通过与当前交易业务相关联的区块链地址生成策略对该20字节的初始业务地址进行第一地址编码处理(即第一次编码处理)时,可以得到字符数量为N(例如,40)的第一地址编码字符串。
其中,可以理解的是,本申请实施例所涉及的交易业务具体可以包含不同业务场景下的业务。为便于理解,这里以不同业务场景下的业务为上述资源转账业务、合约开发业务、数据交互业务和数据查询业务为例。
进一步的,请参见图4,图4是本申请实施例提供的一种将与交易业务相关联的业务地址作为初始业务地址的场景示意图。如图4所示的交易业务具体可以包含图4所示的业务41a、业务42a、业务43a和业务44a。其中,业务41a可以为上述资源转账业务、业务42a可以为上述合约开发业务、业务43a可以为上述数据交互业务和业务44a可以为上述数据查询业务。可以理解的是,当这些业务客户端运行在一个或者多个业务终端上时,这些业务终端均可以对当前所获取到的与这些交易业务(例如,业务41a、业务42a、业务43a、业务44a)相关联的区块链地址时,可以将这些区块链地址(例如,图4所示的业务地址R1、业务地址R2、业务地址R3和业务地址R4)作为图4所示的初始业务地址,以将这些初始业务地址分别输入到运行在相应业务客户端上的区块链地址生成模块400a,以使相应业务客户端上所部署的区块链地址生成模块400a按照上述区块链地址生产策略,生成用于对相应初始业务地址进行地址校验的目标业务地址(例如,如图4所示的业务地址L1、业务地址L2、业务地址L3和业务地址L4)。
其中,应当理解,业务终端上所部署的业务客户端可以包括但不限于与该资源转账业务相关联的资源管理客户端,与合法开发业务相关联的合约开发终端,与数据交互业务相关联的数据交互客户端以及与数据查询业务相关联的数据查询客户端。
为便于理解,这里以部署在业务终端上的客户端为资源管理客户端为例,这里的资源管理客户端上部署有图4所示的区块链地址生成模块400a。如图4所示,在资源转账场景下,与该资源转账业务(例如,图4所示的业务41a)相关联的区块链地址可以为图4所示的业务地址R1。
如图4所示,本申请实施例在将业务地址R1输入到资源管理客户端上的区块链地址生成模块400a时,该区块链地址生成模块400a可以按照上述区块链地址生成策略,执行上述图2所对应实施例中的步骤S21-步骤S26,来生成得到用于对该初始业务地址(例如,业务地址R1)进行地址校验的目标业务地址(例如,业务地址L1)。
同理,在合约开发场景下,本申请实施例在将业务地址R2输入到合法开发客户端上的区块链地址生成模块400a时,该区块链地址生成模块400a可以按照上述区块链地址生成策略,执行上述图2所对应实施例中的步骤S21-步骤S26,来生成得到用于对该初始业务地址(例如,业务地址R2)进行地址校验的目标业务地址(例如,业务地址L2)。以此类推,在数据交互场景下,本申请实施例在将业务地址R3输入到数据交互客户端上的区块链地址生成模块400a时,该区块链地址生成模块400a可以按照上述区块链地址生成策略,执行上述图2所对应实施例中的步骤S21-步骤S26,来生成得到用于对该初始业务地址(例如,业务地址R3)进行地址校验的目标业务地址(例如,业务地址L3)。同理,在数据查询场景下,本申请实施例在将业务地址R4输入到数据查询客户端上的区块链地址生成模块400a时,该区块链地址生成模块400a可以按照上述区块链地址生成策略,执行上述图2所对应实施例中的步骤S21-步骤S26,来生成得到用于对该初始业务地址(例如,业务地址R4)进行地址校验的目标业务地址(例如,业务地址L4)。
其中,为便于理解,本申请实施例以交易业务为上述资源转账业务为例,以阐述业务终端在获取到与该资源转账业务相关联的区块链地址(例如,图4所示的业务地址R1)时,如何按照区块链地址生成策略生成用于对该初始业务地址进行地址校验的目标业务地址的具体过程。
可以理解的是,在上述资源转账场景下,为便于进行区分,本申请实施例可以将该业务终端所对应的业务对象称之为第一业务对象(比如,用于请求转出该资源转账业务所指示的交易资源的资源转出对象,例如,上述图2所示的用户U1),并可以将该第一业务对象所对应的资源管理客户端称之为第一资源管理客户端。此外,可以理解的是,本申请实施例还可以将另一业务终端所对应的业务对象称之为第二业务对象(比如,用于接收该资源转账业务所指示的交易资源的资源接收对象,例如,上述图2所示的用户U2),并可以将该第二业务对象所对应的资源管理客户端称之为第二资源管理客户端。
应当理解,这里的第一资源管理客户端和第二资源管理客户端上均部署有图2所示的区块链地址生成模块,这样,无论是第一资源管理客户端和第二资源管理客户端,在获取到与当前交易业务相关联的区块链地址(例如,图4所示的业务地址R1)时,均可以将当前所获取到的区块链地址(例如,图4所示的业务地址R1)作为初始业务地址,输入至区块链地址生成模块400a,以使该区块链地址生成模块400a可以按照上述区块链地址生成策略对该初始业务地址进行第一次编码处理,以将该初始业务地址所对应的地址字符串中的英文字符的字符属性均转换为第一字符属性。
其中,应当理解,业务终端在接收到第二业务对象发来的业务地址R1时,可以复制该业务地址R1,并将复制得到的业务地址R1作为资源接收地址录入到资源管理客户端(即上述第一资源管理客户端)的业务界面上,进而可以将录入至业务界面上的资源接收地址作为初始业务地址。
为便于理解,这里以该初始业务地址(例如,图4所示的业务地址R1)为上述图2所对应实施例中的区块链地址1为例,即这里的业务地址R1可以为上述地址A11(例如,A11=0x2D582dA751A2E74760639B891B0A42b65ef59756)。
应当理解,业务终端对该地址A11进行第一次编码处理时,可以将该地址A11所对应的地址字符串通过编码转换成字符属性为第一字符属性(例如,上述小写类属性)的字符串。即本申请实施例可以在上述十六进制所表示的地址A11所对应的地址字符串中判定是否存在英文字符,如果存在,则将地址字符串中的英文字符(例如,具有不同字符属性的大写英文字符和小写英文字符)统统转换成同一字符属性的地址字符串。例如,可以将地址A11所对应的地址字符串(比如,地址字符串1=0x2D582dA751A2E74760639B891B0A42b65ef59756)中的英文字符统统编码转换成小写英文字符。比如,可以以字节为单位,依次将地址字符串1中的字节位置上的字节序列(例如,对于地址字符串1而言,第一个字节位置上的字节序列可以为[2D])中的字符(例如,字符“D”)的字符属性编码为第一字符属性。
应当理解,在第一次编码过程中,若与该区块链地址生成策略所指示的第一字符属性为小写类字符属性,则该第一字符属性所对应的第二字符属性可以为大写类字符属性。所以,本申请实施例可以在以两位十六进制字符表示的任意一个字节序列中,若该任意一个字节序列中的每个字符的字符属性为相同字符属性,且相同字符属性都是大写类属性,则可以将都是大写类属性的两位大写英文字符的字符属性由第二字符属性编码转换为第一字符属性。
可选地,若该任意一个字节序列中的每个字符的字符属性为相同字符属性,且相同字符属性都是小写类属性,则可以将都是小写类属性的两位小写英文字符的字符属性维持为第一字符属性。
可选地,若该任意一个字节序列中的每个字符的字符属性不为相同字符属性,且一个字符位置上的字符属性为小写类属性,另一个字符位置上的字符属性为数字类属性,则可以在第一次编码过程中,维持由数字字符和小写英文字符所构成的字节序列中的两位十六进制字符的字符属性。以此类推,若该任意一个字节序列中的每个字符的字符属性不为相同字符属性,且一个字符位置上的字符属性为大写类属性,另一个字符位置上的字符属性为数字类属性,则可以在第一次编码过程中,对由数字字符和大写英文字符所构成的字节序列中的大写英文字符的字符属性由第二字符属性变更为第一字符属性,并在由数字字符和大写英文字符所构成的字节序列中,维持另一个字符位置上的数字字符的字符属性。
比如,对于上述20字节的地址字符串1而言,可以将地址字符串1中的第一个字节所对应的字节序列[2D]中的大写英文字符转换为小写英文字符(例如,字符“d”),并维持该字节序列[2D]中的数字字符(例如,字符“2”)的字符属性,此时,该字节序列[2D]所对应的已编码字节序列可以为[2d]。
以此类推,本申请实施例可以将该地址字符串1中的其他字节位置上的字节序列中的大写英文字符转换成小写英文字符,并维持字节序列中的数字字符的字符属性和小写英文字符的字符属性。
例如,对于地址字符串1中第二个字节位置上的字节序列[58]而言,可以维持该第二个字节位置上的字节序列[58]中的两位十六进制字符(即数字字符“5”和数字字符“8”)的字符属性,所以,该字节序列[58]所对应的已编码节点序列可以保持为字节序列[58]。
同理,对于地址字符串1中第三个字节位置上的字节序列[2d]而言,可以维持该第三个字节位置上的字节序列[2d]中的十六进制字符(即数字字符“2”和小写英文字符“d”)的字符属性。
应当理解,对于上述字节数量为20的地址字符串1而言,若得到每个字节所对应的已编码字节序列,则可以基于地址字符串1中的每个字节的字节位置,来以此对得到的各个已编码字节序列进行序列拼接,以将在第一编码过程中所拼接得到的拼接地址序列作为字符数量为N(例如,220=40)的地址编码字符串(例如,地址编码字符串1’),该地址编码字符串1’所对应的编码地址可以为地址A11’。
其中,地址编码字符串1’=0x2d582da751a2e74760639b891b0a42b65ef59756。然后,该业务终端可以去除该地址A11’所对应的地址编码字符串1’中的前缀(例如,ox),进而可以将去除前缀(例如,ox)后的地址编码字符串1’作为当前所编码得到的第一地址编码字符串( 例如,该第一地址编码字符串可以为上述图2所对应实施例中的编码字符串A),此时,通过上述步骤S101所得到的编码字符串A=2d582da751a2e74760639b891b0a42b65ef59756。
为便于进行理解,本申请实施例可以将编码得到的第一地址编码字符串(例如,编码字符串A)中的英文字符统称为第一字符,并将该第一地址编码字符串(例如,编码字符串A)中的数字字符统称为第三字符。应当理解,这里的第三字符的字符属性可以不受后续第二次编码得到的第二地址编码字符串中的第二字符的取值(即字符值)的影响,但是,在该第一地址编码字符串中,这里的第一字符的字符属性则会受后续第二次编码得到的第二地址编码字符串中的第二字符的取值(即字符值)的影响。
步骤S102,对第一地址编码字符串进行哈希转换处理,得到字节数量为M的哈希转换地址,对哈希转换地址进行第二地址编码处理,得到字符数量为N的第二地址编码字符串;第二地址编码字符串中的第二字符的字符属性为第一字符属性;
具体的,业务终端可以基于区块链地址生成策略确定与第一地址编码字符串相关联的哈希编码方法,并可以基于哈希编码方法对第一地址编码字符串进行哈希编码处理,得到字节数量为K的哈希编码地址;K为大于M的正整数;比如,在M为20时,K可以为32;进一步的,业务终端可以从字节数量为K的哈希编码地址中获取字节数量为M的哈希编码地址,进而可以将获取到的字节数量为M的哈希编码地址作为哈希转换地址(这里的哈希转换地址可以为上述图2所对应实施例中的哈希地址H);进一步的,业务终端可以在对哈希转换地址进行第二地址编码处理时,将哈希转换地址中的每个字节位置上的字节序列作为待编码字节序列,将待编码字节序列所对应的序列字符串中的每个字符(例如,英文字符)的字符属性均编码为第一字符属性(例如,上述小写类属性),进而可以基于字符属性均为第一字符属性的序列字符串,确定待编码字节序列对应的已编码字节序列;进一步的,业务终端可以基于哈希转换地址中的每个字节位置,遍历对已编码字节序列进行序列拼接,得到拼接地址序列,将拼接地址序列中的序列字符串作为字符数量为N的第二地址编码字符串;第二地址编码字符串为不同于第一地址编码字符串的字符串。
为便于理解,进一步的,请参见图5,图5是本申请实施例提供的一种通过区块链地址生成策略构建得到第二地址编码字符串的流程示意图。如图5所示的地址A11可以为上述图4所对应实施例中的业务地址R1。在交易业务为上述资源转账业务时,图5所示的地址编码组件5a、哈希编码组件5b则可以为上述图4所对应实施例中集成在资源管理客户端(例如,第一资源管理客户端)的区块链地址生成模块400a中的组件(或者单元)。此时,地址A11所对应的地址字符串(即地址字符串1=0x2D582dA751A2E74760639B891B0A42b65ef59756)。
如图5所示,业务终端在获取到地址A11时,可以将该地址A11作为初始业务地址,进而可以执行步骤S51,以将该地址A11输入至地址编码组件5a,(该地址编码组件5a可以为集成在资源管理客户端(例如,第一资源管理客户端)的区块链地址生成模块400a中组件),此时,业务终端可以通过地址编码组件5a执行步骤S52,以对该地址A11(即本质上为该地址A11所对应的地址字符串1)进行第一次地址编码,得到图5的地址编码字符串50a,可以理解的是,这里的地址编码字符串50a(即第一地址编码字符串)可以为上述通过步骤S101所得到的编码字符串A=2d582da751a2e74760639b891b0a42b65ef59756。
其中,业务终端通过地址编码组件5a获取得到地址编码字符串50a的具体过程可以参见对上述图4所对应实施例中对获取编码字符串的具体过程的描述。
进一步的,可以理解的是,业务终端在得到地址编码字符串50a(即第一地址编码字符串)之后,可以进一步执行步骤S53,以将该地址编码字符串50a(即第一地址编码字符串)输入至哈希编码组件5b,进而可以通过哈希编码组件5b中的哈希编码方法对该地址编码字符串50a(即第一地址编码字符串)进行哈希编码,得到图5所示的哈希编码地址A12,例如,32字节的哈希编码地址A12具体可以为 [253 31 2 249 91 181 173 240 217 181 2387 30 13 109 27 192 37 115 93 189 145 134 131 91 153 247 229 12 202 58 149]。
应当理解,这里的哈希编码地址A12的字节数量为K,为确保后续通过地址编码组件5a第二次编码所得到的另一地址编码字符串(例如,图5所示的地址编码字符串50b)的字符与该地址编码组件5a第一次编码所得到的地址编码字符串(例如,图5所示的地址编码字符串50a)存在较大的字符差异,本申请实施例可以使该哈希编码地址A12的字节数量(即K)的取值大于M(例如,M=20),例如,K=32。然后,业务终端可以进一步执行步骤S55,以在该字节数量为K的哈希编码地址A12中截取字节数量为M的哈希编码地址(例如,可以取前20字节的哈希编码地址),得到图5所示的哈希转换地址A13,此时,20字节的哈希转换地址A13具体可以为[253 31 2 249 91 181 173 240 217 181 238 7 30 13 109 27 192 37 115 93]。该哈希转换地址A13中的每个字节所对应的哈希值可以用哈希取值范围为0~255范围内的任意一个哈希数值进行表示。
应当理解,可选地,本申请实施例还可以在字节数量为K的哈希编码地址(例如,哈希编码地址A12)中,将截取到的字节数量为M的哈希编码地址(例如,后20字节的哈希编码地址或者中间连续20字节的哈希编码地址)作为哈希转换地址(例如,哈希转换地址A13),以进一步执行步骤S56。换言之,本身申请实施例将不对从32字节的哈希编码地址(例如,哈希编码地址A12)中截取20字节的哈希编码地址的具体截取方式进行限定。
由此可见,如图5所示,业务终端可以在获取到哈希转换地址A13之后,进一步执行步骤S56,以将该哈希转换地址输入至地址编码组件5a,以通过该地址编码组件5a执行步骤S57,进而可以对该字节数量为M的哈希转换地址(例如,哈希转换地址A13)进行第二次地址编码,以得到图5所示的地址编码字符串50b(即第二地址编码字符串)。这样,业务终端在得到第二地址编码字符串之后,可以进一步执行下述步骤S103。
其中,可以理解的是,通过该地址编码组件5a对哈希转换地址A13(例如,[253 312 249 91 181 173 240 217 181 238 7 30 13 109 27 192 37 115 93])进行第二次地址编码时,可以以字节为单位遍历将该哈希转换地址A13中的每个字节位置上的字节序列(例如,第一个字节位置上的字节序列可以为哈希值[253])作为待编码字节序列,进而可以字节为单位,依次对该待编码字节序列进行序列编码。
比如,本申请实施例可以将该哈希转换地址A13中第一个字节位置上的字节序列(即哈希值[253])作为待编码字符序列时,可以对该哈希值[253]进行编码(例如,进行十六进制编码,简称为hex编码),以得到该待编码字符序列所对应的序列字符串(例如,“fd”),进而可以将该待编码字节序列所对应的序列字符串中的每个字符的字符属性均编码为第一字符属性。
例如,在上述第一字符属性为小写类属性时,可以继续维持该序列字符串(例如,“fd”)的字符属性,即本申请实施例可以直接将字符属性维持为第一字符属性的序列字符串(例如,“fd”),确定为当前待编码字节序列所对应的已编码字节序列。可选地,若该待编码字符序列所对应的序列字符串为大写类字符串(例如,“FD”),则需要进一步将该待编码字节序列所对应的序列字符串中的每个字符(例如,大写英文字符“F”和大写英文字符“D”)的字符属性由第二字符属性转换编码为第一字符属性,以确保最终由该地址编码组件5a所编码得到的每个待编码字节序列所对应的序列字符串中的每个字符(例如,每个英文字符)的字符属性均编码为第一字符属性。
以此类推,本申请实施例可以将该哈希转换地址A13中的其他字节位置上的字节序列(例如,第二个字节位置上的字节序列可以为哈希值[31])作为新的待编码字节序列,并可以对该哈希值[31]进行编码(例如,进行十六进制编码,简称为hex编码),以得到该新的待编码字符序列所对应的序列字符串(例如,“1f”),进而可以将该新的待编码字节序列所对应的序列字符串中的每个字符的字符属性均编码为第一字符属性,例如,在上述第一字符属性为小写类属性时,可以继续维持该序列字符串(例如,“1f”)的字符属性,即本申请实施例可以直接将字符属性维持为第一字符属性的序列字符串(例如,“1f”),确定为当前待编码字节序列所对应的已编码字节序列。
应当理解,本申请实施例可以在编码得到以字节为单位的每个待编码字节序列对应的已编码字节序列之后,进一步基于每个基于上述哈希转换地址A13中的每个字节位置,遍历对每个已编码字节序列进行序列拼接,以得到另一拼接地址序列,进而可以将当前所拼接得到的拼接地址序列中的序列字符串作为图5所示的地址编码字符串50b,这里的地址编码字符串50b可以为上述图2所对应实施例中的编码字符串B,例如,fd1f02f95bb5adf0d9b5ee071e0d6d1bc025735d。
应当理解,在本申请实施例中,该第二次地址编码所得到的字符数量为N的第二地址编码字符串为不同于上述第一次地址编码所得到的字符数量为N的第一编码字符串的字符串。
步骤S103,在第二地址编码字符串中将字符位置i上的第二字符作为参考字符,将参考字符的字符值与第二地址编码字符串所关联的字符阈值进行对比,得到字符值比对结果;i为小于或者等于N的正整数;
可以理解的是,本申请实施例可以在通过上述步骤S102得到地址编码字符串50b之后,可以在该地址编码字符串50b(例如,上述编码字符串B,即第二地址编码字符串)中,以字符为单位,将该地址编码字符串50b(例如,上述编码字符串B)的每个字符(例如,数字字符和小写英文字符)统称为第二字符,以进一步执行上述图5所示的步骤S58,进而可以遍历将该地址编码字符串50b(例如,上述编码字符串B)的每个字符(即字符位置i上的第二字符)的作为参考字符。
比如,为便于理解,这里以图5所示的地址编码字符串50b为上述编码字符串B(fd1f02f95bb5adf0d9b5ee071e0d6d1bc025735d)为例,此时,业务终端可以字符为单位,将该编码字符串B中的第一个字符位置上的第二字符(例如,小写英文字符“f”)作为参考字符,以进一步执行下述步骤S59。
如图5所示,进一步的,业务终端可以在执行步骤S59时,判定当前参考字符(例如,前述小写英文字符“f”)的字符值是否大于或者等于预设的字符阈值(例如,对于通过十六进制编码所得到的编码字符串B而言,这里的字符阈值可以为8,也可以为其他十六进制数,这里将不对字符阈值的取值进行限定)。应当理解,该小写英文字符“f”的字符值可以为十进制表达的数字15。
所以,如图5所示,若判定为是,则业务终端可以在确定当前参考字符(例如,前述编码字符串B中的小写英文字符“f”)的字符值(即15)大于预设的字符阈值(例如,8)时,将确定的当前参考字符(例如,前述编码字符串B中的小写英文字符“f”)的字符值(即15)大于预设的字符阈值(例如,8)的比对结果统称为字符值比对结果,进而可以进一步执行下述步骤S104。
步骤S104,若字符值比对结果指示参考字符的字符值大于或者等于字符阈值,则在第一地址编码字符串内的字符位置i上的字符为第一字符时,将字符位置i上的第一字符的字符属性由第一字符属性变更为第二字符属性;
应当理解,业务终端可以在执行步骤S104时,可以进一步执行图5所示的步骤S60,进而可以以字符为单位,遍历获取该第一地址编码字符串内的字符位置i(即相同字符位置)上的字符,以通过遍历获取到的字符来相继执行步骤S61。
可以理解的是,业务终端在执行步骤S61时,可以判定当前从该第一地址编码字符串中所获取到的字符位置i(即相同字符位置)上的字符是否为第一字符,这里的第一字符是指通过地址编码组件所编码得到的编码字符串A中的英文字符,例如,在上述第一字符属性为小写类属性时,这里的第一字符具体可以为小写英文字符。如果是,则可以进一步执行步骤S62,即此时本申请实施例可以对从该第一地址编码字符串中所获取到的字符位置i(即相同字符位置)上的第一字符的字符属性进行属性变更。
比如,本申请实施例可以将从该第一地址编码字符串中所获取到的字符位置i(即相同字符位置)上的第一字符的字符属性由第一字符属性(例如,小写类属性)变更为第二字符属性(例如,大写类属性),进而可以基于字符位置i上的字符属性为第二字符属性的第一字符,执行下述步骤S105。
应当理解,可选地,本申请实施例还可以在通过上述步骤S101~步骤S102,获取到上述第一地址编码字符串和第二地址编码字符串时,遍历该在第一地址编码字符串中的每个字符,并将遍历到的字符位置i上的字符作为待处理字符,并可以在该待处理字符为第一字符(例如,英文字符,具体可以为上述小写英文字符)时,进一步判定该第二地址编码字符串中的相同字符位置(即字符位置i)上的字符的字符值是否大于或者等于字符阈值,进而可以在确定该第二地址编码字符串中的相同字符位置(即字符位置i)上的字符的字符值大于或者等于字符阈值时,对该字符位置i上的第一字符的字符属性进行属性变更,比如,可以将该字符位置i上的第一字符的字符属性由第一字符属性变更为第二字符属性,从而可以基于属性变更后的第一字符执行下述步骤S105。
步骤S105,基于字符位置i上的字符属性为第二字符属性的第一字符,构建得到用于对初始业务地址进行地址校验的目标业务地址。
具体的,可以理解的是,若业务终端所获取到的初始业务地址为上述图5所示的地址A11,则业务终端通过上述地址编码组件5a对地址A11进行第一地址编码处理(即第一次地址编码)之后,所获取到的第一地址编码字符串可以为上述编码字符串A;
例如,若地址A11=0x2D582dA751A2E74760639B891B0A42b65ef59756,则编码字符串A=2d582da751a2e74760639b891b0a42b65ef59756。
所以,当业务终端在执行步骤S105时,可以基于字符位置i上的字符属性为第二字符属性的第一字符,确定字符属性变更后的第一地址编码字符串;
例如,字符属性变更后的地址编码字符串50a可以为编码字符串A’,此时,编码字符串A’=2D582dA751A2E74760639B891B0A42b65ef59756。
然后,业务终端可以基于该字符属性变更后的第一地址编码字符串,执行图5所示的步骤S63,从而可以构建得到图5所示的地址A22;
例如,地址A22=0x2D582dA751A2E74760639B891B0A42b65ef59756)。
应当理解,本申请实施例可以将基于上述区块链地址生成策略所构建得到的地址A22,称之为用于对初始业务地址进行地址校验的目标业务地址,即本申请实施例可以通过当前所构建得到的目标业务地址判定该业务终端所获取到的初始业务地址(例如,上述地址A11)是否为基于上述区块链地址生成策略所生成的具有目标地址格式的合法区块链地址。这里的目标地址格式是指通过两次地址编码(例如,两次十六进制编码)所编码得到的混合有上述数字字符、小写英文字符和大写英文字符的全新地址格式。
可选地,如图5所示,本申请实施例还可以在判定当前从该第一地址编码字符串中所获取到的字符位置i(即相同字符位置)上的字符不为第一字符,而是第三字符(例如,上述数字字符)时,进一步执行步骤S64,以维持该从该第一地址编码字符串中所获取到的字符位置i(即相同字符位置)上的第三字符的字符属性,进而可以维持该从该第一地址编码字符串中所获取到的字符位置i(即相同字符位置)上的第三字符的字符值,此时业务终端还可以基于字符位置i上的第三字符的字符属性,参与构建得到上述地址A22。
可选地,如图5所示,在一个或者多个可选实现方式中,若判定为否,则业务终端可以在确定当前参考字符(例如,前述编码字符串B中的数字字符“1”)的字符值(即1)小于预设的字符阈值(例如,8)时,跳转执行图5所示的步骤S64,以继续维持上述第一地址编码字符串中的当前字符位置(即在上述编码字符串A中与上述编码字符串B中的第三个字符位置处于同一字符位置)上的字符(例如,上述5)的字符属性。
为便于理解,本申请实施例以上述图5所对应实施例中的地址编码字符串50b和地址编码字符串50a为例,以进一步阐述得到字符属性变更后的第一地址编码字符串的具体过程。
进一步的,请参见图6,图6是本申请实施例提供的一种构建得到目标业务地址的场景示意图。如图6所示的地址编码字符串50b为上述第二地址编码字符串,如图6所示的地址编码字符串50a为上述第一地址编码字符串,这里的地址编码字符串50a =2d582da751a2e74760639b891b0a42b65ef59756。
应当理解,在该地址编码字符串50a中,可以将所有的英文字符统称为第一字符,并将所有的数字字符统称为第三字符。
比如,如图6所示,地址编码字符串50a中的第一字符具体可以包括:字符位置为D2位置(即第2个字符位置)上的字符“d”,字符位置为D6位置(即第6个字符位置)上的字符“d”,字符位置为D7位置(即第7个字符位置)上的字符“a”,字符位置为D11位置(即第11个字符位置)上的字符“a”,字符位置为D13位置(即第13个字符位置)上的字符“e”,字符位置为D22位置(即第22个字符位置)上的字符“b”,字符位置为D26位置(即第26个字符位置)上的字符“b”,字符位置为D28位置(即第28个字符位置)上的字符“a”,字符位置为D31位置(即第31个字符位置)上的字符“b”,字符位置为D34位置(即第34个字符位置)上的字符“e”,字符位置为D35位置(即第35个字符位置)上的字符“f”。
同理,如图6所示,地址编码字符串中的第三字符具体可以包括:字符位置为D1位置(即第1个字符位置)上的字符“2”,字符位置为D3位置(即第3个字符位置)上的字符“5”,字符位置为D4位置(即第4个字符位置)上的字符“8”,字符位置为D5位置(即第5个字符位置)上的字符“2”,字符位置为D8位置(即第8个字符位置)上的字符“7”,字符位置为D9位置(即第9个字符位置)上的字符“5”,字符位置为D10位置(即第10个字符位置)上的字符“1”,字符位置为D12位置(即第12个字符位置)上的字符“2”,字符位置为D12位置(即第12个字符位置)上的字符“2”,字符位置为D14位置~D21位置(即第14个字符位置~第21个字符位置)上的字符“7”、字符“4”、字符“7”、字符“6”、字符“0”、字符“6”、字符“3”以及字符“9”,字符位置为D23位置~ D25位置(即第23个字符位置~第25个字符位置)上的字符“8”、字符“9”、字符“1”,字符位置为D27位置(即第27个字符位置)上的字符“0”,字符位置为D29位置~ D30位置(即第29个字符位置~第30个字符位置)上的字符“4”、字符“2”,字符位置为D32位置~ D33位置(即第32个字符位置~第33个字符位置)上的字符“6”、字符“5”,字符位置为D36位置~ D40位置(即第36个字符位置~第40个字符位置)上的字符“5”、字符“9”、字符“7”、字符“5”、字符“6”。
应当理解,在该地址编码字符串50b中,可以将所有的英文字符和数字字符统称为第二字符,如图6所示,该地址编码字符串中的第二字符可以包括D1位置~ D40位置上的字符,例如,字符“f”、字符“d”、字符“1”、字符“f”、字符“0”、字符“2”、字符“f”、字符“9”、字符“5”、字符“b”、字符“b”、字符“5”、字符“a”、字符“d”、字符“f”、字符“0”、字符“d”、字符“9”、字符“b”、字符“5”、字符“e”、字符“e”、字符“0”、字符“7”、字符“1”、字符“e”、字符“0”、字符“d”、字符“6”、字符“d”、字符“1”、字符“b”、字符“c”、字符“0”、字符“2”、字符“5”、字符“7”、字符“3”、字符“5”、字符“d”。
其中,可以理解的是,如图6所示,对于地址编码字符串50b中的N个第二字符而言,可以在这N个第二字符中依次将相应字符位置(即字符位置i)上的第二字符作为参考字符,例如,在将图6所示的第1个字符位置(即D1位置)上的字符“f”作为参考字符时,业务终端可以在该参考字符(例如,字符“f”)的字符值大于字符阈值(例如,在第二地址编码字符串所使用的进制为十六进制时,该字符阈值可以为十六进制数中的8)时,进一步执行上述图5所示的步骤S60-步骤S61,即可以在第一地址编码字符串(即图6所示的地址编码字符串50a)中获取相同字符位置上的字符,此时,从该第一地址编码字符串(即图6所示的地址编码字符串50a)中所获取到的第1个字符位置(即D1位置)上的字符为字符“2”,即当前所获取到的字符“2”并不归类为第一地址编码字符串中的第一字符,而归类为图6所示的第一地址编码字符串中的第三字符。所以,此时,业务终端可以执行上述图5所示的步骤S64,以维持该第1个字符位置(即D1位置)上的第三字符(例如,字符“2”) 的字符属性,即此时业务终端可以维持该第一地址编码字符串中,不对该第1个字符位置(即D1位置)上的第三字符的字符属性进行属性变更,这也意味着后续可以在图6所示的字符属性变更后的第一地址编码字符串中,维持当前所获取到的第1个字符位置(即D1位置)上的第三字符的字符值。
然后,业务终端可以对当前所遍历到的字符位置(即i=1)的字符位置进行递增处理(例如,进行加一处理),进而可以在第二地址编码字符串中,将新遍历到的另一字符位置(例如,i=2,即第2个字符位置,比如,D2位置)上的第二字符(例如,字符“d”)作为参考字符,进而可以重复执行上述图5所示的步骤S60-步骤S61,即可以在第一地址编码字符串(即图6所示的地址编码字符串50a)中获取相同字符位置上的字符,此时,从该第一地址编码字符串(即图6所示的地址编码字符串50a)中所获取到的第2个字符位置(即D2位置)上的字符为字符“d”,即当前所获取到的字符“d”可以归类为(即属于)图6所示的第一地址编码字符串中的第一字符。所以,此时,业务终端可以执行上述图5所示的步骤S62,以将该第2个字符位置(即D2位置)上的第一字符(例如,字符“d”) 的字符属性进行属性变更,即此时业务终端可以将该第一地址编码字符串中,第2个字符位置(即D2位置)上的第一字符的字符属性由第一字符属性(例如,上述小写类属性)变更为第二字符属性(例如,上述大写类属性),这也意味着后续可以在图6所示的字符属性变更后的第一地址编码字符串中,出现当前所获取到的第2个字符位置(即D2位置)上的字符属性为第二字符属性的第一字符(即出现字符属性变更后的第2个字符位置上的第一字符,例如,图6所示的字符“D”)。
比如,具体的,请参见图6,如图6所示,可以对D2位置上的第一字符(例如,字符“d”)进行字符属性变更处理,也可以对D7位置上的第一字符(例如,字符“a”)进行字符属性变更处理,还可以对D11位置上的第一字符(例如,字符“a”)进行字符属性变更处理、对D13位置上的第一字符(例如,字符“e”)进行字符属性变更处理、对D22位置上的第一字符(例如,字符“b”)进行字符属性变更处理,对D26位置上的第一字符(例如,字符“b”)进行字符属性变更处理以及对D28位置上的第一字符(例如,字符“a”)进行字符属性变更处理。
以此类推,如图6所示,对于当前所遍历到的第3(即i=3)个字符位置上的第二字符(例如,图6所示的字符“1”)而言,在将该第3(即i=3)个字符位置上的第二字符(例如,图6所示的字符“1”)作为参考字符时,业务终端可以通过上述图5所示的步骤S59,判定出该参考字符的字符值小于预设阈值,进而可以跳转执行上述图5所示的步骤S64,以在第一地址编码字符串中,维持该第3个字符位置(即D3位置)上的第三字符(例如,字符“5”) 的字符属性,即此时业务终端可以维持该第一地址编码字符串中,不对该第3个字符位置(即D3位置)上的第三字符的字符属性进行属性变更,这也意味着后续可以在图6所示的字符属性变更后的第一地址编码字符串中,维持当前所获取到的第3个字符位置(即D3位置)上的第三字符的字符值。
应当理解,在本申请实施例中,若字符值比对结果指示参考字符的字符值小于字符阈值,则可以在第一地址编码字符串中,跳过执行步骤S61,即无论此时,在该第一地址编码字符串中所获取到的相同字符位置(即字符位置i)上的字符是数字字符(即第三字符)还是英文字符(即第一字符),均可以直接通过步骤S64维持当前从该第一地址编码字符串中所获取到的相同字符位置(即字符位置i)上的字符的字符属性,进而可以维持当前从该第一地址编码字符串中所获取到的相同字符位置(即字符位置i)上的字符的取值(即字符值)保持不变。具体的,请参见图6,比如,在从第二编码字符串中所获取到的参考字符为第6个字符位置上的第二字符(例如,字符“2”),时,由于该第6个字符位置上的第二字符(例如,字符“2”)上的字符值小于参考阈值,所以,尽管此时从该第一编码地址字符串中所获取到的同一字符位置上的字符为第一字符(例如,图6所示的字符“d”),也无需执行上述图5所示的步骤S62,而是直接跳转执行上述图5所示的步骤S64,以维持当前从该第一地址编码字符串中所获取到的相同字符位置(即第6个字符位置)上的该字符“d”的字符属性,进而可以在图6所示的字符属性变更后的第一地址编码字符串中,出现维持当前所获取到的第6个字符位置(即D6位置)上的第一字符的字符值。
应当理解,本申请实施例还可以在基于目标业务地址确定初始业务地址为合法区块链地址时,基于合法区块链地址构建得到与交易业务相匹配的目标业务交易,进而可以将目标业务交易打包至第一区块,并在第一区块链所对应的区块链网络中对第一区块进行区块共识,得到第一区块的区块共识结果;若区块共识结果指示区块共识成功,将包含目标业务交易的第一区块上链至第一区块链。
可以理解的是,本申请实施例在基于上述区块链地址生成策略进行两次hex编码的过程中,提出了一种用于将小写字符反向转变成大写字符的字符转换算法,即本申请实施例可以通过该字符转换算法(即一种特殊的格式处理方式)将旧的hex地址(即上述第一次地址编码所得到的第一地址编码字符串)转换为新的hex地址。换言之,本申请实施例可以将目前第一地址编码字符串中的纯小写字符格式(即上述字符属性为小写类属性的地址格式)转换成另一种混合字符格式(即上述目标地址格式),进而可以生成一种大小写混合的hex地址,即前述新的地址,这样做的目的就是为了可以更有效地区分出某些地址相似的区块链地址。
可以理解的是,对于混合字符格式(即上述目标地址格式)而言,可以通过当前所生成的新的hex地址来验证旧的hex地址是否是按照该目标地址格式所构建得到的合法区块链地址,若是,则可以确保录入至上述业务界面上的这个合法区块链地址为有效、且不易产生地址混淆的资源接收地址,即本申请实施例可以在交易业务为上述转账交易业务时,通过该校验合法后的资源接收地址来避免无效地址或地址混淆,进而可以减少意外向无效地址或混淆地址误转移资金的风险,同时也方便了用户在交易过程中的地址输入,从而可以在交易过程中,有效的避免意外发送资金到错误的地址,而产生交易执行失败的现象。
由此可见,本申请实施例可以在获取到任意一个区块链地址(即初始业务地址,例如,上述地址A11)时,按照区块链地址生成策略进行两次地址编码,从而可以确保两次地址编码所得到的字节数量保持一致的两个地址编码字符串(即第一地址编码字符串可以与第二地址编码字符串)之间存在较大的字符差异性,这样,在通过判定出第二地址编码字符串中的某个字符位置(即字符位置i)上的字符(即第二字符)的字符值大于或者等于字符阈值时,可以反向对该第一地址编码字符串中的相同字符位置(即字符位置i)上的字符(即第一字符)字符属性进行变更(比如,可以将相同字符位置上的第一字符的字符属性由第一字符属性变更为第二字符属性),进而可以基于字符属性变更后的第一地址编码字符串,重新构建得到一个用于对初始业务地址(例如,地址A11)进行地址校验的目标业务地址(例如,地址A22)。换言之,本申请实施例可以通过区块链地址生成策略重新构建得到该目标业务地址,进而可以通过该重新构建得到的目标业务地址反向验证初始业务地址是否为合法区块链地址。这意味着本申请实施例在通过区块链地址生成策略生成用于进行地址校验的目标业务地址之后,可以通过该目标业务地址来确保与当前交易业务相关联的任意一个区块链地址(即初始业务地址)的地址合法性和有效性,从而可以进一步提升该交易业务的安全性。这样,后续在通过地址校验合格后的初始业务地址去构建得到目标业务交易时,可以确保该目标业务交易的交易合法性和安全性。
进一步的,请参见图7,图7是本申请实施例提供的另一种地址数据处理方法的方法流程图。该方法可以由用于进行地址校验的业务终端执行,该业务终端上所运行的客户端可以为与相应交易业务相匹配的业务客户端。应当理解,这里的业务终端可以为上述图2所对应实施例中的业务终端20a。其中,该地址数据处理方法至少可以包括以下步骤S201-步骤S211:
步骤S201,接收第二业务对象通过第二资源管理客户端发送的区块链账户地址,基于区块链账户地址确定字节数量为M的初始业务地址。
具体的,第一资源管理客户端可以接收第二业务对象通过第二资源管理客户端发送的区块链账户地址;其中,区块链账户地址中的字符串的字节数量为M;应当理解,区块链账户地址为第二业务对象在第一区块链上的链上账户地址;进一步的,第一资源管理客户端可以将字节数量为M的区块链账户地址,作为待录入至第一资源管理客户端的业务界面上的资源接收地址;进一步的,第一资源管理客户端可以在将资源接收地址录入至业务界面时,将资源接收地址确定为获取到字节数量为M的初始业务地址。
应当理解,这里的初始业务地址可以为业务终端所获取到的与上述资源转账业务相关联的区块链地址,比如,这里的初始业务地址可以为图4所示的与业务41a相关联的业务地址R1。
步骤S202,在获取到与交易业务相关联的字节数量为M的初始业务地址时,获取与交易业务相关联的区块链地址生成策略,基于区块链地址生成策略对初始业务地址进行第一地址编码处理,得到字符数量为N的第一地址编码字符串;第一地址编码字符串中的第一字符的字符属性为第一字符属性;M为大于1的正整数,N为M的整数倍;
步骤S203,对第一地址编码字符串进行哈希转换处理,得到字节数量为M的哈希转换地址,对哈希转换地址进行第二地址编码处理,得到字符数量为N的第二地址编码字符串;第二地址编码字符串中的第二字符的字符属性为第一字符属性;
步骤S204,在第二地址编码字符串中将字符位置i上的第二字符作为参考字符,将参考字符的字符值与第二地址编码字符串所关联的字符阈值进行对比,得到字符值比对结果;i为小于或者等于N的正整数;
步骤S205,若字符值比对结果指示参考字符的字符值大于或者等于字符阈值,则在第一地址编码字符串内的字符位置i上的字符为第一字符时,将字符位置i上的第一字符的字符属性由第一字符属性变更为第二字符属性;
步骤S206,基于字符位置i上的字符属性为第二字符属性的第一字符,构建得到用于对初始业务地址进行地址校验的目标业务地址。
其中,步骤S202-步骤S206的具体实现方式,可以参见上述图3所对应实施例中对步骤S101-步骤S105的描述,这里将不再继续进行赘述。
可选地,步骤S207,若字符值比对结果指示参考字符的字符值小于字符阈值,则在第一地址编码字符串中,将字符位置i上的第一字符的字符属性维持为第一字符属性。
步骤S208,基于字符位置i上的字符属性维持为第一字符属性的第一字符,构建得到用于对初始业务地址进行地址校验的目标业务地址。
应当理解,在本申请实施例中,若第一字符属性为英文字符所对应的小写类属性,则第二字符属性可以为英文字符所对应的大写类属性。反之,若第一字符属性为英文字符所对应的大写类属性,则第二字符属性可以为英文字符所对应的小写类属性。应当理解,本申请实施例可以将字符属性为大写类属性的英文字符称之为大写英文字符,并可以将字符属性为小写类属性的字符(例如,英文字符)称之为小写英文字符。可以理解的是,本申请实施例将不对编码所得到的第一地址编码字符串和第二地址编码字符串中的英文字符的具体字符属性进行限定。
其中,可以理解的是,在上述用于进行地址编码的地址编码组件(例如,上述地址编码组件5a)所使用的用于表示区块链地址的进制为十六进制时,由该地址编码组件(例如,上述地址编码组件5a)所编码得到的第一地址编码字符串和第二地址编码字符串中的字符均可以包括英文字符和数字字符。为便于理解,本申请实施例以上述第一字符属性为小写类属性为例,此时,这两个地址编码字符串中的英文字符,具体可以为字符属性为第一字符属性(即字符属性为小写类属性)的小写英文字符。
进一步的,为便于进行对这两个地址编码字符串中的字符串进行差异性区分,本申请实施例可以将最新编码得到的第二地址编码字符串中的数字字符和英文字符统称为第二字符,此外,本申请实施例还可以将第一地址编码字符串中的英文字符(例如,小写英文字符)统称为第一字符,并将第一地址编码字符串中的除第一字符之外的其他字符(例如,数字字符)统称为第三字符。
其中,可以理解的是,这里的第三字符是指第一地址编码字符串中的数字字符,且该数字字符的字符属性将不受第二地址编码字符串中相同字符位置上的第二字符的字符值所影响,即无论该第二地址编码字符串中相同字符位置上的第二字符(即参考字符)的字符值是大于字符阈值的,还是小于或者等于字符阈值的,均可以在该第一地址编码字符串中维持该第三字符的字符属性,这意味着此时,在该第一地址编码字符串中的相同字符位置上的第三字符的字符属性(即数字类属性)以及该第三字符的字符值(例如,上述图6所对应实施例中的D8位置上的字符“7”的字符值)均可以保持不变。
比如,可以理解的是,在第二地址编码字符串中的字符位置i上的第二字符(即参考字符)的字符值(例如,D35位置上的字符“2”)小于字符阈值时,即时在第一地址编码字符串中所获取到的相同字符位置(即字符位置i,此时,i=35)上的字符为第一字符(比如,从第一地址编码字符串中所获取到的上述图6所示的D35位置上的小写英文字符,例如,字符“f”)时,也无需对该第一地址编码字符串中相同字符位置(即字符位置i)上的第一字符的字符属性进行属性变更,即此时,业务终端可以将该字符位置i上的第一字符的字符属性维持为第一字符属性(即上述小写类属性)。
可选地,应当理解,本申请实施例还可以在字符值比对结果指示参考字符的字符值小于字符阈值,且该第一地址编码字符串中相同字符位置(即字符位置i)上的字符为第三字符(比如,该第三字符可以为十六进制中除第一字符之外的其他字符,这里的其他字符可以为数字字符,例如,数字字符的字符值为2)时,可以继续维持该第一地址编码字符串中相同字符位置(即字符位置i)上的第三字符的字符属性(即第三字符属性,比如,该第三字符属性可以为数字字符所对应的数字类属性),即此时,业务终端可以将该字符位置i上的第三字符(即数字字符)的字符值维持为2。
应当理解,对于上述步骤S205和步骤S207而言,一个指出可以在某个字符位置(即字符位置i)上的这个字符(即第一字符)的字符值大于或者等于字符阈值时,对该字符位置(即字符位置i)上的这个字符(即第一字符)的字符属性进行属性变更,反之,另一个则指出可以在这个字符位置(即字符位置i)上的这个字符(即第一字符)的字符值小于该字符阈值时,继续将该字符位置(即字符位置i)上的这个字符(即第一字符)的字符属性维持为第一字符属性(例如,小写字符这样的字符属性)。
这意味着对于第一次编码所得到的字符属性包含第一字符属性(例如,小写字符这样的字符属性)的地址编码字符串(即第一地址编码字符串)而言,可以通过第二次编码所得到字符属性包括第一字符属性的另一地址编码字符串(即第二地址编码字符串),来反向判定是否需要对该第一地址编码字符串中的某个字符位置(即字符位置i)上的第一字符的字符属性进行属性变更,从而可以通过属性变更或者属性未变更的这个第一地址编码字符串,来构建得到用于对初始业务地址进行地址校验的目标业务对象。
应当理解,本申请实施例在获取到区块链地址生成策略时,可以按照该区块链地址生成策略重新构建得到一个全新的目标业务地址,进而可以执行下述步骤S209,以通过该目标业务地址来反向判定(也可以称之为反向校验)初始业务地址是否为合法区块链地址。
步骤S209,通过目标业务地址对初始业务地址进行地址校验,在地址校验成功时,将初始业务地址确定为合法区块链地址。
其中,在初始业务地址为第一业务对象通过第一资源管理客户端录入至业务界面上的资源接收地址时,资源接收地址可以为第一资源管理客户端所获取到的由第二业务对象通过第二资源管理客户端发送的区块链账户地址;这里的区块链账户地址具体可以为第二业务对象在第一区块链上的链上账户地址。此时,第一资源管理客户端具体可以在目标业务地址中的地址字符的字符属性包括第一字符属性和第二字符属性时,将目标业务地址对应的地址格式作为目标地址格式; 进一步的,第一资源管理客户端可以获取与目标业务地址相关联的地址校验条件,基于地址校验条件识别初始业务地址的地址格式;进一步的,第一资源管理客户端可以在识别到初始业务地址的地址格式为目标地址格式时,基于目标业务地址中的地址字符和初始业务地址中的地址字符,对初始业务地址进行地址校验,得到地址校验结果;进一步的,若地址校验结果指示目标业务地址中的地址字符与初始业务地址中的地址字符均相同,则第一资源管理客户端可以确定目标业务地址与初始业务地址为相同地址,将录入至业务界面的初始业务地址,确定为满足地址校验条件的合法区块链地址。
为便于理解,进一步的,请参见图8,图8是本申请实施例提供的一种在业务界面上录入初始业务地址的场景示意图。如图8所示,在用户U1为上述第一业务对象时,在业务终端20a上所运行的资源管理客户端可以为上述第一资源管理客户端,可以理解的是,在该用户U1在该第一资源管理客户端所提供的可视化资源管理界面(例如,图8所示的业务界面800a)构建交易TX1时,可以将第二业务对象(例如,上述图2所对应实施例中的用户U2)通过第二资源管理客户端所发送来的区块链账户地址(例如,图8所示的地址8b)。应当理解,这里的地址8b可以为第二业务对象在第一区块链上的链上账户地址。
并可以在将该接收到的区块链账户地址(例如,图8所示的地址8b)录入至业务界面800a的过程中,将录入至该业务界面800a中的区块链账户地址(例如,图8所示的地址8b)作为该交易TX1中的资源接收地址(即图8所示的目的地址),从而可以将当前录入至该业务界面800a中的区块链账户地址(例如,图8所示的地址8b)作为待校验的初始业务地址。应当理解,业务终端20a可以通过上述区块链地址生成策略生成用于对该地址8b(即初始业务地址)进行地址校验的目标业务地址(例如,地址8b’),进而可以在通过目标业务地址(例如,地址8b’)确定该地址8b(即初始业务地址)为合法区块链地址时,在业务界面800a上显示该具备合法性的地址8b(即具备合法性的初始业务地址)。
同理,如图8所示,对于用于发起该交易TX1的用户U1而言,图8所示的地址8a可以为该第一业务对象在第二区块链上的对象账户地址。应当理解,在本申请实施例中,第一区块链和第二区块链可以为相同区块链,也可以为不同区块链,本申请实施例将不对第一区块链和第二区块链的具体区块链类型进行限定。
如图8所示,业务终端20a可以在获取到地址8a时,将该地址8a作为初始业务地址,以通过上述区块链地址生成策略生成用于对该地址8a(即初始业务地址)进行地址校验的目标业务地址(例如,地址8a’),进而可以在通过目标业务地址(例如,地址8a’)确定该地址8a(即初始业务地址)为合法区块链地址时,在业务界面800a上显示该具备合法性的地址8a(即具备合法性的初始业务地址)。
应当理解,第一资源管理客户端在将录入至业务界面的初始业务地址(例如,图8所示的地址8b和8a),确定为满足地址校验条件的合法区块链地址时,可以在业务界面上显示合法区块链地址。
可选地,若地址校验结果指示目标业务地址中的地址字符与初始业务地址中的地址字符存在不同,则第一资源管理客户端确定目标业务地址与初始业务地址为不同地址,并可以确定录入至业务界面的初始业务地址不满足地址校验条件;进一步的,第一资源管理客户端可以将不满足地址校验条件的初始业务地址确定为非法区块链地址,在业务界面上显示针对非法区块链地址的风险管理页面;风险管理页面用于指示第一业务对象对非法区块链地址进行风险管理;风险管理包括删除显示在业务界面上的非法区块链地址,以及向第二业务对象返回针对非法区块链地址的通知消息中的一种或者多种。
步骤S210,基于合法区块链地址构建得到与交易业务相匹配的目标业务交易。
具体的,第一资源管理客户端可以在第一资源管理客户端的业务界面上,创建与转账交易业务相关联的第一业务交易(例如,业务界面800a中的交易TX1),并可以将合法区块链地址(例如,图8所示的进行地址校验后的合法地址8b)作为第一业务交易的交易参数中的目的交易地址(即上述图8所示的目的地址);合法区块链地址为第二业务对象在第一区块链上的链上账户地址;进一步的,第一资源管理客户端可以获取第一资源管理客户端所对应的第一业务对象在第二区块链上的对象账户地址(例如,图8所示的地址8a),并可以将对象账户地址直接作为第一业务交易的交易参数中的发起交易地址,可选地,本申请实施例也可以在对该地址8a进行地址校验后,确定该地址8a为进行地址校验后的合法区块链地址的情况下,将该具备合法性的对象账户地址(例如,图8所示的地址8a)作为第一业务交易的交易参数中的发起交易地址(例如,图8所示的起始地址);进一步的,第一资源管理客户端可以获取待由第一业务对象转移给第二业务对象的虚拟资源(例如,图8所示的交易类型为转账交易类型下的交易资源数量为Y0的虚拟资源),并可以将虚拟资源的资源额度(例如,图8所示的Y0)作为第一业务交易的交易参数中的资源转移量;进一步的,第一资源管理客户端可以将交易参数包括目的交易地址、发起交易地址以及资源转移量的第一业务交易,作为与转账交易业务相匹配的目标业务交易(例如,这里的目标业务交易可以为图8所对应实施例中的交易TX1)。
应当理解,在同一区块链网络中,为避免同一区块链网络中的两个区块链地址之间存在地址格式混淆现象,本申请实施例可以采用上述步骤S201-步骤S208的步骤判定当前所获取到的来自于同一区块链网络的区块链地址(即初始区块链地址)是否为合法区块链地址,进而可以在确定出为合法区块链地址时,进一步执行上述步骤S210,以确保构建得到的与转账交易业务相匹配的目标业务交易的交易合法性和可靠性。这样,对于运行有该第一资源管理客户端的业务终端而言,可以在第二区块链所对应的区块链网络与第一区块链所对应的区块链网络为同一区块链网络时,进一步执行下述步骤S211,以将当前所构建得到的目标业务交易发送给同一区块链网络中的区块链节点设备,这里的区块链节点设备可以为图8所示的区块链网络100a中的节点设备,例如,节点设备10a。如图8所示的区块链网络100a可以为上述图1所对应实施例中的区块链网络。
步骤S211,将目标业务交易发送给第一区块链上的区块链节点设备,以使区块链节点设备在将目标业务交易打包至第一区块时,将包含目标业务交易的第一区块上链至第一区块链。
可以理解的是,在同一区块链网络中,为避免区块链地址的高度相似或者相同的现象,本申请实施例可以将接收到的第二业务对象在第一区块链上的区块链地址作为待校验的初始业务地址,进而可以在通过上述目标业务地址确定该初始业务地址为合法区块链地址时,将该合法区块链地址作为目标业务交易的交易参数(例如,上述目的交易地址),以确保后续发送给区块链节点设备的这笔目标业务交易的交易执行可靠性和准确性。这里的第一区块链可以为图8所示的区块链10e。
应当理解,在跨链进行资源转账时,可以在构建交易TX1(即跨链资源转账业务所对应的第二业务交易)的过程中,对在图8所示的业务界面800a中所录入的来源于不同区块链所对应的区块链网络中的区块链地址进行地址校验和地址区分。
可以理解的是,对于当前所获取到的来自于不同区块链网络中的任意两个区块链地址而言,为避免这两个区块链网络地址的所对应的地址字符串中的字符相似,所产生的地址格式混淆的现象,本申请实施例可以对当前所获取到的任意两个区块链地址,例如,上述图8所示的地址8a可以为业务对象(即第一业务对象,例如,用户U1)在第二区块链上的对象账户地址,而地址8b可以为另一业务对象(即第二业务对象,例如,用户U2)在第二区块链上的链上账户地址。那么,为确保当前所获取到的这两个区块链地址的地址有效性和合法性,则可以采用上述区块链地址生成策略分别生成用于对这两个区块链地址进行地址校验的目标业务地址(例如,上述地址8a’和地址8b’)。这样,当通过目标业务地址(例如,上述地址8a’和地址8b’)确定上述初始业务地址(例如,地址8a和地址8b)为具备合法性的初始业务地址之后,可以针对图8所示的业务界面800a执行交易确认操作,以将构建得到上述第二业务交易作为目标业务交易提交给第二区块链(例如,图8所示的区块链10e)所对应的区块链网络,这样,图8所示的区块链节点设备在获取到该目标业务交易之后,可以通过该用户U1的公钥信息对该目标业务交易中所携带的签名信息进行签名验签,进而可以在签名验签成功后,可以基于上述跨链资源转移业务调用跨链桥合约,进而可以通过跨链桥合约从地址8a中获取该用户U1(即第一业务对象)所需要转移的虚拟资源,并通过跨链桥合约将该在该用户U1(即第一业务对象)在第二区块链上的这笔虚拟资源进行资源锁定,以生成针对该目标业务交易的跨链转移事件,并可以通过跨链桥合约将该跨链转移事件发送给另一区块链(即第一区块链)上的区块链节点设备,这样,第一区块链上的节点设备在获取到针对该目标业务交易的跨链转移事件时,则可以从该跨链转移事件中获取该目标业务交易,并调用该第一区块链上的跨链桥合约执行该目标业务交易,以生成与该用户U1所锁定的虚拟资源具有相同资源转移量的虚拟映射资源,进而可以将通过该第一区块链上的跨链桥合约将生成的与该用户U1所锁定的虚拟资源具有相同资源转移量的虚拟映射资源转入到图8所示的地址8b。这样,当另一区块链节点设备在通过跨链桥合约生成针对该目标业务交易的资源转移完成事件信息时,可以通过该跨链桥合约将该资源转移完成事件信息返回给图8所示的节点设备10a,以使节点设备10a可以将该用户U1(即第一业务对象)在第二区块链上的这笔虚拟资源进行资源销毁,进而可以在将针对该资源转移完成事件信息的通知信息返回给图8所示的业务终端20a。
这样,后续用户U2(即第二业务对象)在通过第二资源管理客户端录入该地址8b时,则可以从用户U2(即第二业务对象)在第一区块链上的地址8b中,获取到存储在该地址8b中的虚拟映射资源,应当理解,这里的虚拟映射资源的资源数量可以为图8所示的Y0。
由此可见,在本申请实施例中,运行有该第一资源管理客户端的业务终端可以在获取到任意一个区块链地址(即初始业务地址,例如,上述地址A11)时,按照区块链地址生成策略进行两次地址编码,从而可以确保两次地址编码所得到的字节数量保持一致的两个地址编码字符串(即第一地址编码字符串可以与第二地址编码字符串)之间存在较大的字符差异性,这样,在通过判定第二地址编码字符串中的某个字符位置(即字符位置i)上的字符(即第二字符)的字符值是否大于或者等于字符阈值,可以反向确定是否需要对该第一地址编码字符串中的相同字符位置(即字符位置i)上的字符(即第一字符)字符属性进行属性变更,比如,若需要进行属性变更,则可以将该第一地址编码字符串中的相同字符位置(即字符位置i)上的第一字符的字符属性由第一字符属性变更为第二字符属性。反之,若不需要进行属性变更,则需要将该第一地址编码字符串中的相同字符位置(即字符位置i)上的第一字符的字符属性保持为第一字符属性。可以理解的是,本申请实施例可以通过属性变更或者属性不变更的第一地址编码字符串,来重新构建得到一个用于对初始业务地址(例如,地址A11)进行地址校验的目标业务地址(例如,地址A22)。这意味着本申请实施例可以在通过区块链地址生成策略重新构建得到该目标业务地址时,还可以进一步通过该重新构建得到的目标业务地址反向验证初始业务地址是否为合法区块链地址,从而可以在反向确定出初始业务地址为合法区块链地址时,构建得到用于发送给区块链节点设备的目标业务交易,换言之,本申请实施例可以通过重新生成的目标业务地址确保当前所获取到的与当前交易业务相关联的任意一个区块链地址(即初始业务地址)的安全性和可靠性,并可以在交易构建过程中,进一步提升构建得到的目标业务交易的交易安全性。
进一步的,请参见图9,图9是本申请实施例提供的又一种地址数据处理方法的方法流程图。该方法可以由用于进行地址校验的业务终端执行,该业务终端上所运行的客户端可以为与相应交易业务相匹配的业务客户端。其中,可以理解的是,在一种或者多种可实现方式中,在交易业务包括合法开发业务时,该业务终端上所运行或者部署的客户端可以具体包括该合法开发业务所对应的合约开发终端,此时,该业务终端所对应的第一业务对象具体可以为合约开发对象。应当理解,这里的业务终端可以为上述图2所对应实施例中的业务终端20a。其中,该地址数据处理方法至少可以包括以下步骤S301-步骤S311:
步骤S301,在合约开发客户端上输出与合约开发业务相关联的合约开发界面时,响应于合约开发对象针对合约开发界面触发的合约开发操作,从业务终端相关联的区块链节点设备上获取用于开发业务合约的合约模板,在合约开发界面上显示合约模板中的合约字段;
其中,业务合约为合约开发业务所关联的转账交易业务对应的资源转移合约;
步骤S302,在合约字段中查找与地址类型字段相匹配的合约字段,将查找到的合约字段作为与转账交易业务相关联的地址字段;
步骤S303,将合约开发对象为地址字段所配置的字节数量为M的业务配置地址,作为初始业务地址;
其中,业务配置地址包括合约调用地址和合约授权调用者的链上账户地址;合约调用地址为合约授权调用者请求执行转账交易业务时所需要调用的资源转移合约的地址;合约授权调用者为具备调用资源转移合约权限的业务对象。
应当理解,本申请实施例为确保该业务合约开发的可信度,需要再开发业务合约的过程中,对该开发的业务合约进行合约编译处理,以确保经过该合约编译处理之后所得到的业务合约的可信度。这意味着本申请实施例可以在合约编译过程中,在当前开发的业务合约(例如,资源转移合约)的可信合约代码(即可以模板中的合约字段)中,给一个地址类型(即address)类型的变量赋值,即本申请实施例可以在合约字段中查找与地址类型字段相匹配的合约字段,进而可以将查找到的合约字段作为与转账交易业务相关联的地址字段(这里的地址字段即为address类型变量),从而可以将为这里的地址字段所配置的字节数量为M的业务配置地址,作为初始业务地址,以便于后续可以通过下述步骤S304-步骤S307来重新生成一个用于对该初始业务地址进行地址校验的目标业务地址。
步骤S304,在获取到与交易业务相关联的字节数量为M的初始业务地址时,获取与交易业务相关联的区块链地址生成策略,基于区块链地址生成策略对初始业务地址进行第一地址编码处理,得到字符数量为N的第一地址编码字符串;第一地址编码字符串中的第一字符的字符属性为第一字符属性;M为大于1的正整数,N为M的整数倍;
步骤S305,对第一地址编码字符串进行哈希转换处理,得到字节数量为M的哈希转换地址,对哈希转换地址进行第二地址编码处理,得到字符数量为N的第二地址编码字符串;第二地址编码字符串中的第二字符的字符属性为第一字符属性;
步骤S306,在第二地址编码字符串中将字符位置i上的第二字符作为参考字符,将参考字符的字符值与第二地址编码字符串所关联的字符阈值进行对比,得到字符值比对结果;i为小于或者等于N的正整数;
步骤S307,若字符值比对结果指示参考字符的字符值大于或者等于字符阈值,则在第一地址编码字符串内的字符位置i上的字符为第一字符时,将字符位置i上的第一字符的字符属性由第一字符属性变更为第二字符属性;
可选的,可以理解的是,运行有合约开发客户端的业务终端还可以在获取到上述第一地址编码字符串和第二地址编码字符串时,遍历该在第一地址编码字符串中的每个字符,并将遍历到的字符位置i上的字符作为待处理字符,并可以在该待处理字符为第一字符(例如,英文字符,具体可以为上述小写英文字符)时,进一步判定该第二地址编码字符串中的相同字符位置(即字符位置i)上的字符的字符值是否大于或者等于字符阈值,进而可以在确定该第二地址编码字符串中的相同字符位置(即字符位置i)上的字符的字符值大于或者等于字符阈值时,对该字符位置i上的第一字符的字符属性进行属性变更,比如,可以将该字符位置i上的第一字符的字符属性由第一字符属性变更为第二字符属性,从而可以基于属性变更后的第一字符执行下述步骤S308。
步骤S308,基于字符位置i上的字符属性为第二字符属性的第一字符,构建得到用于对初始业务地址进行地址校验的目标业务地址。
其中,步骤S304-步骤S308的具体实现方式,可以参见上述图3所对应实施例中对步骤S101-步骤S105的描述,这里将不再继续进行赘述。
可选的,可以理解的是,在本申请实施例中,若字符值比对结果指示参考字符的字符值小于字符阈值,则在第一编码字符串所包含的N个第一字符中,将字符位置i上的第一字符的字符属性维持或者保持为第一字符属性。
步骤S309,通过目标业务地址对初始业务地址进行地址校验,在地址校验成功时,将初始业务地址确定为合法区块链地址;
步骤S310,基于合法区块链地址构建得到与交易业务相匹配的目标业务交易。
应当理解,在该业务交易具体包括合约开发业务时,与该合约开发业务相匹配的目标业务交易具体可以包括合约部署交易,该合约部署交易具体是指用于将由该合约开发对象所开发的智能合约部署在区块链上的合约部署交易。这样,当合约开发对象通过业务终端上所运行的合约开发终端开发好业务合约(例如,上述资源转移合约)之后,就可以将该开发好业务合约(例如,上述资源转移合约)上链至区块链上。这样,对于区块链所对应区块链网络中的各个区块链节点而言,就可以从区块链上下载并部署该业务合约(例如,上述资源转移合约或者上述跨链桥合约)。
这样,后续当区块链(例如,上述第一区块链)上的某个区块链节点,在接收到某个业务对象通过资源管理客户端所发送来的用于在同一区块链网络中进行资源转移的资源转移交易之后,就可以将该资源转移交易添加到交易池,以便于后续可以在交易打包阶段,将包含该资源转移交易的业务交易批量打包至某个区块。然后,该区块链网络中的区块链节点就可以在区块共识阶段进一步调用该资源转移合约来执行该区块中的资源转移交易,以得到该资源转移交易对应的资源执行结果,直至完成对该区块的区块共识时,可以将包含该资源转移交易的区块上链至区块链(例如,第一区块链)。
可选地,步骤S311,在基于目标业务地址确定初始业务地址为非法区块链地址时,在合约开发界面上显示资源转移合约对应的编译失败提示信息。
应当理解,本申请实施例还可以在通过目标业务地址对初始业务地址进行地址校验之后,若确定出初始业务地址为非法区块链地址,则可以通过上述合约开发客户端中所集成的编译器生成针对当前开发的业务合约(即资源转移合约)的编译失败提示信息,进而可以在该合约开发客户端所输出的合约开发界面上显示该资源转移合约对应的编译失败提示信息。
为便于理解,进一步的,请参见图10,图10是本申请实施例提供的一种在合约开发过程中输出编译失败提示信息的场景示意图。其中,在业务合约的合约开发过程中,用于开发该业务合约的合约开发界面可以为图10所示的合约开发界面900a。如图10所示,合约开发对象(即第一业务对象)可以在响应于针对该合约开发界面900a触发的合约开发操作,以从该业务终端上所运行的合法开发客户端相关联的区块链节点设备上,获取用于开发业务合约的合约模板,进而可以在该合约开发界面900a上显示当前所获取到的合约模板中的合约字段;可以理解的是,这里的业务合约可以为合约开发业务所关联的转账交易业务对应的资源转移合约。进一步的,业务终端可以在当前所显示的合约字段中查找与地址类型字段相匹配的合约字段,并可以将查找到的合约字段作为与转账交易业务相关联的地址字段(例如,图10所示的地址字段9a);然后,业务终端可以将合约开发对象为该地址字段所配置的字节数量为M的业务配置地址(例如,图10所示的业务配置地址9b),作为初始业务地址。进一步的,运行有合约开发客户端的业务终端可以在该合约开发过程中,调用编译器,以通过该编译器中部署的上述区块链地址生成策略生成用于对该业务配置地址9b进行地址校验的目标业务地址。这样,在通过目标业务地址确定该业务配置地址9b为非法区块链地址时,可以在图10所示的合约开发界面900a输出针对该非法区块链地址的编译失败提示信息9c。
应当理解,本申请实施例可以在通过编译器进行合约编译的过程中,在确定当前在该可信合约代码中所赋值的这个初始业务地址校验不通过(即编译失败)时,对该初始业务地址进行报错处理,进而可以将报错处理的初始业务地址视为无效地址或者不满足地址校验条件的非法区块链地址,即此时,在该可信合约代码中确定当前所赋值的这个初始业务地址的地址格式并不是目标地址格式,这意味着该初始业务地址并不是基于上述区块链地址生成策略所生成的与目标地址格式相匹配的合法区块链地址,从而可以将地址格式部位目标地址格式的该初始业务地址视为无效地址或者不满足地址校验条件的非法区块链地址。
其中,可以理解的是,本申请实施例可以在业务合约开发过程中,为地址变量赋值一个20字节的区块链地址,并可以将赋值给地址变量的这个区块链地址作为初始业务地址,进而可以通过上述区块链地址生成策略生成目标地址。其中,对于业务终端中部署的业务客户端(例如,合约开发客户端)而言,通过上述区块链地址生成策略生成目标地址的另一种可实现方式可以描述为:
1、给定一个20字节的地址(例如,图10所示的业务配置地址9b,该业务配置地址9b可以为一个以ox开头的20字节的区块链地址);
2、将该地址(例如,业务配置地址9b)使用hex编码,所有字符使用小写,获得使用hex编码的hex地址(即这里的hex地址所对应的地址字符串可以为40字符的字符串,即这里的40字符的字符串可以为上述第一地址编码字符串);
3、计算hex地址的哈希,获得20字节哈希(这里的20字节哈希可以为上述哈希转换地址);
4、将20字节哈希使用hex编码,获得hex哈希(这里的hex哈希为40字符的另一字符串,即上述第二地址编码字符串),注意,在以字节为单位,对20字节哈希使用hex编码之后,字符数量会加倍。
5、遍历hex地址(即上述第一地址编码字符串)的每个字符,对于第i个字符,检查hex地址的第i个字符是否为第一字符(即英文字符),且hex哈希(即上述第二地址编码字符串)的第i个字符的值(取值范围0123456789abcdef的十六进制数)是否大于或者等于8(即上述字符阈值),若是(即hex地址的第i个字符为第一字符,且hex哈希的第i个字符的值大于或者等于8),则将hex地址(即上述第一地址编码字符串)的第i个字符转为大写;否则,保持不变。
应当理解,在第一地址编码字符串中的第一字符为字符值大于9的英文字符,在第一地址编码字符串中的第三字符为字符值小于或者等于9的英文字符。
6、获得一个新的hex地址(即该新的hex地址为字符属性变更后的hex地址,此时,该新的hex地址所对应的地址字符串中包含大、小写字符),在该新的hex地址前加上0x前缀,可以获得目标地址。
应当理解,对于这里的新的hex地址(其中包含大、小写字符的字符属性变更后的第一地址编码字符串)和上述旧的hex地址(其中,包含小写字符的第一地址编码字符串)而言,由于都是采用hex编码所得到的,所以,本申请实施例对于这两个新旧hex地址而言,均可以通过hex编码回去,以得到同一个20字节的地址。
具体的,运行有合约开发客户端的业务终端在获取到地址(例如,业务配置地址9b)时,对该地址(例如,业务配置地址9b)使用hex编码,得到hex地址,进而可以通过上述区块链地址生成策略生成新的hex地址,代码实现方式描述如下:
constcreateKeccakHash=require('keccak') // 使用语句require('keccak')引入Keccak(一类哈希算法的总称)哈希算法库,并赋值给常量createKeccakHash;
// 定义方法,用于将一个地址转化为本申请实施例所定义的地址格式(即上述目标地址格式),其中,输入的地址(例如,图10所示的业务配置地址9a)的地址格式可以为hex 编码后的地址格式,此时,业务配置地址9a=0x2d582da751a2e74760639b891b0a42b65ef59756;
functiontoChecksumAddress (address) {
// 将赋值给address类型的地址变量(即上述地址字段)的地址(例如,业务配置地址9a),编码转化为全小写,并将前缀0x删除,得到hex地址(即上述第一地址编码字符串), 此时,hex地址可以用下述变量“address”表示,此时,hex地址= 2d582da751a2e74760639b891b0a42b65ef59756;
address=address.toLowerCase().replace('0x', '')
// 使用上述常量createKeccakHash获取'keccak256'哈希算法实例,并使用该'keccak256'哈希算法实例计算上述hex地址的哈希,以获得32字节哈希,进而可以在32字节哈希中取前20字节哈希(即前20字节哈希为上述哈希转换地址),并使用hex编码,获得40字符的hex哈希(即上述第二地址编码字符串),这40字节的hex哈希可以用下述变量“hash”表示;
varhash=createKeccakHash('keccak256').update(address).digest('hex')
// 定义返回值(这里的返回值可以用下述变量“ret”表示),并使用0x作为前缀;
varret='0x'
// 遍历hex地址(即下述变量“address”所对应的第一地址编码字符串)的每个字符;
for(vari=0; i<address.length; i++) {
// 对于hex地址中的第i个字符(即上述字符位置i上的字符) ;
// 检查hex哈希的第i个字符的值(取值范围0123456789abcdef的十六进制数)是否大于等于8(即上述字符阈值),且hex地址的第i个字符是否为英文字符(即上述第一字符),若为英文字符,则hex地址的第i个字符的字符值会大于9,反之,则hex地址的第i个字符为上述数字字符;
if (parseInt(hash[i], 16)>= 8&&parseInt(address[i], 16)>9){
// 若是,则将hex地址中的第i个字符(即上述第一编码字符串中的字符位置i上的第一字符)转为大写,并拼接到返回值 ret 后面;
ret+=address[i].toUpperCase()
}else{
// 否则,则将第一次编码所得到的hex地址的第i个字符,直接拼接到返回值 ret后面;
ret+=address[i]
}
}
// 将返回值ret作为目标地址(即上述目标业务地址)返回;
returnret
}
由此可见,本申请实施例可以通过定义变量“ret”来存储用于构成目标业务地址的新hex地址,这里的新hex地址是基于上述区块链地址生成策略所生成的地址格式为上述目标地址格式的地址编码字符串,这里用于构成目标业务地址的新hex地址是由上述字符属性变更后的第一地址编码字符串所确定的。应当理解,在本申请实施例中所使用的哈希编码方法可以包含但不限于从Keccak(一类哈希算法的总称)哈希算法库中所获取到的'keccak256'哈希算法实例。
由此可见,本申请实施例可以在业务合约(即上述资源转移合约)的开发过程中,将字节数量为M的业务配置地址(比如,这里可以为一个随机生成的虚拟地址,也可以为一个真实的用于请求调用该资源转移合约的合约调用地址)赋值给地址字段(这里的地址字段即为address类型变量),进而可以将赋值给该地址字段的业务配置地址作为初始业务地址。这样,运行有合约开发客户端的业务终端可以通过编译器在合约编译过程中,将该初始业务地址作为待校验的初始业务地址,进而可以在基于上述区块链地址生成策略生成用于对该初始业务地址进行地址校验的目标业务地址之后,通过该目标业务地址对该初始业务地址进行地址校验,以判定该初始业务地址是否为基于上述区块链地址生成策略所生成的与目标地址格式相匹配的合法区块链地址。如果是,则可以基于该合法区块链地址构建得到与当前交易业务(即合约开发业务)相匹配的目标业务交易(即用于将与该合法区块链地址相关联的业务合约部署到区块链上的合约部署交易)。由此可见,本申请实施例可以在合约开发过程中,通过重新构建得到的地址格式为目标地址格式的目标业务地址,来校验当前赋值至可信合约代码中的地址字段的业务配置地址的有效性和合法性,进而可以通过具备有效性和合法性的业务配置地址,来确定当前开发的业务合约的有效性和合法性,进而可以以交易的形式,将当前开发好的业务合约部署到区块链,换言之,本申请实施例可以在合约开发过程中,确保后续需要上链至区块链上的业务合约的安全性和可靠性。
进一步的,请参见图11,图11是本申请实施例提供的再一种地址数据处理方法的方法流程图。该方法可以由用于进行地址校验的业务终端执行,该业务终端上所运行的客户端可以为与相应交易业务相匹配的业务客户端。其中,可以理解的是,在一种或者多种可实现方式中,在交易业务包括数据交互业务时,该业务终端上所运行或者部署的客户端可以具体包括该数据交互业务所对应的数据交互客户端(例如,第一数据交互客户端),此时,该业务终端所对应的第一业务对象具体可以为交互数据发送对象。应当理解,这里的业务终端可以为上述图2所对应实施例中的业务终端20a。其中,该地址数据处理方法至少可以包括以下步骤S401-步骤S412:
步骤S401,在第一业务对象与第二业务对象之间存在数据交互关系时,获取与第二业务对象相关联的公钥列表,将从公钥列表中所获取到的第二业务对象的公钥信息作为待比对公钥信息;
步骤S402,从与第一数据交互客户端相关联的可信机构中,获取与第二业务对象相关联的可信证书,将从可信证书中所获取到的第二业务对象的公钥信息作为可信公钥信息;
步骤S403,在待比对公钥信息与可信公钥信息保持一致时,确定公钥列表中所存储的第二业务对象的公钥信息为合法公钥信息;
步骤S404,在获取到第一业务对象用于向第二业务对象发送的数据交互信息时,通过合法公钥信息对数据交互信息进行数据加密处理,得到与数据交互业务相关联的数据加密信息;
步骤S405,基于合法公钥信息,确定第二业务对象在区块链上的区块链账户地址,在区块链账户地址的字节数量为M时,将区块链账户地址作为与交易业务中的数据交互业务相关联的初始业务地址。
步骤S406,在获取到与交易业务相关联的字节数量为M的初始业务地址时,获取与交易业务相关联的区块链地址生成策略,基于区块链地址生成策略对初始业务地址进行第一地址编码处理,得到字符数量为N的第一地址编码字符串;第一地址编码字符串中的第一字符的字符属性为第一字符属性;M为大于1的正整数,N为M的整数倍;
步骤S407,对第一地址编码字符串进行哈希转换处理,得到字节数量为M的哈希转换地址,对哈希转换地址进行第二地址编码处理,得到字符数量为N的第二地址编码字符串;第二地址编码字符串中的第二字符的字符属性为第一字符属性;
步骤S408,在第二地址编码字符串中将字符位置i上的第二字符作为参考字符,将参考字符的字符值与第二地址编码字符串所关联的字符阈值进行对比,得到字符值比对结果;i为小于或者等于N的正整数;
步骤S409,若字符值比对结果指示参考字符的字符值大于或者等于字符阈值,则在第一地址编码字符串内的字符位置i上的字符为第一字符时,将字符位置i上的第一字符的字符属性由第一字符属性变更为第二字符属性;
步骤S410,基于字符位置i上的字符属性为第二字符属性的第一字符,构建得到用于对初始业务地址进行地址校验的目标业务地址。
步骤S411,在基于目标业务地址确定初始业务地址为合法区块链地址时, 将数据加密信息和区块链账户地址添加至用于向区块链上的区块链节点设备发送的数据交互交易;
步骤S412,将数据交互交易发送给区块链节点设备。
应当理解,运行有上述数据交互客户端(例如,第一数据交互客户端)的业务终端可以在将数据交互交易发送给区块链节点设备之后,该区块链节点设备可以进一步在获取到第二业务对象(即第二业务对象通过另一数据交互客户端,例如,第二数据交互客户端)发送的交互信息查询请求时,基于交互信息查询请求中所携带的交易信息查询地址(即第二业务对象在该第二数据交互客户端的交互界面上所录入的区块链地址),在区块链上查询与交易信息查询地址相匹配的链上账户地址,且在查询到链上账户地址为区块链账户地址(即上述通过地址校验之后,在数据交互交易中所写入的合法区块链地址)时,可以进一步将该数据交互交易中所携带的数据加密信息返回给第二业务对象对应的第二数据交互客户端;这样,第二数据交互客户端可以进一步通过第二业务对象的私钥,对该数据加密信息进行解密处理,以解密得到数据交互信息;交互信息查询请求为第二数据交互客户端在确定由第二业务对象所录入的交易信息查询地址为合法查询地址后所发送的。
应当理解,本申请实施例可以在交易业务为上述数据交互业务时,在第一业务对象(例如,上述图2所对应实施例中的用户U1)与第二业务对象(例如,上述图2所对应实施例中的用户U2)之间存在数据交互关系时,通过第一业务对象所对应的第一数据交互客户端获取与第二业务对象相关联的公钥列表,进而可以将从公钥列表中所获取到的该用户U2的公钥信息作为待比对公钥信息。应当理解,在本申请实施例中,为确保第一业务对象向第二业务对象所发送的数据交互信息(例如,上述电子票据中的核心数据信息)的安全性和可靠性,本申请实施例可以进一步从可信机构中,获取该用户U2的可信证书,进而可以将从可信证书中所获取到的该用户U2的公钥信息作为可信公钥信息,这样,运行有第一数据交互客户端的业务终端可以进一步判定自己本地所存储的公钥列表中的该用户U2的公钥信息是否与可信公钥信息保持一致,如果保持一致,则可以确定该用户U1所对应的业务终端的本地内存中所存储的公钥列表中的该用户U2的公钥信息为合法公钥信息,进而可以基于该合法公钥信息来对需要发送的数据交互信息进行数据加密处理,以得到与当前数据交互业务相关联的数据加密信息,可以理解的是,本申请实施例可以基于该合法公钥信息进一步确定出该第二业务对象在区块链(例如,上述第一区块链)上的区块链账户地址,进而可以将确定出的区块链账户地址作为上述待校验的初始业务地址,这样,运行有第一数据交互客户端的业务终端在基于上述区块链地址生成策略确定该初始业务地址为合法区块链地址时,可以将该数据加密信息和具备合法性的区块链账户地址添加至用于向区块链上的区块链节点设备发送的数据交互交易,进而可以在将该数据交互交易上链通过区块链节点设备上链至区块链时,可以使该第二业务对象通过第二数据交互客户端上所录入的交易信息查询地址,在该区块链上查询到与该交易信息查询地址相匹配的区块链账户地址中的数据交互交易,进而可以将该数据交互交易或者该数据交互交易中所携带的数据加密信息返回给第二数据交互客户端,这样,第二业务对象可以通过自己的私钥信息对该数据加密信息进行数据解密,以解密得到上述数据交互信息(例如,电子票据中的核心票据信息,或者用于进行文档共享的电子文档中的文档内容信息等),进而可以通过上述地址校验的方式确保获取到的数据交互信息的安全性和可靠性。
应当理解,在本申请实施例中,为确保数据交互交易中的数据加密信息获取的安全性和可靠性,本申请实施例所涉及的第二数据交互客户端在获取到交易信息查询地址时,也可以在采样上述区块链地址生成策略生成用于对该交易信息查询地址进行地址校验的目标业务地址。应当理解,第二时间交互客户端通过区块链地址生成策略生成用于对该交易信息查询地址进行地址校验的目标业务地址的具体实现方式,可以参见上述图5所对应实施例中构建得到目标业务地址的具体过程的描述,这里将不再继续进行赘述。
由此可见,本申请实施例通过在第一数据交互客户端侧构建数据交互交易的过程中,将具备合法性的该第二业务对象的区块链账户地址添加至数据交互交易,可以指定后续上链至区块链上的该数据交互交易对第二业务对象可见,这样,第二业务对象后续可以通过在第二数据交互客户端侧所录入的与该区块链账户地址相匹配且合法的交易信息查询地址来清分到上述数据交互交易,进而可以将该数据交互交易中的数据加密信息返回给第二数据交互客户端。其中,可以理解的是,为确保交易清分的安全性,即确保该第二业务对象可以清分到与自己的区块链账户地址相匹配的数据交互交易,本申请实施例还可以在第二数据交互客户端中,通过区块链账户地址来进行身份验证,进而可以在确定在该身份验证场景下,可以对第二业务对象在第二数据交互客户端上所录入的区块链地址(即上述交易信息查询地址)进行地址校验,进而可以在地址校验成功的情况下,确保第二业务对象具备从区块链上与该交易信息查询地址相匹配的区块链地址中查询并获取到数据交互交易或者数据交互交易中所携带的数据加密信息的权限,这样,第二业务对象在获取到数据加密信息时,就可以通过该第二业务对象的区块链地址所对应的公钥信息所关联的私钥信息,来对该数据加密信息进行解密处理,以在数据交互场景下确保用于进行数据交互的数据交互信息的安全性和可靠性。
进一步地,请参见图12,图12是本申请实施例提供的一种地址数据处理装置的结构示意图。该地址数据处理装置1可以是运行于计算机设备中的一个计算机程序(包括程序代码),例如地址数据处理装置1为一个应用软件;该地址数据处理装置1可以用于执行图3、图7、图9或者图11所示的方法。如图12所示,该地址数据处理装置1可以包括:第一地址编码模块11,第二地址编码模块12,参考字符确定模块13,字符属性变更模块14和目标地址构建模块15;
第一地址编码模块11,用于在获取到与交易业务相关联的字节数量为M的初始业务地址时,获取与交易业务相关联的区块链地址生成策略,基于区块链地址生成策略对初始业务地址进行第一地址编码处理,得到字符数量为N的第一地址编码字符串;第一地址编码字符串中的第一字符的字符属性为第一字符属性;M为大于1的正整数,N为M的整数倍;
第二地址编码模块12,用于对第一地址编码字符串进行哈希转换处理,得到字节数量为M的哈希转换地址,对哈希转换地址进行第二地址编码处理,得到字符数量为N的第二地址编码字符串;第二地址编码字符串中的第二字符的字符属性为第一字符属性;
参考字符确定模块13,用于在第二地址编码字符串中将字符位置i上的第二字符作为参考字符,将参考字符的字符值与第二地址编码字符串所关联的字符阈值进行对比,得到字符值比对结果;i为小于或者等于N的正整数;
字符属性变更模块14,用于若字符值比对结果指示参考字符的字符值大于或者等于字符阈值,则在第一地址编码字符串内的字符位置i上的字符为第一字符时,将字符位置i上的第一字符的字符属性由第一字符属性变更为第二字符属性;
目标地址构建模块15,用于基于字符位置i上的字符属性为第二字符属性的第一字符,构建得到用于对初始业务地址进行地址校验的目标业务地址。
其中,第一地址编码模块11,第二地址编码模块12,参考字符确定模块13,字符属性变更模块14和目标地址构建模块15的具体实现方式,可以参见上述图3所对应实施例中对步骤S101-步骤S105的描述,这里将不再继续进行赘述。
其中,第二地址编码模块12包括:哈希编码单元121,哈希地址确定单元122,字符属性编码单元123和序列拼接单元124;
哈希编码单元121,用于基于区块链地址生成策略确定与第一地址编码字符串相关联的哈希编码方法,基于哈希编码方法对第一地址编码字符串进行哈希编码处理,得到字节数量为K的哈希编码地址;K为大于M的正整数;
哈希地址确定单元122,用于从字节数量为K的哈希编码地址中获取字节数量为M的哈希编码地址,将获取到的字节数量为M的哈希编码地址作为哈希转换地址;
字符属性编码单元123,用于在对哈希转换地址进行第二地址编码处理时,将哈希转换地址中的每个字节位置上的字节序列作为待编码字节序列,将待编码字节序列中的每个第一字符的字符属性均编码为第一字符属性,将字符属性均编码为第一字符属性的每个第一字符所在的待编码字节序列,确定为已编码字节序列;
序列拼接单元124,用于基于哈希转换地址中的每个字节位置,遍历对已编码字节序列进行序列拼接,得到拼接地址序列,将拼接地址序列中的序列字符串作为字符数量为N的第二地址编码字符串;第二地址编码字符串为不同于第一地址编码字符串的字符串。
其中,哈希编码单元121,哈希地址确定单元122,字符属性编码单元123和序列拼接单元124的具体实现方式,可以参见上述图3所对应实施例中对编码得到第二地址编码字符串的具体过程的描述,本申请实施例将不再继续进行赘述。
其中,装置1还包括:字符属性维持模块16;
字符属性维持模块16,用于若字符值比对结果指示参考字符的字符值小于字符阈值,则在第一地址编码字符串中,将字符位置i上的第一字符的字符属性维持为第一字符属性。
其中,字符属性维持模块16的具体实现方式,可以参见上述图3或者图7所对应实施例中对维持字符属性的具体过程的描述,这里将不再继续进行赘述。
其中,装置1运行在业务终端上,业务终端上所部署的客户端包括第一业务对象所对应的第一资源管理客户端;
装置1还包括:账户地址接收模块17;
账户地址接收模块,用于接收第二业务对象通过第二资源管理客户端发送的区块链账户地址,基于区块链账户地址确定字节数量为M的初始业务地址。
其中,账户地址接收模块17,包括:账户地址接收单元171,接收地址确定单元172和业务地址确定单元173;
账户地址接收单元171,用于接收第二业务对象通过第二资源管理客户端发送的区块链账户地址;区块链账户地址中的字符串的字节数量为M;区块链账户地址为第二业务对象在第一区块链上的链上账户地址;
接收地址确定单元172,用于将字节数量为M的区块链账户地址,作为待录入至第一资源管理客户端的业务界面上的资源接收地址;
业务地址确定单元173,用于在将资源接收地址录入至业务界面时,将资源接收地址确定为获取到字节数量为M的初始业务地址。
其中,账户地址接收单元171,接收地址确定单元172和业务地址确定单元173的具体实现方式,可以参见上述图3或者图7所对应实施例中基于第二业务对象发来来的区块链账户地址确定初始业务地址的具体过程的描述,这里将不再继续进行赘述。
其中,装置1还包括:地址校验模块18和业务交易构建模块19;
地址校验模块18,用于通过目标业务地址对初始业务地址进行地址校验,在地址校验成功时,将初始业务地址确定为合法区块链地址;
业务交易构建模块19,用于基于合法区块链地址构建得到与交易业务相匹配的目标业务交易。
其中,应当理解,地址校验模块18和业务交易构建模块19的具体实现方式,可以参见上述图3或者图7所对应实施例中对地址校验的具体过程的描述,这里将不再继续进行赘述。
其中,初始业务地址为第一业务对象通过第一资源管理客户端录入至业务界面上的资源接收地址;资源接收地址为第一资源管理客户端所获取到的由第二业务对象通过第二资源管理客户端发送的区块链账户地址;区块链账户地址为第二业务对象在第一区块链上的链上账户地址;
地址校验模块18包括:目标格式确定单元181,校验条件获取单元182,地址校验单元183和地址确定单元184;
目标格式确定单元181,用于在目标业务地址中的地址字符的字符属性包括第一字符属性和第二字符属性时,将目标业务地址对应的地址格式作为目标地址格式;
校验条件获取单元182,用于获取与目标业务地址相关联的地址校验条件,基于地址校验条件识别初始业务地址的地址格式;
地址校验单元183,用于在识别到初始业务地址的地址格式为目标地址格式时,基于目标业务地址中的地址字符和初始业务地址中的地址字符,对初始业务地址进行地址校验,得到地址校验结果;
地址确定单元184,用于若地址校验结果指示目标业务地址中的地址字符与初始业务地址中的地址字符均相同,则确定目标业务地址与初始业务地址为相同地址,将录入至业务界面的初始业务地址,确定为满足地址校验条件的合法区块链地址。
可选地,其中,地址校验模块18还包括:合法地址显示单元185;
合法地址显示单元185,用于在将录入至业务界面的初始业务地址,确定为满足地址校验条件的合法区块链地址时,在业务界面上显示合法区块链地址。
其中,地址确定单元184,还用于若地址校验结果指示目标业务地址中的地址字符与初始业务地址中的地址字符存在不同,则确定目标业务地址与初始业务地址为不同地址,确定录入至业务界面的初始业务地址不满足地址校验条件;
地址确定单元184,还用于将不满足地址校验条件的初始业务地址确定为非法区块链地址,在业务界面上显示针对非法区块链地址的风险管理页面;风险管理页面用于指示第一业务对象对非法区块链地址进行风险管理;风险管理包括删除显示在业务界面上的非法区块链地址,以及向第二业务对象返回针对非法区块链地址的通知消息中的一种或者多种。
其中,目标格式确定单元181,校验条件获取单元182,地址校验单元183和地址确定单元184以及合法地址显示单元185的具体实现方式,可以参见上述图7所对应实施例对合法区块链地址的具体过程的描述,这里将不再继续进行赘述。
其中,交易业务包括用于在第一区块链和第二区块链之间对虚拟资源进行资源转移的转账交易业务;
业务交易构建模块19包括:目标地址确定单元191,发起地址确定单元192,转移量确定单元193和业务交易确定单元194;
目标地址确定单元191,用于在第一资源管理客户端的业务界面上,创建与转账交易业务相关联的第一业务交易,将合法区块链地址作为第一业务交易的交易参数中的目的交易地址;合法区块链地址为第二业务对象在第一区块链上的链上账户地址;
发起地址确定单元192,用于获取第一资源管理客户端所对应的第一业务对象在第二区块链上的对象账户地址,将对象账户地址作为第一业务交易的交易参数中的发起交易地址;
转移量确定单元193,用于获取待由第一业务对象转移给第二业务对象的虚拟资源,将虚拟资源的资源额度作为第一业务交易的交易参数中的资源转移量;
业务交易确定单元194,用于将交易参数包括目的交易地址、发起交易地址以及资源转移量的第一业务交易,作为与转账交易业务相匹配的目标业务交易。
其中,目标地址确定单元191,发起地址确定单元192,转移量确定单元193和业务交易确定单元194的具体实现方式,可以参见上述图7所对应实施例中对构建与转账交易业务相匹配的目标业务交易的具体过程的描述,这里将不再继续进行赘述。
其中,在第二区块链所对应的区块链网络与第一区块链所对应的区块链网络为同一区块链网络时;
装置1还包括:交易发送模块20;
交易发送模块20,用于将目标业务交易发送给第一区块链上的区块链节点设备,以使区块链节点设备在将目标业务交易打包至第一区块时,将包含目标业务交易的第一区块上链至第一区块链。
其中,交易发送模块20的具体实现方式,可以参见上述图7所对应实施例中对发送目标业务交易的具体过程的描述,这里将不再继续进行赘述。
其中,装置1运行在业务终端上,在交易业务为合约开发业务时,业务终端上部署的客户端包括合约开发业务所对应的合约开发客户端;业务终端所对应的第一业务对象为合约发开对象;
装置1还包括;开发界面输出模块21,地址字段确定模块22,业务地址配置模块23;
开发界面输出模块21,用于在合约开发客户端上输出与合约开发业务相关联的合约开发界面时,响应于合约开发对象针对合约开发界面触发的合约开发操作,从业务终端相关联的区块链节点设备上获取用于开发业务合约的合约模板,在合约开发界面上显示合约模板中的合约字段;业务合约为合约开发业务所关联的转账交易业务对应的资源转移合约;
地址字段确定模块22,用于在合约字段中查找与地址类型字段相匹配的合约字段,将查找到的合约字段作为与转账交易业务相关联的地址字段;
业务地址配置模块23,用于将合约开发对象为地址字段所配置的字节数量为M的业务配置地址,作为初始业务地址;业务配置地址包括合约调用地址和合约授权调用者的链上账户地址;合约调用地址为合约授权调用者请求执行转账交易业务时所需要调用的资源转移合约的地址;合约授权调用者为具备调用资源转移合约权限的业务对象。
其中,装置1还包括:编译提示模块24;
编译提示模块,用于在基于目标业务地址确定初始业务地址为非法区块链地址时,在合约开发界面上显示资源转移合约对应的编译失败提示信息。
其中,开发界面输出模块21,地址字段确定模块22,业务地址配置模块23和编译提示模块24的具体实现方式可以参见上述图9所对应实施例中对合约开发业务的描述,这里将不再继续进行赘述。
其中,装置1运行在业务终端上;业务终端上运行有第一业务对象对应的第一数据交互客户端;交易业务包括数据交互业务;
装置1还包括:公钥列表获取模块25,可信证书获取模块26,公钥合法模块27,数据加密模块28和账户地址确定模块29;
公钥列表获取模块25,用于在第一业务对象与第二业务对象之间存在数据交互关系时,获取与第二业务对象相关联的公钥列表,将从公钥列表中所获取到的第二业务对象的公钥信息作为待比对公钥信息;
可信证书获取模块26,用于从与第一数据交互客户端相关联的可信机构中,获取与第二业务对象相关联的可信证书,将从可信证书中所获取到的第二业务对象的公钥信息作为可信公钥信息;
公钥合法模块27,用于在待比对公钥信息与可信公钥信息保持一致时,确定公钥列表中所存储的第二业务对象的公钥信息为合法公钥信息;
数据加密模块28,用于在获取到第一业务对象用于向第二业务对象发送的数据交互信息时,通过合法公钥信息对数据交互信息进行数据加密处理,得到与数据交互业务相关联的数据加密信息;
账户地址确定模块29,用于基于合法公钥信息,确定第二业务对象在区块链上的区块链账户地址,在区块链账户地址的字节数量为M时,将区块链账户地址作为与交易业务中的数据交互业务相关联的初始业务地址。
可选地,其中,装置1还包括:交互交易确定模块30;
交互交易确定模块30,用于在基于目标业务地址确定初始业务地址为合法区块链地址时,将数据加密信息和区块链账户地址添加至用于向区块链上的区块链节点设备发送的数据交互交易;
交互交易确定模块30,还用于将数据交互交易发送给区块链节点设备,以使区块链节点设备在获取到第二业务对象发送的交互信息查询请求时,基于交互信息查询请求中所携带的交易信息查询地址,在区块链上查询与交易信息查询地址相匹配的链上账户地址,且在查询到链上账户地址为区块链账户地址时,将数据交互交易中所携带的数据加密信息返回给第二业务对象对应的第二数据交互客户端;第二数据交互客户端用于通过第二业务对象的私钥,对数据加密信息进行解密处理,以解密得到数据交互信息;交互信息查询请求为第二数据交互客户端在确定由第二业务对象所录入的交易信息查询地址为合法查询地址后所发送的。
其中,公钥列表获取模块25,可信证书获取模块26,公钥合法模块27,数据加密模块28和账户地址确定模块29以及交互交易确定模块30的具体实现方式,可以参见上述图11所对应实施例中对数据交互业务的具体过程的描述,这里将不再继续进行赘述。另外,采用相同方法所得到的相同有益效果的描述,也不再进行赘述。
进一步地,请参见图13,图13是本申请实施例提供的一种计算机设备的结构示意图。如图13所示,该计算机设备1000可以为业务终端,例如,上述图1所对应实施例中的业务终端20a,这里将不对其进行限制。该计算机设备1000可以包括:处理器1001,网络接口1004和存储器1005,此外,该计算机设备1000还可以包括:用户接口1003,和至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。其中,用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图13所示,作为一种计算机可读存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及设备控制应用程序。
其中,该计算机设备1000中的网络接口1004还可以提供网络通讯功能。在图11所示的计算机设备1000中,网络接口1004可提供网络通讯功能;而用户接口1003主要用于为用户提供输入的接口;而处理器1001可以用于调用存储器1005中存储的设备控制应用程序,以执行前文图3、图7、图9或者图11所对应实施例中对地址数据处理方法的描述,也可执行前文图12所对应实施例中对地址数据处理装置1的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
此外,这里需要指出的是:本申请实施例还提供了一种计算机可读存储介质,且计算机可读存储介质中存储有前文提及的地址数据处理装置1所执行的计算机程序,且计算机程序包括计算机指令,当处理器执行计算机指令时,能够执行前文图3、图7、图9或者图11所对应实施例中对地址数据处理方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机可读存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述。作为示例,计算机指令可被部署在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行,分布在多个地点且通过通信网络互连的多个计算设备可以组成区块链系统。
此外,需要说明的是:本申请实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或者计算机程序可以包括计算机指令,该计算机指令可以存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器可以执行该计算机指令,使得该计算机设备执行前文图3、图7、图9或者图11所对应实施例中对地址数据处理方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机程序产品或者计算机程序实施例中未披露的技术细节,请参照本申请方法实施例的描述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,计算机程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,存储介质可为磁碟、光盘、只读存储器(Read-Only Memory,ROM)或随机存储器(Random Access Memory,RAM)等。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。
Claims (18)
1.一种地址数据处理方法,其特征在于,所述方法包括:
在获取到与交易业务相关联的字节数量为M的初始业务地址时,获取与所述交易业务相关联的区块链地址生成策略,基于所述区块链地址生成策略对所述初始业务地址进行第一地址编码处理,得到字符数量为N的第一地址编码字符串;所述第一地址编码字符串中的第一字符的字符属性为第一字符属性;M为大于1的正整数,N为M的整数倍;
对所述第一地址编码字符串进行哈希转换处理,得到字节数量为M的哈希转换地址,对所述哈希转换地址进行第二地址编码处理,得到字符数量为N的第二地址编码字符串;所述第二地址编码字符串中的第二字符的字符属性为所述第一字符属性;
在所述第二地址编码字符串中将字符位置i上的第二字符作为参考字符,将所述参考字符的字符值与所述第二地址编码字符串所关联的字符阈值进行对比,得到字符值比对结果;i为小于或者等于N的正整数;
若所述字符值比对结果指示所述参考字符的字符值大于或者等于所述字符阈值,则在所述第一地址编码字符串内的字符位置i上的字符为第一字符时,将字符位置i上的第一字符的字符属性由所述第一字符属性变更为第二字符属性;
基于所述字符位置i上的字符属性为所述第二字符属性的第一字符,构建得到用于对所述初始业务地址进行地址校验的目标业务地址。
2.根据权利要求1所述的方法,其特征在于,所述对所述第一地址编码字符串进行哈希转换处理,得到字节数量为M的哈希转换地址,对所述哈希转换地址进行第二地址编码处理,得到字符数量为N的第二地址编码字符串,包括:
基于区块链地址生成策略确定与所述第一地址编码字符串相关联的哈希编码方法,基于所述哈希编码方法对所述第一地址编码字符串进行哈希编码处理,得到字节数量为K的哈希编码地址;K为大于M的正整数;
从字节数量为K的哈希编码地址中获取字节数量为M的哈希编码地址,将获取到的字节数量为M的哈希编码地址作为所述哈希转换地址;
在对所述哈希转换地址进行第二地址编码处理时,将所述哈希转换地址中的每个字节位置上的字节序列作为待编码字节序列,将所述待编码字节序列中的每个第一字符的字符属性均编码为所述第一字符属性,将字符属性均编码为所述第一字符属性的每个第一字符所在的待编码字节序列,确定为已编码字节序列;
基于所述哈希转换地址中的每个字节位置,遍历对所述已编码字节序列进行序列拼接,得到拼接地址序列,将拼接地址序列中的序列字符串作为字符数量为N的第二地址编码字符串;所述第二地址编码字符串为不同于所述第一地址编码字符串的字符串。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述字符值比对结果指示所述参考字符的字符值小于所述字符阈值,则在所述第一地址编码字符串中,将字符位置i上的第一字符的字符属性维持为所述第一字符属性。
4.根据权利要求1所述的方法,其特征在于,所述方法由业务终端执行,所述业务终端上所部署的客户端包括第一业务对象所对应的第一资源管理客户端;
所述方法还包括:
接收第二业务对象通过第二资源管理客户端发送的区块链账户地址,基于所述区块链账户地址确定字节数量为M的初始业务地址。
5.根据权利要求4所述的方法,其特征在于,所述接收第二业务对象通过第二资源管理客户端发送的区块链账户地址,基于所述区块链账户地址确定字节数量为M的初始业务地址,包括:
接收第二业务对象通过第二资源管理客户端发送的区块链账户地址;所述区块链账户地址中的字符串的字节数量为M;所述区块链账户地址为所述第二业务对象在第一区块链上的链上账户地址;
将字节数量为M的所述区块链账户地址,作为待录入至所述第一资源管理客户端的业务界面上的资源接收地址;
在将所述资源接收地址录入至所述业务界面时,将所述资源接收地址确定为获取到字节数量为M的初始业务地址。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
通过所述目标业务地址对所述初始业务地址进行地址校验,在地址校验成功时,将所述初始业务地址确定为合法区块链地址;
基于所述合法区块链地址构建得到与所述交易业务相匹配的目标业务交易。
7.根据权利要求6所述的方法,其特征在于,所述初始业务地址为第一业务对象通过第一资源管理客户端录入至业务界面上的资源接收地址;所述资源接收地址为所述第一资源管理客户端所获取到的由第二业务对象通过第二资源管理客户端发送的区块链账户地址;所述区块链账户地址为所述第二业务对象在第一区块链上的链上账户地址;
所述通过所述目标业务地址对所述初始业务地址进行地址校验,在地址校验成功时,将所述初始业务地址确定为合法区块链地址,包括:
在所述目标业务地址中的地址字符的字符属性包括所述第一字符属性和所述第二字符属性时,将所述目标业务地址对应的地址格式作为目标地址格式;
获取与所述目标业务地址相关联的地址校验条件,基于所述地址校验条件识别所述初始业务地址的地址格式;
在识别到所述初始业务地址的地址格式为所述目标地址格式时,基于所述目标业务地址中的地址字符和所述初始业务地址中的地址字符,对所述初始业务地址进行地址校验,得到地址校验结果;
若所述地址校验结果指示所述目标业务地址中的地址字符与所述初始业务地址中的地址字符均相同,则确定所述目标业务地址与所述初始业务地址为相同地址,将录入至所述业务界面的所述初始业务地址,确定为满足所述地址校验条件的合法区块链地址。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
在将录入至所述业务界面的所述初始业务地址,确定为满足所述地址校验条件的合法区块链地址时,在所述业务界面上显示所述合法区块链地址。
9.根据权利要求7所述的方法,其特征在于,所述方法还包括:
若所述地址校验结果指示所述目标业务地址中的地址字符与所述初始业务地址中的地址字符存在不同,则确定所述目标业务地址与所述初始业务地址为不同地址,确定录入至所述业务界面的所述初始业务地址不满足所述地址校验条件;
将不满足所述地址校验条件的所述初始业务地址确定为非法区块链地址,在所述业务界面上显示针对所述非法区块链地址的风险管理页面;所述风险管理页面用于指示所述第一业务对象对所述非法区块链地址进行风险管理;所述风险管理包括删除显示在所述业务界面上的所述非法区块链地址,以及向所述第二业务对象返回针对所述非法区块链地址的通知消息中的一种或者多种。
10.根据权利要求6所述的方法,其特征在于,所述交易业务包括用于在第一区块链和第二区块链之间对虚拟资源进行资源转移的转账交易业务;
所述基于所述合法区块链地址构建得到与交易业务相匹配的目标业务交易,包括:
在第一资源管理客户端的业务界面上,创建与所述转账交易业务相关联的第一业务交易,将所述合法区块链地址作为所述第一业务交易的交易参数中的目的交易地址;所述合法区块链地址为第二业务对象在所述第一区块链上的链上账户地址;
获取所述第一资源管理客户端所对应的第一业务对象在所述第二区块链上的对象账户地址,将所述对象账户地址作为所述第一业务交易的交易参数中的发起交易地址;
获取待由所述第一业务对象转移给所述第二业务对象的虚拟资源,将所述虚拟资源的资源额度作为所述第一业务交易的交易参数中的资源转移量;
将交易参数包括所述目的交易地址、所述发起交易地址以及所述资源转移量的第一业务交易,作为与所述转账交易业务相匹配的目标业务交易。
11.根据权利要求10所述的方法,其特征在于,在所述第二区块链所对应的区块链网络与所述第一区块链所对应的区块链网络为同一区块链网络时;
所述方法还包括:
将所述目标业务交易发送给所述第一区块链上的区块链节点设备,以使所述区块链节点设备在将所述目标业务交易打包至第一区块时,将包含所述目标业务交易的所述第一区块上链至所述第一区块链。
12.根据权利要求1所述的方法,其特征在于,所述方法由业务终端执行,在所述交易业务为合约开发业务时,所述业务终端上部署的客户端包括所述合约开发业务所对应的合约开发客户端;所述业务终端所对应的第一业务对象为合约开发对象;
所述方法还包括;
在所述合约开发客户端上输出与所述合约开发业务相关联的合约开发界面时,响应于所述合约开发对象针对所述合约开发界面触发的合约开发操作,从所述业务终端相关联的区块链节点设备上获取用于开发业务合约的合约模板,在所述合约开发界面上显示所述合约模板中的合约字段;所述业务合约为所述合约开发业务所关联的转账交易业务对应的资源转移合约;
在所述合约字段中查找与地址类型字段相匹配的合约字段,将查找到的合约字段作为与所述转账交易业务相关联的地址字段;
将所述合约开发对象为所述地址字段所配置的字节数量为M的业务配置地址,作为所述初始业务地址;所述业务配置地址包括合约调用地址和合约授权调用者的链上账户地址;所述合约调用地址为所述合约授权调用者请求执行所述转账交易业务时所需要调用的所述资源转移合约的地址;所述合约授权调用者为具备调用所述资源转移合约权限的业务对象。
13.根据权利要求12所述的方法,其特征在于,所述方法还包括:
在基于所述目标业务地址确定所述初始业务地址为非法区块链地址时,在所述合约开发界面上显示所述资源转移合约对应的编译失败提示信息。
14.根据权利要求1所述的方法,其特征在于,所述方法由业务终端执行;所述业务终端上运行有第一业务对象对应的第一数据交互客户端;所述交易业务包括数据交互业务;
所述方法还包括:
在第一业务对象与第二业务对象之间存在数据交互关系时,获取与所述第二业务对象相关联的公钥列表,将从所述公钥列表中所获取到的所述第二业务对象的公钥信息作为待比对公钥信息;
从与所述第一数据交互客户端相关联的可信机构中,获取与所述第二业务对象相关联的可信证书,将从所述可信证书中所获取到的所述第二业务对象的公钥信息作为可信公钥信息;
在所述待比对公钥信息与所述可信公钥信息保持一致时,确定所述公钥列表中所存储的所述第二业务对象的公钥信息为合法公钥信息;
在获取到所述第一业务对象用于向所述第二业务对象发送的数据交互信息时,通过所述合法公钥信息对所述数据交互信息进行数据加密处理,得到与所述数据交互业务相关联的数据加密信息;
基于所述合法公钥信息,确定所述第二业务对象在区块链上的区块链账户地址,在所述区块链账户地址的字节数量为M时,将所述区块链账户地址作为与所述交易业务中的所述数据交互业务相关联的初始业务地址。
15.根据权利要求14所述的方法,其特征在于,所述方法还包括:
在基于所述目标业务地址确定所述初始业务地址为合法区块链地址时,将所述数据加密信息和所述区块链账户地址添加至用于向所述区块链上的区块链节点设备发送的数据交互交易;
将所述数据交互交易发送给所述区块链节点设备,以使所述区块链节点设备在获取到所述第二业务对象发送的交互信息查询请求时,基于所述交互信息查询请求中所携带的交易信息查询地址,在所述区块链上查询与所述交易信息查询地址相匹配的链上账户地址,且在查询到链上账户地址为所述区块链账户地址时,将所述数据交互交易中所携带的数据加密信息返回给所述第二业务对象对应的第二数据交互客户端;所述第二数据交互客户端用于通过所述第二业务对象的私钥,对所述数据加密信息进行解密处理,以解密得到所述数据交互信息;所述交互信息查询请求为所述第二数据交互客户端在确定由所述第二业务对象所录入的所述交易信息查询地址为合法查询地址后所发送的。
16.一种地址数据处理装置,其特征在于,所述装置包括:
第一地址编码模块,用于在获取到与交易业务相关联的字节数量为M的初始业务地址时,获取与所述交易业务相关联的区块链地址生成策略,基于所述区块链地址生成策略对所述初始业务地址进行第一地址编码处理,得到字符数量为N的第一地址编码字符串;所述第一地址编码字符串中的第一字符的字符属性为第一字符属性;M为大于1的正整数,N为M的整数倍;
第二地址编码模块,用于对所述第一地址编码字符串进行哈希转换处理,得到字节数量为M的哈希转换地址,对所述哈希转换地址进行第二地址编码处理,得到字符数量为N的第二地址编码字符串;所述第二地址编码字符串中的第二字符的字符属性为所述第一字符属性;
参考字符确定模块,用于在所述第二地址编码字符串中将字符位置i上的第二字符作为参考字符,将所述参考字符的字符值与所述第二地址编码字符串所关联的字符阈值进行对比,得到字符值比对结果;i为小于或者等于N的正整数;
字符属性变更模块,用于若所述字符值比对结果指示所述参考字符的字符值大于或者等于所述字符阈值,则在所述第一地址编码字符串内的字符位置i上的字符为第一字符时,将字符位置i上的第一字符的字符属性由所述第一字符属性变更为第二字符属性;
目标地址构建模块,用于基于所述字符位置i上的字符属性为所述第二字符属性的第一字符,构建得到用于对所述初始业务地址进行地址校验的目标业务地址。
17.一种计算机设备,其特征在于,包括存储器和处理器;
所述存储器与所述处理器相连,所述存储器用于存储计算机程序,所述处理器用于调用所述计算机程序,以使得所述计算机设备执行权利要求1-15任一项所述的方法。
18.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序适于由处理器加载并执行,以使得具有所述处理器的计算机设备执行权利要求1-15任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311298519.8A CN117034369B (zh) | 2023-10-09 | 2023-10-09 | 地址数据处理方法、装置、设备以及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311298519.8A CN117034369B (zh) | 2023-10-09 | 2023-10-09 | 地址数据处理方法、装置、设备以及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117034369A CN117034369A (zh) | 2023-11-10 |
CN117034369B true CN117034369B (zh) | 2023-12-15 |
Family
ID=88628542
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311298519.8A Active CN117034369B (zh) | 2023-10-09 | 2023-10-09 | 地址数据处理方法、装置、设备以及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117034369B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113269642A (zh) * | 2021-05-24 | 2021-08-17 | 深圳壹账通智能科技有限公司 | 基于区块链的交易处理方法、装置、设备及存储介质 |
CN113821536A (zh) * | 2021-11-23 | 2021-12-21 | 腾讯科技(深圳)有限公司 | 基于区块链的数据处理方法、装置、设备及可读存储介质 |
CN116664123A (zh) * | 2022-09-16 | 2023-08-29 | 贵州电网有限责任公司 | 一种基于区块链技术的数字钱包设计方法 |
-
2023
- 2023-10-09 CN CN202311298519.8A patent/CN117034369B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113269642A (zh) * | 2021-05-24 | 2021-08-17 | 深圳壹账通智能科技有限公司 | 基于区块链的交易处理方法、装置、设备及存储介质 |
CN113821536A (zh) * | 2021-11-23 | 2021-12-21 | 腾讯科技(深圳)有限公司 | 基于区块链的数据处理方法、装置、设备及可读存储介质 |
CN116664123A (zh) * | 2022-09-16 | 2023-08-29 | 贵州电网有限责任公司 | 一种基于区块链技术的数字钱包设计方法 |
Also Published As
Publication number | Publication date |
---|---|
CN117034369A (zh) | 2023-11-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11669832B2 (en) | Blockchain-implemented method and system for access control on remote internet-enabled resources | |
US20210192066A1 (en) | Database system for protecting and securing stored data using a privacy switch | |
AU2017257447B2 (en) | A method and system for controlling the performance of a contract using a distributed hash table and a peer-to-peer distributed ledger | |
CN110933163B (zh) | 区块链合约部署方法、装置、设备以及存储介质 | |
CN110839029B (zh) | 一种微服务注册方法和装置 | |
US8874921B2 (en) | System and method for generating keyless digital multi-signatures | |
CN109791659A (zh) | 使用区块链实现逻辑门功能 | |
CN110708162B (zh) | 资源的获取方法、装置、计算机可读介质及电子设备 | |
WO2019036555A1 (en) | SECURE TRANSFER OF SELECTIVE DATA SETS BETWEEN TERMINALS | |
CN111340483A (zh) | 一种基于区块链的数据管理方法及相关设备 | |
CN111367923A (zh) | 数据处理方法、装置、节点设备及存储介质 | |
CN109690516A (zh) | 一种向用户提供产品和/或服务而不损害其隐私的基于软件的开关 | |
CN112035863B (zh) | 一种基于智能合约方式的电子合同取证方法及系统 | |
US20230274273A1 (en) | Distributed ledger system | |
CN117034369B (zh) | 地址数据处理方法、装置、设备以及介质 | |
CN111817859A (zh) | 基于零知识证明的数据共享方法、装置、设备及存储介质 | |
CN112053159A (zh) | 交易数据验证方法、装置、风险控制服务器及业务服务器 | |
CN116070191A (zh) | 信息处理方法及其装置、存储介质、程序产品 | |
CN114817903A (zh) | 基于智能合约的疫苗接种验证系统、方法及合约平台 | |
CN113435223A (zh) | 基于区块链的二维码发布方法、区块链平台及发布方平台 | |
CN117040930B (zh) | 区块链网络的资源处理方法、装置、产品、设备和介质 | |
CN117040766B (zh) | 基于区块链的数据处理方法、装置、设备及可读存储介质 | |
CN112242983B (zh) | 一种数字资产认证处理系统 | |
CN117057806A (zh) | 基于区块链的数据处理方法、装置及相关设备 | |
CN117061134A (zh) | 一种数据处理方法、装置、设备以及可读存储介质 |
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 |