CN110188112B 一种区块链智能合约的变更记录的追溯方法及装置(深圳前海微众银行股份有限公司)_第1页
CN110188112B 一种区块链智能合约的变更记录的追溯方法及装置(深圳前海微众银行股份有限公司)_第2页
CN110188112B 一种区块链智能合约的变更记录的追溯方法及装置(深圳前海微众银行股份有限公司)_第3页
CN110188112B 一种区块链智能合约的变更记录的追溯方法及装置(深圳前海微众银行股份有限公司)_第4页
CN110188112B 一种区块链智能合约的变更记录的追溯方法及装置(深圳前海微众银行股份有限公司)_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

(19)国家知识产权局(12)发明专利(10)授权公告号CN110188112B(65)同一申请的已公布的文献号(73)专利权人深圳前海微众银行股份有限公司地址518027广东省深圳市前海深港合作区前湾一路1号A栋201室(72)发明人刘明臻张开翔范瑞彬周禄(74)专利代理机构北京同达信恒知识产权代理有限公司11291专利代理师黄志华审查员靳苗苗获取查询请求根据所述区块链的区块中记录的状态树根节点,确定所述状态树根节点对应的状态树;并根据所述智能合约的标获取查询请求根据所述区块链的区块中记录的状态树根节点,确定所述状态树根节点对应的状态树;并根据所述智能合约的标识,从所述状态树中确定出所述智能合约的关键字段根据所述关键字段,确定所述智能合约的变更信息,并生成所述智能合约的变更记录(57)摘要本发明涉及金融科技领域,并公开了一种区块链智能合约的变更记录的追溯方法及装置,该方法包括:获取查询请求,根据区块链的区块中记录的状态树根节点,确定状态树根节点对应的状态树,并根据智能合约的标识,从状态树中确定出智能合约的关键字段,以及根据关键字段,确定智能合约的变更信息,并生成智能合约的变更记录。该技术方案可以实现高效、快速地获取21.一种区块链智能合约的变更记录的追溯方法,其特征在于,包括:获取查询请求;所述查询请求用于指示从区块链中确定出所述查询请求中待追溯的智能合约的变更记录;根据所述区块链的区块中记录的状态树根节点,确定所述状态树根节点对应的状态树;并根据所述智能合约的标识,从所述状态树中确定出所述智能合约的关键字段;所述关键字段用于表征所述智能合约的变更信息存储在所述区块链中的区块的高度;根据所述关键字段,确定所述智能合约的变更信息,并生成所述智能合约的变更记录;接收所述智能合约的创建请求;根据所述创建请求,在所述区块链中创建所述智能合约,生成记录有创建所述智能合约的交易的第一区块;并将所述第一区块的高度确定为所述智能合约创建时的关键字段,存储至所述第一区块的状态树根节点对应的状态树中;以及接收所述智能合约的追加数据请求;根据所述追加数据请求,将所述追加数据请求中的待追加数据写入所述智能合约,生成记录有将所述待追加数据写入所述智能合约的交易的第二区块;并将所述第二区块的高度确定为所述智能合约追加数据时的关键字段,存储至所述第二区块的状态树根节点对应的状态树中。2.如权利要求1所述的方法,其特征在于,所述根据所述区块链的区块中记录的状态树根节点,确定所述状态树根节点对应的状态树;并根据所述智能合约的标识,从所述状态树中确定出所述智能合约的关键字段,包括:获取所述区块链的最高区块,将所述最高区块确定为当前区块;根据所述当前区块中记录的状态树根节点,确定所述状态树根节点对应的状态树;并根据所述智能合约的标识,从所述状态树中确定出所述智能合约追加数据时的关键字段;将确定出的所述智能合约追加数据时的关键字段减1后对应的区块继续确定为当前区块,并根据所述当前区块中记录的状态树根节点,确定所述状态树根节点对应的状态树,以及根据所述智能合约的标识,从所述状态树中确定出所述智能合约追加数据时的关键字段;直至确定出所述智能合约创建时的关键字段为止。3.如权利要求1至2任一项所述的方法,其特征在于,所述根据所述关键字段,确定所述智能合约的变更信息,并生成所述智能合约的变更记录,包括:根据多个关键字段,解析各关键字段对应的区块,得到所述智能合约的各变更信息;将所述智能合约的各变更信息倒序后,确定为所述智能合约的变更记录。4.一种区块链智能合约的变更记录的追溯装置,其特征在于,包括:获取单元,用于获取查询请求;所述查询请求用于指示从区块链中确定出所述查询请求中待追溯的智能合约的变更记录;处理单元,用于根据所述区块链的区块中记录的状态树根节点,确定所述状态树根节点对应的状态树;并根据所述智能合约的标识,从所述状态树中确定出所述智能合约的关键字段;所述关键字段用于表征所述智能合约的变更信息存储在所述区块链中的区块的高度;以及根据所述关键字段,确定所述智能合约的变更信息,并生成所述智能合约的变更记在所述获取查询请求之前,接收所述智能合约的创建请求;根据所述创建请求,在所述3区块链中创建所述智能合约,生成记录有创建所述智能合约的交易的第一区块;并将所述第一区块的高度确定为所述智能合约创建时的关键字段,存储至所述第一区块的状态树根节点对应的状态树中;以及接收所述智能合约的追加数据请求;根据所述追加数据请求,将所述追加数据请求中的待追加数据写入所述智能合约,生成记录有将所述待追加数据写入所述智能合约的交易的第二区块;并将所述第二区块的高度确定为所述智能合约追加数据时的关键字段,存储至所述第二区块的状态树根节点对应的状态树中。5.如权利要求4所述的装置,其特征在于,所述处理单元具体用于:获取所述区块链的最高区块,将所述最高区块确定为当前区块;根据所述当前区块中记录的状态树根节点,确定所述状态树根节点对应的状态树;并根据所述智能合约的标识,从所述状态树中确定出所述智能合约追加数据时的关键字段;将确定出的所述智能合约追加数据时的关键字段减1后对应的区块继续确定为当前区块,并根据所述当前区块中记录的状态树根节点,确定所述状态树根节点对应的状态树,以及根据所述智能合约的标识,从所述状态树中确定出所述智能合约追加数据时的关键字段;直至确定出所述智能合约创建时的关键字段为止。6.如权利要求4至5任一项所述的装置,其特征在于,所述处理单元具体用于:根据多个关键字段,解析各关键字段对应的区块,得到所述智能合约的各变更信息;将所述智能合约的各变更信息倒序后,确定为所述智能合约的变更记录。处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行权利要求1至3任一项所述的方法。8.一种计算机可读非易失性存储介质,其特征在于,包括计算机可读指令,当计算机读取并执行所述计算机可读指令时,使得计算机执行如权利要求1至3任一项所述的方法。4一种区块链智能合约的变更记录的追溯方法及装置技术领域[0001]本发明实施例涉及金融科技(Fintech)领域,尤其涉及一种区块链(BlockChain)智能合约的变更记录的追溯方法及装置。背景技术[0002]区块链是由一系列区块组成的一条链,每个区块记录本块的数据及上一块的哈希值,所有区块通过这种方式前后相继组成一条链。区块链所基于的密码学技术和去中心化思想使链上的历史信息无法被篡改。[0003]随着计算机技术的发展,越来越多的技术应用在金融领域,传统金融业正在逐步也对技术提出的更高的要求。[0004]现有的区块链系统中,存证类智能合约提供追加接口用于向智能合约中追加写入新的存证信息。该类智能合约在存证时把新的存证信息追加写入智能合约,在需要该存证信息时,可以直接从智能合约中读取该存证信息。[0005]现有技术中,只读取智能合约中的存证信息,并不能确定出智能合约中各存证信息的存储记录,即不能追溯到智能合约中内容的变更记录,进一步也不能保障读到的存证信息的真实性。发明内容[0006]本发明实施例提供一种区块链智能合约的变更记录的追溯方法及装置,通过高效、快速地获取智能合约的变更记录,根据变更记录确保智能合约中存证信息的真实性。[0007]本发明实施例提供的一种区块链智能合约的变更记录的追溯方法,包括:[0008]获取查询请求;所述查询请求用于指示从区块链中确定出所述查询请求中待追溯的智能合约的变更记录;[0009]根据所述区块链的区块中记录的状态树根节点,确定所述状态树根节点对应的状态树;并根据所述智能合约的标识,从所述状态树中确定出所述智能合约的关键字段;所述关键字段用于表征所述智能合约的变更信息存储在所述区块链中的区块的高度;[0010]根据所述关键字段,确定所述智能合约的变更信息,并生成所述智能合约的变更[0011]上述技术方案中,根据区块链的区块中记录的状态树根节点,确定状态树根节点对应的状态树,并根据智能合约的标识,从状态树中确定出智能合约的关键字段,该智能合约的关键字段即区块链中记录智能合约变更信息的区块的高度,根据关键字段,解析各关键字段对应的区块,即可以确定出各变更信息,生成变更记录。该技术方案,无需遍历整个区块链中各区块的交易记录,而是直接将智能合约的变更信息定位到具体区块,进而解析该具体区块,可以快速、高效的获取智能合约的变更记录。进一步根据追溯到的智能合约的变更记录,以确保智能合约中存证信息的真实性。5[0013]接收所述智能合约的创建请求;根据所述创建请求,在所述区块链中创建所述智能合约,生成记录有创建所述智能合约的交易的第一区块;并将所述第一区块的高度确定为所述智能合约创建时的关键字段,存储至所述第一区块的状态树根节点对应的状态树[0014]以及接收所述智能合约的追加数据请求;根据所述追加数据请求,将所述追加数据请求中的待追加数据写入所述智能合约,生成记录有所述将待追加数据写入所述智能合约的交易的第二区块;并将所述第二区块的高度确定为所述智能合约追加数据时的关键字段,存储至所述第二区块的状态树根节点对应的状态树中。[0015]上述技术方案中,智能合约创建时,将创建智能合约的交易存储在区块链的第一区块中,并且把该第一区块的高度作为关键字段,以及每次智能合约变更时,都会将本次智能合约的变更信息存储在区块链的第二区块中,且将该第二区块的区块高度作为关键字段,将关键字段存储至对应区块的状态树根节点对应的状态树中,用于在区块链中查询智能合约的变更信息时,将变更信息迅速定位到某个特定区块上,以实现追溯变更信息的高[0016]可选的,所述根据所述区块链的区块中记录的状态树根节点,确定所述状态树根节点对应的状态树;并根据所述智能合约的标识,从所述状态树中确定出所述智能合约的[0017]获取所述区块链的最高区块,将所述最高区块确定为当前区块;根据所述当前区块中记录的状态树根节点,确定所述状态树根节点对应的状态树;并根据所述智能合约的标识,从所述状态树中确定出所述智能合约追加数据时的关键字段;[0018]将确定出的所述智能合约追加数据时的关键字段减1后对应的区块继续确定为当前区块,并根据所述当前区块中记录的状态树根节点,确定所述状态树根节点对应的状态树,以及根据所述智能合约的标识,从所述状态树中确定出所述智能合约追加数据时的关键字段;直至确定出所述智能合约创建时的关键字段为止。[0019]上述技术方案中,从区块链的最高区块开始,从最高区块中确定该最高区块对应的状态树,并从中确定出智能合约追加数据时的关键字段;进一步,将关键字段减1后对应的区块开始,继续确定状态树以及状态树中的关键字段,重复上述步骤直至确定出智能合约创建时的关键字段为止,也就是确定出该智能合约的全部变更信息为止。进一步的,通过该技术方案中根据区块确定状态树,再根据状态树确定关键字段的方式,可以无需遍历整个区块链中的每个区块,例如,最高区块高度是100,可以根据该最高区块确定出关键字段为10,进一步将区块高度为9的区块作为当前区块,从该当前区块中确定出关键字段,由上可知,本技术方案中无需查询区块高度为10至99的区块,明显提高了追溯变更记录的效率。[0020]可选的,所述根据所述关键字段,确定所述智能合约的变更信息,并生成所述智能[0021]根据多个关键字段,解析各关键字段对应的区块,得到所述智能合约的各变更信[0022]将所述智能合约的各变更信息倒序后,确定为所述智能合约的变更记录。[0023]上述技术方案中,智能合约的关键字段可以为多个,根据多个关键字段,解析各关6键字段对应的区块,并从各区块中解析出智能合约的各变更信息,又由于本发明实施例是从区块链的最高区块开始获取关键字段,即上述获取到的各智能合约的变更信息是倒序的,所以需要将智能合约的各变更信息执行倒序操作后,确定为智能合约的变更记录,倒序后的变更信息的顺序更符合人员查看的习惯,提高了用户体验。[0024]相应的,本发明实施例还提供了一种区块链智能合约的变更记录的追溯装置,包[0025]获取单元,用于获取查询请求;所述查询请求用于指示从区块链中确定出所述查询请求中待追溯的智能合约的变更记录;[0026]处理单元,用于根据所述区块链的区块中记录的状态树根节点,确定所述状态树根节点对应的状态树;并根据所述智能合约的标识,从所述状态树中确定出所述智能合约的关键字段;所述关键字段用于表征所述智能合约的变更信息存储在所述区块链中的区块的高度;以及根据所述关键字段,确定所述智能合约的变更信息,并生成所述智能合约的变[0028]在所述获取查询请求之前,接收所述智能合约的创建请求;根据所述创建请求,在所述区块链中创建所述智能合约,生成记录有创建所述智能合约的交易的第一区块;并将所述第一区块的高度确定为所述智能合约创建时的关键字段,存储至所述第一区块的状态树根节点对应的状态树中;[0029]以及接收所述智能合约的追加数据请求;根据所述追加数据请求,将所述追加数据请求中的待追加数据写入所述智能合约,生成记录有所述将待追加数据写入所述智能合约的交易的第二区块;并将所述第二区块的高度确定为所述智能合约追加数据时的关键字段,存储至所述第二区块的状态树根节点对应的状态树中。[0031]获取所述区块链的最高区块,将所述最高区块确定为当前区块;根据所述当前区块中记录的状态树根节点,确定所述状态树根节点对应的状态树;并根据所述智能合约的标识,从所述状态树中确定出所述智能合约追加数据时的关键字段;[0032]将确定出的所述智能合约追加数据时的关键字段减1后对应的区块继续确定为当前区块,并根据所述当前区块中记录的状态树根节点,确定所述状态树根节点对应的状态树,以及根据所述智能合约的标识,从所述状态树中确定出所述智能合约追加数据时的关键字段;直至确定出所述智能合约创建时的关键字段为止。[0034]根据多个关键字段,解析各关键字段对应的区块,得到所述智能合约的各变更信[0035]将所述智能合约的各变更信息倒序后,确定为所述智能合约的变更记录。[0038]处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行上述区块链智能合约的变更记录的追溯方法。[0039]相应的,本发明实施例还提供了一种计算机可读非易失性存储介质,包括计算机7可读指令,当计算机读取并执行所述计算机可读指令时,使得计算机执行上述区块链智能合约的变更记录的追溯方法。附图说明[0040]为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。[0041]图1为本发明实施例提供的一种系统架构的示意图;[0042]图2为本发明实施例提供的一种区块链智能合约的变更记录的追溯方法的流程示[0043]图3为本发明实施例提供的一种区块链中区块头的结构示意图;[0044]图4为本发明实施例提供的一种确定智能合约的关键字段的流程示意图;[0045]图5为本发明实施例提供的一种区块链智能合约的变更记录的追溯装置的结构示具体实施方式[0046]为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。[0047]区块链系统中可以部署存证类智能合约,该类智能合约可以提供追加接口用于向智能合约中追加写入新的存证信息,不会提供修改接口,进而保障该类智能合约仅可以追加写入存证信息,但不能更改已经存入智能合约的存证信息。[0048]存证类智能合约在存证时,可以把存证信息或者存证信息的哈希(Hash)值写入智能合约,在取证时把智能合约中的存证信息或者存证信息的哈希值读取出来进行比较校验。具体实现中,可以在区块链中采用分层的智能合约结构:工厂合约和存证合约。工厂合约由存证各方事前约定,存储存证生效条件,并管理存证的生成;存证合约由工厂合约生[0049]图1示例性的示出了本发明实施例提供区块链智能合约的变更记录的追溯方法所适用的系统架构,该系统架构可以包括查询服务器100和区块链系统200。[0050]查询服务器100用于向区块链系统200发送查询请求,查询请求中包括待追溯的智能合约的标识,该查询请求用于指示区块链系统200从区块链中确定出查询请求中待追溯的智能合约的变更记录。其中,智能合约即存证类智能合约,为方便描述,下面提到的智能合约都是用于存储证据类的合约。智能合约的标识可以是该智能合约的名称、地址等。[0051]区块链系统200接收到该查询请求后,会根据查询请求中的待追溯的智能合约的标识,从区块链中确定出该智能合约中合约内容的变更信息,并组成变更记录。区块链系统200将智能合约的变更记录反馈至查询服务器100。[0052]基于上述描述,图2示例性的示出了本发明实施例提供的一种区块链智能合约的8变更记录的追溯方法的流程,该流程可以由区块链智能合约的变更记录的追溯装置执行,[0053]步骤201,获取查询请求。[0054]该查询请求即查询服务器向区块链系统发送的记录有待追溯的智能合约的标识的请求,该查询请求用于指示从区块链中确定出待追溯的智能合约的变更记录。[0055]步骤202,根据所述区块链的区块中记录的状态树根节点,确定所述状态树根节点对应的状态树,并根据所述智能合约的标识,从所述状态树中确定出所述智能合约的关键[0056]步骤203,根据所述关键字段,确定所述智能合约的变更信息,并生成所述智能合约的变更记录。[0057]示例性的,智能合约的追溯过程可以涉及到三个角色,分别为用户、存证机构、仲裁机构,如用户向存证机构借款,存证机构即可以在区块链中创建智能合约,记录“用户向存证机构借款100元”,进一步的,当用户每向存证机构还款时,存证机构都会根据该还款信若在用户还款过程中或者过程后,用户和存证机构发生争议,则仲裁机构可以通过查询服务器向区块链系统发送该智能合约的查询请求,用于指示区块链系统根据该查询请求确定出该智能合约的变更记录。[0058]本发明实施例中,追溯智能合约的变更记录,即需要确定出智能合约的每次变更智能合约中写入存证信息“用户还款10元””,智能合约的每次变更信息是作为区块链的交易信息存储在区块链的具体区块中,为保证更快速、高效的确定出智能合约的变更记录,需要针对每次变更信息,确定出每次变更信息存储在区块链的具体区块的高度。[0059]此处,可以先对区块链的应用平台一以太坊的数据存储结构做简单说明,以太坊区块链上区块数据中保存了三棵Merkle树根的节点,其中,三棵Merkle树分别是状态树、交易树和收据树,存储三棵Merkle树可以方便账户做更多查询。状态树根节点(StateRoot)、交易树节点(TransactionRoot)和收据树根节点(ReceiptRoot)分别理解为状态树根散列值、交易树根散列值和收据树根散列值,可以如图3所示据树根节点存储在区块头中,区块头中还可以包括父块的散列值(PrevHash)、叔区块的散列值(UnclesHash)、时间戳(Timestamp)、随机数(N[0060]一种可行的实现方式中,可以在智能合约中添加关键字段,该关键字段用于表征智能合约的变更信息存储在区块链中的区块的高度,也就是说,每次智能合约变更时,都会将本次智能合约的变更信息存储在区块链的区块中,且将该区块的区块高度作为关键字段存储在智能合约中。区块高度可以理解为某区块在区块链上的特定标识,可以是区块高度,也可以是区块编号。此外,区块链在创建智能合约时,也会将记录有创建智能合约的交易的区块高度存储在智能合约中。进一步解释,状态树包含合约账户,合约账户里保存着智能合约的可执行字节码(编译之后的,在EVM(EnvironmentVirtualMachine,以太坊虚拟机)里执行),并且有存储空间,智能合约可以对合约账户的存储空间中写入信息。所以上述表述中,将关键字段存储在智能合约中,相当于将关键字段存储在区块的状态树根节点对应的状态树中。此外,本发明实施例中的写入智能合约相当于写入智能合约的存储空间中。9[0061]也就是说,可以在步骤201获取查询请求之前,接收智能合约的创建请求,根据该创建请求,在区块链中创建智能合约,并生成记录有创建智能合约的交易的第一区块,然后将第一区块的高度确定为智能合约创建时的关键字段,存储至第一区块的状态树根节点对应的状态树中。以及接收智能合约的追加数据请求,根据追加数据请求,将追加数据请求中的待追加数据写入智能合约,并生成记录有将待追加数据写入智能合约的交易的第二区块,然后将第二区块的高度确定为智能合约追加数据时的关键字段,存储至第二区块的状态树根节点对应的状态树中。此处,可以多次将待追加数据存储至智能合约中,也就是说,该第二区块可以为多个,以及该智能合约追加数据时的关键字段也可以为多个。[0062]在步骤201的获取查询请求之后,即可以根据该查询请求从区块链中确定智能合约在创建时和在追加数据时的关键字段。本发明实施例中,区块链系统可以根据区块链中区块的状态树根节点确定出对应的状态树,并根据智能合约的标识,从状态树中确定智能合约的关键字段。具体的,可以从区块链的最高区块开始,即先获取到区块链的最高区块,并将该最高区块确定为当前区块,根据当前区块中记录的状态树根节点,确定状态树根节点对应的状态树,并根据智能合约的标识,从状态树中确定出智能合约追加数据时的关键字段。随后,将确定出的智能合约追加数据时的关键字段减1后对应的区块继续确定为当前区块,并根据当前区块中记录的状态树根节点,确定状态树根节点对应的状态树,以及根据智能合约的标识,从状态树中确定出智能合约追加数据时的关键字段,直至确定出智能合约创建时的关键字段为止。为了更好的理解本发明实施例,可以参照图4的流程图,对本实施例进一步说明。[0063]步骤401,获取区块链的最高区块,将该最高区块确定为当前区块。[0064]步骤402,根据当前区块中记录的状态树根节点,确定状态树根节点对应的状态[0065]步骤403,根据智能合约的标识,从状态树中确定出智能合约追加数据时的关键字[0066]步骤404,将确定出的智能合约追加数据时的关键字段M—1,并将M—1对应的区块作为当前区块。[0067]步骤405,判断是否确定出智能合约创建时的关键字段,若是,则结束,否则,转向步骤402。[0068]在根据上述实施例已经确定出该智能合约在创建时和追加数据时的关键字段,则可以如步骤203中,根据确定出的关键字段,确定该智能合约的变更信息,并生成智能合约的变更记录。由于智能合约的关键字段可以为多个,则可以根据多个关键字段,解析各关键字段对应的区块,并从各区块中解析出智能合约的各变更信息,又由于本发明实施例是从区块链的最高区块开始获取关键字段,即上述获取到的各智能合约的变更信息是倒序的,所以需要将智能合约的各变更信息执行倒序操作后,确定为智能合约的变更记录。比如,第一次(根据最高区块)获取到智能合约在5月30号记录的变更信息,第二次是在4月30号记录的变更信息,第三次是在3月30号记录的变更信息,所以需要将三次获取到的变更信息执行倒序操作后,生成最终的智能合约的变更记录。[0069]本发明实施例中,在解析各区块时,可以解析出各区块的时间戳(timestamp)信息,用于智能合约追溯过程中的参考信息,同时可以把该时间戳信息对应记录在智能合约[0070]为了更好的解释本发明实施例,以上述用户向存证机构借款进行举例说明。能合约的内容为“用户向存证机构借款100元”。创建智能合约的交易记录在区块链的区块高度为1的区块上。[0072]2019年2月,用户向存证机构还款10元,则智能合约中追加数据为“用户还款10加该数据的交易记录在区块链的区块高度为3的区块上。[0073]2019年3月,用户向存证机构还款20元,则智能合约中追加数据为“用户还款20对智能合约追加该数据的交易记录在区块链的区块高度为10的区块上。[0074]2019年5月,用户和存证机构发生争议,仲裁机构通过查询服务器向区块链系统发送该智能合约的查询请求。区块链系统中区块链的最高区块的高度为100,则区块链系统首先根据最高区块确定出智能合约的关键字段为10,即智能合约中追加数据“用户还款20元”的交易记录是在区块链的区块高度为10的区块上。进一步的,区块链系统根据关键字段10减1后,确定区块高度为9的区块,并从中确定出智能合约的关键字段为3,即智能合约中追加数据“用户还款10元”的交易记录是在区块链的区块高度为3的区块根据关键字段3减1后,确定区块高度为2的区块,并从中确定出智能合约的关键字段为1,即创建智能合约“用户向存证机构借款100元”的交易记录是在区块链的区块高度为1的区块上。从上述确定出的关键字段对应的区块中分别解析出智能合约的变更信息如下:[0075]变更信息1:区块高度10中的交易信息是“追加智能合约数据,写入“用户向存证机[0076]变更信息2:区块高度3中的交易信息是“追加智能合约数据,写入“用户向存证机[0077]变更信息3:区块高度1中的交易信息是“创建智能合约,写入“用户向存证机构借款100元””。可以提供给人员查看。[0079]上述实施例中,根据区块链的区块中记录的状态树根节点,确定状态树根节点对应的状态树,并根据智能合约的标识,从状态树中确定出智能合约的关键字段,该智能合约的关键字段即区块链中记录智能合约变更信息的区块的高度,根据关键字段,解析各关键字段对应的区块,即可以确定出各变更信息,生成变更记录。该技术方案,无需遍历整个区块链中各区块的交易记录,而是直接将智能合约的变更信息定位到具体区块,进而解析该具体区块,可以快速、高效的获取智能合约的变更记录。进一步根据追溯到的智能合约的变更记录,以确保智能合约中存证信息的真实性。[0080]此外,需要说明的是,本发明实施例提供智能合约的变更记录的追溯方法,可以有效保障智能合约中存证信息的真实性。解释为,现有技术中读取智能合约中的数据,例如读取到的信息是“用户向存证机构借款100元,用户还款10元,用户还款20元”,但是仅能读取到该数据,以及确定该智能合约中写入了该数据,但是具体什么时间写入的,现有技术中并11不能确定,也就是说,存证机构可以一次性写入该信息,也可以分三次或两次写入该信息,所以,需要对该智能合约的变更记录进行追溯,这样,可以确保智能合约中各写入信息的写[0081]基于同一发明构思,图5示例性的示出了本发明实施例提供的一种区块链智能合约的变更记录的追溯装置的结构,该装置可以执行区块链智能合约的变更记录的追溯方法的流程。[0083]获取单元501,用于获取查询请求;所述查询请求用于指示从区块链中确定出所述查询请求中待追溯的智能合约的变更记录;[0084]处理单元502,用于根据所述区块链的区块中记录的状态树根节点,确定所述状态树根节点对应的状态树;并根据所述智能合约的标识,从所述状态树中确定出所述智能合约的关键字段;所述关键字段用于表征所述智能合约的变更信息存储在所述区块链中的区块的高度;以及根据所述关键字段,确定所述智能合约的变更信息,并生成所述智能合约的变更记录。[0086]在所述获取查询请求之前,接收所述智能合约的创建请求;根据所述创建请求,在所述区块链中创建所述智能合约,生成记录有创建所述智能合约的交易的第一区块;并将所述第一区块的高度确定为所述智能合约创建时的关键字段,存储至所述第一区块的状态树根节点对应的状态树中;[0087]以及接收所述智能合约的追加数据请求;根据所述追加数据请求,将所述追加数据请求中的待追加数据写入所述智能合约,生成记录有所述将待追加数据写入所述智能合约的交易的第二区块;并将所述第二区块的高度确定为所述智能合约追加数据时的关键字段,存储至所述第二区块的状态树根节点对应的状态树中。[0088]可选的,所述处理单元502具体用于:[0089]获取所述区块链的最高区块,将所述最高区块确定为当前区块;根据所述当前区块中记录的状态树根节点,确定所述状态树根节点对应的状态树;并根据所述智能合约的标识,从所述状态树中确定出所述智能合约追加数据时的关键字段;[0090]将确定出的所述智能合约追加数据时的关键字段减1后对应的区块继续确定为当前区块,并根据所述当前区块中记录的状态树根节点,确定所述状态树根节点对应的状态树,以及根据所述智能合约的标识,从所述状态树中确定出所述智能合约追加数据时的关键字段;直至

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论