CN110188112A - 一种区块链智能合约的变更记录的追溯方法及装置 - Google Patents
一种区块链智能合约的变更记录的追溯方法及装置 Download PDFInfo
- Publication number
- CN110188112A CN110188112A CN201910470438.9A CN201910470438A CN110188112A CN 110188112 A CN110188112 A CN 110188112A CN 201910470438 A CN201910470438 A CN 201910470438A CN 110188112 A CN110188112 A CN 110188112A
- Authority
- CN
- China
- Prior art keywords
- intelligent contract
- block
- determined
- critical field
- state
- 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.)
- Pending
Links
Classifications
-
- 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/23—Updating
- G06F16/2358—Change logging, detection, and notification
-
- 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
Abstract
本发明涉及金融科技领域,并公开了一种区块链智能合约的变更记录的追溯方法及装置,该方法包括:获取查询请求,根据区块链的区块中记录的状态树根节点,确定状态树根节点对应的状态树,并根据智能合约的标识,从状态树中确定出智能合约的关键字段,以及根据关键字段,确定智能合约的变更信息,并生成智能合约的变更记录。该技术方案可以实现高效、快速地获取智能合约的变更记录,并根据变更记录确保智能合约中存证信息的真实性。
Description
技术领域
本发明实施例涉及金融科技(Fintech)领域,尤其涉及一种区块链(BlockChain)智能合约的变更记录的追溯方法及装置。
背景技术
区块链是由一系列区块组成的一条链,每个区块记录本块的数据及上一块的哈希值,所有区块通过这种方式前后相继组成一条链。区块链所基于的密码学技术和去中心化思想使链上的历史信息无法被篡改。
随着计算机技术的发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技转变,区块链传输技术也不例外,但由于金融、支付行业的安全性、实时性要求,也对技术提出的更高的要求。
现有的区块链系统中,存证类智能合约提供追加接口用于向智能合约中追加写入新的存证信息。该类智能合约在存证时把新的存证信息追加写入智能合约,在需要该存证信息时,可以直接从智能合约中读取该存证信息。
现有技术中,只读取智能合约中的存证信息,并不能确定出智能合约中各存证信息的存储记录,即不能追溯到智能合约中内容的变更记录,进一步也不能保障读到的存证信息的真实性。
发明内容
本发明实施例提供一种区块链智能合约的变更记录的追溯方法及装置,通过高效、快速地获取智能合约的变更记录,根据变更记录确保智能合约中存证信息的真实性。
本发明实施例提供的一种区块链智能合约的变更记录的追溯方法,包括:
获取查询请求;所述查询请求用于指示从区块链中确定出所述查询请求中待追溯的智能合约的变更记录;
根据所述区块链的区块中记录的状态树根节点,确定所述状态树根节点对应的状态树;并根据所述智能合约的标识,从所述状态树中确定出所述智能合约的关键字段;所述关键字段用于表征所述智能合约的变更信息存储在所述区块链中的区块的高度;
根据所述关键字段,确定所述智能合约的变更信息,并生成所述智能合约的变更记录。
上述技术方案中,根据区块链的区块中记录的状态树根节点,确定状态树根节点对应的状态树,并根据智能合约的标识,从状态树中确定出智能合约的关键字段,该智能合约的关键字段即区块链中记录智能合约变更信息的区块的高度,根据关键字段,解析各关键字段对应的区块,即可以确定出各变更信息,生成变更记录。该技术方案,无需遍历整个区块链中各区块的交易记录,而是直接将智能合约的变更信息定位到具体区块,进而解析该具体区块,可以快速、高效的获取智能合约的变更记录。进一步根据追溯到的智能合约的变更记录,以确保智能合约中存证信息的真实性。
可选的,在所述获取查询请求之前,还包括:
接收所述智能合约的创建请求;根据所述创建请求,在所述区块链中创建所述智能合约,生成记录有创建所述智能合约的交易的第一区块;并将所述第一区块的高度确定为所述智能合约创建时的关键字段,存储至所述第一区块的状态树根节点对应的状态树中;
以及接收所述智能合约的追加数据请求;根据所述追加数据请求,将所述追加数据请求中的待追加数据写入所述智能合约,生成记录有所述将待追加数据写入所述智能合约的交易的第二区块;并将所述第二区块的高度确定为所述智能合约追加数据时的关键字段,存储至所述第二区块的状态树根节点对应的状态树中。
上述技术方案中,智能合约创建时,将创建智能合约的交易存储在区块链的第一区块中,并且把该第一区块的高度作为关键字段,以及每次智能合约变更时,都会将本次智能合约的变更信息存储在区块链的第二区块中,且将该第二区块的区块高度作为关键字段,将关键字段存储至对应区块的状态树根节点对应的状态树中,用于在区块链中查询智能合约的变更信息时,将变更信息迅速定位到某个特定区块上,以实现追溯变更信息的高效性。
可选的,所述根据所述区块链的区块中记录的状态树根节点,确定所述状态树根节点对应的状态树;并根据所述智能合约的标识,从所述状态树中确定出所述智能合约的关键字段,包括:
获取所述区块链的最高区块,将所述最高区块确定为当前区块;根据所述当前区块中记录的状态树根节点,确定所述状态树根节点对应的状态树;并根据所述智能合约的标识,从所述状态树中确定出所述智能合约追加数据时的关键字段;
将确定出的所述智能合约追加数据时的关键字段减1后对应的区块继续确定为当前区块,并根据所述当前区块中记录的状态树根节点,确定所述状态树根节点对应的状态树,以及根据所述智能合约的标识,从所述状态树中确定出所述智能合约追加数据时的关键字段;直至确定出所述智能合约创建时的关键字段为止。
上述技术方案中,从区块链的最高区块开始,从最高区块中确定该最高区块对应的状态树,并从中确定出智能合约追加数据时的关键字段;进一步,将关键字段减1后对应的区块开始,继续确定状态树以及状态树中的关键字段,重复上述步骤直至确定出智能合约创建时的关键字段为止,也就是确定出该智能合约的全部变更信息为止。进一步的,通过该技术方案中根据区块确定状态树,再根据状态树确定关键字段的方式,可以无需遍历整个区块链中的每个区块,例如,最高区块高度是100,可以根据该最高区块确定出关键字段为10,进一步将区块高度为9的区块作为当前区块,从该当前区块中确定出关键字段,由上可知,本技术方案中无需查询区块高度为10至99的区块,明显提高了追溯变更记录的效率。
可选的,所述根据所述关键字段,确定所述智能合约的变更信息,并生成所述智能合约的变更记录,包括:
根据多个关键字段,解析各关键字段对应的区块,得到所述智能合约的各变更信息;
将所述智能合约的各变更信息倒序后,确定为所述智能合约的变更记录。
上述技术方案中,智能合约的关键字段可以为多个,根据多个关键字段,解析各关键字段对应的区块,并从各区块中解析出智能合约的各变更信息,又由于本发明实施例是从区块链的最高区块开始获取关键字段,即上述获取到的各智能合约的变更信息是倒序的,所以需要将智能合约的各变更信息执行倒序操作后,确定为智能合约的变更记录,倒序后的变更信息的顺序更符合人员查看的习惯,提高了用户体验。
相应的,本发明实施例还提供了一种区块链智能合约的变更记录的追溯装置,包括:
获取单元,用于获取查询请求;所述查询请求用于指示从区块链中确定出所述查询请求中待追溯的智能合约的变更记录;
处理单元,用于根据所述区块链的区块中记录的状态树根节点,确定所述状态树根节点对应的状态树;并根据所述智能合约的标识,从所述状态树中确定出所述智能合约的关键字段;所述关键字段用于表征所述智能合约的变更信息存储在所述区块链中的区块的高度;以及根据所述关键字段,确定所述智能合约的变更信息,并生成所述智能合约的变更记录。
可选的,所述处理单元还用于:
在所述获取查询请求之前,接收所述智能合约的创建请求;根据所述创建请求,在所述区块链中创建所述智能合约,生成记录有创建所述智能合约的交易的第一区块;并将所述第一区块的高度确定为所述智能合约创建时的关键字段,存储至所述第一区块的状态树根节点对应的状态树中;
以及接收所述智能合约的追加数据请求;根据所述追加数据请求,将所述追加数据请求中的待追加数据写入所述智能合约,生成记录有所述将待追加数据写入所述智能合约的交易的第二区块;并将所述第二区块的高度确定为所述智能合约追加数据时的关键字段,存储至所述第二区块的状态树根节点对应的状态树中。
可选的,所述处理单元具体用于:
获取所述区块链的最高区块,将所述最高区块确定为当前区块;根据所述当前区块中记录的状态树根节点,确定所述状态树根节点对应的状态树;并根据所述智能合约的标识,从所述状态树中确定出所述智能合约追加数据时的关键字段;
将确定出的所述智能合约追加数据时的关键字段减1后对应的区块继续确定为当前区块,并根据所述当前区块中记录的状态树根节点,确定所述状态树根节点对应的状态树,以及根据所述智能合约的标识,从所述状态树中确定出所述智能合约追加数据时的关键字段;直至确定出所述智能合约创建时的关键字段为止。
可选的,所述处理单元具体用于:
根据多个关键字段,解析各关键字段对应的区块,得到所述智能合约的各变更信息;
将所述智能合约的各变更信息倒序后,确定为所述智能合约的变更记录。
相应的,本发明实施例还提供了一种计算设备,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行上述区块链智能合约的变更记录的追溯方法。
相应的,本发明实施例还提供了一种计算机可读非易失性存储介质,包括计算机可读指令,当计算机读取并执行所述计算机可读指令时,使得计算机执行上述区块链智能合约的变更记录的追溯方法。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种系统架构的示意图;
图2为本发明实施例提供的一种区块链智能合约的变更记录的追溯方法的流程示意图;
图3为本发明实施例提供的一种区块链中区块头的结构示意图;
图4为本发明实施例提供的一种确定智能合约的关键字段的流程示意图;
图5为本发明实施例提供的一种区块链智能合约的变更记录的追溯装置的结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
区块链系统中可以部署存证类智能合约,该类智能合约可以提供追加接口用于向智能合约中追加写入新的存证信息,不会提供修改接口,进而保障该类智能合约仅可以追加写入存证信息,但不能更改已经存入智能合约的存证信息。
存证类智能合约在存证时,可以把存证信息或者存证信息的哈希(Hash)值写入智能合约,在取证时把智能合约中的存证信息或者存证信息的哈希值读取出来进行比较校验。具体实现中,可以在区块链中采用分层的智能合约结构:工厂合约和存证合约。工厂合约由存证各方事前约定,存储存证生效条件,并管理存证的生成;存证合约由工厂合约生成,存证合约中存储存证信息、存证信息的标识、哈希值和各方签名等。
图1示例性的示出了本发明实施例提供区块链智能合约的变更记录的追溯方法所适用的系统架构,该系统架构可以包括查询服务器100和区块链系统200。
查询服务器100用于向区块链系统200发送查询请求,查询请求中包括待追溯的智能合约的标识,该查询请求用于指示区块链系统200从区块链中确定出查询请求中待追溯的智能合约的变更记录。其中,智能合约即存证类智能合约,为方便描述,下面提到的智能合约都是用于存储证据类的合约。智能合约的标识可以是该智能合约的名称、地址等。
区块链系统200接收到该查询请求后,会根据查询请求中的待追溯的智能合约的标识,从区块链中确定出该智能合约中合约内容的变更信息,并组成变更记录。区块链系统200将智能合约的变更记录反馈至查询服务器100。
基于上述描述,图2示例性的示出了本发明实施例提供的一种区块链智能合约的变更记录的追溯方法的流程,该流程可以由区块链智能合约的变更记录的追溯装置执行,该装置可以位于区块链系统中,可以是该区块链系统。如图2所示,该流程具体包括:
步骤201,获取查询请求。
该查询请求即查询服务器向区块链系统发送的记录有待追溯的智能合约的标识的请求,该查询请求用于指示从区块链中确定出待追溯的智能合约的变更记录。
步骤202,根据所述区块链的区块中记录的状态树根节点,确定所述状态树根节点对应的状态树,并根据所述智能合约的标识,从所述状态树中确定出所述智能合约的关键字段。
步骤203,根据所述关键字段,确定所述智能合约的变更信息,并生成所述智能合约的变更记录。
示例性的,智能合约的追溯过程可以涉及到三个角色,分别为用户、存证机构、仲裁机构,如用户向存证机构借款,存证机构即可以在区块链中创建智能合约,记录“用户向存证机构借款100元”,进一步的,当用户每向存证机构还款时,存证机构都会根据该还款信息生成存证信息存储至智能合约中,如,生成存证信息“用户还款10元”存储至智能合约中,若在用户还款过程中或者过程后,用户和存证机构发生争议,则仲裁机构可以通过查询服务器向区块链系统发送该智能合约的查询请求,用于指示区块链系统根据该查询请求确定出该智能合约的变更记录。
本发明实施例中,追溯智能合约的变更记录,即需要确定出智能合约的每次变更信息,如将存证信息“用户还款10元”存储至智能合约中时,则智能合约的变更信息即是“在智能合约中写入存证信息“用户还款10元””,智能合约的每次变更信息是作为区块链的交易信息存储在区块链的具体区块中,为保证更快速、高效的确定出智能合约的变更记录,需要针对每次变更信息,确定出每次变更信息存储在区块链的具体区块的高度。
此处,可以先对区块链的应用平台—以太坊的数据存储结构做简单说明,以太坊区块链上区块数据中保存了三棵Merkle树根的节点,其中,三棵Merkle树分别是状态树、交易树和收据树,存储三棵Merkle树可以方便账户做更多查询。状态树根节点(State Root)、交易树节点(Transaction Root)和收据树根节点(Receipt Root)分别理解为状态树根散列值、交易树根散列值和收据树根散列值,可以如图3所示,状态树根节点、交易树节点和收据树根节点存储在区块头中,区块头中还可以包括父块的散列值(PrevHash)、叔区块的散列值(Uncles Hash)、时间戳(Timestamp)、随机数(Nonce)。
一种可行的实现方式中,可以在智能合约中添加关键字段,该关键字段用于表征智能合约的变更信息存储在区块链中的区块的高度,也就是说,每次智能合约变更时,都会将本次智能合约的变更信息存储在区块链的区块中,且将该区块的区块高度作为关键字段存储在智能合约中。区块高度可以理解为某区块在区块链上的特定标识,可以是区块高度,也可以是区块编号。此外,区块链在创建智能合约时,也会将记录有创建智能合约的交易的区块高度存储在智能合约中。进一步解释,状态树包含合约账户,合约账户里保存着智能合约的可执行字节码(编译之后的,在EVM(Environment Virtual Machine,以太坊虚拟机)里执行),并且有存储空间,智能合约可以对合约账户的存储空间中写入信息。所以上述表述中,将关键字段存储在智能合约中,相当于将关键字段存储在区块的状态树根节点对应的状态树中。此外,本发明实施例中的写入智能合约相当于写入智能合约的存储空间中。
也就是说,可以在步骤201获取查询请求之前,接收智能合约的创建请求,根据该创建请求,在区块链中创建智能合约,并生成记录有创建智能合约的交易的第一区块,然后将第一区块的高度确定为智能合约创建时的关键字段,存储至第一区块的状态树根节点对应的状态树中。以及接收智能合约的追加数据请求,根据追加数据请求,将追加数据请求中的待追加数据写入智能合约,并生成记录有将待追加数据写入智能合约的交易的第二区块,然后将第二区块的高度确定为智能合约追加数据时的关键字段,存储至第二区块的状态树根节点对应的状态树中。此处,可以多次将待追加数据存储至智能合约中,也就是说,该第二区块可以为多个,以及该智能合约追加数据时的关键字段也可以为多个。
在步骤201的获取查询请求之后,即可以根据该查询请求从区块链中确定智能合约在创建时和在追加数据时的关键字段。本发明实施例中,区块链系统可以根据区块链中区块的状态树根节点确定出对应的状态树,并根据智能合约的标识,从状态树中确定智能合约的关键字段。具体的,可以从区块链的最高区块开始,即先获取到区块链的最高区块,并将该最高区块确定为当前区块,根据当前区块中记录的状态树根节点,确定状态树根节点对应的状态树,并根据智能合约的标识,从状态树中确定出智能合约追加数据时的关键字段。随后,将确定出的智能合约追加数据时的关键字段减1后对应的区块继续确定为当前区块,并根据当前区块中记录的状态树根节点,确定状态树根节点对应的状态树,以及根据智能合约的标识,从状态树中确定出智能合约追加数据时的关键字段,直至确定出智能合约创建时的关键字段为止。为了更好的理解本发明实施例,可以参照图4的流程图,对本实施例进一步说明。
步骤401,获取区块链的最高区块,将该最高区块确定为当前区块。
步骤402,根据当前区块中记录的状态树根节点,确定状态树根节点对应的状态树。
步骤403,根据智能合约的标识,从状态树中确定出智能合约追加数据时的关键字段M,其中,M大于等于2。
步骤404,将确定出的智能合约追加数据时的关键字段M-1,并将M-1对应的区块作为当前区块。
步骤405,判断是否确定出智能合约创建时的关键字段,若是,则结束,否则,转向步骤402。
在根据上述实施例已经确定出该智能合约在创建时和追加数据时的关键字段,则可以如步骤203中,根据确定出的关键字段,确定该智能合约的变更信息,并生成智能合约的变更记录。由于智能合约的关键字段可以为多个,则可以根据多个关键字段,解析各关键字段对应的区块,并从各区块中解析出智能合约的各变更信息,又由于本发明实施例是从区块链的最高区块开始获取关键字段,即上述获取到的各智能合约的变更信息是倒序的,所以需要将智能合约的各变更信息执行倒序操作后,确定为智能合约的变更记录。比如,第一次(根据最高区块)获取到智能合约在5月30号记录的变更信息,第二次是在4月30号记录的变更信息,第三次是在3月30号记录的变更信息,所以需要将三次获取到的变更信息执行倒序操作后,生成最终的智能合约的变更记录。
本发明实施例中,在解析各区块时,可以解析出各区块的时间戳(timestamp)信息,用于智能合约追溯过程中的参考信息,同时可以把该时间戳信息对应记录在智能合约的变更信息中,以供人员查看。
为了更好的解释本发明实施例,以上述用户向存证机构借款进行举例说明。
2019年1月,用户在向存证机构借款,存证机构在区块链中创建智能合约,此时,智能合约的内容为“用户向存证机构借款100元”。创建智能合约的交易记录在区块链的区块高度为1的区块上。
2019年2月,用户向存证机构还款10元,则智能合约中追加数据为“用户还款10元”,此时,智能合约的内容为“用户向存证机构借款100元,用户还款10元”。对智能合约追加该数据的交易记录在区块链的区块高度为3的区块上。
2019年3月,用户向存证机构还款20元,则智能合约中追加数据为“用户还款20元”,此时,智能合约的内容为“用户向存证机构借款100元,用户还款10元,用户还款20元”。对智能合约追加该数据的交易记录在区块链的区块高度为10的区块上。
2019年5月,用户和存证机构发生争议,仲裁机构通过查询服务器向区块链系统发送该智能合约的查询请求。区块链系统中区块链的最高区块的高度为100,则区块链系统首先根据最高区块确定出智能合约的关键字段为10,即智能合约中追加数据“用户还款20元”的交易记录是在区块链的区块高度为10的区块上。进一步的,区块链系统根据关键字段10减1后,确定区块高度为9的区块,并从中确定出智能合约的关键字段为3,即智能合约中追加数据“用户还款10元”的交易记录是在区块链的区块高度为3的区块上。最后,区块链系统根据关键字段3减1后,确定区块高度为2的区块,并从中确定出智能合约的关键字段为1,即创建智能合约“用户向存证机构借款100元”的交易记录是在区块链的区块高度为1的区块上。从上述确定出的关键字段对应的区块中分别解析出智能合约的变更信息如下:
变更信息1:区块高度10中的交易信息是“追加智能合约数据,写入“用户向存证机构借款100元,用户还款10元,用户还款20元””。
变更信息2:区块高度3中的交易信息是“追加智能合约数据,写入“用户向存证机构借款100元,用户还款10元””。
变更信息3:区块高度1中的交易信息是“创建智能合约,写入“用户向存证机构借款100元””。
将变更信息1、变更信息2、变更信息3执行倒序操作后,作为智能合约的变更记录,可以提供给人员查看。
上述实施例中,根据区块链的区块中记录的状态树根节点,确定状态树根节点对应的状态树,并根据智能合约的标识,从状态树中确定出智能合约的关键字段,该智能合约的关键字段即区块链中记录智能合约变更信息的区块的高度,根据关键字段,解析各关键字段对应的区块,即可以确定出各变更信息,生成变更记录。该技术方案,无需遍历整个区块链中各区块的交易记录,而是直接将智能合约的变更信息定位到具体区块,进而解析该具体区块,可以快速、高效的获取智能合约的变更记录。进一步根据追溯到的智能合约的变更记录,以确保智能合约中存证信息的真实性。
此外,需要说明的是,本发明实施例提供智能合约的变更记录的追溯方法,可以有效保障智能合约中存证信息的真实性。解释为,现有技术中读取智能合约中的数据,例如读取到的信息是“用户向存证机构借款100元,用户还款10元,用户还款20元”,但是仅能读取到该数据,以及确定该智能合约中写入了该数据,但是具体什么时间写入的,现有技术中并不能确定,也就是说,存证机构可以一次性写入该信息,也可以分三次或两次写入该信息,所以,需要对该智能合约的变更记录进行追溯,这样,可以确保智能合约中各写入信息的写入时间、写入次数、写入参数等,以确保智能合约中存证信息的真实性。
基于同一发明构思,图5示例性的示出了本发明实施例提供的一种区块链智能合约的变更记录的追溯装置的结构,该装置可以执行区块链智能合约的变更记录的追溯方法的流程。
该装置,包括:
获取单元501,用于获取查询请求;所述查询请求用于指示从区块链中确定出所述查询请求中待追溯的智能合约的变更记录;
处理单元502,用于根据所述区块链的区块中记录的状态树根节点,确定所述状态树根节点对应的状态树;并根据所述智能合约的标识,从所述状态树中确定出所述智能合约的关键字段;所述关键字段用于表征所述智能合约的变更信息存储在所述区块链中的区块的高度;以及根据所述关键字段,确定所述智能合约的变更信息,并生成所述智能合约的变更记录。
可选的,所述处理单元502还用于:
在所述获取查询请求之前,接收所述智能合约的创建请求;根据所述创建请求,在所述区块链中创建所述智能合约,生成记录有创建所述智能合约的交易的第一区块;并将所述第一区块的高度确定为所述智能合约创建时的关键字段,存储至所述第一区块的状态树根节点对应的状态树中;
以及接收所述智能合约的追加数据请求;根据所述追加数据请求,将所述追加数据请求中的待追加数据写入所述智能合约,生成记录有所述将待追加数据写入所述智能合约的交易的第二区块;并将所述第二区块的高度确定为所述智能合约追加数据时的关键字段,存储至所述第二区块的状态树根节点对应的状态树中。
可选的,所述处理单元502具体用于:
获取所述区块链的最高区块,将所述最高区块确定为当前区块;根据所述当前区块中记录的状态树根节点,确定所述状态树根节点对应的状态树;并根据所述智能合约的标识,从所述状态树中确定出所述智能合约追加数据时的关键字段;
将确定出的所述智能合约追加数据时的关键字段减1后对应的区块继续确定为当前区块,并根据所述当前区块中记录的状态树根节点,确定所述状态树根节点对应的状态树,以及根据所述智能合约的标识,从所述状态树中确定出所述智能合约追加数据时的关键字段;直至确定出所述智能合约创建时的关键字段为止。
可选的,所述处理单元502具体用于:
根据多个关键字段,解析各关键字段对应的区块,得到所述智能合约的各变更信息;
将所述智能合约的各变更信息倒序后,确定为所述智能合约的变更记录。
基于同一发明构思,本发明实施例还提供了一种计算设备,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行上述区块链智能合约的变更记录的追溯方法。
基于同一发明构思,本发明实施例还提供了一种计算机可读非易失性存储介质,包括计算机可读指令,当计算机读取并执行所述计算机可读指令时,使得计算机执行上述区块链智能合约的变更记录的追溯方法。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种区块链智能合约的变更记录的追溯方法,其特征在于,包括:
获取查询请求;所述查询请求用于指示从区块链中确定出所述查询请求中待追溯的智能合约的变更记录;
根据所述区块链的区块中记录的状态树根节点,确定所述状态树根节点对应的状态树;并根据所述智能合约的标识,从所述状态树中确定出所述智能合约的关键字段;所述关键字段用于表征所述智能合约的变更信息存储在所述区块链中的区块的高度;
根据所述关键字段,确定所述智能合约的变更信息,并生成所述智能合约的变更记录。
2.如权利要求1所述的方法,其特征在于,在所述获取查询请求之前,还包括:
接收所述智能合约的创建请求;根据所述创建请求,在所述区块链中创建所述智能合约,生成记录有创建所述智能合约的交易的第一区块;并将所述第一区块的高度确定为所述智能合约创建时的关键字段,存储至所述第一区块的状态树根节点对应的状态树中;
以及接收所述智能合约的追加数据请求;根据所述追加数据请求,将所述追加数据请求中的待追加数据写入所述智能合约,生成记录有所述将待追加数据写入所述智能合约的交易的第二区块;并将所述第二区块的高度确定为所述智能合约追加数据时的关键字段,存储至所述第二区块的状态树根节点对应的状态树中。
3.如权利要求2所述的方法,其特征在于,所述根据所述区块链的区块中记录的状态树根节点,确定所述状态树根节点对应的状态树;并根据所述智能合约的标识,从所述状态树中确定出所述智能合约的关键字段,包括:
获取所述区块链的最高区块,将所述最高区块确定为当前区块;根据所述当前区块中记录的状态树根节点,确定所述状态树根节点对应的状态树;并根据所述智能合约的标识,从所述状态树中确定出所述智能合约追加数据时的关键字段;
将确定出的所述智能合约追加数据时的关键字段减1后对应的区块继续确定为当前区块,并根据所述当前区块中记录的状态树根节点,确定所述状态树根节点对应的状态树,以及根据所述智能合约的标识,从所述状态树中确定出所述智能合约追加数据时的关键字段;直至确定出所述智能合约创建时的关键字段为止。
4.如权利要求1至3任一项所述的方法,其特征在于,所述根据所述关键字段,确定所述智能合约的变更信息,并生成所述智能合约的变更记录,包括:
根据多个关键字段,解析各关键字段对应的区块,得到所述智能合约的各变更信息;
将所述智能合约的各变更信息倒序后,确定为所述智能合约的变更记录。
5.一种区块链智能合约的变更记录的追溯装置,其特征在于,包括:
获取单元,用于获取查询请求;所述查询请求用于指示从区块链中确定出所述查询请求中待追溯的智能合约的变更记录;
处理单元,用于根据所述区块链的区块中记录的状态树根节点,确定所述状态树根节点对应的状态树;并根据所述智能合约的标识,从所述状态树中确定出所述智能合约的关键字段;所述关键字段用于表征所述智能合约的变更信息存储在所述区块链中的区块的高度;以及根据所述关键字段,确定所述智能合约的变更信息,并生成所述智能合约的变更记录。
6.如权利要求5所述的装置,其特征在于,所述处理单元还用于:
在所述获取查询请求之前,接收所述智能合约的创建请求;根据所述创建请求,在所述区块链中创建所述智能合约,生成记录有创建所述智能合约的交易的第一区块;并将所述第一区块的高度确定为所述智能合约创建时的关键字段,存储至所述第一区块的状态树根节点对应的状态树中;
以及接收所述智能合约的追加数据请求;根据所述追加数据请求,将所述追加数据请求中的待追加数据写入所述智能合约,生成记录有所述将待追加数据写入所述智能合约的交易的第二区块;并将所述第二区块的高度确定为所述智能合约追加数据时的关键字段,存储至所述第二区块的状态树根节点对应的状态树中。
7.如权利要求6所述的装置,其特征在于,所述处理单元具体用于:
获取所述区块链的最高区块,将所述最高区块确定为当前区块;根据所述当前区块中记录的状态树根节点,确定所述状态树根节点对应的状态树;并根据所述智能合约的标识,从所述状态树中确定出所述智能合约追加数据时的关键字段;
将确定出的所述智能合约追加数据时的关键字段减1后对应的区块继续确定为当前区块,并根据所述当前区块中记录的状态树根节点,确定所述状态树根节点对应的状态树,以及根据所述智能合约的标识,从所述状态树中确定出所述智能合约追加数据时的关键字段;直至确定出所述智能合约创建时的关键字段为止。
8.如权利要求5至7任一项所述的装置,其特征在于,所述处理单元具体用于:
根据多个关键字段,解析各关键字段对应的区块,得到所述智能合约的各变更信息;
将所述智能合约的各变更信息倒序后,确定为所述智能合约的变更记录。
9.一种计算设备,其特征在于,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行权利要求1至4任一项所述的方法。
10.一种计算机可读非易失性存储介质,其特征在于,包括计算机可读指令,当计算机读取并执行所述计算机可读指令时,使得计算机执行如权利要求1至4任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910470438.9A CN110188112A (zh) | 2019-05-31 | 2019-05-31 | 一种区块链智能合约的变更记录的追溯方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910470438.9A CN110188112A (zh) | 2019-05-31 | 2019-05-31 | 一种区块链智能合约的变更记录的追溯方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110188112A true CN110188112A (zh) | 2019-08-30 |
Family
ID=67719572
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910470438.9A Pending CN110188112A (zh) | 2019-05-31 | 2019-05-31 | 一种区块链智能合约的变更记录的追溯方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110188112A (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110879900A (zh) * | 2019-11-07 | 2020-03-13 | 深圳前海微众银行股份有限公司 | 一种基于区块链系统的数据处理方法及装置 |
CN111080298A (zh) * | 2019-12-26 | 2020-04-28 | 电子科技大学 | 一种适用于能源区块链的区块生成与交易验证方法 |
CN111260469A (zh) * | 2020-01-10 | 2020-06-09 | 杭州溪塔科技有限公司 | 基于区块链的存证方法、查询方法及相应装置和电子设备 |
CN111786792A (zh) * | 2020-06-16 | 2020-10-16 | 杭州溪塔科技有限公司 | 一种基于区块链的数据变更记录方法和装置 |
CN112035897A (zh) * | 2020-11-06 | 2020-12-04 | 腾讯科技(深圳)有限公司 | 区块链存证方法和相关装置 |
CN113222344A (zh) * | 2021-04-15 | 2021-08-06 | 卓尔智联(武汉)研究院有限公司 | 一种区块链数据处理方法、装置及存储介质 |
CN113312365A (zh) * | 2021-05-27 | 2021-08-27 | 上海万向区块链股份公司 | 快速查询智能合约数据的方法、系统、介质及设备 |
CN113536342A (zh) * | 2021-07-06 | 2021-10-22 | 招商银行股份有限公司 | 基于区块链的存证管理方法、系统、程序产品及存储介质 |
CN117172913A (zh) * | 2023-10-12 | 2023-12-05 | 广州保德来小额贷款有限公司 | 一种基于智能合约的合约变更手续执行方法及系统 |
-
2019
- 2019-05-31 CN CN201910470438.9A patent/CN110188112A/zh active Pending
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110879900B (zh) * | 2019-11-07 | 2023-05-12 | 深圳前海微众银行股份有限公司 | 一种基于区块链系统的数据处理方法及装置 |
CN110879900A (zh) * | 2019-11-07 | 2020-03-13 | 深圳前海微众银行股份有限公司 | 一种基于区块链系统的数据处理方法及装置 |
CN111080298A (zh) * | 2019-12-26 | 2020-04-28 | 电子科技大学 | 一种适用于能源区块链的区块生成与交易验证方法 |
CN111080298B (zh) * | 2019-12-26 | 2023-12-29 | 电子科技大学 | 一种适用于能源区块链的区块生成与交易验证方法 |
CN111260469A (zh) * | 2020-01-10 | 2020-06-09 | 杭州溪塔科技有限公司 | 基于区块链的存证方法、查询方法及相应装置和电子设备 |
CN111786792A (zh) * | 2020-06-16 | 2020-10-16 | 杭州溪塔科技有限公司 | 一种基于区块链的数据变更记录方法和装置 |
CN112035897A (zh) * | 2020-11-06 | 2020-12-04 | 腾讯科技(深圳)有限公司 | 区块链存证方法和相关装置 |
CN113222344A (zh) * | 2021-04-15 | 2021-08-06 | 卓尔智联(武汉)研究院有限公司 | 一种区块链数据处理方法、装置及存储介质 |
CN113312365A (zh) * | 2021-05-27 | 2021-08-27 | 上海万向区块链股份公司 | 快速查询智能合约数据的方法、系统、介质及设备 |
CN113536342A (zh) * | 2021-07-06 | 2021-10-22 | 招商银行股份有限公司 | 基于区块链的存证管理方法、系统、程序产品及存储介质 |
CN113536342B (zh) * | 2021-07-06 | 2024-03-26 | 招商银行股份有限公司 | 基于区块链的存证管理方法、系统、程序产品及存储介质 |
CN117172913A (zh) * | 2023-10-12 | 2023-12-05 | 广州保德来小额贷款有限公司 | 一种基于智能合约的合约变更手续执行方法及系统 |
CN117172913B (zh) * | 2023-10-12 | 2024-02-13 | 广州保德来小额贷款有限公司 | 一种基于智能合约的合约变更手续执行方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110188112A (zh) | 一种区块链智能合约的变更记录的追溯方法及装置 | |
Westerkamp et al. | Tracing manufacturing processes using blockchain-based token compositions | |
CN110163590B (zh) | 基于区块链的缴费代扣方法及装置、电子设备、存储介质 | |
JP7128111B2 (ja) | ブロックチェーンを介して資産関連活動を制御するシステム及び方法 | |
CN106250987B (zh) | 一种机器学习方法、装置及大数据平台 | |
CN108171601B (zh) | 区块链溯源追踪方法、装置和系统 | |
US11556924B2 (en) | Blockchain-based payment withholding and agreement signing method, apparatus, and electronic device | |
CN108805707A (zh) | 基于区块链的作品版权收益分配方法和装置 | |
CN111539731A (zh) | 基于区块链的联邦学习方法及装置和电子设备 | |
CN110148017A (zh) | 基于区块链的权益发放方法及装置、电子设备、存储介质 | |
KR20180115768A (ko) | 블록체인으로부터 데이터의 안전한 추출을 위한 암호화 방법 및 시스템 | |
CN109242685A (zh) | 基于区块链的共识和验证方法及装置 | |
CN109902071A (zh) | 业务日志存储方法、系统、装置及设备 | |
CN108809932A (zh) | 一种基于区块链的存证系统、方法及可读介质 | |
CN110147990A (zh) | 基于区块链的缴费代扣签约方法及装置、电子设备 | |
JP2019153260A (ja) | 共有経済のための分散型台帳装置及び分散型台帳方法 | |
CN109460405A (zh) | 用于区块链网络的区块生成方法、同步方法、存储介质、计算设备 | |
CN109118230A (zh) | 基于区块链的信息处理方法和装置 | |
CN112101938B (zh) | 基于区块链的数字印章使用方法、装置及电子设备 | |
CN110032598A (zh) | 字段更新方法及装置、电子设备 | |
CN110032599A (zh) | 数据结构的读取及更新方法、装置、电子设备 | |
CN110175916A (zh) | 资金流核对方法及装置 | |
CN112200568B (zh) | 基于区块链的账户创建方法、装置及电子设备 | |
CN109447636A (zh) | 一种资产转移方法及装置 | |
CN109308211A (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 |