索引构建方法、装置、设备和存储介质与流程

文档序号:25658715发布日期:2021-06-29 22:41阅读:69来源:国知局
索引构建方法、装置、设备和存储介质与流程

1.本申请涉及区块链技术领域,特别涉及一种索引构建方法、装置、设备和存储介质。


背景技术:

2.区块链系统中设置有区块链账户。区块链账户的账户数据包括账户地址、余额等。用户对区块链系统中的区块链账户的操作需要通过区块链账户的账户地址实现,而账户地址往往包含很多字符。比如,若需要将一个区块链账户的余额中的代币转移到另一个区块链账户的余额中,则需要用户双方都输入很长的账户地址才能实现,易用性较差。
3.为此,目前在区块链系统之外设置一个数据库专门用来存储较短的标识与账户地址之间的关联关系,以便用户可以用较短的标识实现对区块链账户的操作。具体地,用户向区块链系统发送携带有较短的标识的账户操作请求,区块链系统接收到该账户操作请求后,先从外置数据库中获取这个较短的标识关联的账户地址,再对该账户地址对应的区块链账户进行操作。然而,由于外置数据库不具备区块链系统的不可篡改性,所以账户操作的安全性难以得到保证。


技术实现要素:

4.本申请提供了一种索引构建方法、装置、设备和存储介质,可以提高对区块链账户进行操作时的安全性。所述技术方案如下:
5.第一方面,提供了一种索引构建方法,应用于区块链系统,所述方法包括:
6.接收账户标识绑定请求,所述账户标识绑定请求携带账户标识和账户地址,所述账户标识的字符数小于所述账户地址的字符数;
7.将所述账户标识绑定请求对应的第一交易数据存储至区块链,所述第一交易数据包括所述账户标识与所述账户地址之间的关联关系;
8.根据所述区块链存储的与所述账户标识相关的交易数据,构建所述账户标识的索引文件,所述账户标识的索引文件用于指示所述账户标识关联的账户地址。
9.在本申请中,由于区块链的不可篡改性,所以根据区块链存储的与该账户标识相关的交易数据构建出的索引文件是真实可信的,如此可以提高后续通过该索引文件实现对区块链账户的操作时的安全性。
10.可选地,所述第一交易数据和所述账户标识的索引文件均包括版本号,所述将所述账户标识绑定请求对应的第一交易数据存储至区块链之前,还包括:
11.若不存在所述账户标识的索引文件,则将所述第一交易数据中的版本号设置为初始版本号;
12.若存在所述账户标识的索引文件,则将所述第一交易数据中的版本号设置为所述账户标识的索引文件中的版本号加1后得到的版本号。
13.可选地,所述根据所述区块链存储的与所述账户标识相关的交易数据,构建所述
账户标识的索引文件,包括:
14.从所述区块链存储的与所述账户标识相关的交易数据中获取版本号最高的交易数据作为目标交易数据;
15.根据所述目标交易数据构建所述账户标识的索引文件。
16.可选地,所述账户标识的索引文件的数据结构为字典树或b+树。
17.可选地,所述方法还包括:
18.接收账户标识解绑请求,所述账户标识解绑请求携带所述账户标识和所述账户地址;
19.将所述账户标识解绑请求对应的第二交易数据存储至所述区块链,所述第二交易数据包括所述账户标识;
20.根据所述区块链存储的与所述账户标识相关的交易数据,重新构建所述账户标识的索引文件。
21.可选地,所述根据所述区块链存储的与所述账户标识相关的交易数据,构建所述账户标识的索引文件之后,还包括:
22.获取所述账户标识的索引文件的哈希值作为第一哈希值;
23.将所述账户标识的索引文件存储至其他设备,以及将所述第一哈希值存储至所述区块链或智能合约;
24.若所述区块链系统重启,则从所述其他设备获取所述账户标识的索引文件作为目标索引文件;
25.获取所述目标索引文件的哈希值作为第二哈希值;
26.若所述第二哈希值与存储的所述第一哈希值相同,则将所述目标索引文件确定为所述账户标识的索引文件;
27.若所述第二哈希值与存储的所述第一哈希值不同,则根据所述区块链存储的与所述账户标识相关的交易数据,重新构建所述账户标识的索引文件。
28.可选地,所述根据所述区块链存储的与所述账户标识相关的交易数据,构建所述账户标识的索引文件之后,还包括:
29.接收账户操作请求,所述账户操作请求携带所述账户标识;
30.根据所述账户标识的索引文件,确定所述账户标识关联的账户地址;
31.对所述账户标识关联的账户地址对应的区块链账户进行操作。
32.第二方面,提供了一种索引构建装置,应用于区块链系统,所述装置包括:
33.接收模块,用于接收账户标识绑定请求,所述账户标识绑定请求携带账户标识和账户地址,所述账户标识的字符数小于所述账户地址的字符数;
34.第一存储模块,用于将所述账户标识绑定请求对应的第一交易数据存储至区块链,所述第一交易数据包括所述账户标识与所述账户地址之间的关联关系;
35.构建模块,用于根据所述区块链存储的与所述账户标识相关的交易数据,构建所述账户标识的索引文件,所述账户标识的索引文件用于指示所述账户标识关联的账户地址。
36.可选地,所述第一交易数据和所述账户标识的索引文件均包括版本号,所述装置还包括:
37.第一设置模块,用于在不存在所述账户标识的索引文件的情况下,将所述第一交易数据中的版本号设置为初始版本号;
38.第二设置模块,用于在存在所述账户标识的索引文件的情况下,将所述第一交易数据中的版本号设置为所述账户标识的索引文件中的版本号加1后得到的版本号。
39.可选地,所述构建模块用于:
40.从所述区块链存储的与所述账户标识相关的交易数据中获取版本号最高的交易数据作为目标交易数据;
41.根据所述目标交易数据构建所述账户标识的索引文件。
42.可选地,所述账户标识的索引文件的数据结构为字典树或b+树。
43.可选地,所述接收模块,还用于接收账户标识解绑请求,所述账户标识解绑请求携带所述账户标识和所述账户地址;
44.所述第一存储模块,还用于将所述账户标识解绑请求对应的第二交易数据存储至所述区块链,所述第二交易数据包括所述账户标识;
45.所述构建模块,还用于根据所述区块链存储的与所述账户标识相关的交易数据,重新构建所述账户标识的索引文件。
46.可选地,所述装置还包括:
47.第一获取模块,用于获取所述账户标识的索引文件的哈希值作为第一哈希值;
48.第二存储模块,用于将所述账户标识的索引文件存储至其他设备,以及将所述第一哈希值存储至所述区块链或智能合约;
49.第二获取模块,用于在所述区块链系统重启的情况下,从所述其他设备获取所述账户标识的索引文件作为目标索引文件;
50.第三获取模块,用于获取所述目标索引文件的哈希值作为第二哈希值;
51.第一确定模块,用于在所述第二哈希值与存储的所述第一哈希值相同的情况下,将所述目标索引文件确定为所述账户标识的索引文件;
52.所述构建模块,还用于在所述第二哈希值与存储的所述第一哈希值不同的情况下,根据所述区块链存储的与所述账户标识相关的交易数据,重新构建所述账户标识的索引文件。
53.可选地,所述装置还包括:
54.所述接收模块,还用于接收账户操作请求,所述账户操作请求携带所述账户标识;
55.第二确定模块,用于根据所述账户标识的索引文件,确定所述账户标识关联的账户地址;
56.账户操作模块,用于对所述账户标识关联的账户地址对应的区块链账户进行操作。
57.第三方面,提供了一种计算机设备,所述计算机设备包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现上述的索引构建方法。
58.第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述的索引构建方法。
59.第五方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得
计算机执行上述的索引构建方法的步骤。
60.可以理解的是,上述第二方面、第三方面、第四方面、第五方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。
附图说明
61.为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
62.图1是本申请实施例提供的一种区块链系统的结构示意图;
63.图2是本申请实施例提供的一种区块链的示意图;
64.图3是本申请实施例提供的一种索引构建系统的示意图;
65.图4是本申请实施例提供的一种索引构建方法的流程图;
66.图5是本申请实施例提供的另一种索引构建方法的流程图;
67.图6是本申请实施例提供的一种索引构建装置的结构示意图;
68.图7是本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
69.为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
70.应当理解的是,本申请提及的“多个”是指两个或两个以上。另外,为了便于清楚描述本申请的技术方案,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
71.在对本申请实施例进行解释说明之前,先对区块链的相关内容予以说明。
72.图1是本申请实施例提供的一种区块链系统的结构示意图。
73.参见图1,区块链系统100是指用于进行节点与节点之间数据共享的系统,区块链系统100中可以包括多个节点101,多个节点101可以是指区块链系统100中各个客户端。每个节点101在进行正常工作可以接收到输入信息,并基于接收到的输入信息维护区块链系统100内的共享数据。为了保证区块链系统100内的信息互通,区块链系统100中的每个节点101之间可以存在信息连接,节点101之间可以通过该信息连接进行信息传输。比如,当区块链系统100中的任意节点101接收到输入信息时,区块链系统100中的其他节点101便根据共识算法获取该输入信息,将该输入信息作为共享数据中的数据进行存储,使得区块链系统100中全部节点101上存储的数据一致。
74.区块链系统100中的每个节点101均存储一条相同的区块链。参见图2,区块链由多个区块组成,创始块中包括区块头和区块主体,区块头中存储有输入信息特征值、版本号、时间戳和难度值,区块主体中存储有输入信息;创始块的下一区块以创始块为父区块,下一区块中同样包括区块头和区块主体,区块头中存储有当前区块的输入信息特征值、父区块的区块头特征值、版本号、时间戳和难度值,并以此类推,使得区块链中每个区块中存储的
区块数据均与父区块中存储的区块数据存在关联,保证了区块中输入信息的安全性。
75.区块链系统100具有分布式数据存储、点对点传输、共识机制、加密算法等计算机技术。区块链系统100是一个分布式的共享账本和数据库,具有去中心化、不可篡改、全程留痕、可以追溯、集体维护、公开透明等特点。这些特点保证了区块链的共享开放、真实完整和安全可靠。
76.下面对本申请实施例涉及的系统架构予以说明。
77.图3是本申请实施例提供的一种索引构建系统的示意图。参见图3,该索引构建系统包括:终端301和区块链系统302。
78.终端301与区块链系统302可以通过有线网络或无线网络进行通信。
79.终端301可以是台式机、便携式电脑、掌上电脑、移动手机、平板电脑等,本申请实施例不限定终端301的类型。区块链系统302可以是上文图1

图2实施例所述的区块链系统100。
80.终端301可以请求在区块链系统302中注册区块链账户,区块链账户的账户数据可以包括账户地址、余额、状态变量等,区块链账户的余额表示该区块链账户拥有的代币(token)个数。终端301还可以请求区块链系统302将账户标识与区块链账户的账户地址进行绑定或解绑,账户标识的字符数小于账户地址的字符数。区块链系统302将账户标识与区块链账户的账户地址进行绑定时,可以构建该账户标识的索引文件,该账户标识的索引文件用于指示该账户标识关联的账户地址。
81.将某一账户标识与某一账户地址进行绑定后,终端301就可以通过这一账户标识对这一账户地址对应的区块链账户进行操作。由于账户标识的字符数小于账户地址的字符数,所以便于用户操作,易用性较好。
82.下面对本申请实施例提供的索引构建方法进行详细地解释说明。
83.首先对区块链账户的注册过程进行说明,可以包括如下步骤(1)

步骤(4):
84.(1)终端生成公私钥对,该公私钥对包括一个公钥和一个私钥。
85.该公私钥对中的一个公钥和一个私钥对应,也即,用这个公钥加密的数据可以使用这个私钥来解密,用这个私钥加密的数据可以使用这个公钥来解密。
86.具体地,终端可以先根据私钥生成规则生成一个私钥,再根据这个私钥和公钥生成规则,生成与这个私钥对应的一个公钥;将这个私钥和这个公钥作为一个公私钥对。
87.该私钥生成规则可以事先进行设置。比如,该私钥生成规则可以是随机数生成算法,可以采用该随机数生成算法生成随机数作为私钥。当然,该私钥生成规则也可以是其他规则,本申请实施例对此不作限定。
88.该公钥生成规则可以事先进行设置。该公钥生成规则可以是椭圆曲线公钥密码算法(包括但不限于sm2椭圆曲线算法、secp256k1椭圆曲线算法等),可以根据一个私钥,采用该椭圆曲线公钥密码算法生成公钥。当然,该公钥生成规则也可以是其他规则,本申请实施例对此不作限定。
89.(2)终端根据该公私钥对中的公钥生成账户地址。
90.具体地,终端可以对该公钥进行编码来得到账户地址。当然,终端也可以根据该公钥,通过其他方式来生成账户地址,本申请实施例对此不作限定。
91.(3)终端向区块链系统发送账户注册请求,该账户注册请求携带该账户地址和该
公钥。
92.该账户注册请求用于请求在区块链系统中注册区块链账户。
93.(4)区块链系统接收到终端发送的账户注册请求后,根据该账户注册请求携带的账户地址和公钥生成区块链账户。
94.区块链系统接收到终端发送的账户注册请求后,可以先对该账户注册请求携带的账户地址和公钥进行校验,在校验通过后,再根据该账户地址和该公钥生成区块链账户。
95.该区块链账户的账户数据可以包括账户地址、余额、状态变量等。该区块链账户的账户数据中的账户地址为该账户注册请求携带的账户地址,该区块链账户的账户数据中的状态变量包括该账户注册请求携带的公钥,用于指示该公钥具有账户操作权限,该账户操作权限用于实现与该区块链账户有关的操作。
96.在区块链系统生成区块链账户后,若终端需要对该区块链账户进行操作,终端可以直接通过该区块链账户的账户地址请求区块链系统对该区块链账户进行相应的操作。然而,账户地址的字符数一般比较多,易用性较差。为此,本申请实施例中,终端可以生成一个字符数较少的账户标识,继而通过该账户标识实现对区块链账户的操作,以提高易用性。下面对账户标识的相关内容进行说明。
97.图4是本申请实施例提供的一种索引构建方法的流程图。参见图4,该方法包括以下步骤。
98.步骤401:终端生成账户标识。
99.该账户标识用于标识区块链账户,可以由字母、数字中的至少一个组成。该账户标识的字符数较少,该账户标识的字符数小于账户地址的字符数。因而,相比于账户地址,该账户标识的易用性更好。比如,一般账户地址为64个字符,该账户标识可以不超过8个字符。
100.该账户标识可以是终端在生成账户地址的同时生成,也可以是终端在其他情况下生成,本申请实施例对该账户标识的生成时机不作限定,只要保证该账户标识的字符数小于账户地址的字符数即可。
101.步骤402:终端发送账户标识绑定请求。
102.该账户标识绑定请求携带该账户标识和账户地址,该账户标识的字符数小于该账户地址的字符数,该账户地址是终端在区块链系统中注册的区块链账户的账户地址。
103.该账户标识绑定请求还可以携带数字签名,该数字签名是使用该账户地址对应的公私钥对中的私钥对信息摘要进行加密后得到。该信息摘要是对该账户标识和该账户地址进行哈希运算后得到。该账户地址对应的公私钥对是用于生成该账户地址的公钥所在的公私钥对。
104.该账户标识绑定请求用于请求将该账户标识与该账户地址进行绑定。该账户标识与该账户地址绑定后,对于终端来说,终端就可以通过该账户标识来对该账户地址对应的区块链账户进行操作。
105.步骤403:区块链系统接收到终端发送的账户标识绑定请求后,将该账户标识绑定请求对应的第一交易数据存储至区块链。
106.区块链系统接收到终端发送的账户标识绑定请求后,可以先对该账户标识绑定请求中的数字签名进行验证,在该数字签名验证通过后,再对该账户标识绑定请求中的账户标识进行检验,在该账户标识校验通过后,再将该账户标识绑定请求对应的第一交易数据
存储至区块链。
107.区块链系统对该账户标识绑定请求中的数字签名进行验证时,可以获取该账户标识绑定请求中的账户地址对应的区块链账户的公钥;使用该公钥对该数字签名进行解密,得到第一信息摘要,对该账户标识绑定请求中的账户标识和账户地址进行哈希运算,得到第二信息摘要;若第一信息摘要与第二信息摘要相同,则确定该数字签名验证通过,若第一信息摘要与第二信息摘要不同,则确定该数字签名验证失败。
108.区块链系统对该账户标识绑定请求中的账户标识进行校验时,可以对该账户标识进行重复性、合法性等校验,本申请实施例对此不作限定。
109.该账户标识绑定请求对应的第一交易数据是与该账户标识绑定请求有关的交易数据。比如,第一交易数据可以包括该账户标识与该账户地址之间的关联关系,还可以包括版本号、账户相关信息等。该版本号用于指示该账户标识与账户地址进行绑定和解绑的次数。该账户相关信息是与该账户地址对应的区块链账户有关的一些信息。
110.区块链系统可以根据该账户标识绑定请求确定该账户标识与该账户地址之间的关联关系,且可以设置版本号,以及可以根据该账户地址获取账户相关信息。之后,区块链系统可以将该账户标识与该账户地址之间的关联关系、该版本号、该账户相关信息作为第一交易数据存储至区块链。第一交易数据被存储至区块链后,第一交易数据将不可被篡改。
111.步骤404:区块链系统根据区块链存储的与该账户标识相关的交易数据,构建该账户标识的索引文件,该账户标识的索引文件用于指示该账户标识关联的账户地址。
112.区块链存储的与该账户标识相关的交易数据能够反映该账户标识与账户地址的绑定和解绑的情况,因而区块链系统根据区块链存储的与该账户标识相关的交易数据可以确定该账户标识当前关联的账户地址,并据此构建索引文件。由于区块链的不可篡改性,所以根据区块链存储的与该账户标识相关的交易数据构建出的索引文件是真实可信的,如此可以提高后续通过该索引文件实现对区块链账户的操作时的安全性。
113.该账户标识的索引文件的数据结构可以为树形结构,如可以为字典树或b+树。可选地,在配置较高或对处理速度要求较高的场景下,可以选用字典树。在配置较低或对处理速度要求较低的场景下,可以选用b+树。
114.在该账户标识与账户地址绑定的情况下,在该账户标识的索引文件中用该账户标识进行索引,可以得到该账户标识关联的账户地址。
115.具体地,区块链系统可以从区块链存储的与该账户标识相关的交易数据中获取版本号最高的交易数据作为目标交易数据,然后根据目标交易数据构建该账户标识的索引文件。在此情况下,区块链系统在构建该账户标识的索引文件时只需要考虑版本号最高的目标交易数据,从而可以提高索引文件的构建效率。
116.由于版本号用于指示该账户标识与账户地址进行绑定和解绑的次数,因而区块链存储的与该账户标识相关的交易数据中版本号最高的目标交易数据可以反映该账户标识与账户地址最新的绑定和解绑情况,因而可以直接根据目标交易数据构建该账户标识的索引文件。
117.在该账户标识与账户地址绑定的情况下,目标交易数据中可以包括该账户标识、账户地址、版本号、账户相关信息等。这种情况下,该账户标识的索引文件中可以包括目标交易数据中的该账户标识、账户地址、版本号、账户相关信息等。在该账户标识的索引文件
中用该账户标识进行索引,可以得到账户地址、版本号、账户相关信息等。
118.上面对将账户标识与账户地址进行绑定的过程进行了说明。下面对将账户标识与账户地址进行解绑的过程进行说明。具体地,可以包括如下步骤(1)

步骤(3):
119.(1)终端发送账户标识解绑请求,该账户标识解绑请求携带该账户标识和该账户地址。
120.该账户标识解绑请求还可以携带数字签名,该数字签名是使用该账户地址对应的公私钥对中的私钥对信息摘要进行加密后得到。该信息摘要是对该账户标识和该账户地址进行哈希运算后得到。该账户地址对应的公私钥对是用于生成该账户地址的公钥所在的公私钥对。
121.该账户标识解绑请求用于请求将该账户标识与该账户地址进行解绑。该账户标识与该账户地址解绑后,对于终端来说,终端将不能再通过该账户标识对该账户地址对应的区块链账户进行操作。
122.(2)区块链系统接收到终端发送的账户标识解绑请求后,将该账户标识解绑请求对应的第二交易数据存储至区块链。
123.区块链系统接收到终端发送的账户标识解绑请求后,可以先对该账户标识解绑请求中的数字签名进行验证,在该数字签名验证通过后,再将该账户标识解绑请求对应的第二交易数据存储至区块链。
124.区块链系统对该账户标识解绑请求中的数字签名进行验证时,可以获取该账户标识解绑请求中的账户地址对应的区块链账户的公钥;使用该公钥对该数字签名进行解密,得到第三信息摘要,对该账户标识解绑请求中的账户标识和账户地址进行哈希运算,得到第四信息摘要;若第三信息摘要与第四信息摘要相同,则确定该数字签名验证通过,若第三信息摘要与第四信息摘要不同,则确定该数字签名验证失败。
125.该账户标识解绑请求对应的第二交易数据是与该账户标识解绑请求有关的交易数据。比如,第二交易数据可以包括该账户标识,还可以包括版本号等。区块链系统可以根据该账户标识绑定请求确定该账户标识,且可以设置版本号。之后,区块链系统可以将该账户标识、该版本号作为第二交易数据存储至区块链。第二交易数据被存储至区块链后,第二交易数据将不可被篡改。
126.(3)区块链系统根据区块链存储的与该账户标识相关的交易数据,重新构建该账户标识的索引文件。
127.值得注意的是,在该账户标识与账户地址绑定的情况下,该账户标识的索引文件可以指示与该账户标识关联的账户地址,此时在该账户标识的索引文件中用该账户标识进行索引,可以得到该账户标识当前关联的账户地址。而在该账户标识与账户地址解绑的情况下,该账户标识的索引文件可以指示与该账户标识关联的账户地址为空,即该账户标识当前没有关联的账户地址,此时在该账户标识的索引文件中用该账户标识进行索引,将不能得到该账户标识关联的账户地址。
128.具体地,区块链系统可以从区块链存储的与该账户标识相关的交易数据中获取版本号最高的交易数据作为目标交易数据,然后根据目标交易数据构建该账户标识的索引文件。在该账户标识与账户地址解绑的情况下,目标交易数据中可以包括该账户标识、版本号。这种情况下,该账户标识的索引文件中可以包括目标交易数据中的该账户标识、版本
号。在该账户标识的索引文件中用该账户标识进行索引,可以得到版本号。
129.在将该账户标识与该账户地址进行解绑后,终端还可以将该账户标识与其他账户地址进行绑定,绑定过程与上述将该账户标识与该账户地址绑定的过程类似,本申请实施例对此不再赘述。
130.值得注意的是,区块链系统每接收到账户标识绑定请求或账户标识解绑请求时,在将相关交易数据(如上述第一交易数据或第二交易数据)存储至区块链后,都需要根据区块链存储的与该账户标识相关的交易数据,构建该账户标识的索引文件。
131.而区块链系统每接收到账户标识绑定请求或账户标识解绑请求时,在将相关交易数据(如上述第一交易数据或第二交易数据)存储至区块链之前,需要先设置交易数据中的版本号。比如,上述步骤403中区块链系统在将第一交易数据存储至区块链之前,需要设置第一交易数据中的版本号。上述步骤404的步骤(2)中区块链系统在将第二交易数据存储至区块链之前,需要设置第二交易数据中的版本号。
132.可选地,区块链系统可以在不存在该账户标识的索引文件的情况下,将该交易数据中的版本号设置为初始版本号;在存在该账户标识的索引文件的情况下,将该交易数据中的版本号设置为该账户标识的索引文件中的版本号加1后得到的版本号。
133.区块链系统在将该交易数据存储至区块链之前,若不存在该账户标识的索引文件,则说明该账户标识是首次与账户地址进行绑定,因而可以将该交易数据中的版本号设置为初始版本号。该初始版本号可以是预先设定的一个值,如该初始版本号可以是1。
134.区块链系统在将该交易数据存储至区块链之前,若存在该账户标识的索引文件,则说明该账户标识之前已经与账户地址进行绑定或解绑过,所以可以将该账户标识的索引文件中的版本号加1来得到新的版本号并添加到该交易数据中。
135.区块链系统构建该账户标识的索引文件之后,不仅可以将该账户标识的索引文件存储至内存,还可以将该账户标识的索引文件存储至其他设备,如可以存储至硬盘等外部存储器,以便区块链系统在因系统崩溃等原因而发生重启时,可以根据外部存储器存储的索引文件而快速重建该账户标识的索引文件。
136.具体地,区块链系统构建该账户标识的索引文件之后,可以获取该账户标识的索引文件的哈希值作为第一哈希值;将该账户标识的索引文件存储至其他设备,以及将第一哈希值存储至区块链或智能合约。之后,若区块链系统重启,则从该其他设备获取该账户标识的索引文件作为目标索引文件;获取目标索引文件的哈希值作为第二哈希值;若第二哈希值与存储的第一哈希值相同,则将目标索引文件确定为该账户标识的索引文件;若第二哈希值与存储的第一哈希值不同,则根据区块链存储的与该账户标识相关的交易数据,重新构建该账户标识的索引文件。
137.区块链系统在将第一哈希值存储至区块链或智能合约时,还可以将第一哈希值的时间戳也存储至区块链或智能合约。第一哈希值的时间戳用于指示第一哈希值的生成时间。对于该账户标识来说,区块链系统在该账户标识与账户地址进行绑定或解绑的过程中,会不断重新构建该账户标识的索引文件。区块链系统在每次重新构建该账户标识的索引文件之后,都可以将该账户标识的索引文件的哈希值存储至区块链或智能合约,因而区块链或智能合约中可能会存储有多个第一哈希值。这种情况下,在区块链系统重启时,区块链系统可以从区块链或智能合约中获取时间戳最新的第一哈希值作为需要与第二哈希值进行
比较的第一哈希值。
138.若第二哈希值与存储的第一哈希值相同,说明该其他设备存储的目标索引文件未被篡改,则区块链系统可以直接将目标索引文件确定为该账户标识的索引文件,如此,可以提高索引文件的创建效率。若第二哈希值与存储的第一哈希值不同,说明该其他设备存储的目标索引文件已被篡改,则区块链系统可以根据区块链存储的与该账户标识相关的交易数据,来重新构建该账户标识的索引文件,以保证所构建的索引文件的真实可信性。
139.值得注意的是,在将该账户标识与账户地址进行绑定的情况下,终端可以通过该账户标识实现对该账户地址对应的区块链账户的操作,具体过程如下:
140.步骤405:终端向区块链系统发送账户操作请求,该账户操作请求携带该账户标识。
141.该账户操作请求用于请求对该账户标识关联的账户地址对应的区块链账户进行操作。
142.该账户操作请求还可以携带数字签名,该数字签名是使用该账户标识关联的账户地址对应的公私钥对中的私钥对信息摘要进行加密后得到。该信息摘要是对该账户标识进行哈希运算后得到。
143.步骤406:区块链系统接收到终端发送的账户操作请求后,根据该账户操作请求携带的账户标识的索引文件,确定该账户标识关联的账户地址,对该账户标识关联的账户地址对应的区块链账户进行操作。
144.区块链系统接收到终端发送的账户操作请求后,根据该账户操作请求携带的账户标识可以快速查找到该账户标识的索引文件,然后根据该账户标识的索引文件可以高效且安全地确定所关联的账户地址,继而据此对区块链账户进行操作。
145.区块链系统确定该账户标识关联的账户地址后,可以先对该账户操作请求中的数字签名进行验证,在该数字签名验证通过后,再对该账户标识关联的账户地址对应的区块链账户进行操作。
146.区块链系统对该账户操作请求中的数字签名进行验证时,可以获取该账户标识关联的账户地址对应的区块链账户的公钥;使用该公钥对该数字签名进行解密,得到第五信息摘要,对该账户操作请求中的账户标识进行哈希运算,得到第六信息摘要;若第五信息摘要与第六信息摘要相同,则确定该数字签名验证通过,若第五信息摘要与第六信息摘要不同,则确定该数字签名验证失败。
147.值得注意的是,区块链系统包括多个区块链节点,该多个区块链节点共享区块链,也即,该多个区块链节点中的每个区块链节点都配置有相同的区块链。这种情况下,对于该多个区块链节点中的每个区块链节点来说,都可以根据自身配置的区块链来构建索引文件,后续也可以根据所构建的索引文件来实现对相关区块链账户的操作。也即,对于该多个区块链节点中的任意一个区块链节点来说,这个区块链节点可以根据自身配置的区块链存储的与某一账户标识相关的交易数据,构建该账户标识的索引文件,且在后续接收到携带有该账户标识的账户操作请求时,可以根据该账户标识的索引文件获取所关联的账户地址,再对该账户地址对应的区块链账户进行操作。
148.在本申请实施例中,区块链系统接收账户标识绑定请求,该账户标识绑定请求携带账户标识和账户地址,该账户标识的字符数小于该账户地址的字符数。区块链系统将该
账户标识绑定请求对应的第一交易数据存储至区块链,第一交易数据包括该账户标识与该账户地址之间的关联关系。之后,区块链系统根据区块链存储的与该账户标识相关的交易数据,构建该账户标识的索引文件,该账户标识的索引文件用于指示该账户标识关联的账户地址。由于区块链的不可篡改性,所以根据区块链存储的与该账户标识相关的交易数据构建出的索引文件是真实可信的,如此可以提高后续通过该索引文件实现对区块链账户的操作时的安全性。
149.图5是本申请实施例提供的一种索引构建方法的流程图。该方法应用于区块链系统,该区块链系统可以是上文图1

图2实施例所述的区块链系统100,也可以是上文图3实施例所述的区块链系统302。参见图5,该方法包括如下步骤。
150.步骤501:接收账户标识绑定请求,该账户标识绑定请求携带账户标识和账户地址,该账户标识的字符数小于该账户地址的字符数。
151.步骤501的相关内容已经在上述步骤401和步骤402进行解释说明,本申请实施例对此不再赘述。
152.步骤502:将该账户标识绑定请求对应的第一交易数据存储至区块链,第一交易数据包括该账户标识与该账户地址之间的关联关系。
153.步骤502的相关内容已经在上述步骤403进行解释说明,本申请实施例对此不再赘述。
154.步骤503:根据区块链存储的与该账户标识相关的交易数据,构建该账户标识的索引文件,该账户标识的索引文件用于指示该账户标识关联的账户地址。
155.步骤503的相关内容已经在上述步骤404进行解释说明,本申请实施例对此不再赘述。
156.在本申请实施例中,区块链系统接收账户标识绑定请求,该账户标识绑定请求携带账户标识和账户地址,该账户标识的字符数小于该账户地址的字符数。区块链系统将该账户标识绑定请求对应的第一交易数据存储至区块链,第一交易数据包括该账户标识与该账户地址之间的关联关系。之后,区块链系统根据区块链存储的与该账户标识相关的交易数据,构建该账户标识的索引文件,该账户标识的索引文件用于指示该账户标识关联的账户地址。由于区块链的不可篡改性,所以根据区块链存储的与该账户标识相关的交易数据构建出的索引文件是真实可信的,如此可以提高后续通过该索引文件实现对区块链账户的操作时的安全性。
157.图6是本申请实施例提供的一种索引构建装置的结构示意图,该装置应用于区块链系统,该区块链系统可以是上文图1

图2实施例所述的区块链系统100,也可以是上文图3实施例所述的区块链系统302。参见图6,该装置包括:接收模块601、第一存储模块602、构建模块603。
158.接收模块601,用于接收账户标识绑定请求,账户标识绑定请求携带账户标识和账户地址,账户标识的字符数小于账户地址的字符数;
159.第一存储模块602,用于将账户标识绑定请求对应的第一交易数据存储至区块链,第一交易数据包括账户标识与账户地址之间的关联关系;
160.构建模块603,用于根据区块链存储的与账户标识相关的交易数据,构建账户标识的索引文件,账户标识的索引文件用于指示账户标识关联的账户地址。
161.可选地,第一交易数据和账户标识的索引文件均包括版本号,该装置还包括:
162.第一设置模块,用于在不存在账户标识的索引文件的情况下,将第一交易数据中的版本号设置为初始版本号;
163.第二设置模块,用于在存在账户标识的索引文件的情况下,将第一交易数据中的版本号设置为账户标识的索引文件中的版本号加1后得到的版本号。
164.可选地,构建模块603用于:
165.从区块链存储的与账户标识相关的交易数据中获取版本号最高的交易数据作为目标交易数据;
166.根据目标交易数据构建账户标识的索引文件。
167.可选地,账户标识的索引文件的数据结构为字典树或b+树。
168.可选地,接收模块601,还用于接收账户标识解绑请求,账户标识解绑请求携带账户标识和账户地址;
169.第一存储模块602,还用于将账户标识解绑请求对应的第二交易数据存储至区块链,第二交易数据包括账户标识;
170.构建模块603,还用于根据区块链存储的与账户标识相关的交易数据,重新构建账户标识的索引文件。
171.可选地,该装置还包括:
172.第一获取模块,用于获取账户标识的索引文件的哈希值作为第一哈希值;
173.第二存储模块,用于将账户标识的索引文件存储至其他设备,以及将第一哈希值存储至区块链或智能合约;
174.第二获取模块,用于在区块链系统重启的情况下,从其他设备获取账户标识的索引文件作为目标索引文件;
175.第三获取模块,用于获取目标索引文件的哈希值作为第二哈希值;
176.第一确定模块,用于在第二哈希值与存储的第一哈希值相同的情况下,将目标索引文件确定为账户标识的索引文件;
177.构建模块603,还用于在第二哈希值与存储的第一哈希值不同的情况下,根据区块链存储的与账户标识相关的交易数据,重新构建账户标识的索引文件。
178.可选地,该装置还包括:
179.接收模块601,还用于接收账户操作请求,账户操作请求携带账户标识;
180.第二确定模块,用于根据账户标识的索引文件,确定账户标识关联的账户地址;
181.账户操作模块,用于对账户标识关联的账户地址对应的区块链账户进行操作。
182.在本申请实施例中,区块链系统接收账户标识绑定请求,该账户标识绑定请求携带账户标识和账户地址,该账户标识的字符数小于该账户地址的字符数。区块链系统将该账户标识绑定请求对应的第一交易数据存储至区块链,第一交易数据包括该账户标识与该账户地址之间的关联关系。之后,区块链系统根据区块链存储的与该账户标识相关的交易数据,构建该账户标识的索引文件,该账户标识的索引文件用于指示该账户标识关联的账户地址。由于区块链的不可篡改性,所以根据区块链存储的与该账户标识相关的交易数据构建出的索引文件是真实可信的,如此可以提高后续通过该索引文件实现对区块链账户的操作时的安全性。
183.需要说明的是:上述实施例提供的索引构建装置在索引构建时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
184.上述实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请实施例的保护范围。
185.上述实施例提供的索引构建装置与索引构建方法实施例属于同一构思,上述实施例中单元、模块的具体工作过程及带来的技术效果,可参见方法实施例部分,此处不再赘述。
186.图7为本申请实施例提供的一种计算机设备的结构示意图。上文图1

图2实施例所述的区块链系统100,或者上文图3实施例所述的区块链系统302,可以通过计算机设备7实现。如图7所示,计算机设备7包括:处理器70、存储器71以及存储在存储器71中并可在处理器70上运行的计算机程序72,处理器70执行计算机程序72时实现上文图5实施例中的索引构建方法中的步骤。
187.计算机设备7可以是通用计算机设备或专用计算机设备。在具体实现中,计算机设备7可以是由多台服务器组成的服务器集群。本领域技术人员可以理解,图7仅仅是计算机设备7的举例,并不构成对计算机设备7的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,比如还可以包括输入输出设备、网络接入设备等。
188.处理器70可以是中央处理单元(central processing unit,cpu),处理器70还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field

programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者也可以是任何常规的处理器。
189.存储器71在一些实施例中可以是计算机设备7的内部存储单元,比如计算机设备7的硬盘或内存。存储器71在另一些实施例中也可以是计算机设备7的外部存储设备,比如计算机设备7上配备的插接式硬盘,智能存储卡(smart media card,smc),安全数字(secure digital,sd)卡,闪存卡(flash card)等。进一步地,存储器71还可以既包括计算机设备7的内部存储单元也包括外部存储设备。存储器71用于存储操作系统、应用程序、引导装载程序(bootloader)、数据以及其他程序等,比如计算机程序的程序代码等。存储器71还可以用于暂时地存储已经输出或者将要输出的数据。
190.本申请实施例还提供了一种计算机设备,该计算机设备包括:至少一个处理器、存储器以及存储在该存储器中并可在该至少一个处理器上运行的计算机程序,该处理器执行该计算机程序时实现上述任意各个方法实施例中的步骤。
191.本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时可实现上述各个方法实施例中的步骤。
192.本申请实施例提供了一种计算机程序产品,当其在计算机上运行时,使得计算机执行上述各个方法实施例中的步骤。
193.集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述方法实施例中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,该计算机程序包括计算机程序代码,该计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。该计算机可读介质至少可以包括:能够将计算机程序代码携带到拍照装置/终端设备的任何实体或装置、记录介质、计算机存储器、rom(read

only memory,只读存储器)、ram(random access memory,随机存取存储器)、cd

rom(compact disc read

only memory,只读光盘)、磁带、软盘和光数据存储设备等。本申请提到的计算机可读存储介质可以为非易失性存储介质,换句话说,可以是非瞬时性存储介质。
194.应当理解的是,实现上述实施例的全部或部分步骤可以通过软件、硬件、固件或者其任意结合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。该计算机指令可以存储在上述计算机可读存储介质中。
195.在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
196.本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
197.在本申请所提供的实施例中,应该理解到,所揭露的装置/计算机设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/计算机设备实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
198.作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
199.以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1