CN111813441A - 智能合约发布方法、装置、计算机可读介质及电子设备 - Google Patents

智能合约发布方法、装置、计算机可读介质及电子设备 Download PDF

Info

Publication number
CN111813441A
CN111813441A CN202010944766.0A CN202010944766A CN111813441A CN 111813441 A CN111813441 A CN 111813441A CN 202010944766 A CN202010944766 A CN 202010944766A CN 111813441 A CN111813441 A CN 111813441A
Authority
CN
China
Prior art keywords
contract
version number
issued
index value
intelligent
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.)
Granted
Application number
CN202010944766.0A
Other languages
English (en)
Other versions
CN111813441B (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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202010944766.0A priority Critical patent/CN111813441B/zh
Publication of CN111813441A publication Critical patent/CN111813441A/zh
Application granted granted Critical
Publication of CN111813441B publication Critical patent/CN111813441B/zh
Priority to PCT/CN2021/107240 priority patent/WO2022052632A1/zh
Priority to US17/944,445 priority patent/US20230004542A1/en
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/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2272Management thereof
    • 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
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3297Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving time stamps, e.g. generation of time stamps
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本申请的实施例提供了一种智能合约发布方法、装置、计算机可读介质及电子设备。该智能合约发布方法包括:根据待发布智能合约的合约名称生成版本号索引值,并根据所述版本号索引值从区块链网络中查找关联的目标合约版本号;若所述待发布智能合约的合约版本号大于所述目标合约版本号,则根据所述待发布智能合约的合约版本号以及所述合约名称生成合约索引值;将所述合约索引值和所述待发布智能合约进行关联,并将所述版本号索引值和所述待发布智能合约的合约版本号进行关联,生成交易信息;向所述区块链网络发布所述交易信息,以将所述待发布智能合约发布至所述区块链网络中。本申请实施例的技术方案能够实现区块链平台层面的智能合约升级功能。

Description

智能合约发布方法、装置、计算机可读介质及电子设备
技术领域
本申请涉及互联网技术领域,具体而言,涉及一种智能合约发布方法、装置、计算机可读介质及电子设备。
背景技术
智能合约是一种存储在区块链节点的可执行的代码,该代码指定了智能合约的执行过程和处理逻辑,例如输入、输出、中间转换逻辑等等。随着智能合约的处理逻辑的优化,在使用过程中不可避免地需要对智能合约进行升级,然而相关技术中并没有有效的解决方案。
发明内容
本申请的实施例提供了一种智能合约发布方法、装置、介质及电子设备,进而至少在一定程度上能够实现区块链平台层面的智能合约升级功能,强化了区块链平台的基础能力,节约了开发成本。
本申请的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本申请的实践而习得。
根据本申请实施例的一个方面,提供了一种智能合约发布方法,包括:根据待发布智能合约的合约名称生成版本号索引值,并根据所述版本号索引值从区块链网络中查找关联的目标合约版本号;若所述待发布智能合约的合约版本号大于所述目标合约版本号,则根据所述待发布智能合约的合约版本号以及所述合约名称生成合约索引值;将所述合约索引值和所述待发布智能合约进行关联,并将所述版本号索引值和所述待发布智能合约的合约版本号进行关联,生成交易信息;向所述区块链网络发布所述交易信息,以将所述待发布智能合约发布至所述区块链网络中。
根据本申请实施例的一个方面,提供了一种智能合约调用方法,包括:接收调用请求方发送的合约调用请求,所述合约调用请求中包含有待调用合约名称;根据所述待调用合约名称以及所述合约调用请求对应的合约版本号,生成合约索引值;根据所述合约索引值,从区块链网络中查询与所述合约索引值相关联的目标智能合约;根据所述目标智能合约的调用接口,调用所述目标智能合约执行对应的合约操作。
根据本申请实施例的一个方面,提供了一种智能合约发布装置,包括:第一生成单元,配置为根据待发布智能合约的合约名称生成版本号索引值,并根据所述版本号索引值从区块链网络中查找关联的目标合约版本号;第二生成单元,配置为若所述待发布智能合约的合约版本号大于所述目标合约版本号,则根据所述待发布智能合约的合约版本号以及所述合约名称生成合约索引值;关联单元,配置将所述合约索引值和所述待发布智能合约进行关联,并将所述版本号索引值和所述待发布智能合约的合约版本号进行关联,生成交易信息;第一发布单元,配置为向所述区块链网络发布所述交易信息,以将所述待发布智能合约发布至所述区块链网络中。
在本申请的一些实施例中,基于前述方案,所述第一生成单元配置为:根据所述待发布智能合约的合约名称进行哈希计算,得到第一哈希值,将计算得到的第一哈希值作为所述版本号索引值。
在本申请的一些实施例中,基于前述方案,所述第二生成单元配置为:根据所述待发布智能合约的合约版本号以及所述合约名称进行哈希计算,得到第二哈希值,将计算得到的第二哈希值作为所述合约索引值。
在本申请的一些实施例中,基于前述方案,所述第一生成单元配置为:根据所述版本号索引值,从所述区块链网络中查找关联的至少一个合约版本号;将所述至少一个合约版本号中的最大合约版本号作为所述目标合约版本号。
在本申请的一些实施例中,基于前述方案,所述装置还包括:第三生成单元,配置为若根据所述版本号索引值从所述区块链网络中未查找到所述关联的目标合约版本号,则根据所述待发布智能合约的合约版本号以及所述合约名称生成合约索引值;第四生成单元,配置为将所述合约索引值和所述待发布智能合约进行关联,并将所述版本号索引值和所述待发布智能合约的合约版本号进行关联,生成交易信息;第二发布单元,配置为向所述区块链网络发布所述交易信息,以将所述待发布智能合约发布至所述区块链网络中。
在本申请的一些实施例中,基于前述方案,所述装置还包括:终止单元,配置为若所述待发布智能合约的合约版本号小于或等于所述目标合约版本号,则终止向所述区块链网络发布所述待发布智能合约。
在本申请的一些实施例中,基于前述方案,在向所述区块链网络发布所述交易信息之前,所述装置还包括:校验单元,配置为校验所述待发布智能合约的合约代码;所述第一发布单元,配置为若对所述待发布智能合约的合约代码校验通过,则向所述区块链网络发布所述交易信息。
在本申请的一些实施例中,基于前述方案,所述校验单元配置为:根据所述待发布智能合约的合约类型,创建对应的虚拟机;通过所述虚拟机执行所述待发布智能合约的合约代码;若所述虚拟机在执行所述待发布智能合约的合约代码后返回合约执行成功的结果,则确定对所述合约代码校验通过。
在本申请的一些实施例中,基于前述方案,在向所述区块链网络发布所述交易信息之前,所述装置还包括:获取单元,配置为获取所述目标合约版本号对应的智能合约的所有者信息;执行单元,配置为若所述所有者信息与所述待发布智能合约的发布者信息相匹配,则执行向所述区块链网络发布所述交易信息的过程。
根据本申请实施例的一个方面,提供了一种智能合约调用装置,包括:接收单元,配置为接收调用请求方发送的合约调用请求,所述合约调用请求中包含有待调用合约名称;索引值生成单元,配置为根据所述待调用合约名称以及所述合约调用请求对应的合约版本号,生成合约索引值;查询单元,配置为根据所述合约索引值,从区块链网络中查询与所述合约索引值相关联的目标智能合约;调用单元,配置为根据所述目标智能合约的调用接口,调用所述目标智能合约执行对应的合约操作。
在本申请的一些实施例中,基于前述方案,所述装置还包括:处理单元,配置为若所述合约调用请求中包含有待调用合约版本号,则将所述待调用合约版本号作为所述合约调用请求对应的合约版本号;生成查找单元,配置为若所述合约调用请求中不包含所述待调用合约版本号,则根据所述待调用合约名称生成版本号索引值,并根据所述版本号索引值从所述区块链网络中查找与所述版本号索引值相关联的目标合约版本号,将所述目标合约版本号作为所述合约调用请求对应的合约版本号。
根据本申请实施例的一个方面,提供了一种计算机可读介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上述实施例中所述的智能合约发布方法或智能合约调用方法。
根据本申请实施例的一个方面,提供了一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如上述实施例中所述的智能合约发布方法或智能合约调用方法。
根据本申请实施例的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各种可选实施例中提供的智能合约发布方法或智能合约调用方法。
在本申请的一些实施例所提供的技术方案中,首先根据待发布智能合约的合约名称生成版本索引值,并根据待发布智能合约的合约版本号和合约名称生成合约索引值,然后将合约索引值和待发布智能合约关联,并将版本号索引值和待发布智能合约的合约版本号关联,生成交易信息,进而通过向区块链网络发布交易信息的方式将待发布智能合约发布至区块链网络中。可见,本申请实施例的技术方案能够实现区块链平台层面的智能合约升级功能,强化了区块链平台的基础能力,且不需要开发合约升级功能,节约了开发成本。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1示出了一种区块链网络的结构示意图。
图2示出了一种区块链的结构示意图。
图3示出了一种区块链中新区块生成的示意图。
图4示出了可以应用本申请实施例的技术方案的示例性系统架构的示意图。
图5示出了根据本申请一个实施例的智能合约发布方法的流程图。
图6示出了根据本申请一个实施例的智能合约发布方法的流程图。
图7示出了根据本申请一个实施例的智能合约发布方法的流程图。
图8示出了根据本申请一个实施例的智能合约发布方法的流程图。
图9示出了根据本申请的一个实施例的智能合约调用方法的流程图。
图10示出了根据本申请的一个实施例的智能合约调用方法的流程图。
图11示出了根据本申请一个实施例的智能合约发布方法的交互流程图。
图12示出了根据本申请的一个实施例的智能合约发布方法的流程图。
图13A示出了根据本申请的一个实施例的智能合约调用方法的流程图。
图13B示出了根据本申请的另一个实施例的智能合约调用方法的流程图。
图14示出了根据本申请的一个实施例的智能合约发布装置的框图。
图15示出了根据本申请的一个实施例的智能合约调用装置的框图。
图16示出了适于用来实现本申请实施例的电子设备的计算机系统的结构示意图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本申请将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本申请的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本申请的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本申请的各方面。
需要说明的是,本申请的说明书和权利要求书及上述附图中使用的术语仅用于描述实施例,并不旨在限制本申请的范围。应该理解的是,术语“包括”、“包含”、“具有”等在本文中使用时指定存在所陈述的特点、整体、步骤、操作、元件、组件和/或其群组,但并不排除存在或添加其他特点、整体、步骤、操作、元件、组件和/或其群组中的一个或多个。
将进一步理解的是,尽管术语“第一”、“第二”、“第三”等可以在本文中用于描述各种元件,但是这些元件不应受这些术语的限制。这些术语仅用于区分一个元件和另一个元件。例如,在不脱离本发明的范围的情况下,第一元件可以被称为第二元件。类似地,第二元件可以被称为第一元件。如本文所使用的,术语“和/或”包含关联的列出的项目中的一个或多个的任何和所有组合。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。
对本申请实施例进行进一步详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。
智能合约:是一种旨在以信息化方式传播、验证或执行合同的计算机协议,允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转,在区块链环境里,智能合约表现为可执行代码。
sha256(Secure Hash Algorithm):一种安全散列算法,输入为任意长度,输出为256 bit。
区块链网络:是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式,本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了信息,用于验证其信息的有效性(防伪)和生成下一个区块。
图1示出了一种区块链网络的结构示意图。
参见图1所示的区块链网络101,区块链网络101是指用于进行节点与节点之间数据共享的系统,每个节点A在进行正常工作可以接收到输入信息,并基于接收到的输入信息维护该区块链网络101内的共享数据。为了保证区块链网络101内的信息互通,区块链网络101中的每个节点A之间可以存在信息连接,节点A之间可以通过上述信息连接进行信息传输。例如,当区块链网络101中的任意节点A接收到输入信息时,区块链网络101中的其他节点A便根据共识算法获取该输入信息,将该输入信息作为共享数据中的数据进行存储,使得区块链网络101中全部节点A上存储的数据均一致。
对于区块链网络101中的每个节点A,均具有与其对应的节点标识,而且区块链网络101中的每个节点A均可以存储有区块链网络101中其他节点A的节点标识,以便后续根据其他节点A的节点标识,将生成的区块广播至区块链网络101中的其他节点A。每个节点A中可维护一个如下表所示的节点标识列表,将节点名称和节点标识对应存储至该节点标识列表中。其中,节点标识可为IP(Internet Protocol,网络之间互联的协议)地址以及其他任一种能够用于标识该节点的信息,表1中仅以IP地址为例进行说明。
Figure 310848DEST_PATH_IMAGE001
图1中所示的区块链网络101中的每个节点均存储一条相同的区块链。区块链由多个区块组成,参见图2,区块链由多个区块组成,创始块中包括区块头和区块主体,区块头中存储有输入信息特征值、版本号、时间戳和难度值,区块主体中存储有输入信息;创始块的下一区块以创始块为父区块,下一区块中同样包括区块头和区块主体,区块头中存储有当前区块的输入信息特征值、父区块的区块头特征值、版本号、时间戳和难度值,并以此类推,使得区块链中每个区块中存储的区块数据均与父区块中存储的区块数据存在关联,保证了区块中输入信息的安全性。
在生成区块链中的各个区块时,参见图3,区块链所在的节点在接收到输入信息时,对输入信息进行校验,完成校验后,将输入信息存储至内存池中,并更新其用于记录输入信息的哈希树;之后,将更新时间戳更新为接收到输入信息的时间,并尝试不同的随机数,多次进行特征值计算,使得计算得到的特征值可以满足下述公式:
SHA256(SHA256(version+prev_hash+merkle_root+ntime+nbits+x))<TARGET
其中,SHA256为计算特征值所用的特征值算法;version(版本号)为区块链中相关区块协议的版本信息;prev_hash为当前区块的父区块的区块头特征值;merkle_root为输入信息的特征值;ntime为更新时间戳的更新时间;nbits为当前难度,在一段时间内为定值,并在超出固定时间段后再次进行确定;x为随机数;TARGET为特征值阈值,该特征值阈值可以根据nbits确定得到。
这样,当计算得到满足上述公式的随机数时,便可将信息对应存储,生成区块头和区块主体,得到当前区块。随后,区块链所在节点根据区块链网络101中其他节点A的节点标识,将新生成的区块分别发送给其所在的区块链网络101中的其他节点A,由其他节点A对新生成的区块进行校验,并在完成校验后将新生成的区块添加至其存储的区块链中。
图4示出了可以应用本申请实施例的技术方案的示例性系统架构100的示意图。
如图4所示,系统架构100可以包括区块链网络101和客户端102。客户端102的形态和数量用于举例,并不构成对本申请实施例的限定。例如,可以包括两个或者更多数量的客户端102。
其中,客户端102可以为以下任一种:终端、独立的应用程序、应用程序编程接口(Application Programming Interface,API)或者软件开发工具包(SoftwareDevelopment Kit,SDK)。其中,终端可以包括但不限于:智能手机(如Android手机、IOS手机等)、平板电脑、便携式个人计算机、移动互联网设备(Mobile Internet Devices,MID)、服务器等,服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content Delivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。
实际应用中,一个或多个用户可以操作客户端102,本申请实施例中以一个用户操作一个客户端为例。
在本申请的一个实施例中,用户可以在客户端102中输入待发布智能合约,并在用户确认之后,客户端102可以根据待发布智能合约的合约名称生成版本号索引值,并根据版本号索引值从区块链网络101中查找关联的目标合约版本号,若待发布智能合约的合约版本号大于目标合约版本号,则根据待发布智能合约的合约版本号以及合约名称生成合约索引值,然后,客户端102可以将合约索引值和待发布智能合约进行关联,并将版本号索引值和待发布智能合约的合约版本号进行关联,生成交易信息,最后,客户端102可以向区块链网络101发布交易信息,以将待发布智能合约发布至区块链网络中。
因此,本申请实施例提供的智能合约发布方法,在根据待发布智能合约的合约名称生成版本索引值,并根据待发布智能合约的合约版本号和合约名称生成合约索引值后,通过将合约索引值和待发布智能合约关联,将版本号索引值和待发布智能合约的合约版本号关联,生成交易信息,向区块链网络发布交易信息,从而将待发布智能合约发布至区块链网络中。本申请实施例能够实现区块链平台层面的智能合约升级功能,强化了区块链平台的基础能力,且不需要开发合约升级功能,节约了开发成本。
以下对本申请实施例的技术方案的实现细节进行详细阐述:
图5示出了根据本申请的一个实施例的智能合约发布方法的流程图,该智能合约发布方法可以由客户端来执行,该客户端可以是图4中所示的客户端102,参照图5所示,所述方法包括:
步骤S510、根据待发布智能合约的合约名称生成版本号索引值,并根据版本号索引值从区块链网络中查找关联的目标合约版本号;
步骤S520、若待发布智能合约的合约版本号大于目标合约版本号,则根据待发布智能合约的合约版本号以及合约名称生成合约索引值;
步骤S530、将合约索引值和待发布智能合约进行关联,并将版本号索引值和待发布智能合约的合约版本号进行关联,生成交易信息;
步骤S540、向区块链网络发布交易信息,以将待发布智能合约发布至区块链网络中。
下面对这些步骤进行详细描述。
在步骤S510中,根据待发布智能合约的合约名称生成版本号索引值,并根据版本号索引值从区块链网络中查找关联的目标合约版本号。
其中,智能合约是指运行在区块链上的能够执行任意计算并实现复杂逻辑的程序代码。智能合约的程序代码可以具有传送用户账户信息及所对应的资金信息、与其他智能合约进行互相调用、与区块链平台的其他节点设备共同维护用户的账户信息及所对应的资金信息等功能。
发布在区块链上的智能合约是编译器将开发人员使用高级编程语言编写的智能合约的源代码编译成可供虚拟机或处理器执行的智能合约的字节码。其中,高级编程语言包括但不限于以下任一种:Solidity语言、C++语言、GO语言、Rust语言、python语言、javascript语言、Java语言、Hashell语言、Ruby语言等,编译器与高级编程语言相对应,高级编程语言不同则编译时使用的编译器的种类也不同。
在本实施例中,用于智能合约发布方法的执行主体可以从本地或其它设备获取待发布智能合约。执行主体在获取待发布智能合约之后,可以根据待发布智能合约的合约名称生成版本号索引值,并根据版本索引值从区块链网络中查找关联的目标合约版本号。
具体的,区块链网络中可以记录有版本号索引值与合约版本号的映射关系,该版本号索引值可以指示合约版本号的读取位置,通过版本号索引值指示的读取位置,可以查找得到关联的目标合约版本号。
在一个实施例中,区块链网络可以是以Key-Value(键-值)的方式存储版本号索引值与合约版本号的映射关系,其中,Key为版本号索引值,Value为合约版本号。
在本申请的一些实施例中,生成版本号索引值的方式可以是采用哈希算法,得到哈希值,将哈希值作为版本号索引值。具体的,执行主体可以对待发布智能合约的合约名称进行哈希计算,得到第一哈希值,将计算得到的第一哈希值作为版本号索引值。
可选的,哈希算法可以采用sha256哈希函数,对于任意长度的消息,sha256都会产生一个256bit长的哈希值。例如,对于“干100天成为区块链程序员,大叔带领着我们,fighting!”,经哈希函数SHA256可得到哈希值“A7FCFC6B5269BDCCE571798D618EA219A68B96CB87A0E21080C2E758D23E4CE9”。具体到本实施例中,版本号索引值可以用versionKey表示,则版本号索引值可以表示为versionKey=sha256(name+0),其中,name为待发布智能合约的合约名称。需要说明的是,“0”仅仅是示例性的,还可以是其他数值,比如“1”、“2”等任意数值。
因此,在区块链网络以Key-Value(键-值)的方式进行存储时,执行主体可以以versionKey为Key,从区块链网络中获取value,获取到的value即为关联的目标合约版本号。
在本申请的其他实施例中,还可以将待发布智能合约的合约名称作为版本号索引值,在该实施例中,区块链网络中可以记录有合约名称与合约版本号的映射关系,因此,可以通过待发布智能合约的合约名称获取关联的目标合约版本号。
在步骤S520中,若待发布智能合约的合约版本号大于目标合约版本号,则根据待发布智能合约的合约版本号以及合约名称生成合约索引值。
需要说明的是,合约所有者可以发布多个合约名称相同,但合约版本号不同的智能合约,除了首次发布智能合约之外,后续的发布行为可以称为“升级合约”。
但是,无论是首次发布智能合约,还是后续发布智能合约,多个智能合约的合约版本号必须按照发布时间顺序递增,因此,若要进行待发布智能合约的发布,必须使得待发布智能合约的合约版本号大于最新发布时间对应的合约版本号。
在本实施例中,由于区块链网络中可以记录有版本号索引值与合约版本号的映射关系,因此,可以通过版本索引值查找关联的目标合约版本号,也即查找最新发布时间对应的合约版本号。
因此,如果待发布智能合约的合约版本号大于目标合约版本号,则可以对待发布智能合约进行发布。具体实现时,要对待发布智能合约进行发布,可以首先根据待发布智能合约的合约版本号以及合约名称生成合约索引值。
相反地,如果待发布智能合约的合约版本号小于或等于目标合约版本号,则终止向区块链网络发布待发布智能合约。
在本申请的一个实施例中,生成合约索引值的方式可以是采用哈希算法,得到哈希值,将哈希值作为合约索引值。具体的,执行主体可以对待发布智能合约的合约名称和合约版本号进行哈希计算,得到第二哈希值,将计算得到的第二哈希值作为合约索引值。可选的,哈希算法可以采用sha256哈希函数,合约索引值可以用contractKey表示,则合约索引值可以表示为contractKey=sha256(name+version),其中,name为待发布智能合约的合约名称,version为待发布智能合约的合约版本号。
在步骤S530中,将合约索引值和待发布智能合约进行关联,并将版本号索引值和待发布智能合约的合约版本号进行关联,生成交易信息。
为了将待发布智能合约发布至区块链网络,在根据待发布智能合约的合约版本号以及合约名称生成合约索引值之后,进一步可以将合约索引值和待发布智能合约进行关联,并将版本号索引值和待发布智能合约的合约版本号进行关联,生成交易信息。
值得一提的是,将合约索引值和待发布智能合约进行关联,也就是建立合约索引值和待发布智能合约之间的映射关系,将版本号索引值和待发布智能合约的合约版本号进行关联,也就是建立版本号索引值和待发布智能合约的合约版本号之间的映射关系,这样一来,通过建立的两组映射关系,大大地方便了后续合约版本号的查找,以及智能合约的查找。
在步骤S540中,向区块链网络发布交易信息,以将待发布智能合约发布至区块链网络中。
在生成交易信息后,执行主体可以通过发布接口将交易信息发布至区块链网络,从而将智能合约发布至区块链网络,以使区块链网络中的各个节点设备都可以调用该智能合约。
以上实施例中的技术方案,在根据待发布智能合约的合约名称生成版本索引值,并根据待发布智能合约的合约版本号和合约名称生成合约索引值后,通过将合约索引值和待发布智能合约关联,将版本号索引值和待发布智能合约的合约版本号关联,生成交易信息,向区块链网络发布交易信息,从而将待发布智能合约发布至区块链网络中。相比于传统的区块链应用层面上代理合约模式,本申请实施例能够实现区块链平台层面的智能合约升级功能,强化了区块链平台的基础能力,且不需要开发合约升级功能,节约了开发成本,合约所有者可以进行合约升级,然后向区块链网络发布多个智能合约,同时,通过生成交易信息的方式进行发布,提高了发布到区块链上的智能合约的安全性以及查询效率。
在本申请的一个实施例中,由于区块链网络中可以记录有版本号索引值与合约版本号的映射关系,而该映射关系中可以包含版本号索引值和各个发布时间对应的合约版本号,也可以只包含版本号索引值和最新发布时间对应的合约版本号。因此,在区块链网络中记录的是版本号索引值和各个发布时间对应的合约版本号的映射关系的情况下,如图6所示,根据版本号索引值从区块链网络中查找关联的目标合约版本号的方式可以具体包括步骤S610-步骤S620,现详细说明如下:
步骤S610、根据版本号索引值,从区块链网络中查找关联的至少一个合约版本号。
由于合约所有者可以发布多个合约名称相同,但合约版本号不同的智能合约,也就是说,在区块链网络中可以记录有版本号索引值与各个发布时间对应的合约版本号的映射关系,因此,在根据版本索引值从区块链网络中进行查找时,可以查找到关联的至少一个合约版本号。
步骤S620、将至少一个合约版本号中的最大合约版本号作为目标合约版本号。
具体实现时,查找到的关联的至少一个合约版本号是各个发布时间对应的合约版本号,而由于合约所有者发布的多个智能合约的合约版本号必须按照发布时间进行递增,因此,可以将至少一个合约版本号中的最大合约版本号作为目标合约版本号,也即最新发布时间对应的合约版本号。
在本申请的一个实施例中,如图7所示,上述智能合约发布方法还包括步骤S710-步骤S730,具体说明如下:
步骤S710、若从区块链网络中查找不到关联的目标合约版本号,则根据待发布智能合约的合约版本号以及合约名称生成合约索引值。
在本实施例中,如果从区块链网络中查找不到关联的目标合约版本号,也就说明合约所有者还未通过将合约索引值和待发布智能合约进行关联,并将版本号索引值和待发布智能合约的合约版本号进行关联,生成交易信息,向区块链网络发布交易信息。反过来,也就说明了待发布智能合约是合约所有者首次向区块链网络发布的智能合约。
同时,由于根据待发布智能合约的合约名称生成版本号索引值,而根据版本号索引值从区块链网络中查找不到关联的目标合约版本号,也说明了合约所有者首次发布的待发布智能合约的合约名称是可用的。
因此,在首次发布待发布智能合约时,可以首先根据待发布智能合约的合约版本号以及合约名称生成合约索引值。其中,生成合约索引值的方式可以是采用哈希算法,得到哈希值,将哈希值作为合约索引值。具体的,执行主体可以对待发布智能合约的合约名称和合约版本号进行哈希计算,得到第二哈希值,将计算得到的第二哈希值作为合约索引值。可选的,哈希算法可以采用sha256哈希函数,则合约索引值可以表示为sha256(name+version),其中,name为待发布智能合约的合约名称,version为待发布智能合约的合约版本号。
步骤S720、将合约索引值和待发布智能合约进行关联,并将版本号索引值和待发布智能合约的合约版本号进行关联,生成交易信息。
为了首次发布待发布智能合约至区块链网络,在根据待发布智能合约的合约版本号以及合约名称生成合约索引值之后,进一步可以将合约索引值和待发布智能合约进行关联,并将版本号索引值和待发布智能合约的合约版本号进行关联,生成交易信息。
步骤S730、向区块链网络发布所述交易信息,以将待发布智能合约发布至区块链网络中。
在生成交易信息后,执行主体可以通过发布接口将交易信息发布至区块链网络,从而将智能合约发布至区块链网络,以使区块链网络中的各个节点设备都可以调用该智能合约。
在本申请的一个实施例中,在向区块链网络发布交易信息之前,上述智能合约发布方法还包括:校验待发布智能合约的合约代码。
在该实施例中,合约代码是用户将需执行协议条款直接写入代码行所形成的,合约代码是以字节的形式表示,不同的执行协议形成不同的合约代码,不同的合约代码可以实现不同的业务逻辑。
正因为如此,为了保证发布至区块链网络中的智能合约的合约代码能够实现对应的业务逻辑,因此,在向区块链网络发布交易信息之前,可以校验待发布智能合约的合约代码。如果对校验待发布智能合约的合约代码校验通过,则可以向区块链网络发布交易信息。
在本申请的一个实施例中,如图8所示,校验合约代码的过程具体包括步骤S810-步骤S830,具体说明如下:
步骤S810、根据待发布智能合约的合约类型,创建对应的虚拟机。
具体的,虚拟机(virtual machine)指的是通过软件模拟的、具备完整硬件系统功能并运行在隔离环境下的完整计算机系统,比如虚拟化物理机VMware、Java虚拟机等。而区块链虚拟机则是建立在区块链系统上的代码运行环境,其主要作用是处理区块链系统内的智能合约。
在本实施例中,为了校验合约代码,可以先根据待发布智能合约的合约类型,创建代码的运行环境,也即创建对应的虚拟机。其中,合约类型是指合约编程语言,例如可以是c++编程语言、java编程语言、solidity编程语言、python编程语言等等。
因此,根据合约类型,创建对应的虚拟机可以包括:用于执行用c++编程语言编写的智能合约的GNU编译器集合(GCC)虚拟机、用于执行用java编程语言编写的智能合约的Java虚拟机(JVM)、用于执行用solidity编程语言编写的智能合约的以太坊虚拟机(EVM)、或用于执行用python编程语言编写的智能合约的Python虚拟机(PVM)。
步骤S820、通过虚拟机执行待发布智能合约的合约代码。
步骤S830、若虚拟机在执行待发布智能合约的合约代码后返回合约执行成果的结果,则确定对合约代码校验通过。
在创建对应的虚拟机后,则可以通过虚拟机执行待发布智能合约的合约代码,如果虚拟机在执行待发布智能合约的合约代码后返回合约执行成功结果,则确定对合约代码校验通过,也即能够在虚拟机中执行合约代码的代码逻辑并输出参数,相反地,如果不能在虚拟机中执行合约代码的代码逻辑并输出参数,则确定对合约代码校验不通过。
在本申请的一个实施例中,在向区块链网络发布交易信息之前,上述智能合约发布方法还包括:
获取目标合约版本号对应的智能合约的所有者信息;
若所有者信息与待发布智能合约的发布者信息相匹配,则执行向区块链网络发布所述交易信息的过程。
在该实施例中,待发布智能合约的发布者可以发布多个智能合约,对于每个智能合约的发布,必须保证查找到的目标合约版本号是待发布智能合约的发布者对应的最新发布时间,因此,在向区块链网络发布交易信息之前,如果获取到的目标合约版本号对应的智能合约的所有者信息与发布者信息不匹配,则不能执行向区块链网络发布所述交易信息的过程。
相反地,如果所有者信息与待发布智能合约的发布者信息相匹配,则可以执行向区块链网络发布交易信息的过程。
需要说明的是,匹配的含义可以是所有者信息与待发布智能合约的发布者信息完全一致,当然,由于合约所有者可以将所有权进行转让,因此,匹配的含义还可以包含所有者信息与待发布智能合约的发布者信息是转让方与被转让方的关系。
图9示出了根据本申请的一个实施例的智能合约调用方法的流程图,该智能合约调用方法可以由区块链网络中的任一区块链节点来执行,该区块链节点可以是图4或图1中所示的区块链网络101中的任一区块链节点。参照图9所示,智能合约调用方法包括步骤S910-步骤S940,现详细说明如下:
步骤S910、接收调用请求方发送的合约调用请求,合约调用请求中包含有待调用合约名称。
在区块链网络中,通过向区块链节点提交相应的区块链交易,可以由区块链交易触发执行对应的智能合约,可以通过调用智能合约实现复杂的功能。而智能合约是区块链上预先部署的可执行代码,智能合约允许在没有第三方的情况下进行可信交易,且该交易可追踪且不可逆转。智能合约中可以定义一个或多个接口,每一接口用于实现相应的功能。在通过区块链交易调用智能合约时,可以声明调用该智能合约中定义的哪个或哪些接口,以实现相应的功能。
具体到本实施例中,调用请求方可以是客户端,客户端可以向区块链网络发送合约调用请求,合约调用请求用于请求调用目标智能合约中的某一接口,合约调用请求中可以包含有待调用合约名称。
可以理解的是,区块链网络中可能存在多个智能合约,而客户端发送的合约调用请求可以是针对目标智能合约,目标智能合约可以是指用户处理实际业务需要调用的一个智能合约,例如:用户在保险机构购买保险后与保险机构签订的智能合约、用户在某工厂采购设备后与工厂签订的智能合约,等等,该目标智能合约可能包括多个接口,例如:接口A、接口B、接口C,每个接口用于实现相应的功能。
步骤S920、根据待调用合约名称以及合约调用请求对应的合约版本号,生成合约索引值。
为了获取合约调用请求针对的目标智能合约,具体实施时,区块链网络在接收到合约调用请求后,可以首先对待调用合约名称以及合约调用请求对应的合约版本号进行哈希计算,得到哈希值,将计算得到的哈希值作为合约索引值。
可选的,哈希算法可以采用sha256哈希函数,合约索引值可以表示为contractkey=sha56(name+version),其中,name为待发布智能合约的合约名称,version为待发布智能合约的合约版本号。
步骤S930、根据合约索引值,从区块链网络中查询与合约索引值相关联的目标智能合约。
在得到合约索引值后,进一步根据合约索引值,从区块链网络中查询与合约索引值相关联的目标智能合约。
可以理解的是,由于在向区块链网络发布智能合约时,是先将合约索引值和智能合约关联,以及将版本索引值和智能合约的合约版本号关联后生成交易信息,然后,将交易信息发布至区块链网络,从而将智能合约发布至区块链网络。
因此,区块链网络中可以记录有合约索引值和智能合约的映射关系,从而在生成合约索引值之后,可以根据合约索引值,从区块链网络中查询与合约索引值相关联的目标智能合约。
步骤S940、根据目标智能合约的调用接口,调用目标智能合约执行对应的合约操作。
在通过步骤S930查询到目标智能合约之后,区块链网络可以对目标智能合约进行解析,得到目标智能合约的调用接口,然后,通过调用目标接口以实现相应的预设功能。
具体的,区块链网络通过目标智能合约的调用接口,执行目标智能合约中对应于调用接口的目标合约代码,实现相应的业务逻辑,完成业务处理。
在本申请的一个实施例中,如图10所示,智能合约调用方法还包括:
步骤S1010、若合约调用请求中包含有待调用合约版本号,则将待调用合约版本号作为合约调用请求对应的合约版本号。
步骤S1020、若合约调用请求中不包含待调用合约版本号,则根据待调用合约名称生成版本号索引值,并根据版本号索引值从区块链网络中查找与版本号索引值相关联的目标合约版本号,将目标合约版本号作为合约调用请求对应的合约版本号。
在该实施例中,根据合约调用请求中是否包含待调用合约版本号,可以确定出不同的合约调用请求对应的合约版本号。
如果合约调用请求中包含有待调用合约版本号,则可以将待调用合约版本号直接作为合约调用请求对应的合约版本号。
相反地,如果合约调用请求中不包含待调用合约版本号,则可以先根据待调用合约名称生成版本号索引值,然后根据版本号索引值从区块链网络中查找与版本号索引值相关联的目标合约版本号,将目标合约版本号作为合约调用请求对应的合约版本号。
具体而言,可以对待调用合约版本号进行哈希计算,得到哈希值,将计算得到的哈希值作为版本号索引值,也可以将待调用合约名称直接作为版本号索引值。
在得到版本号索引值后,可以根据版本号索引值从区块链网络中查找与版本号索引值相关联的目标合约版本号,可以理解的是,区块链网络中可以记录有版本号索引值与合约版本号的映射关系。因此,可以根据版本号索引值查找得到关联的目标合约版本号。
图11示出了根据本申请一个实施例的智能合约发布方法的交互流程图,如图11所示,智能合约发布方法具体包括:
步骤S1101:输入待发布智能合约。
用户可以在客户端中输入待发布智能合约,用户可以输入合约名称、合约版本号、合约类型、合约代码以及合约所有者等信息。
步骤S1102:客户端根据待发布智能合约的合约名称,生成版本号索引值。
步骤S1103:客户端根据版本号索引值,从区块链网络中查找关联的目标合约版本号。
步骤S1104:若待发布智能合约的合约版本号大于目标合约版本号,则根据待发布智能合约的合约版本号以及待发布智能合约的合约名称生成合约索引值。
步骤S1105:将合约索引值和待发布智能合约进行关联,并将版本号索引值和待发布智能合约的合约版本号进行关联,生成交易信息。
步骤S1106:向区块链网络发布交易信息,以将待发布智能合约发布至区块链网络中。
图12示出了根据本申请的一个实施例的智能合约发布方法的流程图,如图12所示,智能合约发布方法具体包括以下步骤:
步骤S1201:利用SHA256哈希函数对待发布智能合约的合约名称进行计算,得到版本号索引值versionKey,具体可以表示为versionKey=sha256(name+0),其中,name为待发布智能合约的合约名称。
步骤S1202:根据versionKey从区块链网络中查找关联的目标合约版本号latestVersion,若待发布智能合约的version>latestVersion,则执行步骤S1203,否则,终止发布。
步骤S1203:利用sha256哈希函数对待发布智能合约的合约名称和待发布智能合约的合约版本号进行计算,得到合约索引值contractKey,具体可以表示为contractKey=sha256(name+version),其中,name为待发布智能合约的合约名称,version为待发布智能合约的合约版本号。
步骤S1204:以contractKey为key,以待发布智能合约为value,关联合约索引值和待发布智能合约;以versionKey为key,以待发布智能合约的合约版本号为value,关联版本索引值和待发布智能合约的合约版本号。
步骤S1205:根据待发布智能合约的合约类型,创建对应的虚拟机,若虚拟机在执行待发布智能合约的合约代码后返回合约执行成功的结果,则确定对合约代码校验通过,执行第六步,否则,终止发布。
步骤S1206:发布交易信息,以将待发布智能合约发布至区块链网络中。
图13A示出了根据本申请的一个实施例的智能合约调用方法的流程图,如图13A所示,在合约调用请求中包含有待调用合约版本号的情况下,智能合约调用方法可以具体包括:
步骤S1301:在接收到合约调用请求后,若合约调用请求中包含有待调用合约版本号,则利用sha256哈希函数对合约调用请求中包含的待调用合约名称和待调用合约版本号进行计算,得到合约索引值contractKey,具体可以表示为contractKey=sha256(name+version),其中,name为待调用合约名称,version为待调用合约版本号。
步骤S1302:根据合约索引值,从区块链网络中查询与合约索引值相关联的目标智能合约。
步骤S1303:根据目标智能合约的调用接口,调用目标智能合约执行对应的合约操作。
图13B示出了根据本申请的另一个实施例的智能合约调用方法的流程图,如图13B所示,在合约调用请求中不包含待调用合约版本号的情况下,智能合约调用方法可以具体包括:
步骤S1301’:在接收到合约调用请求后,若合约调用请求中不包含有待调用合约版本号,则利用sha256哈希函数对合约调用请求中包含的待调用合约名称进行计算,得到版本号索引值versionKey,具体可以表示为versionKey=sha256(name+0),其中,name为待调用合约名称。
步骤S1302’:根据版本号索引值versionKey从区块链网络中查找与版本号索引值相关联的目标合约版本号latestVersion。
步骤S1303’:利用SHA256哈希函数对合约调用请求中包含的待调用合约名称和目标合约版本号latestVersion进行计算,得到合约索引值contractKey,具体可以表示为contractKey=sha256(name+latestVersion),其中,name为待调用合约名称,latestVersion为目标合约版本号。
步骤S1304’:根据合约索引值,从区块链网络中查询与合约索引值相关联的目标智能合约。
步骤S1305’:根据目标智能合约的调用接口,调用目标智能合约执行对应的合约操作。
以下介绍本申请的装置实施例,可以用于执行本申请上述实施例中的智能合约发布方法。对于本申请装置实施例中未披露的细节,请参照本申请上述的智能合约发布方法的实施例。
图14示出了根据本申请的一个实施例的智能合约发布装置的框图,参照图14所示,根据本申请的一个实施例的智能合约发布装置1400,包括:第一生成单元1402、第二生成单元1404、关联单元1406和第一发布单元1408。
其中,第一生成单元1402,配置为根据待发布智能合约的合约名称生成版本号索引值,并根据所述版本号索引值从区块链网络中查找关联的目标合约版本号;第二生成单元1404,配置为若所述待发布智能合约的合约版本号大于所述目标合约版本号,则根据所述待发布智能合约的合约版本号以及所述合约名称生成合约索引值;关联单元1406,配置将所述合约索引值和所述待发布智能合约进行关联,并将所述版本号索引值和所述待发布智能合约的合约版本号进行关联,生成交易信息;第一发布单元1408,配置为向所述区块链网络发布所述交易信息,以将所述待发布智能合约发布至所述区块链网络中。
在本申请的一些实施例中,所述第一生成单元1402配置为:根据所述待发布智能合约的合约名称进行哈希计算,得到第一哈希值,将计算得到的第一哈希值作为所述版本号索引值。
在本申请的一些实施例中,所述第二生成单元1404配置为:根据所述待发布智能合约的合约版本号以及所述合约名称进行哈希计算,得到第二哈希值,将计算得到的第二哈希值作为所述合约索引值。
在本申请的一些实施例中,所述第一生成单元1402配置为:根据所述版本号索引值,从所述区块链网络中查找关联的至少一个合约版本号;将所述至少一个合约版本号中的最大合约版本号作为所述目标合约版本号。
在本申请的一些实施例中,所述装置还包括:第三生成单元,配置为若根据所述版本号索引值从所述区块链网络中未查找到所述关联的目标合约版本号,则根据所述待发布智能合约的合约版本号以及所述合约名称生成合约索引值;第四生成单元,配置为将所述合约索引值和所述待发布智能合约进行关联,并将所述版本号索引值和所述待发布智能合约的合约版本号进行关联,生成交易信息;第二发布单元,配置为向所述区块链网络发布所述交易信息,以将所述待发布智能合约发布至所述区块链网络中。
在本申请的一些实施例中,所述装置还包括:终止单元,配置为若所述待发布智能合约的合约版本号小于或等于所述目标合约版本号,则终止向所述区块链网络发布所述待发布智能合约。
在本申请的一些实施例中,在向所述区块链网络发布所述交易信息之前,所述装置还包括:校验单元,配置为校验所述待发布智能合约的合约代码;所述第一发布单元,配置为若对所述待发布智能合约的合约代码校验通过,则向所述区块链网络发布所述交易信息。
在本申请的一些实施例中,所述校验单元配置为:根据所述待发布智能合约的合约类型,创建对应的虚拟机;通过所述虚拟机执行所述待发布智能合约的合约代码;若所述虚拟机在执行所述待发布智能合约的合约代码后返回合约执行成功的结果,则确定对所述合约代码校验通过。
在本申请的一些实施例中,在向所述区块链网络发布所述交易信息之前,所述装置还包括:获取单元,配置为获取所述目标合约版本号对应的智能合约的所有者信息;执行单元,配置为若所述所有者信息与所述待发布智能合约的发布者信息相匹配,则执行向所述区块链网络发布所述交易信息的过程。
图15示出了根据本申请的一个实施例的智能合约调用装置的框图。
参见图15所示,根据本申请的一个实施例的智能合约调用装置1500,包括:接收单元1502、索引值生成单元1504、查询单元1506以及调用单元1508。
其中,接收单元1502,配置为接收调用请求方发送的合约调用请求,所述合约调用请求中包含有待调用合约名称;索引值生成单元1504,配置为根据所述待调用合约名称以及所述合约调用请求对应的合约版本号,生成合约索引值;查询单元1506,配置为根据所述合约索引值,从区块链网络中查询与所述合约索引值相关联的目标智能合约;调用单元1508,配置为根据所述目标智能合约的调用接口,调用所述目标智能合约执行对应的合约操作。
在本申请的一些实施例中,所述装置还包括:处理单元,配置为若所述合约调用请求中包含有待调用合约版本号,则将所述待调用合约版本号作为所述合约调用请求对应的合约版本号;生成查找单元,配置为若所述合约调用请求中不包含所述待调用合约版本号,则根据所述待调用合约名称生成版本号索引值,并根据所述版本号索引值从所述区块链网络中查找与所述版本号索引值相关联的目标合约版本号,将所述目标合约版本号作为所述合约调用请求对应的合约版本号。
图16示出了适于用来实现本申请实施例的电子设备的计算机系统的结构示意图。
需要说明的是,图16示出的电子设备的计算机系统1600仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图16所示,计算机系统1600包括中央处理单元(Central Processing Unit,CPU)1601,其可以根据存储在只读存储器(Read-Only Memory,ROM)1602中的程序或者从储存部分1608加载到随机访问存储器(Random Access Memory,RAM)1603中的程序而执行各种适当的动作和处理,例如执行上述实施例中所述的方法。在RAM 1603中,还存储有系统操作所需的各种程序和数据。CPU 1601、ROM 1602以及RAM 1603通过总线1604彼此相连。输入/输出(Input /Output,I/O)接口1605也连接至总线1604。
以下部件连接至I/O接口1605:包括键盘、鼠标等的输入部分1606;包括诸如阴极射线管(Cathode Ray Tube,CRT)、液晶显示器(Liquid Crystal Display,LCD)等以及扬声器等的输出部分1607;包括硬盘等的储存部分1608;以及包括诸如LAN(Local AreaNetwork,局域网)卡、调制解调器等的网络接口卡的通信部分1609。通信部分1609经由诸如因特网的网络执行通信处理。驱动器1610也根据需要连接至I/O接口1605。可拆卸介质1611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1610上,以便于从其上读出的计算机程序根据需要被安装入储存部分1608。
特别地,根据本申请的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本申请的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的计算机程序。在这样的实施例中,该计算机程序可以通过通信部分1609从网络上被下载和安装,和/或从可拆卸介质1611被安装。在该计算机程序被中央处理单元(CPU)1601执行时,执行本申请的系统中限定的各种功能。
需要说明的是,本申请实施例所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)、闪存、光纤、便携式紧凑磁盘只读存储器(Compact Disc Read-Only Memory,CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的计算机程序。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的计算机程序可以用任何适当的介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。其中,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的单元也可以设置在处理器中。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。
作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备执行时,使得该电子设备实现上述实施例中所述的方法。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本申请实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、触控终端、或者网络设备等)执行根据本申请实施方式的方法。
本领域技术人员在考虑说明书及实践这里公开的实施方式后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。

Claims (15)

1.一种智能合约发布方法,其特征在于,所述方法包括:
根据待发布智能合约的合约名称生成版本号索引值,并根据所述版本号索引值从区块链网络中查找关联的目标合约版本号;
若所述待发布智能合约的合约版本号大于所述目标合约版本号,则根据所述待发布智能合约的合约版本号以及所述合约名称生成合约索引值;
将所述合约索引值和所述待发布智能合约进行关联,并将所述版本号索引值和所述待发布智能合约的合约版本号进行关联,生成交易信息;
向所述区块链网络发布所述交易信息,以将所述待发布智能合约发布至所述区块链网络中。
2.根据权利要求1所述的方法,其特征在于,所述根据待发布智能合约的合约名称,生成版本号索引值,包括:
根据所述待发布智能合约的合约名称进行哈希计算,得到第一哈希值,将计算得到的第一哈希值作为所述版本号索引值。
3.根据权利要求1所述的方法,其特征在于,根据所述待发布智能合约的合约版本号以及所述合约名称生成合约索引值,包括:
根据所述待发布智能合约的合约版本号以及所述合约名称进行哈希计算,得到第二哈希值,将计算得到的第二哈希值作为所述合约索引值。
4.根据权利要求1所述的方法,其特征在于,根据所述版本号索引值从区块链网络中查找关联的目标合约版本号,包括:
根据所述版本号索引值,从所述区块链网络中查找关联的至少一个合约版本号;
将所述至少一个合约版本号中的最大合约版本号作为所述目标合约版本号。
5.根据权利要求1述的方法,其特征在于,所述方法还包括:
若根据所述版本号索引值从所述区块链网络中未查找到所述关联的目标合约版本号,则根据所述待发布智能合约的合约版本号以及所述合约名称生成合约索引值;
将所述合约索引值和所述待发布智能合约进行关联,并将所述版本号索引值和所述待发布智能合约的合约版本号进行关联,生成交易信息;
向所述区块链网络发布所述交易信息,以将所述待发布智能合约发布至所述区块链网络中。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述待发布智能合约的合约版本号小于或等于所述目标合约版本号,则终止向所述区块链网络发布所述待发布智能合约。
7.根据权利要求1所述的方法,其特征在于,在向所述区块链网络发布所述交易信息之前,所述方法还包括:校验所述待发布智能合约的合约代码;
向所述区块链网络发布所述交易信息,包括:若对所述待发布智能合约的合约代码校验通过,则向所述区块链网络发布所述交易信息。
8.根据权利要求7所述的方法,其特征在于,所述校验所述待发布智能合约的合约代码,包括:
根据所述待发布智能合约的合约类型,创建对应的虚拟机;
通过所述虚拟机执行所述待发布智能合约的合约代码;
若所述虚拟机在执行所述待发布智能合约的合约代码后返回合约执行成功的结果,则确定对所述合约代码校验通过。
9.根据权利要求1至8中任一项所述的方法,其特征在于,在向所述区块链网络发布所述交易信息之前,所述方法还包括:
获取所述目标合约版本号对应的智能合约的所有者信息;
若所述所有者信息与所述待发布智能合约的发布者信息相匹配,则执行向所述区块链网络发布所述交易信息的过程。
10.一种智能合约调用方法,其特征在于,所述方法包括:
接收调用请求方发送的合约调用请求,所述合约调用请求中包含有待调用合约名称;
根据所述待调用合约名称以及所述合约调用请求对应的合约版本号,生成合约索引值;
根据所述合约索引值,从区块链网络中查询与所述合约索引值相关联的目标智能合约;
根据所述目标智能合约的调用接口,调用所述目标智能合约执行对应的合约操作。
11.根据权利要求10所述的方法,其特征在于,所述方法还包括:
若所述合约调用请求中包含有待调用合约版本号,则将所述待调用合约版本号作为所述合约调用请求对应的合约版本号;
若所述合约调用请求中不包含所述待调用合约版本号,则根据所述待调用合约名称生成版本号索引值,并根据所述版本号索引值从所述区块链网络中查找与所述版本号索引值相关联的目标合约版本号,将所述目标合约版本号作为所述合约调用请求对应的合约版本号。
12.一种智能合约发布装置,其特征在于,所述装置包括:
第一生成单元,配置为根据待发布智能合约的合约名称,生成版本号索引值,并根据所述版本号索引值从区块链网络中查找关联的目标合约版本号;
第二生成单元,配置为若所述待发布智能合约的合约版本号大于所述目标合约版本号,则根据所述待发布智能合约的合约版本号以及所述合约名称生成合约索引值;
关联单元,配置将所述合约索引值和所述待发布智能合约进行关联,并将所述版本号索引值和所述待发布智能合约的合约版本号进行关联,生成交易信息;
第一发布单元,配置为向所述区块链网络发布所述交易信息,以将所述待发布智能合约发布至所述区块链网络中。
13.一种智能合约调用装置,其特征在于,所述装置包括:
接收单元,配置为接收调用请求方发送的合约调用请求,所述合约调用请求中包含有待调用合约名称;
索引值生成单元,配置为根据所述待调用合约名称以及所述合约调用请求对应的合约版本号,生成合约索引值;
查询单元,配置为根据所述合约索引值,从区块链网络中查询与所述合约索引值相关联的目标智能合约;
调用单元,配置为根据所述目标智能合约的调用接口,调用所述目标智能合约执行对应的合约操作。
14.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至9中任一项所述的智能合约发布方法,或实现如权利要求10至11中任一项所述的智能合约调用方法。
15.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1至9中任一项所述的智能合约发布方法,或实现如权利要求10至11中任一项所述的智能合约调用方法。
CN202010944766.0A 2020-09-10 2020-09-10 智能合约发布方法、装置、计算机可读介质及电子设备 Active CN111813441B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN202010944766.0A CN111813441B (zh) 2020-09-10 2020-09-10 智能合约发布方法、装置、计算机可读介质及电子设备
PCT/CN2021/107240 WO2022052632A1 (zh) 2020-09-10 2021-07-20 智能合约发布方法、装置、计算机可读介质及电子设备
US17/944,445 US20230004542A1 (en) 2020-09-10 2022-09-14 Method and apparatus for publishing smart contract,computer-readable medium,and electronic device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010944766.0A CN111813441B (zh) 2020-09-10 2020-09-10 智能合约发布方法、装置、计算机可读介质及电子设备

Publications (2)

Publication Number Publication Date
CN111813441A true CN111813441A (zh) 2020-10-23
CN111813441B CN111813441B (zh) 2021-02-02

Family

ID=72860051

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010944766.0A Active CN111813441B (zh) 2020-09-10 2020-09-10 智能合约发布方法、装置、计算机可读介质及电子设备

Country Status (3)

Country Link
US (1) US20230004542A1 (zh)
CN (1) CN111813441B (zh)
WO (1) WO2022052632A1 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112748932A (zh) * 2021-01-19 2021-05-04 矩阵元技术(深圳)有限公司 基于智能合约的数据处理方法、服务器
CN112819468A (zh) * 2021-02-24 2021-05-18 浙江蓝景科技有限公司 智能合约的处理方法、装置和电子设备
CN112862650A (zh) * 2021-02-24 2021-05-28 浙江蓝景科技有限公司 对象交接方法、装置和电子设备
WO2022052632A1 (zh) * 2020-09-10 2022-03-17 腾讯科技(深圳)有限公司 智能合约发布方法、装置、计算机可读介质及电子设备

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108510389A (zh) * 2018-03-30 2018-09-07 深圳前海微众银行股份有限公司 基于区块链的智能合约调用方法、设备及可读存储介质
CN109978477A (zh) * 2017-12-27 2019-07-05 现代财富控股有限公司 基于区块链的智能合约版本控管系统及其方法
CN110544097A (zh) * 2019-09-06 2019-12-06 杭州复杂美科技有限公司 智能合约版本控制、调用和升级方法、设备及存储介质
US20200051069A1 (en) * 2018-08-10 2020-02-13 tZERO Group, Inc. Upgradeable security token
CN111273970A (zh) * 2020-01-21 2020-06-12 腾讯科技(深圳)有限公司 智能合约的调用方法、装置、系统、介质及电子设备
CN111311415A (zh) * 2020-02-28 2020-06-19 中国工商银行股份有限公司 松散耦合的区块链交易方法、交易节点
CN111581181A (zh) * 2020-04-07 2020-08-25 浙商银行股份有限公司 一种基于数据库数据表自动生成区块链智能合约的方法
CN111639308A (zh) * 2020-04-24 2020-09-08 杭州溪塔科技有限公司 一种基于区块链的软件序列号分发验证方法和装置

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11176519B2 (en) * 2016-11-11 2021-11-16 International Business Machines Corporation Smart contract admission check and fault tolerance in a blockchain
US10579368B2 (en) * 2017-03-10 2020-03-03 Salesforce.Com, Inc. Blockchain version control systems
US10657261B2 (en) * 2017-11-30 2020-05-19 Mocana Corporation System and method for recording device lifecycle transactions as versioned blocks in a blockchain network using a transaction connector and broker service
US10181948B1 (en) * 2018-01-25 2019-01-15 Fortress Cyber Security, LLC Secure storage of hashes within a distributed ledger
EP3777089A1 (en) * 2018-03-29 2021-02-17 DLT Global Inc. Updateable smart contracts
US20190303623A1 (en) * 2018-04-02 2019-10-03 Ca, Inc. Promotion smart contracts for software development processes
US20210174432A1 (en) * 2018-08-07 2021-06-10 Perpetual Altruism Limited Computer implemented method and system for updating a database system for a blockchain version control system; computer implemented methods of auctioning an item for a seller, and computer implemented method of updating a smart contract
US20200394085A1 (en) * 2019-06-17 2020-12-17 Microsoft Technology Licensing, Llc Smart contract information redirect to updated version of smart contract
CN111813441B (zh) * 2020-09-10 2021-02-02 腾讯科技(深圳)有限公司 智能合约发布方法、装置、计算机可读介质及电子设备

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109978477A (zh) * 2017-12-27 2019-07-05 现代财富控股有限公司 基于区块链的智能合约版本控管系统及其方法
CN108510389A (zh) * 2018-03-30 2018-09-07 深圳前海微众银行股份有限公司 基于区块链的智能合约调用方法、设备及可读存储介质
US20200051069A1 (en) * 2018-08-10 2020-02-13 tZERO Group, Inc. Upgradeable security token
CN110544097A (zh) * 2019-09-06 2019-12-06 杭州复杂美科技有限公司 智能合约版本控制、调用和升级方法、设备及存储介质
CN111273970A (zh) * 2020-01-21 2020-06-12 腾讯科技(深圳)有限公司 智能合约的调用方法、装置、系统、介质及电子设备
CN111311415A (zh) * 2020-02-28 2020-06-19 中国工商银行股份有限公司 松散耦合的区块链交易方法、交易节点
CN111581181A (zh) * 2020-04-07 2020-08-25 浙商银行股份有限公司 一种基于数据库数据表自动生成区块链智能合约的方法
CN111639308A (zh) * 2020-04-24 2020-09-08 杭州溪塔科技有限公司 一种基于区块链的软件序列号分发验证方法和装置

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022052632A1 (zh) * 2020-09-10 2022-03-17 腾讯科技(深圳)有限公司 智能合约发布方法、装置、计算机可读介质及电子设备
CN112748932A (zh) * 2021-01-19 2021-05-04 矩阵元技术(深圳)有限公司 基于智能合约的数据处理方法、服务器
CN112748932B (zh) * 2021-01-19 2022-03-22 矩阵元技术(深圳)有限公司 基于智能合约的数据处理方法、服务器
CN112819468A (zh) * 2021-02-24 2021-05-18 浙江蓝景科技有限公司 智能合约的处理方法、装置和电子设备
CN112862650A (zh) * 2021-02-24 2021-05-28 浙江蓝景科技有限公司 对象交接方法、装置和电子设备

Also Published As

Publication number Publication date
CN111813441B (zh) 2021-02-02
US20230004542A1 (en) 2023-01-05
WO2022052632A1 (zh) 2022-03-17

Similar Documents

Publication Publication Date Title
CN111813441B (zh) 智能合约发布方法、装置、计算机可读介质及电子设备
US11789933B2 (en) System and method for a hybrid contract execution environment
JP6532930B1 (ja) ブロックチェーンベースのユーザ識別管理用の分散型台帳装置、分散型台帳方法
KR101932277B1 (ko) 블록체인 기반의 사용자 정보 공유를 위한 분산 원장 장치 및 분산 원장 방법
CN107577427B (zh) 用于区块链系统的数据迁移方法、设备和存储介质
KR101936756B1 (ko) 블록체인을 이용한 공유경제 관리 장치
US10742415B2 (en) Method and apparatus for inter-blockchain transmission of authenticable message
CN108846753B (zh) 用于处理数据的方法和装置
CN110249307A (zh) 用于在区块链上执行原生合约的系统和方法
CN108572986B (zh) 一种数据更新的方法及节点设备
CN111047321A (zh) 业务处理方法及装置、电子设备、存储介质
KR101878870B1 (ko) 블록체인 기반의 사용자 식별 관리 및 토큰 발행 관리를 위한 분산 원장 장치 및 분산 원장 방법
CN111311407A (zh) 基于区块链系统的数据处理方法、装置及电子设备
KR101962288B1 (ko) 블록체인을 이용해 공유재화의 가용성을 검증하는 공유경제 관리 장치
KR20200063595A (ko) 블록체인을 이용한 IoT 데이터 중개 방법 및 이를 위한 중개 서버
CN114816361A (zh) 拼搭工程生成方法、装置、设备、介质和程序产品
KR101962285B1 (ko) 블록체인 기반의 사용자 식별 관리를 위한 분산 원장 장치 및 분산 원장 방법
CN115619395A (zh) 基于区块链的数据处理方法及相关设备
CN115221559A (zh) 数据账户的访问授权方法及装置
Palladino Ethereum for Web Developers
CN115203746A (zh) 数据账户的访问授权方法及装置
CN115375303A (zh) 智能合约的调用方法、装置、计算机可读介质及电子设备
KR101962287B1 (ko) 블록체인을 이용하여 공유재화를 등록하는 공유경제 관리 장치
CN113010115A (zh) 区块链节点中的数据处理方法及相关设备
KR20190076812A (ko) 블록체인 기반의 포인트 정보 공유를 위한 분산 원장 장치 및 분산 원장 방법

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
GR01 Patent grant
GR01 Patent grant
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40031364

Country of ref document: HK