CN110018840B - 一种智能合约升级方法、装置、区块链节点设备及介质 - Google Patents

一种智能合约升级方法、装置、区块链节点设备及介质 Download PDF

Info

Publication number
CN110018840B
CN110018840B CN201910290052.XA CN201910290052A CN110018840B CN 110018840 B CN110018840 B CN 110018840B CN 201910290052 A CN201910290052 A CN 201910290052A CN 110018840 B CN110018840 B CN 110018840B
Authority
CN
China
Prior art keywords
intelligent contract
contract
upgrading
new
old
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
Application number
CN201910290052.XA
Other languages
English (en)
Other versions
CN110018840A (zh
Inventor
周茂青
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Onething Technology Co Ltd
Original Assignee
Shenzhen Onething Technology Co Ltd
Shenzhen Xunlei Network Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shenzhen Onething Technology Co Ltd, Shenzhen Xunlei Network Technology Co Ltd filed Critical Shenzhen Onething Technology Co Ltd
Priority to CN201910290052.XA priority Critical patent/CN110018840B/zh
Priority to PCT/CN2019/093485 priority patent/WO2020206848A1/zh
Publication of CN110018840A publication Critical patent/CN110018840A/zh
Application granted granted Critical
Publication of CN110018840B publication Critical patent/CN110018840B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本申请公开了一种智能合约升级方法,为解决现有技术中存在新旧两个合约地址所带来的替换问题,本申请并不会重新为新智能合约部署在一个新合约地址下,而是新增旧智能合约的旧合约地址与新智能合约的新合约代码间的对应关系,由于区块链中各区块间的链式特性,使得在调用智能合约时,总是会在最近的区块中找到该对应关系,因此总是会调用对应于最新合约代码的智能合约,且由于只改变了对应关系,合约地址并未发生改变,因此使用者也无需进行替换操作,从源头上消除了由使用者进行地址替换这一不可控因素,进而提升了使用者的使用体验。本申请还同时公开了一种智能合约升级装置、区块链节点设备及计算机可读存储介质,具有上述有益效果。

Description

一种智能合约升级方法、装置、区块链节点设备及介质
技术领域
本申请涉及区块链技术下的智能合约领域,特别涉及一种智能合约升级方法、装置、区块链节点设备及计算机可读存储介质。
背景技术
随着数据量的增加,传统中心化的数据管理模式暴露出越来越多的问题,单节点故障问题、可拓展性问题、维护问题等等都是制约传统中心化进一步发展的重要问题。因此,为解决中心化带来的这些问题,基于去中心化理念的区块链技术开始逐步进入广大用户的视野。
区块链技术最初用于记录比特币网络中每一笔比特币的交易,即一种记账机制,而随着技术的发展,以太坊通过嵌入智能合约的方式极大的拓展了区块链技术的应用范围和可以实现的功能,但由于区块链技术的一大特性就是已存储的数据无法完全删除(除非拥有能够在短时间内篡改构成整个区块链网络50%以上的节点设备中已存储数据的能力),导致在智能合约的内容需要升级或修正时,是无法向传统机制下直接替换的。
现有以太坊提供的解决方案:将智能合约的代码逻辑和数据分离的方式来形成两个不同的合约,即逻辑合约和数据合约,以此实现在保持数据不变的同时更换实现逻辑,从而单独实现业务逻辑的升级。但由此产生的问题是:逻辑合约的升级操作实际上首先需要重新部署一个新的逻辑合约在区块链网络上,新逻辑合约和旧逻辑合约各自拥有自己的合约地址,由于合约地址的改变,还需要引导所有可能调用该智能合约的用户修正原先内嵌于应用程序中的合约地址,否则依然会使用旧的合约地址对应的旧智能合约带来,由于对使用者完成合约地址更新的需求非常高,而对使用者是否完成更新操作的可控程度又不高,因此会对使用者带来较差的使用体验。
因此,如何尽可能的解决现有智能合约升级需求中存在的技术缺陷,提供一种更便捷、更可控、在不更新合约地址的基础上完成智能合约升级的方法,是本领域技术人员亟待解决的问题。
发明内容
本申请的目的是提供一种智能合约升级方法、装置、区块链节点设备及计算机可读存储介质,旨在尽可能的解决现有升级智能合约过程中因存在新旧两个不同的合约地址导致使用者需要自行完成新旧合约地址的替换所带来的各种问题。
为实现上述目的,本申请首先提供了一种智能合约升级方法,包括:
获取智能合约升级请求;
根据所述智能合约升级请求确定被替换的旧智能合约的旧合约地址,并从所述智能合约升级请求中提取得到新智能合约的新合约代码;
建立所述旧合约地址与所述新合约代码间的对应关系,并将所述对应关系部署在区块链新形成的区块中。
可选的,获取智能合约升级请求,包括:
从区块链数据池中获取所述智能合约升级请求。
可选的,在建立所述旧合约地址与所述新合约代码间的对应关系之前,还包括:
验证所述智能合约升级请求是否具有合法性;
仅当所述智能合约升级请求具有合法性时,执行所述建立所述旧合约地址与所述新合约代码间的对应关系的步骤。
可选的,该智能合约升级方法还包括:
当所述智能合约升级请求经验证不具有合法性时,将所述智能合约升级请求的发起信息发送给部署所述旧智能合约的用户。
可选的,验证所述智能合约升级请求是否具有合法性,包括:
验证发起所述智能合约升级请求的用户ID与部署所述旧智能合约的用户ID是否一致;
若发起所述智能合约升级请求的用户ID与部署所述旧智能合约的用户ID一致,则判定所述智能合约升级请求具有合法性;
若发起所述智能合约升级请求的用户ID与部署所述旧智能合约的用户ID不一致,则判定所述智能合约升级请求不具有合法性。
可选的,验证所述智能合约升级请求是否具有合法性,包括:
从所述旧智能合约中提取到升级验证地址列表;其中,所述升级验证地址列表中记录有预设数量的地址;
从所述智能合约升级请求中提取到与所述新智能合约对应的签名信息;
判断所述签名信息是否能够满足所述升级验证地址列表对记录的地址对应的签名的要求;
若满足了所述要求,则判定所述智能合约升级请求具有合法性;
若不满足所述要求,则判定所述智能合约升级请求不具有合法性。
可选的,该智能合约升级方法还包括:
接收智能合约调用请求;
根据所述智能合约调用请求确定目标智能合约地址;
在部署有包含所述目标智能合约地址的最新区块中确定对应的新合约代码,并执行所述新合约代码来完成所述智能合约调用请求。
为实现上述目的,本申请还提供了一种智能合约升级装置,该装置包括:
智能合约升级请求获取单元,用于获取智能合约升级请求;
旧合约地址和新合约代码获取单元,用于根据所述智能合约升级请求确定被替换的旧智能合约的旧合约地址,并从所述智能合约升级请求中提取得到新智能合约的新合约代码;
对应关系建立及部署单元,用于建立所述旧合约地址与所述新合约代码间的对应关系,并将所述对应关系部署在区块链新形成的区块中。
可选的,所述智能合约升级请求获取单元包括:
区块链数据池获取子单元,用于从所述区块链数据池中获取所述智能合约升级请求。
可选的,该智能合约升级装置还包括:
合法性验证单元,用于在建立所述旧合约地址与所述新合约代码间的对应关系之前,验证所述智能合约升级请求是否具有合法性;
合法性验证通过执行单元,用于仅当所述智能合约升级请求具有合法性时,执行所述建立所述旧合约地址与所述新合约代码间的对应关系的步骤。
可选的,该智能合约升级装置还包括:
不合法处理单元,用于当所述智能合约升级请求经验证不具有合法性时,将所述智能合约升级请求的发起信息发送给部署所述旧智能合约的用户。
可选的,所述合法性验证单元包括:
用户ID一致性验证子单元,用于验证发起所述智能合约升级请求的用户ID与部署所述旧智能合约的用户ID是否一致;
第一合法判定子单元,用于当发起所述智能合约升级请求的用户ID与部署所述旧智能合约的用户ID一致时,判定所述智能合约升级请求具有合法性;
第一不合法判定子单元,用于当发起所述智能合约升级请求的用户ID与部署所述旧智能合约的用户ID不一致时,判定所述智能合约升级请求不具有合法性。
可选的,所述合法性验证单元包括:
升级验证地址列表提取子单元,用于从所述旧智能合约中提取到升级验证地址列表;其中,所述升级验证地址列表中记录有预设数量的地址;
签名信息获取子单元,用于从所述智能合约升级请求中提取到与所述新智能合约对应的签名信息;
升级所需签名要求满足判断子单元,用于判断所述签名信息是否能够满足所述升级验证地址列表对记录的地址对应的签名的要求;
第二合法判定子单元,用于当满足了所述要求时,判定所述智能合约升级请求具有合法性;
第二不合法判定子单元,用于当不满足所述要求时,判定所述智能合约升级请求不具有合法性。
可选的,该智能合约升级装置还包括:
智能合约调用请求接收单元,用于接收智能合约调用请求;
目标智能合约地址确定单元,用于根据所述智能合约调用请求确定目标智能合约地址;
对应最新合约代码确定及调用单元,用于在部署有包含所述目标智能合约地址的最新区块中确定对应的新合约代码,并执行所述新合约代码来完成所述智能合约调用请求。
为实现上述目的,本申请还进一步提供了一种区块链节点设备,所述区块链节点设备包括存储器、处理器以及总线,所述存储器上存储有可在所述处理器上运行的智能合约升级程序,所述智能合约升级程序被所述总线传输至所述处理器,并在被所述处理器执行时实现如上述内容所描述的智能合约升级方法。
为实现上述目的,本申请还进一步提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有智能合约升级程序,所述智能合约升级程序可被一个或多个处理器执行,以实现如上述内容所描述的智能合约升级方法。
通过本申请提供的智能合约升级方法可以明显看出,为解决现有技术中存在新旧两个合约地址所带来的替换问题,本申请并不会重新为新智能合约部署在一个新合约地址下,而是新增旧智能合约的旧合约地址与新智能合约的新合约代码间的对应关系,由于区块链中各区块间的链式特性,使得在调用智能合约时,总是会在最近的区块中找到该对应关系,因此总是会调用对应于最新合约代码的智能合约,且由于只改变了对应关系,合约地址并未发生改变,因此使用者也无需进行替换操作,从源头上消除了由使用者进行地址替换这一不可控因素,进而提升了使用者的使用体验。
本申请同时还提供了一种智能合约升级装置、区块链节点设备及计算机可读存储介质,具有上述有益效果,在此不再赘述。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例提供的一种智能合约升级方法的流程图;
图2为本申请实施例提供的另一种智能合约升级方法的流程图;
图3为本申请实施例提供的智能合约升级方法中一种基于用户ID的升级请求合法性验证方法的流程图;
图4为本申请实施例提供的智能合约升级方法中一种基于签名的升级请求合法性验证方法的流程图;
图5为本申请实施例提供的一种智能合约调用方法的流程图;
图6为本申请实施例提供的一种智能合约升级装置的结构框图;
图7为本申请实施例提供的一种区块链节点设备的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
需要说明的是,在本发明中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。
实施例一
请参见图1,图1为本申请实施例提供的一种智能合约升级方法的流程图,其包括以下步骤:
S101:获取智能合约升级请求;
本步骤旨在获取到后续用于进行智能合约升级的智能合约升级请求。
一种包括但不限于的智能合约升级请求获取方式为:从区块链网络中的区块链数据池中获取该智能合约升级请求。由于通常区块链网络被用于存储交易数据,因此该区块链数据池也通常被称为交易数据池。其中,经过每个区块链节点设备上传来的由使用者发起的各种请求都会被汇总至该数据池中,当需要将某个之前已部署在区块链网络上的旧智能合约升级为一个新的智能合约时,升级方就会经由区块链节点设备向区块链网络发起智能合约升级请求,以使得区块链网络能够从区块链数据池中获取到该智能合约升级请求,以响应该智能合约升级请求完成智能合约的升级。
其中,为了完成智能合约的升级,该智能合约升级请求中通常至少会包括新智能合约的内容(即代码或代码的不同存在形式,例如编译后便于计算机执行的字节码等)和需要被替换、升级的旧智能合约的相关信息(例如最重要的合约地址)。当然,根据实际应用场景下所有可能存在的特殊要求,也可以将诸如进行合法性验证的相关信息、时间戳以及其它用于实现特殊要求的信息或数据以包含于该智能合约升级请求或随该智能合约升级请求一并发送的形式上传至区块链数据池。
S102:根据智能合约升级请求确定被替换的旧智能合约的旧合约地址,并从智能合约升级请求中提取得到新智能合约的新合约代码;
在S101的基础上,本步骤旨在根据智能合约升级请求确定两个参数,其一是新智能合约的合约代码,本步骤及后续将使用“新合约代码”进行指代;其二是与新智能合约对应的已经部署在区块链网络中的需要被升级、被替换的旧智能合约的合约地址,本步骤及后续将使用“旧合约地址”进行指代。
为加深理解,将通过举例说明:
在实际情况下,智能合约的调用是通过用户发起的智能合约调用请求实现的,这是因为智能合约调用请求中包含有用户需要调用的目标智能合约的地址,即目标合约地址,而每个智能合约在部署至区块链网络中时,会建立合约地址与合约代码间的对应关系,以使得在从智能合约调用请求中提取到目标合约地址后,能够根据该对应关系成功调用到相应的合约代码,并通过执行该合约代码的方式完成该智能合约功能的实现。
以Key-Value(键值对)形式来表示就是,合约地址为Key,合约代码为Value,在每个智能合约部署在区块链网络上时,Key和Value间的对应关系就已经得到了建立,本步骤根据智能合约升级请求确定出的一个为新智能合约的Value,一个是旧智能合约的Key,假定Key1表示旧智能合约的合约地址,Value1表示旧智能合约的合约代码,则在未升级之前,合约地址与合约代码间的对应关系为:Key1—Value1。
S103:建立旧合约地址与新合约代码间的对应关系,并将对应关系部署在区块链新形成的区块中。
在S102的基础上,本步骤旨在建立旧合约地址与新合约代码间的对应关系,并将该对应关系部署在该区块链最新形成的区块中。沿用上个例子,根据智能合约升级请求确定出的新智能合约的合约代码可以使用Value2表示,因此本步骤所执行的操作为建立Key1与Value2间的对应关系,并将该新对应关系部署在最新形成的区块中,使得用户可以在不需要将自身应用中的Key1替换为Key2的情况下,也可以成功调用到升级后的智能合约代码。
需要说明的是,本申请建立的旧合约地址与新合约代码间的对应关系,是一条对应关系的新增操作,而非像传统的替换操作,只是由于区块链所具有的不可删除特性导致的,但并不会因为Key1同时对应Value1和Value2两个合约地址而出现调用混乱,因为区块链中各区块间的链式关系和原子性,导致在调用一个智能合约时,总是会在存在该对应关系的最近的区块中调用,因此基于新智能合约一定晚于旧智能合约部署在区块链网络上的实际情况,导致新智能合约一定会部署在旧智能合约所在区块之后的区块中,基于此种情况,及时无法修改对应关系、存在一对多的情况,在执行和调用过程中也不会出现问题。
进一步的,由于区块链网络中的任何使用者都可以发起智能合约升级请求,为防止恶意攻击者借助此机制扰乱智能合约发挥正常功能,还可以在新对应关系生效之前加入对智能合约升级请求的合法性验证机制,以通过合法性验证步骤消除上述隐患。根据实际情况的不同,合法性验证可以通过多种具体的方式来实现,例如可以通过判断新旧两个智能合约的发起用户是否为相同的用户来实现,也可以通过签名、公私钥机制等相同或类似的机制来实现,可根据具体情况灵活选择最合适的方式,此处并不做具体限定。
通过本申请提供的智能合约升级方法可以明显看出,为解决现有技术中存在新旧两个合约地址所带来的替换问题,本申请并不会重新为新智能合约部署在一个新合约地址下,而是新增旧智能合约的旧合约地址与新智能合约的新合约代码间的对应关系,由于区块链中各区块间的链式特性,使得在调用智能合约时,总是会在最近的区块中找到该对应关系,因此总是会调用对应于最新合约代码的智能合约,且由于只改变了对应关系,合约地址并未发生改变,因此使用者也无需进行替换操作,从源头上消除了由使用者进行地址替换这一不可控因素,进而提升了使用者的使用体验。
实施例二
请参见图2,图2为本申请实施例提供的另一种智能合约升级方法的流程图,区别于实施例一,本实施例从考虑智能合约升级安全性的角度出发,在实施例一的基础上加入了对智能合约升级请求的合法性验证步骤,并给出了一种具体的实现方法,包括以下步骤:
S201:获取智能合约升级请求;
S202:根据智能合约升级请求确定被替换的旧智能合约的旧合约地址,并从智能合约升级请求中获取新智能合约的新合约代码;
S203:验证智能合约升级请求是否具有合法性,如果是则执行S205,否则执行S204;
本实施例将验证智能合约升级请求是否具有合法性放在了S202之后、S204和S205之前,放在S202之后是因为还需要根据S202步骤获取到的一些参数或数据来实现S203的合法性验证步骤,若不需要执行S202也能够判别该智能合约升级请求是否具有合法性,也可以放在S201之后、S202之前。
S204:将智能合约升级请求的发起信息发送给部署旧智能合约的用户;
本步骤建立在S203的验证结果为该智能合约升级请求不具有合法性的基础上,在此情况下,本实施例提供了一种具体的后续处理方法,即将该智能合约升级请求的发起信息发送给部署旧智能合约的用户,其中,该发起信息中应包含是由哪个用户发起的该智能合约升级请求,通过将这部分信息告知真正拥有旧智能合约升级权限的用户,来告知其有用户试图修改自己已部署的智能合约。进一步的,区块链网络还可以在核实这一行为后,对假冒用户发起警告,严重者可加入黑名单。
S205:建立旧合约地址与新合约代码间的对应关系,并将对应关系部署在区块链新形成的区块中。
本步骤建立在S203的验证结果为该智能合约升级请求具有合法性的基础上,因此将在此基础上开始新增旧合约地址与新合约代码间的对应关系,并完成后续的部署操作。
实施例三
请参见图3,图3为本申请实施例提供的智能合约升级方法中一种基于用户ID的升级请求合法性验证方法的流程图,在实施例二的基础上,本实施例给出了一种具体如何对智能合约升级请求进行合法性验证的方法,包括如下步骤:
S301:验证发起智能合约升级请求的用户ID与部署旧智能合约的用户ID是否一致,若是则执行S302,否则执行S303;
S302:判定智能合约升级请求具有合法性;
S303:判定智能合约升级请求不具有合法性。
通过上述内容可以看出,本申请在此处提供了一种基于用户ID来判别该智能合约升级请求是否具有合法性的方法,即通过判断发起智能合约升级请求的用户与部署旧智能合约的用户是否为同一用户的方式来判断该智能合约升级请求是否具有合法性,因为升级操作往往被限定为还需要原作者来实现,非原作者的升级者通常会被视为仿冒者。需要说明的是,此处所描述的用户ID是一个可用于唯一确定一个区块链用户的特征信息,在不同的应用场景可以有不同的称呼,例如用户地址、用户识别码、用户特征码等等,在不超出本步骤思想的范围内,应均属于本申请的保护范围。
还需要说明的是,基于用户ID的合法性验证方法更适合个人部署用户,即通常不会有其它被认可的用户来进行智能合约升级操作。
区别于图3所示的适用于个人部署用户的合法性判别方法,本申请还提供了如图4所示的基于用户ID的升级请求合法性验证方法,适合团队部署用户,通过记录有多个地址的升级验证地址列表,可以灵活设定通过合法性验证所需的地址对应签名的数量,使得非旧智能合约的部署用户也可以通过此机制完成智能合约的升级操作,包括如下步骤:
S401:从旧智能合约中提取到升级验证地址列表;
其中,该升级验证地址列表记录有预设数量的地址,需要说明的是,记录的多个地址适用于在进行升级进行的合法性验证时,查看该智能合约升级请求中是否携带有要求数量或对象的地址给出的签名来完成验证。
S402:从智能合约升级请求中提取到与新智能合约对应的签名信息;
本步骤建立在签名信息也包含在智能合约升级请求的基础上。
S403:判断签名信息是否满足升级验证地址列表对记录的地址对应的签名的要求,若满足则执行S404,否则执行S405;
具体的,该要求可以根据实际情况灵活设定,例如设定需要超过预设数量的地址的签名、需要某些特定地址的签名,更甚可以设定需要记录在升级验证地址列表中的每个地址对应的签名,根据实际情况下所有可能存在的特殊要求,可灵活选择要求的具体表现形式,此处不做具体限定。
S404:判定智能合约升级请求具有合法性;
S405:判定智能合约升级请求不具有合法性。
本实施例分别通过图3和图4提供了两种适用于不同场景的合法性验证方法,当然,并不是说除这两种方法外就没有其它的实现方案,上述两种方案仅作为针对常见应用场景下的一种可行解决方案存在。
实施例四
请参见图5,图5为本申请实施例提供的一种智能合约调用方法的流程图,为对应本申请通过上述任意实施例给出的智能合约升级方法后,用户如何通过相同的合约地址调用到新合约代码来完成目标操作的过程,包括如下步骤
S501:接收智能合约调用请求;
S502:根据智能合约调用请求确定目标智能合约地址;
S503:在部署有包含目标智能合约地址的最新区块中确定对应的新合约代码,并执行新合约代码来完成智能合约调用请求。
还需要说明的是,本申请仅针对智能合约运行在区块链服务进程内容的虚拟机中的场景,不针对其它场景。
因为情况复杂,无法一一列举进行阐述,本领域技术人员应能意识到根据本申请提供的基本方法原理结合实际情况可以存在很多的例子,在不付出足够的创造性劳动下,应均在本申请的保护范围内。
实施例五
请参见图6,图6为本申请实施例提供的一种智能合约升级装置的结构框图,该装置可以包括:
智能合约升级请求获取单元100,用于获取智能合约升级请求;
旧合约地址和新合约代码获取单元200,用于根据智能合约升级请求确定被替换的旧智能合约的旧合约地址,并从智能合约升级请求中提取得到新智能合约的新合约代码;
对应关系建立及部署单元300,用于建立旧合约地址与新合约代码间的对应关系,并将对应关系部署在区块链新形成的区块中。
其中,该智能合约升级获取单元100可以包括:
区块链数据池获取子单元,用于从区块链数据池中获取所述智能合约升级请求。
进一步的,该智能合约升级装置还可以包括:
合法性验证单元,用于在建立旧合约地址与新合约代码间的对应关系之前,验证智能合约升级请求是否具有合法性;
合法性验证通过执行单元,用于仅当智能合约升级请求具有合法性时,执行建立旧合约地址与新合约代码间的对应关系的步骤。
更进一步的,该智能合约升级装置还可以包括:
不合法处理单元,用于当智能合约升级请求经验证不具有合法性时,将智能合约升级请求的发起信息发送给部署旧智能合约的用户。
其中,该合法性验证单元可以包括:
用户ID一致性验证子单元,用于验证发起智能合约升级请求的用户ID与部署旧智能合约的用户ID是否一致;
第一合法判定子单元,用于当发起智能合约升级请求的用户ID与部署旧智能合约的用户ID一致时,判定智能合约升级请求具有合法性;
第一不合法判定子单元,用于当发起智能合约升级请求的用户ID与部署旧智能合约的用户ID不一致时,判定智能合约升级请求不具有合法性。
其中,该合法性验证单元可以包括:
升级验证地址列表提取子单元,用于从旧智能合约中提取到升级验证地址列表;其中,升级验证地址列表中记录有预设数量的地址;
签名信息获取子单元,用于从智能合约升级请求中提取到与新智能合约对应的签名信息;
升级所需签名要求满足判断子单元,用于判断签名信息是否能够满足升级验证地址列表对记录的地址对应的签名的要求;
第二合法判定子单元,用于当满足了要求时,判定智能合约升级请求具有合法性;
第二不合法判定子单元,用于当不满足要求时,判定智能合约升级请求不具有合法性。
进一步的,该智能合约升级装置还可以包括:
智能合约调用请求接收单元,用于接收智能合约调用请求;
目标智能合约地址确定单元,用于根据智能合约调用请求确定目标智能合约地址;
对应最新合约代码确定及调用单元,用于在部署有包含目标智能合约地址的最新区块中确定对应的新合约代码,并执行新合约代码来完成智能合约调用请求。
本实施例作为与上述方法实施例对应的装置实施例存在,上述各功能单元也以在上述方法实施例中进行过说明和解释,由于对应于方法实施例,本实施例也相应具有方法实施例的全部有益效果,此处不再一一赘述。
在上文中已经通过一些实施例对如何不需要用户自行替换升级后的新之智能合约的地址也能够通过原合约地址调用新合约代码进行了详细的描述,本申请还提供一种与该方法对应的实体硬件装置,此部分内容原理与方案部分相对应,实现原理的部分此处不再赘述,以下将对该实体硬件装置的硬件组成进行描述,请参见图7,图7为本申请实施例提供的一种区块链节点设备的结构示意图:
该区块链节点设备400包括存储器410、处理器420以及总线430,存储器410上存储有可在处理器420上运行的智能合约升级程序,该智能合约升级程序通过总线430被传输至处理器420,并在被处理器420执行时可实现如上述实施例所描述的智能合约升级方法中的各步骤。
其中,存储器410至少包括一种类型的可读存储介质,可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、磁性存储器、磁盘、光盘等。存储器410在一些实施例中可以是区块链节点设备400的内部存储单元,例如该区块链节点设备400的硬盘。存储器410在另一些实施例中也可以是该区块链节点设备400的外部存储设备,例如该区块链节点设备400上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,存储器410还可以同时由内部存储单元和外部存储设备同时组成。进一步的,存储器410不仅可以用于存储安装于该区块链节点设备400中的各种应用软件和各类数据,还可以用于暂时地存储已经输出或者将要输出的数据。
处理器420在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器或其他数据处理芯片,用于运行存储器410中存储的程序代码或处理数据,例如智能合约升级程序等。
总线430可以是外设部件互连标准(peripheral component interconnect,简称PCI)总线或扩展工业标准结构(extended industry standard architecture,简称EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条双向中空指示线表示,但并不表示仅有一根总线或一种类型的总线。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例中所给出的方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是,上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。并且本文中的术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (7)

1.一种智能合约升级方法,其特征在于,包括:
获取智能合约升级请求;
根据所述智能合约升级请求确定被替换的旧智能合约的旧合约地址,并从所述智能合约升级请求中提取得到新智能合约的新合约代码;
建立所述旧合约地址与所述新合约代码间的对应关系,并将所述对应关系部署在区块链新形成的区块中;
所述建立所述旧合约地址与所述新合约代码间的对应关系之前,还包括:
验证所述智能合约升级请求是否具有合法性;
仅当所述智能合约升级请求具有合法性时,执行所述建立所述旧合约地址与所述新合约代码间的对应关系的步骤;
其中,所述验证所述智能合约升级请求是否具有合法性,包括:
从所述旧智能合约中提取到升级验证地址列表;其中,所述升级验证地址列表中记录有预设数量的地址;
从所述智能合约升级请求中提取到与所述新智能合约对应的签名信息;
判断所述签名信息是否能够满足所述升级验证地址列表对记录的地址对应的签名的要求;
若满足了所述要求,则判定所述智能合约升级请求具有合法性;
若不满足所述要求,则判定所述智能合约升级请求不具有合法性。
2.根据权利要求1所述的智能合约升级方法,其特征在于,获取智能合约升级请求,包括:
从区块链数据池中提取得到所述智能合约升级请求。
3.根据权利要求1所述的智能合约升级方法,其特征在于,还包括:
当所述智能合约升级请求经验证不具有合法性时,将所述智能合约升级请求的发起信息发送给部署所述旧智能合约的用户。
4.根据权利要求1至3任一项所述的智能合约升级方法,其特征在于,还包括:
接收智能合约调用请求;
根据所述智能合约调用请求确定目标智能合约地址;
在部署有包含所述目标智能合约地址的最新区块中确定对应的新合约代码,并执行所述新合约代码来完成所述智能合约调用请求。
5.一种智能合约升级装置,其特征在于,包括:
智能合约升级请求获取单元,用于获取智能合约升级请求;
旧合约地址和新合约代码获取单元,用于根据所述智能合约升级请求确定被替换的旧智能合约的旧合约地址,并从所述智能合约升级请求中提取得到新智能合约的新合约代码;
对应关系建立及部署单元,用于建立所述旧合约地址与所述新合约代码间的对应关系,并将所述对应关系部署在区块链新形成的区块中;
所述智能合约升级装置,还包括:
合法性验证单元,用于验证所述智能合约升级请求是否具有合法性;
合法性验证通过执行单元,用于仅当所述智能合约升级请求具有合法性时,执行所述建立所述旧合约地址与所述新合约代码间的对应关系的步骤;
其中,所述合法性验证单元,包括:
升级验证地址列表获取单元,用于从所述旧智能合约中提取到升级验证地址列表;其中,所述升级验证地址列表中记录有预设数量的地址;
签名信息获取单元,用于从所述智能合约升级请求中提取到与所述新智能合约对应的签名信息;
要求判断单元,用于判断所述签名信息是否能够满足所述升级验证地址列表对记录的地址对应的签名的要求;
具有合法性判定单元,用于若满足了所述要求判断单元的要求,则判定所述智能合约升级请求具有合法性;
不具有合法性判定单元,用于若不满足所述要求判断单元的要求,则判定所述智能合约升级请求不具有合法性。
6.一种区块链节点设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至4任一项所述的智能合约升级方法。
7.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至4任一项所述的智能合约升级方法。
CN201910290052.XA 2019-04-11 2019-04-11 一种智能合约升级方法、装置、区块链节点设备及介质 Active CN110018840B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201910290052.XA CN110018840B (zh) 2019-04-11 2019-04-11 一种智能合约升级方法、装置、区块链节点设备及介质
PCT/CN2019/093485 WO2020206848A1 (zh) 2019-04-11 2019-06-28 一种智能合约升级方法、装置、区块链节点设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910290052.XA CN110018840B (zh) 2019-04-11 2019-04-11 一种智能合约升级方法、装置、区块链节点设备及介质

Publications (2)

Publication Number Publication Date
CN110018840A CN110018840A (zh) 2019-07-16
CN110018840B true CN110018840B (zh) 2021-12-03

Family

ID=67191027

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910290052.XA Active CN110018840B (zh) 2019-04-11 2019-04-11 一种智能合约升级方法、装置、区块链节点设备及介质

Country Status (2)

Country Link
CN (1) CN110018840B (zh)
WO (1) WO2020206848A1 (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112541756B (zh) * 2019-09-20 2023-07-04 上海哔哩哔哩科技有限公司 区块链合约升级方法、装置、计算机设备及可读存储介质
CN111182527B (zh) * 2019-12-27 2022-07-26 深圳市云伽智能技术有限公司 Ota固件升级方法、装置、终端设备及其存储介质
CN111475777B (zh) * 2020-03-09 2023-04-25 上海零数众合信息科技有限公司 一种区块链智能合约的升级方法
CN112162770B (zh) * 2020-10-20 2023-11-10 深圳技术大学 基于区块链实现完整性验证的固件版本升级方法及装置
CN112527781B (zh) * 2020-12-23 2022-07-15 上海万向区块链股份公司 一种智能合约数据迁移方法及系统
CN112631642B (zh) * 2020-12-29 2024-06-21 杭州趣链科技有限公司 智能合约的升级方法、装置、区块链节点及存储介质
CN112749152A (zh) * 2021-01-19 2021-05-04 矩阵元技术(深圳)有限公司 智能合约的数据迁移方法、装置及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106709704A (zh) * 2016-11-23 2017-05-24 杭州秘猿科技有限公司 一种基于许可链的智能合约升级方法
CN107464148A (zh) * 2017-08-23 2017-12-12 众安信息技术服务有限公司 一种基于联盟链的智能合约升级方法和系统
US10102265B1 (en) * 2017-04-12 2018-10-16 Vijay K. Madisetti Method and system for tuning blockchain scalability for fast and low-cost payment and transaction processing
CN108881312A (zh) * 2018-08-24 2018-11-23 北京京东尚科信息技术有限公司 智能合约升级方法、系统和相关设备以及存储介质
CN109272335A (zh) * 2018-09-17 2019-01-25 深圳市元征科技股份有限公司 一种智能合约管理方法、系统、设备及计算机存储介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11055703B2 (en) * 2017-06-19 2021-07-06 Hitachi, Ltd. Smart contract lifecycle management
CN108170740B (zh) * 2017-12-18 2022-04-26 深圳前海微众银行股份有限公司 数据迁移方法、系统和计算机可读存储介质
CN109445820A (zh) * 2018-10-29 2019-03-08 深圳市元征科技股份有限公司 一种智能合约升级方法、系统、设备及计算机存储介质
CN109559229A (zh) * 2018-11-30 2019-04-02 众安信息技术服务有限公司 基于区块链的更新智能合约组的方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106709704A (zh) * 2016-11-23 2017-05-24 杭州秘猿科技有限公司 一种基于许可链的智能合约升级方法
US10102265B1 (en) * 2017-04-12 2018-10-16 Vijay K. Madisetti Method and system for tuning blockchain scalability for fast and low-cost payment and transaction processing
CN107464148A (zh) * 2017-08-23 2017-12-12 众安信息技术服务有限公司 一种基于联盟链的智能合约升级方法和系统
CN108881312A (zh) * 2018-08-24 2018-11-23 北京京东尚科信息技术有限公司 智能合约升级方法、系统和相关设备以及存储介质
CN109272335A (zh) * 2018-09-17 2019-01-25 深圳市元征科技股份有限公司 一种智能合约管理方法、系统、设备及计算机存储介质

Also Published As

Publication number Publication date
CN110018840A (zh) 2019-07-16
WO2020206848A1 (zh) 2020-10-15

Similar Documents

Publication Publication Date Title
CN110018840B (zh) 一种智能合约升级方法、装置、区块链节点设备及介质
CN107396360B (zh) 区块验证方法及装置
CN108256353B (zh) 一种数据完整性校验方法、装置及客户端
CN109584063B (zh) 基于区块链的交易处理方法及装置、电子设备
CN109561085B (zh) 一种基于设备识别码的身份验证方法、服务器及介质
EP1334419B1 (en) System and method for verifying the integrity of stored information within an electronic device
CN106936835A (zh) 设备接入的方法及系统
CN110084604B (zh) 基于区块链的交易处理方法及装置、电子设备
CN109977662B (zh) 基于组合公钥的应用程序处理方法、装置、终端及存储介质
CN103077345B (zh) 基于虚拟机的软件授权方法及系统
CN115344434A (zh) 用于打补丁的方法及装置、电子设备、存储介质
CN108259163B (zh) 终端设备的授权方法
CN109379215A (zh) 一种网卡固件更新方法、装置及设备
CN110061988B (zh) 嵌入式设备的鉴权方法、嵌入式设备、业务服务器及存储介质
CN111177171A (zh) 基于区块链的业务数据认证与管理方法及系统
CN105653932A (zh) 软件升级验证的方法和装置
CN115828273A (zh) 车辆安全启动方法、装置,电子控制单元及存储介质
CN110597557B (zh) 一种系统信息获取方法、终端及介质
CN113849802A (zh) 一种设备认证方法、装置、电子设备及存储介质
CN115525933B (zh) 数据防篡改方法、装置、电子设备及存储介质
AU2019313886B2 (en) Information processing device, verification method and verification program
CN116880884B (zh) 电子设备的更新方法、更新设备以及可读存储介质
CN110992022B (zh) 一种验证结果的获取方法及装置
CN110719341B (zh) 数据处理方法及装置、dhcp服务器及存储介质
CN117411644B (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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20210914

Address after: 518000 21 / f-23 / F, block B, building 12, Shenzhen Bay science and technology ecological park, No. 18, South Keji Road, high tech community, Yuehai street, Nanshan District, Shenzhen City, Guangdong Province

Applicant after: Xunlei Networking Technologies, Ltd.

Applicant after: SHENZHEN ONETHING TECHNOLOGIES Co.,Ltd.

Address before: 518052 Room 201, building A, No. 1, Qian Wan Road, Qianhai Shenzhen Hong Kong cooperation zone, Shenzhen, Guangdong (Shenzhen Qianhai business secretary Co., Ltd.)

Applicant before: SHENZHEN ONETHING TECHNOLOGIES Co.,Ltd.

GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20240624

Address after: 518000 Port Building 0610-E13, Maritime Center, No. 59, Linhai Avenue, Nanshan Street, Qianhai Shenzhen Hong Kong Cooperation Zone, Shenzhen, Guangdong

Patentee after: SHENZHEN ONETHING TECHNOLOGIES Co.,Ltd.

Country or region after: China

Address before: 518000 21 / f-23 / F, block B, building 12, Shenzhen Bay science and technology ecological park, No. 18, South Keji Road, high tech community, Yuehai street, Nanshan District, Shenzhen City, Guangdong Province

Patentee before: Xunlei Networking Technologies, Ltd.

Country or region before: China

Patentee before: SHENZHEN ONETHING TECHNOLOGIES Co.,Ltd.