一种块链式账本中的签名验证方法、系统、装置及设备
技术领域
本说明书实施例涉及信息技术领域,尤其涉及一种块链式账本中的签名验证方法、系统、装置及设备。
背景技术
在中心化的数据库服务端以块链式账本对外提供服务时,通常一个账本可能会存在多个用户。为了保障账本中数据的真实性,账本中的数据往来,一般都会需要数字签名,此外,数据库服务端还会产生针对账本的其它相关签名证书,例如,针对部分账本的授时证书。从而,在一个账本中可以涉及多种数字签名。
在块链式账本中存在多种签名,用户需要随时了解与自己相关的其他方的数字签名是真实可信的,但是实际中,用户并不清除自己在账本中的数据会涉及到哪些其他利益方,以及,如何去验证其它利益方的数字签名。
基于此,用户有需要对与自己的数据相关联的其他利益方进行灵活的数字签名验证。
发明内容
本申请实施例的目的是提供一种块链式账本中实现数字签名验证的方法。
为解决上述技术问题,本申请实施例是这样实现的:
一种块链式账本中的签名验证方法,应用于包括数据库服务端和客户端的系统中,所述数据库服务端以中心化的方式通过块链式账本存储数据,包括:
客户端,发送包含验证对象参数和哈希值的签名验证指令至数据库服务端,所述验证对象参数包括其他方参数、平台参数以及授时证书参数,所述验证对象参数用于指示待验证对象的类型;
服务端,基于验证对象参数和所述哈希值获取待验证对象,所述待验证对象的类型包括其他方数字签名、服务端数字签名或者授时证书;
服务端发送待验证对象至客户端;
客户端对所述待验证对象执行验证,生成验证结果。
对应的,本说明书实施例还提供一种块链式账本中的签名验证系统,包括数据库服务端和客户端的系统中,所述数据库服务端以中心化的方式通过块链式账本存储数据,
客户端,发送包含验证对象参数和哈希值的签名验证指令至数据库服务端,所述验证对象参数包括其他方参数、平台参数以及授时证书参数,所述验证对象参数用于指示待验证对象的类型;
服务端,基于验证对象参数和所述哈希值获取待验证对象,所述待验证对象的类型包括其他方数字签名、服务端数字签名或者授时证书;
服务端,发送待验证对象发送至客户端;
客户端,对所述待验证对象执行验证,生成验证结果。
对应的,本说明书实施例还提供一种块链式账本中的签名验证方法,应用于以中心化的方式通过块链式账本存储数据的数据库服务端中,所述方法包括:
接收包含验证对象参数和哈希值的签名验证指令,所述验证对象参数包括其他方参数、平台参数以及授时证书参数,所述验证对象参数用于指示待验证对象的类型;
基于验证对象参数和所述哈希值获取待验证对象,所述待验证对象的类型包括其他方数字签名、服务端数字签名或者授时证书;
发送待验证对象发送至客户端,以便客户端进行验证。
对应的,本说明书实施例还提供一种块链式账本中的签名验证装置,应用于以中心化的方式通过块链式账本存储数据的数据库服务端中,所述装置包括:
接收模块,接收包含验证对象参数和哈希值的签名验证指令,所述验证对象参数包括其他方参数、平台参数以及授时证书参数,所述验证对象参数用于指示待验证对象的类型;
确定模块,基于验证对象参数和所述哈希值获取待验证对象,所述待验证对象的类型包括其他方数字签名、服务端数字签名或者授时证书;
发送模块,发送待验证对象发送至客户端,以便客户端进行验证。
由以上本申请实施例提供的技术方案可见,通过用户在发起验证时通过验证对象参数指明需要验证的类型,以及给出相关的哈希值,服务端则可以根据哈希值以及验证对象参数确定出用户想要验证的数字签名,从而获取得到对于该哈希值相关的数据的数字签名给用户,以便用户进行验证。本实施例可以便于用户灵活的针对同一账本中涉及的各种数字签名进行验证。
此外,本说明书实施例中的任一实施例并不需要达到上述的全部效果。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为本说明书实施例所涉及的系统的架构示意图;
图2是本说明书实施例提供的一种链式账本的授时认证方法的流程示意图;
图3为本说明书实施例给出的一种具体的生成授时证书的示意图;
图4为本说明书实施例所提供的一种块链式账本中的签名验证方法的流程示意图;
图5为本说明书实施例所提供的服务端方面的块链式账本中的签名验证方法的流程示意图;
图6是本说明书实施例提供的一种块链式账本中的签名验证装置的结构示意图;
图7是用于配置本说明书实施例方法的一种设备的结构示意图。
具体实施方式
为了使本领域技术人员更好地理解本说明书实施例中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行详细地描述,显然,所描述的实施例仅仅是本说明书的一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于保护的范围。
首先对本说明书中所涉及的中心化的块链式的账本进行说明。
在本说明书实施例所涉及中心化的数据库服务提供方中,一个账本包括含多个数据块,数据块通过如下方式预先生成:
接收待存储的数据记录,确定各数据记录的哈希值。此处的待存储的数据记录,可以是客户端个人用户的各种消费记录,也可以是应用服务器基于用户的指令,在执行业务逻辑时产生的业务结果、中间状态以及操作记录等等。具体的业务场景可以包括消费记录、审计日志、供应链条、政府监管记录、医疗记录等等。
当达到预设的成块条件时,确定待写入数据块中的各数据记录,生成包含数据块的哈希值和数据记录的第N个数据块。
所述预设的成块条件包括:待存储的数据记录数量达到数量阈值,例如,每接收到一千条数据记录时,生成一个新数据块,将一千条数据记录写入块中;或者,距离上一次成块时刻的时间间隔达到时间阈值,例如,每隔5分钟,生成一个新数据块,将在这5分钟内接收到的数据记录写入块中。
此处的N指的是数据块的序号,换言之,在本说明书实施例中,数据块是以块链的形式,基于成块时间的顺序先后排列,具有很强的时序特征。其中,数据块的块高基于成块时间的先后顺序单调递增。块高可以是序号,此时第N个数据块的块高即为N;块高也可以其它方式生成。
当N=1时,即此时的数据块为为初始数据块。初始数据块的哈希值和块高基于预设方式给定。例如,初始数据块中不包含数据记录,哈希值则为任一给定的哈希值,块高blknum=0;又例如,初始数据块的生成触发条件与其它数据块的触发条件一致,但是初始数据块的哈希值由对初始数据块中的所有内容取哈希确定。
当N>1时,由于前一数据块的内容和哈希值已经确定,则此时,可以基于前一数据块(即第N-1个数据块)的哈希值生成当前数据块(第N个数据块)的哈希值,例如,一种可行的方式为,确定每一条将要写入第N个块中的数据记录的哈希值,按照在块中的排列顺序,生成一个默克尔树,将默克尔树的根哈希值和前一数据块的哈希值拼接在一起,再次采用哈希算法,生成当前块的哈希值。又例如,还可以按照块中数据记录的顺序进行拼接并取哈希得到整体数据记录的哈希值,拼接前一数据块的哈希值和整体数据记录的哈希值,并对拼接得到的字串进行哈希运算,生成数据块的哈希值。
在服务端生成一个数据块并写入账本时,即可以将数据块的哈希值以及数据块中各数据记录的哈希值返回给客户端。
通过前述的数据块的生成方式,每一个数据块通过哈希值确定,数据块的哈希值由数据块中的数据记录的内容、顺序以及前一数据块的哈希值决定。用户可以随时基于数据块的哈希值发起验证,对于数据块中任何内容(包括对于数据块中数据记录内容或者顺序的修改)的修改都会造成在验证时计算得到的数据块的哈希值和数据块生成时的哈希值不一致,而导致验证失败,从而实现了中心化下的不可篡改。
具体而言,对于数据记录的验证方式即为获取所述数据记录,确定所述记录的哈希,以及数据记录所处的数据块中的其它数据记录的哈希值,形成默克尔树,验证能否重新生成该默克尔树的默克尔树根哈希。对于数据块的验证方式即为根据前一数据块的哈希值以及自身数据记录,重新计算自身数据块的哈希值,验证与之前计算得到的哈希值是否一致。
在这个服务方式中,一个账本有可能是对接多个机构用户(此处的用户一般是企业级B端用户)的。例如,一个账本同时对接多个医院和医保机构,然后,这些医院和医保机构在对个人用户提供服务时,将相关的医疗记录写入账本中。在这个过程中,医院和医保机构在将医疗记录写入账本前,一般会携带数字签名,数据库服务端可以在签名验证通过后,将医疗记录写入账本。
又或者,一个账本有可能是对接多个业务合作机构用户,各机构不对外服务,只是分别将各自的业务数据记录写入同一账本,其中,任一机构的业务数据记录在写入账本前,需要该业务数据所涉及的多方用户进行确认。如图1所示,图1为本说明书实施例所涉及的系统的架构示意图。需要说明的是,在该架构中,个人用户可以通过业务机构向服务端发起验证请求,也可以直接向服务端发起验证请求。
对于个人用户/机构用户而言,他知道自身的数据记录写入了账本。同时,数据记录被写入账本的时候,其还会得到与自身数据记录相关的哈希值(数据记录生成的哈希值,或者数据记录所处的数据块的哈希值),并且,可以基于前述哈希值直接对服务端发起查询和验证。
同时,在本说明书实施例所提供的账本中,为了防止伪链,还提供一种对于账本的授时认证的方法,如图2所示,图2是本说明书实施例提供的一种链式账本的授时认证方法的流程示意图,该流程具体包括如下步骤:
S201,确定需要进行授时认证的目标账本,所述目标账本中至少包含一个数据块,或者多个块高连续的数据块。
首先需要说明的是,如前所述,在所述链式账本中,除初始数据块以外,每一数据块中包含至少一条数据记录,每一数据块中包含由前一数据块的哈希值和自身所包含的数据记录确定的自身数据块的哈希值,数据块的块高基于成块时间的先后顺序单调递增。
具体而言,服务方首先从已经生成并存储的数据块中确定出需要进行授时认证的一段账本,其中至少应该包含一个数据块,或者多个块高连续的数据块。确定的方式可以基于用户操作进行指定,例如,用户发起授时指令,指令中包含需要进行授时认证的起始块高和块数量;也可以是无需用户指定,服务方基于预设的业务逻辑自动进行。
例如,从最细粒度上,可以每一个数据块都去申请授时。在这种方式下,默克尔树的根哈希即为该数据块的块哈希值,该方式可以最大程度的对账本(即各数据块)进行真实性的保护。由于数据块的出块频率较高,这种方式无论对于授时中心,还是对于服务方而言,成本开销都会比较大。一种可选的方式为,设置一定的授时预设条件,当满足一定的授时预设条件时,发起授时请求。在新生成的数据块都认为是待授时认证的数据块时,所述的授时预设条件可以是:待授时认证的数据块达到数量阈值,或者,距离上一次授时认证的时间间隔已经到达时间阈值。
S203,按照所述目标账本中数据块的块高的顺序,生成对应于所述目标账本的默克尔树,基于各数据块的块哈希确定所述默克尔树的根哈希。
由于链式账本的前后依存性,此处生成的默克尔树只需按照各数据块的顺序进行生成即可。具体的根哈希的计算方式即为常规的计算方式,此处不再赘述。
S205,将所述默克尔树的根哈希和数据块的相关信息发送至可信授时机构,其中,所述数据块的相关信息包括起始块高、结束块高或者数据块的数量;
可信授时机构(例如,国家授时中心或者国家授时中心的授权授时机构)接收到上述信息,即给出一个可信时间戳,并且对可信时间戳进行数字签名认证,生成一个包含可信时间戳和数字签名的授时证书,其中还可以包含上述数据块的相关信息,数字签名的方式为常规的私钥加密、公钥解密即可。
S207,接收可信授时机构所返回的对应于所述目标账本的包含可信时间戳和可信授时机构签名的的授时证书;
从而,服务方可以接收到一连串的包含可信授时机构签名的可信时间戳,每一个可信时间戳对应于一段账本,并且,基于相关信息可以明确的知道是哪一段数据块。服务方可以基于该可信时间戳进行相应的管理,以及验证。
例如,在需要对某账本进行审计时,服务方可以给出账本中相应的数据块包含可信授时机构的可信时间戳和签名的授时证书,并且根据授时证书中所包含的相关信息进行默克尔树根哈希的重新计算,如果计算得到的默克尔树根哈希与授权证书中的一致,则可以验证该段证书是正确无误的。并且,从可信时间戳上还可以确认该证书所对应的数据块是不可能被日后伪造的,可以有效防止服务方和被服务方联合制造包含虚假时间戳的账本,以躲避相应的审计。如图3所示,图3为本说明书实施例给出的一种具体的生成授时证书的示意图。在该示意图,默克尔树未被具体示出。授时证书可以确认并验证该部分账本不可能被日后伪造,可以有效防止服务方和被服务方联合制造包含虚假时间戳的账本。
在前述过程中,可以看到,对于某个个人用户/机构用户而言,有可能有多条数据记录分散的存在账本中,每条数据记录可能涉及到不同的机构方,当用户需要对账本的真实性进行验证时,其还关心与自己的数据相关的机构的签名的和服务端的数字签名的可靠性,以及,服务端所提供的授时证书的真实性。
基于此,本说明书实施例提供一种块链式账本中的签名验证方法,应用于包括数据库服务端和客户端的系统中,所述数据库服务端以中心化的方式通过块链式账本存储数据,如图4所示,图4为本说明书实施例所提供的一种块链式账本中的签名验证方法的流程示意图,包括:
S401,客户端,发送包含验证对象参数和哈希值的签名验证指令至数据库服务端,所述验证对象参数包括其他方参数、平台参数以及授时证书参数。
如图1所示,个人用户或者机构用户均可以通过验证指令的方式,向服务端发起对于数字签名的验证,由于数字签名可能包含多种,因此,验证对象参数用于指示服务端本次待验证对象的类型,以便服务端去对应的获取待验证对象。
其中,其他方参数用于指示待验证对象为其他方数字签名,平台参数用于指示待验证对象为服务端数字签名,授时证书参数用于指示待验证对象为授时证书。
以下给出几种验证指令的具体示例:
1,VerifyProof(Role,hash1),其中的“Role”即为其他方参数;
2,VerifyProof(ANT,hash2),其中的“ANT”即为平台参数;
3,VerifyProof(CA,hash3),其中的“CA”即为授时证书参数。
显然,在实际应用中,具体的验证指令的形式以及验证对象参数的形式可以基于实际需要自行设定,这并不构成对本方案的限定。
S403,服务端,基于验证对象参数和所述哈希值获取待验证对象,所述待验证对象的类型包括其他方数字签名、服务端数字签名或者授时证书。
服务端首先基于哈希值确定用户需要验证的数据记录或者数据块,同时,根据数据记录或者数据块得到相应的包含数字签名的待验证对象,显然,待验证对象的类型是由验证对象参数指定的,具体而言:
1,当验证对象参数为其他方参数,本次需要验证的即为其他方数字签名。在以“Role”作为其他方参数进行验证时,操作指令中并不需要用户指定具体的其他方是谁,服务端可以基于哈希值确定对应的数据记录或者数据块,进而确定数据记录或者数据块中所涉及的其他方,例如,将该哈希值所对应的数据块中,所有涉及写入数据的其他用户确定为其他方。
从而,服务端将哈希值对应的数据记录或者数据块DATA发送给已经确定的其他方,所述其他方在接收到之后即对于数据记录或者数据块DATA进行哈希运算,得到以一个摘要Digest(DATA),并且利用自己的私钥对摘要加密进行数字签名,生成对于摘要的加密数据DigestEncode(DATA),并且返回该加密数据至服务端。
2,当验证对象参数为服务端参数时,本次需要验证的即为服务端数字签名,则此时,服务端直接对由哈希值所确定的数据记录或者数据块进行私钥签名,生成加密数据DigestEncode(DATA)即可。
3,当验证对象参数为授时证书参数,本次待验证对象的类型为授时证书。服务端此时只需确定验证指令中的哈希值所对应的数据块的块高(如果该哈希值对应的是一个数据记录,则确定该数据记录所处的数据块的块高),进而确定出该块高所对应的授时证书(一份授时证书对应于一段连续的账本,相当于对应了一个块高区间)即可。
S405,服务端发送待验证对象至客户端。
服务端将获取得到的加密数据DigestEncode(DATA),或者,授时证书返回至客户端。显然,在加密数据DigestEncode(DATA)中已经包含了客户端想要验证的对象的数字签名;如前所述,在授时证书中是已经包含了可信授时机构的私钥签名。当然,在返回加密数据DigestEncode(DATA)的同时,服务端还可以放回原文数据DATA至客户端(一般而言,客户端本地会保存有DATA原文)。
S407,客户端对所述待验证对象执行验证,生成验证结果。
具体的验证方式即为,采用加密对象所对应的公钥(其他方或者服务端的公钥是对于任何人都公开,可随时获取)对加密数据DigestEncode(DATA)解密,得到摘要Digest(DATA),同时用本地或者服务端返回的DATA再生成一个摘要Digest(DATA)_local,对比Digest(DATA)和(DATA)_local,如果一致,则说明其他方或者服务端的签名是可靠的。
对于授时证书的验证与前述类似类似,采用可信授时机构所公开的公钥对授时证书进行解密,得到授时证书中所包含的信息:部分账本的起点数据块高、终点数据块高、可信时间戳和所述部分账本的根哈希。如果能得到前述信息,则说明服务端所提供的授时证书是真实可信的。
以上本申请实施例提供的技术方案可见,通过用户在发起验证时通过验证对象参数指明需要验证的类型,以及给出相关的哈希值,服务端则可以根据哈希值以及验证对象参数确定出用户想要验证的数字签名,从而获取得到对于该哈希值相关的数据的数字签名给用户,以便用户进行验证。本实施例可以便于用户灵活的针对同一账本中涉及的各种数字签名进行验证。
对应的,本说明书实施例还提供一种块链式账本中的签名验证系统,包括数据库服务端和客户端的系统中,所述数据库服务端以中心化的方式通过块链式账本存储数据,
客户端,发送包含验证对象参数和哈希值的签名验证指令至数据库服务端,所述验证对象参数包括其他方参数、平台参数以及授时证书参数,所述验证对象参数用于指示待验证对象的类型;
服务端,基于验证对象参数和所述哈希值获取待验证对象,所述待验证对象的类型包括其他方数字签名、服务端数字签名或者授时证书;
服务端,发送待验证对象发送至客户端;
客户端,对所述待验证对象执行验证,生成验证结果。
进一步地,在所述系统中,当所述验证对象参数为其他方参数时,服务端基于其他方参数确定待验证对象的类型为其他方数字签名;相应的,服务端确定哈希值所对应的数据记录或者数据块,将所述数据记录发送至所述账本的其它参与方,以便其他方对所述数据记录或者数据块进行数字签名;接收其他方返回的加密数据,所述加密数据为所述其他方对所述数据记录或者数据块进行数字签名得到。
进一步地,在所述系统中,当所述验证对象参数为服务端参数时,服务端基于服务端参数确定待验证对象为服务端数字签名;相应的,服务端确定哈希值所对应的数据记录或者数据块;服务端对所述数据记录或者数据块进行数字签名,生成包含服务端数字签名的加密数据。
进一步地,在所述系统中,当所述验证对象参数为授时证书参数时,服务端基于授时证书参数确定待验证对象为授时证书;相应的,服务端确定哈希值所对应的数据记录所处的数据块的块高,或者确定所述哈希值所对应的数据块的块高;获取所述数据块所对应的授时证书,其中,所述授时证书对应一段连续的部分账本,所述授时证书中包括所述部分账本的起点数据块高、终点数据块高、可信时间戳和所述部分账本的根哈希,用于明确所述部分账本的生成时间,并,包含可信授时机构的数字签名。
进一步地,在所述服务端中,数据块通过如下方式预先生成:接收待存储的数据记录,确定各数据记录的哈希值;当达到预设的成块条件时,确定待写入数据块中的各数据记录,生成包含数据块的哈希值和数据记录的第N个数据块,具体包括:
当N=1时,初始数据块的哈希值和块高基于预设方式给定;
当N>1时,根据待写入数据块中的各数据记录和第N-1个数据块的哈希值确定第N个数据块的哈希值,生成包含第N个数据块的哈希值、各数据记录和数据块的成块时间的第N个数据块,其中,数据块的块高基于成块时间的先后顺序单调递增。
进一步地,在所述系统中的服务端中,所述授时证书通过如下方式预先生成:服务端确定需要进行授时认证的目标账本,所述目标账本中至少包含一个数据块,或者多个块高连续的数据块;按照所述目标账本中数据块的块高的顺序,生成对应于所述目标账本的默克尔树,基于各数据块的块哈希确定所述默克尔树的根哈希;将所述默克尔树的根哈希和数据块的相关信息发送至可信授时机构,其中,所述数据块的相关信息包括起始块高、结束块高或者数据块的数量;接收可信授时机构所返回的对应于所述目标账本的包含可信时间戳和可信授时机构数字签名的的授时证书。
对应的,本说明书实施例还提供一种块链式账本中的签名验证方法,应用于以中心化的方式通过块链式账本存储数据的数据库服务端中,如图5所示,图5为本说明书实施例所提供的服务端方面的块链式账本中的签名验证方法的流程示意图,包括:
S501,接收包含验证对象参数和哈希值的签名验证指令,所述验证对象参数包括其他方参数、平台参数以及授时证书参数,所述验证对象参数用于指示待验证对象的类型;
S503,基于验证对象参数和所述哈希值获取待验证对象,所述待验证对象的类型包括其他方数字签名、服务端数字签名或者授时证书;
S505,发送待验证对象发送至客户端,以便客户端进行验证。
进一步地,本说明书实施例还提供一种块链式账本中的签名验证装置,应用于以中心化的方式通过块链式账本存储数据的数据库服务端中,如图6所示,图6是本说明书实施例提供的一种块链式账本中的签名验证装置的结构示意图,包括:
接收模块601,接收包含验证对象参数和哈希值的签名验证指令,所述验证对象参数包括其他方参数、平台参数以及授时证书参数,所述验证对象参数用于指示待验证对象的类型;
确定模块603,基于验证对象参数和所述哈希值获取待验证对象,所述待验证对象的类型包括其他方数字签名、服务端数字签名或者授时证书;
发送模块605,发送待验证对象发送至客户端,以便客户端进行验证。
本说明书实施例还提供一种计算机设备,其至少包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行所述程序时实现图5所示的块链式账本中的签名验证方法。
图7示出了本说明书实施例所提供的一种更为具体的计算设备硬件结构示意图,该设备可以包括:处理器1010、存储器1020、输入/输出接口1030、通信接口1040和总线1050。其中处理器1010、存储器1020、输入/输出接口1030和通信接口1040通过总线1050实现彼此之间在设备内部的通信连接。
处理器1010可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
存储器1020可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1020可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1020中,并由处理器1010来调用执行。
输入/输出接口1030用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口1040用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线1050包括一通路,在设备的各个组件(例如处理器1010、存储器1020、输入/输出接口1030和通信接口1040)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器1010、存储器1020、输入/输出接口1030、通信接口1040以及总线1050,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
本说明书实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现图5所示的块链式账本中的签名验证方法。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书实施例可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本说明书实施例各个实施例或者实施例的某些部分所述的方法。
上述实施例阐明的系统、方法、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于方法实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的方法实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,在实施本说明书实施例方案时可以把各模块的功能在同一个或多个软件和/或硬件中实现。也可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅是本说明书实施例的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本说明书实施例原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本说明书实施例的保护范围。