CN110933163A - 区块链合约部署方法、装置、设备以及存储介质 - Google Patents
区块链合约部署方法、装置、设备以及存储介质 Download PDFInfo
- Publication number
- CN110933163A CN110933163A CN201911180240.3A CN201911180240A CN110933163A CN 110933163 A CN110933163 A CN 110933163A CN 201911180240 A CN201911180240 A CN 201911180240A CN 110933163 A CN110933163 A CN 110933163A
- Authority
- CN
- China
- Prior art keywords
- contract
- address
- data
- node
- service
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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/3236—Cryptographic 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 using cryptographic hash functions
- H04L9/3239—Cryptographic 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 using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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/3247—Cryptographic 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 digital signatures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic 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)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请实施例提供了一种区块链合约部署方法、装置、设备以及存储介质,该方法包括:接收请求节点发送的合约注册请求,获取合约注册请求携带的合约名称、数据合约对应的第一地址以及业务合约对应的第二地址;数据合约用于存储业务数据,业务合约用于存储业务逻辑;从合约管理平台中获取合约模板,基于合约模板对第一地址和第二地址进行绑定,得到与业务合约和数据合约相关联的代理合约,生成代理合约对应的第三地址;生成第三地址和合约名称之间的映射关系信息,将映射关系信息存储在合约管理平台中。采用本申请实施例,可以提高区块链中合约的开发效率。
Description
技术领域
本申请涉及互联网技术领域,尤其涉及一种区块链合约部署方法、装置、设备以及存储介质。
背景技术
智能合约是一种旨在以信息化方式传播、验证或执行合同的计算机协议,智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。智能合约作为区块链上的程序,可以由创建者进行创建并部署到区块链上,当然,为了在区块链中部署可更新的智能合约,可以通过使用代理合约来实现。
在现有技术中,可以为业务创建代理合约(即为一段程序代码),并将创建的代理合约部署到区块链中,然而,当存在多个业务时,需要依次为每个业务分别编写一个代理合约,涉及到大量的代码量,进而导致代理合约的开发效率低下。
发明内容
本申请实施例提供一种区块链合约部署方法、装置、设备以及存储介质,可以提高区块链中合约的开发效率。
本申请实施例一方面提供了一种区块链合约部署方法,包括:
接收请求节点发送的合约注册请求,获取合约注册请求携带的合约名称、数据合约对应的第一地址以及业务合约对应的第二地址;数据合约用于存储业务数据,业务合约用于存储业务逻辑;
从合约管理平台中获取合约模板,基于合约模板对第一地址和第二地址进行绑定,得到与业务合约和数据合约相关联的代理合约,生成代理合约对应的第三地址;
生成第三地址和合约名称之间的映射关系信息,将映射关系信息存储在合约管理平台中。
本申请实施例一方面提供了一种区块链合约部署装置,包括:
接收模块,用于接收请求节点发送的合约注册请求,获取合约注册请求携带的合约名称、数据合约对应的第一地址以及业务合约对应的第二地址;数据合约用于存储业务数据,业务合约用于存储业务逻辑;
创建模块,用于从合约管理平台中获取合约模板,基于合约模板对第一地址和第二地址进行绑定,得到与业务合约和数据合约相关联的代理合约,生成代理合约对应的第三地址;
存储模块,用于生成第三地址和合约名称之间的映射关系信息,将映射关系信息存储在合约管理平台中。
其中,该装置还包括:
区块生成模块,用于获取请求节点上传的数据合约和业务合约,根据数据合约和业务合约生成合约区块;
共识模块,用于当合约区块在区块链网络中共识通过时,将数据合约和业务合约确定为发布成功状态;
地址确定模块,用于根据请求节点对应的账号信息,确定处于发布成功状态的数据合约对应的第一地址,以及处于发布成功状态的业务合约对应的第二地址,将第一地址和第二地址发送至请求节点。
其中,构建模块包括:
参数输入单元,用于从合约管理平台中获取合约模板,将第一地址和第二地址作为参数输入合约模板中;
接口调用单元,用于基于合约模板,从第二地址对应的业务合约中调用地址设置接口;
绑定单元,用于根据地址设置接口,将第一地址输入业务合约中,对业务合约和数据合约进行绑定,得到代理合约。
其中,该装置还包括:
遍历模块,用于基于合约名称,对合约管理平台中存储的历史映射关系信息进行遍历;
验证模块,用于若历史映射关系信息中存在合约名称,则向请求节点返回名称更改提示信息;
验证模块,还用于若历史映射关系信息中不存在合约名称,则生成第三地址和合约名称之间的映射关系信息,将映射关系信息存储在合约管理平台中。
其中,该装置还包括:
查询请求接收模块,用于当接收到请求节点发送的合约查询请求时,获取合约查询请求所携带的合约名称;
地址查询模块,用于从合约管理平台中获取与合约名称具有映射关系的第三地址,将第三地址返回至请求节点,以使请求节点将第三地址与合约名称存储在本地中。
其中,合约管理平台包括第三地址与多个节点之间的关联关系,多个节点包括代理合约对应的管理节点和授权访问节点;
该装置还包括:
查询请求接收模块,用于当接收到请求节点发送的合约查询请求时,获取合约查询请求所携带的合约名称;
关联节点获取模块,用于从合约管理平台中获取与合约名称具有映射关系的第三地址,获取与第三地址相关联的多个节点;
查询权限确定模块,用于若多个节点中存在请求节点,则确定请求节点具有查询权限,将第三地址返回至请求节点,以使请求节点将第三地址与合约名称存储在本地中;
该查询权限确定模,还用于若多个节点中不存在请求节点,则确定请求节点不具有查询权限,向请求节点返回权限提示信息。
其中,该装置还包括:
交易数据获取模块,用于获取请求节点上传的交易数据,基于交易数据携带的第三地址获取代理合约;
数据操作模块,用于根据代理合约调用业务合约,并基于业务合约中的业务逻辑,对数据合约和交易数据进行操作,生成交易数据对应的合约处理结果。
其中,该装置还包括:
更新请求获取模块,用于获取针对代理合约的更新请求,基于更新请求获取第一地址以及更新业务合约对应的第四地址;
测试合约生成模块,用于将第四地址和第一地址作为参数输入至合约模板,生成测试代理合约;
合约更新模块,用于当测试代理合约通过测试时,基于通过测试的测试代理合约,对代理合约进行更新。
其中,合约更新模块包括:
地址更新单元,用于当测试代理合约通过测试时,冻结代理合约,将代理合约中的第二地址更新为测试通过状态的测试代理合约中的第四地址;
更新合约确定单元,用于将包含第一地址和第四地址的代理合约确定为更新后的代理合约;更新后的代理合约与第三地址相关联。
本申请实施例一方面提供了一种节点设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行本申请实施例中一方面中方法的步骤。
本申请实施例一方面提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序包括程序指令,程序指令当被处理器执行时,执行如本申请实施例中一方面中方法的步骤。
在本申请实施例中,区块链节点在接收到请求节点发送的合约注册请求时,可以获取合约注册请求携带的合约名称、数据合约对应的第一地址以及业务合约对应的第二地址,基于合约管理平台中获取合约模板,基于合约模板对第一地址和第二地址进行绑定,得到与数据合约和业务合约相关联的代理合约,生成该代理合约对应的第三地址,将第三地址和合约名称之间的映射关系信息存储在合约管理平台中。可见,通过在区块链中创建合约管理平台,并在合约管理平台中编写一个合约模板,将业务合约地址和数据合约地址作为参数输入合约模板中即可将数据合约和业务合约进行绑定,完成代理合约在区块链中的部署过程,通过合约模板的方式可以减少代理合约的开发过程,进而可以提高区块链中合约的开发效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种网络架构图;
图2是本申请实施例提供的一种区块链合约部署场景示意图;
图3是本申请实施例提供的一种区块链合约部署方法的流程示意图;
图4是本申请实施例提供的一种智能合约执行场景示意图;
图5是本申请实施例提供的另一种区块链合约部署方法的流程示意图;
图6是本申请实施例提供的一种合约升级场景示意图;
图7是本申请实施例提供的一种区块链合约部署装置的结构示意图;
图8是本申请实施例提供的一种节点设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
区块链(Blockchain)是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层。
区块链底层平台可以包括用户管理、基础服务、智能合约以及运营监控等处理模块。其中,用户管理模块负责所有区块链参与者的身份信息管理,包括维护公私钥生成(账户管理)、密钥管理以及用户真实身份和区块链地址对应关系维护(权限管理)等,并且在授权的情况下,监管和审计某些真实身份的交易情况,提供风险控制的规则配置(风控审计);基础服务模块部署在所有区块链节点设备上,用来验证业务请求的有效性,并对有效请求完成共识后记录到存储上,对于一个新的业务请求,基础服务先对接口适配解析和鉴权处理(接口适配),然后通过共识算法将业务信息加密(共识管理),在加密之后完整一致的传输至共享账本上(网络通信),并进行记录存储;智能合约模块负责合约的注册发行以及合约触发和合约执行,开发人员可以通过某种编程语言定义合约逻辑,发布到区块链上(合约注册),根据合约条款的逻辑,调用密钥或者其它的事件触发执行,完成合约逻辑,同时还提供对合约升级注销的功能;运营监控模块主要负责产品发布过程中的部署、配置的修改、合约设置、云适配以及产品运行中的实时状态的可视化输出,例如:告警、监控网络情况、监控节点设备健康状态等。
智能合约可以理解为运行在分布式账本(即区块链)上预置规则、具有状态、条件响应的,可封装、验证、执行分布式节点复杂行为,完成信息交换、价值转移和资产管理的计算机程序。基于区块链的分布式架构、共识算法等,智能合约允许相互不信任的用户在不需要任何第三方可信中介或权威的情况下完成交易,同时,数字形式的智能合约可灵活嵌入各种有形或无形的资产、交易和数据中,实现主动或被动的资产、信息管理与控制,逐步构建可编程的智能资产、系统等。
请参见图1,是本申请实施例提供的一种网络架构图。如图1所示,该网络架构可以包括多个节点服务器(如图1所示,具体可以包括节点服务器10a、节点服务器10b、节点服务器10c以及节点服务器10d)和请求终端10e。其中,节点服务器10a、节点服务器10b、节点服务器10c以及节点服务器10d均表示为区块链网络中的区块链节点,请求终端10e可以是指用户终端,该请求终端10e可以将需要上链的数据(如新产生的交易数据、编写的智能合约等)上传至区块链网络,并向区块链网络请求将上传的数据进行上链。当请求终端10e向区块链网络上传数据后,区块链网络中的任一区块链节点(如节点服务器10a)可以根据请求终端10e上传的数据生成新区块,并将新生成的区块在区块链网络中进行广播,以使区块链网络中的节点对新生成的区块进行共识,即节点服务器10a在新生成区块后,可以将新生成的区块广播给节点服务器10b、节点服务器10c以及节点服务器10d,共识通过的数据即可进行正式上链,区块链网络中的节点可以在本地存储区块链。区块链网络中的节点中可以创建合约管理平台(即可以实现合约管理功能的计算机程序),该合约管理平台具有智能合约注册、代理、升级等功能。本申请实施例中的智能合约是由合约请求终端与区块链节点共同参与的业务处理合约,每个区块链节点均可以触发并执行智能合约,即均可以为智能合约提供运行环境(以太坊虚拟机)。
其中,请求终端10e可以包括手机、平板电脑、笔记本电脑、掌上电脑、移动互联网设备(mobile internet device,MID)、可穿戴设备(例如智能手表、智能手环等)等。
请一并参见图2,是本申请实施例提供的一种区块链合约部署场景示意图。由于区块链的不可篡改性,智能合约在区块链中部署完成后,就无法进行源代码的修改,若业务需求变更时,就需要重新部署智能合约,并会造成原有数据的丢失,因此提出了可升级式智能合约。可升级式智能合约的原理是将数据合约和数据合约进行分离,使用业务合约调用数据合约,当业务需求变更时,通过重新部署业务合约即可,而数据合约中所存储的数据则不会丢失,其中,数据合约用于存储业务数据,业务合约用于维护业务逻辑。本申请实施例中,可以通过代理合约的方式对业务合约和数据合约进行分离,代理合约的本质是通过新部署一个合约的方式,来实现升级主要的处理逻辑的目的。
如图2所示,以请求终端10e和图1所对应实施例中的节点服务器10a为例,对代理合约的部署过程进行说明。请求终端10e可以将开发人员编写的数据合约和业务合约随发起的交易提交至区块链网络,区块链网络中的节点服务器10a在接收到请求终端10e提交的携带数据合约和业务合约的交易后,可以对接收到的携带数据合约和业务合约的交易进行验签,验签的目的在于检测携带数据合约和业务合约的交易在传输过程中是否被篡改。若验签不通过,则表示请求终端10e在上传交易的过程中可能被篡改,可以将携带数据合约和业务合约的交易进行删除;若验签通过,则表示节点服务器10a实际接收到的交易与请求终端10e提交的交易相同,即携带数据合约和业务合约的交易在传输过程中没有被篡改。
节点服务器10a可以将验签通过的携带数据合约和业务合约的交易打包成区块20a,区块20a的区块头中包含区块链中具有最大区块高度的区块对应的哈希(Hash),区块20a的区块体中可以用于存储业务合约和数据合约。节点服务器10a可以将新生成的区块20a在区块链网络中进行广播,即将区块20a发送至区块链网络中的每个节点(此处默认区块链网络中的所有节点均为共识节点),以使区块链网络中的每个节点对区块20a进行共识验证,当区块20a通过共识后(如区块链网络中超过51%的节点通过了区块20a的共识验证等),可以将区块20a添加至区块链进行正式上链,即表示数据合约和业务合约在区块链中创建成功。
在数据合约和业务合约创建成功后,节点服务器10a中的以太坊虚拟机20b(environment virtual machine,EVM)可以根据请求终端10e的账户信息生成合约地址,即生成数据合约对应的地址1,以及业务合约对应的地址2,其中,地址1用于指示数据合约,可以理解为数据合约对应的标识信息,地址2用于指示业务合约,可以理解为业务合约对应的标识信息,不同的合约对应不同的地址。节点服务器10a可以将生成的地址1和地址2返回至请求终端10e。
请求终端10e在接收到节点服务器10a返回的地址1和地址2后,请求终端10e可以向区块链发送合约注册请求,并将合约名称,地址1以及地址2发送至节点服务器10a。节点服务器10a在接收到请求终端10e的合约注册请求后,可以将从合约管理平台20c中获取合约模板20d,并将地址1和地址2作为参数输入到合约模板20d中,由于业务合约中包含设置数据合约地址接口,因此输入地址1和地址2的合约模板20d可以调用数据合约地址接口中的set(设置)方法,将地址1传入到业务合约中,完成业务合约和数据合约的绑定,此时可以得到与数据合约和数据合约相关联的代理合约20e。
节点服务器10a同样可以根据请求终端10e的账户信息生成代理合约20e对应的代理合约地址,并将代理名称和代理合约地址进行绑定,生成合约名称和代理合约地址之间的映射关系信息,并将合约名称和代理合约地址之间的映射关系信息存储在合约管理平台中,如代理合约地址1与合约名称1之间具有映射关系,代理合约地址2与合约名2之间具有映射关系等。
其中,需要说明的是,数据合约、业务合约以及代理合约20e均为计算机程序代码,开发人员可以使用智能合约高级语言进行编写,通过编译器可以将高级语言编写的合约编译成区块链节点(如节点服务器10a)的以太坊虚拟机中的字节码,以太坊虚拟机可以用于解释执行智能合约中的字节码。智能合约高级语言包括但不限于Solidity(一种智能合约编程语言)、Serpent(一种智能合约编程语言)、LLL(一种智能合约编程语言),如开发人员可以使用Solidity编写数据合约和业务合约,并使用编译器将Solidity编写的数据合约和业务合约分别编译成以太坊虚拟机字节码,进而将编译成以太坊虚拟机字节码随请求终端10e发起的交易提交至区块链网络并进行上链。
请参见图3,是本申请实施例提供的一种区块链合约部署方法的流程示意图。可以理解的是,该方法可以由计算机设备执行,计算机设备可以是区块链网络中的节点服务器,或者是区块链网络中的其他节点设备,如图3所示,该方法可以包括以下步骤:
步骤S101,接收请求节点发送的合约注册请求,获取合约注册请求携带的合约名称、数据合约对应的第一地址以及业务合约对应的第二地址;数据合约用于存储业务数据,业务合约用于存储业务逻辑;
具体的,请求节点(如上述图2所对应实施例中的请求终端10e)可以向区块链网络发送合约注册请求,即向区块链网络申请生成代理合约,并将合约名称、数据合约对应的第一地址以及业务合约对应的第二地址上传至区块链网络。区块链网络中的节点服务器(如上述图2所对应实施例中的节点服务器10a)在接收到请求节点发送的合约注册请求后,可以获取请求节点上传的合约名称、第一地址以及第二地址。其中,数据合约用于存储业务数据(变量、结构以及映射等);业务合约用于维护业务逻辑,业务合约中包含用于设置数据合约地址的接口,因此业务合约可以调用数据合约,基于业务合约中的业务逻辑可以对数据合约中存储的业务数据进行操作。
其中,请求节点在向区块链网络发送合约注册请求之前,还需要将开发人员编写的数据合约和业务合约上传至区块链网络进行上链,以得到数据合约对应的第一地址和业务合约对应的第二地址。当数据合约和业务合约随请求节点发起的交易提交至区块链网络时,区块链网络中的节点服务器可以获取请求节点所提交的数据合约和业务合约,根据数据合约和业务合约生成合约区块;当合约区块在区块链网络中共识通过时,将数据合约和业务合约确定为发布成功状态;根据请求节点对应的账号信息,确定处于发布成功状态的数据合约对应的第一地址,以及处于发布成功状态的业务合约对应的第二地址,将第一地址和第二地址发送至请求节点。换言之,数据合约和业务合约由开发人员进行编写,在经过多方共同协定、各自签署后可以随请求节点发起的交易提交至区块链网络,区块链网络中的节点服务器可以将携带数据合约和业务合约的交易打包成合约区块,基于区块链中的点对点传输方式,对合约区块进行网络传播,以使区块链网络中的其余节点对合约区块进行共识验证,共识通过后的合约区块可以进行正式上链,合约区块共识通过即表明数据合约和业务合约发布成功,且数据合约和业务合约可以存储在区块链的区块中,节点服务器可以根据请求节点的账号信息确定数据合约和业务合约分别对应的地址,即确定数据合约对应的第一地址和业务合约对应的第二地址,进而节点服务器可以将数据合约对应的第一地址和业务合约对应的第二地址返回至请求节点,以使请求节点可以根据第一地址和第二地址申请生成代理合约。
步骤S102,从合约管理平台中获取合约模板,基于合约模板对第一地址和第二地址进行绑定,得到与业务合约和数据合约相关联的代理合约,生成代理合约对应的第三地址;
具体的,节点服务器可以从合约管理平台中获取合约模板,将数据合约对应的第一地址和业务合约对应的第二地址作为参数输入合约模板中,通过已输入参数的合约模板,从第二地址对应的业务合约中调用地址设置接口,根据地址设置接口将第一地址输入业务合约中,对业务合约和数据合约进行绑定,得到针对上述数据合约和业务合约的代理合约。其中,区块链网络中的每个节点服务器均可以预先创建一个合约管理平台(该合约管理平台同样可以理解为一个智能合约),在合约管理平台中可以存储一份代理合约代码(即合约模板),用于高效率生成新的代理合约,合约模板可以理解为一个代理合约框架,当将数据合约地址和业务合约地址作为参数输入合约模板时,可以快速创建一个新的代理合约。代理合约具有代理、管理以及更新等功能。地址设置接口中可以包括用于设置数据合约地址的方法,在设置数据合约地址的方法中存储数据合约地址,即可将地址合约和业务合约进行绑定,如数据合约对应的地址为:地址1,通过调用设置数据合约地址的方法(如setDataContractAddr()方法),将地址1传入业务合约中,则可以实现数据合约和业务合约之间的绑定。
其中,生成代理合约首先需要创建数据合约,数据合约可以提供一个数据存储结构,以供后面的合约继承此结构;创建业务合约,业务合约可以用于维护业务逻辑,且业务合约可以继承数据合约中的数据存储结构;代理合约可以根据合约模板生成,代理合约可以继承数据合约中的数据存储结构,在代理合约中可以定义一个业务合约地址变量,并提供一个用于替换业务合约地址的方法。本申请实施例中,将数据合约对应的第一地址和业务合约对应的第二地址作为参数输入合约模板后,调用合约模板中的设置业务合约地址的方法,存储业务合约的第二地址,调用业务合约中的设置数据合约地址的方法,将第一地址传入业务合约中,此时可以得到针对上述数据合约和上述业务合约的代理合约。例如,数据合约1对应的地址为:地址1,业务合约2对应的地址为:地址2,将地址1和地址2作为参数输入合约模板中后,可以调用业务合约2中的设置数据合约地址的方法,将地址1传入业务合约2中,可以完成数据合约1和业务合约2之间的绑定,即此时生成的代理合约1是针对数据合约1和业务合约2的代理合约。若将地址1和业务合约3对应的地址3作为参数输入合约模板中,则可以调用业务合约3中的设置数据合约地址的方法,将地址1传入业务合约3中,可以完成数据合约1和业务合约3之间的绑定,即此时生成的代理合约2是针对数据合约1和业务合约3的代理合约。
在节点服务器的本地得到与数据合约和业务合约相关联的代理合约后,可以将代理合约打包成区块,经点对点网络传播和区块链节点验证通过后,将用于存储代理合约的区块进行正式上链,进而可以根据请求节点的账户信息,由节点服务器中的以太坊虚拟机确定该地理合约对应的代理合约地址,也可以称为第三地址。
步骤S103,生成第三地址和合约名称之间的映射关系信息,将映射关系信息存储在合约管理平台中。
具体的,节点服务器可以将合约注册请求中携带的合约名称和代理合约对应的第三地址进行绑定,生成第三地址与合约名称之间的映射关系信息,并将所生成的映射关系信息存储在合约管理平台中。应当理解,每生成一个新的代理合约,均可以将新代理合约的地址与代理合约名称之间的映射关系信息存储在合约管理平台中,即合约管理平台可以存储多个映射关系信息,每个映射关系信息均包含一个代理合约和一个合约名称之间的绑定关系。
其中,节点服务器在获取到合约注册请求中携带的合约名称后,基于合约名称,可以对合约管理平台中存储的历史映射关系信息进行遍历;若历史映射关系信息中存在合约名称,则向请求节点返回名称更改提示信息;若历史映射关系信息中不存在合约名称,则在生成代理合约后,可以生成代理合约对应的第三地址和合约名称之间的映射关系信息,并将映射关系信息存储在合约管理平台中。换言之,当请求节点向区块链网络申请生成代理合约时,除了向区块链网络提交数据合约对应的第一地址和业务合约对应的第二地址之外,还需要向区块链网络提交所申请的代理合约的名称,即上述合约名称。节点服务器在接收到请求节点的合约注册请求时,可以对请求节点提交的合约名称进行校验,检测该合约名称是否已被注册。对合约名称的具体校验过程包括:以合约名称作为关键词在合约管理平台所存储的历史映射关系信息中进行查询,历史映射关系信息是指截止到当前系统时间,合约管理平台中所存储的所有代理合约地址与对应代理合约名称之间的映射关系;若检测到合约管理平台中已经存在请求节点所提交的合约名称,则可以向请求节点返回名称更改提示信息,该名称更改提示信息可以为:该合约名称已被注册,请更改合约名称并重新提交;若检测到合约管理平台中不存在请求节点所提交的合约名称,即该合约名称未被注册,则节点服务器可以生成该合约名称与第三地址之间的映射关系信息,并将映射关系信息存储在合约管理平台中。
当请求节点需要调用某个业务时,请求节点可以向节点服务器发送合约查询请求,当节点服务器接收到请求节点发送的合约查询请求时,获取合约查询请求所携带的合约名称;从合约管理平台中获取与合约名称具有映射关系的第三地址,将第三地址返回至请求节点。请求节点接收到节点服务器返回的第三地址,将第三地址与合约名称存储在本地中,当请求节点产生新的交易数据后,可以将存储的第三地址与新的交易数据一并上传至区块链网络,区块链网络中的节点服务器可以获取该新的交易数据,并调用第三地址对应的代理合约,根据该代理合约调用业务合约,进一步根据业务合约中的业务逻辑,对数据合约和新的交易数据进行操作,生成新的交易数据对应的合约处理结果,该新的交易数据以及合约处理结果可以打包成区块进行上链处理。
可选的,节点服务器在接收到请求节点上传的交易数据时,节点服务器还可以对接收的交易数据进行验签,具体的验签过程为:节点服务器可以获取交易数据所携带的数字签名,并获取请求节点对应的公钥;基于公钥对数字签名进行解密,得到数字签名对应的第一摘要信息;基于哈希算法对交易数据进行哈希运算,得到交易数据对应的第二摘要信息;若第一摘要信息与第二摘要信息相同,则交易数据验签通过。具体来说,为了防止交易数据在传输过程中被恶意篡改,请求节点可以生成密钥对(包括私钥和公钥,私钥由请求节点自己管理,公钥可以通知给区块链网络中的所有节点服务器),请求节点可以采用哈希算法对交易数据进行哈希运算,生成交易数据对应的第一摘要信息,并采用生成的私钥对第一摘要信息进行加密,加密之后的第一摘要信息即为交易数据对应的数字签名。请求节点将携带数字签名的交易数据以及第三地址上传至区块链网络,区块链网络中的节点服务器在接收到请求节点上传的携带数字签名的交易数据后,可以获取请求节点对应的公钥,根据公钥对数字签名进行解密,得到数字签名对应的第一摘要信息,进而根据哈希算法(即请求节点生成数字签名所采用的哈希算法)对节点服务器接收到的交易数据进行哈希运算,得到接收到的交易数据对应的第二摘要信息,若第一摘要信息与第二摘要信息相同,则表示交易数据在上传过程中没有被篡改,验签通过;若第一摘要信息与第二摘要信息不相同,则表示交易数据在上传过程中可能存在篡改,验签不通过。
应当理解的是,请求节点在上传交易数据之前,已经将公钥与生成数字签名所使用的哈希算法通知给区块链网络中的节点服务器,若交易数据在上传过程中被篡改,节点服务器接收到的数字签名并不是请求节点原本生成的数字签名,则节点服务器采用请求节点对应的公钥对数字签名进行解密时,无法进行求解。其中,哈希算法可以包括但不限于SHA-1、SHA-224、SHA-256、SHA-384以及SHA-512。
可选的,在生成代理合约后,可以确定代理合约的管理节点,管理节点可以访问该代理合约,该管理节点还可以将该代理合约的访问权限授权给其余节点,将具有访问该代理合约权限的其余节点确定为授权访问节点,并在合约管理平台中建立代理合约与管理节点以及授权节点的绑定关系。换言之,合约管理平台可以用于维护代理合约、代理合约与管理者以及授权访问用户的映射关系。
节点服务器在接收到请求节点发送的合约查询请求时,获取合约查询请求所携带的合约名称;从合约管理平台中获取与合约名称具有映射关系的第三地址,获取与第三地址相关联的多个节点;若多个节点中存在该请求节点,则确定该请求节点具有查询权限(当请求节点具有访问代理合约的权限时,该请求节点就具有查询该代理合约地址的权限),将第三地址返回至请求节点,请求节点可以接收节点服务器返回的第三地址,并将第三地址与合约名称存储在本地中;若多个节点中不存在请求节点,则确定请求节点不具有查询权限,向请求节点返回权限提示信息。换言之,节点服务器在接收到合约查询请求时,可以检测发起该合约查询请求的请求节点是否具有查询权限,若请求节点为代理合约对应的管理节点、权限访问节点中的任一个,则确定该请求节点具有查询权限,并将合约名称对应的第三地址返回至请求节点;若代理合约对应的管理节点和权限访问节点中均不包括该请求节点,则确定该请求节点不具有查询权限,向该请求节点返回权限提示信息。
请参见图4,是本申请实施例提供的一种智能合约执行场景示意图。如图4所示,请求方(即请求节点,对应于图2所对应实施例中的请求终端10e)可以根据合约管理平台提供的接口向区块链网络中的节点(如节点1)发送合约查询请求,如用户输入代理合约名称“名称aaa”进行代理合约地址查询,用户对应的请求终端即可生成合约查询请求,并将生成的合约查询请求发送给区块链节点1。节点1在接收到请求方发送的合约查询请求后,可以从合约管理平台存储的映射关系表中查找与“名称aaa”具有映射关系的代理合约地址,如地址a,则节点1可以将地址a返回至请求方,并在请求方的本地存储中进行缓存。当请求方的本地存储中已经缓存有代理合约对应的地址a后,后续请求方需要调用该代理合约时,就可以直接使用,不需要再次查询该代理合约对应的地址,即对于每个代理合约,只有在请求方未存储相应的代理合约地址时,才会向节点发送合约查询请求,以从合约管理平台获得相应的代理合约地址。
请求方得到返回的地址a后,请求方可以通过发起交易来调用代理合约,即请求方可以将携带地址a的交易数据上传至区块链网络中的节点1,并请求调用地址a对应的代理合约,节点1在接收到请求方上传的交易数据后,可以对接收到的交易数据进行验签,验签通过后,节点1可以根据地址a调用相对应的代理合约,进而根据代理合约调用业务合约,根据业务合约中的业务逻辑对数据合约和交易数据进行交易处理,即可以在节点1的以太坊虚拟机中执行代理合约中的合约代码,合约代码可以自动判断当前所处的场景是否满足合约触发条件,并严格执行合约响应规则,根据合约代码执行结果确定交易数据是否有效,当交易数据验证有效后,可以将交易数据打包进新的数据区块(即区块30a),节点1可以将区块30a在区块链网络中进行广播,以使区块链网络中的其余节点根据共识算法对区块30a进行共识验证,当该区块30a共识通过时,可以将区块30a进行正式上链,即区块30a在共识通过后,可以根据节点1所存储的区块链中的最大区块高度,对区块30a的区块高度进行更新,将更新后的区块30a存储在节点1的本地数据库中,此时更新后的区块30a即为节点1本地数据库中的区块N+i,N+i用于表征更新后的区块30a在本地区块链中的区块顺序,N和i均为大于或等于0的整数。
在本申请实施例中,区块链节点在接收到请求节点发送的合约注册请求时,可以获取合约注册请求携带的合约名称、数据合约对应的第一地址以及业务合约对应的第二地址,基于合约管理平台中获取合约模板,基于合约模板对第一地址和第二地址进行绑定,得到与数据合约和业务合约相关联的代理合约,生成该代理合约对应的第三地址,将第三地址和合约名称之间的映射关系信息存储在合约管理平台中。可见,通过在区块链中创建合约管理平台,并在合约管理平台中编写一个合约模板,将业务合约地址和数据合约地址作为参数输入合约模板中即可将数据合约和业务合约进行绑定,完成代理合约在区块链中的部署过程,通过合约模板的方式可以减少代理合约的开发过程,进而可以提高区块链中合约的开发效率。
请参见图5,是本申请实施例提供的另一种区块链合约部署方法的流程示意图。如图5所示,该方法可以包括以下步骤:
步骤S201,接收请求节点发送的合约注册请求,获取合约注册请求携带的合约名称、数据合约对应的第一地址以及业务合约对应的第二地址;数据合约用于存储业务数据,业务合约用于存储业务逻辑;
步骤S202,从合约管理平台中获取合约模板,基于合约模板对第一地址和第二地址进行绑定,得到与业务合约和数据合约相关联的代理合约,生成代理合约对应的第三地址;
步骤S203,生成第三地址和合约名称之间的映射关系信息,将映射关系信息存储在合约管理平台中;
其中,步骤S201-步骤S202的具体实现过程可以参见上述图3所对应实施例中的步骤S101-步骤S103,这里不再进行赘述。
步骤S204,获取针对代理合约的更新请求,基于更新请求获取第一地址以及更新业务合约对应的第四地址;
具体的,当业务需求变更时,需要对部署在区块链中的合约进行更新,由于业务合约与数据合约是分离开的,业务需求的变更只需重新部署业务合约即可完成区块链中智能合约的更新。请求节点可以向区块链节点发送针对代理合约的更新请求,区块链网络中的节点服务器在接收到请求节点的更新请求后,可以获取与更新请求相关联的第一地址以及更新业务合约对应的第四地址,其中,更新业务地址用于存储更新后的业务逻辑,第四地址为更新业务合约创建成功后,节点服务器中的以太坊虚拟机根据请求节点账户信息所确定的更新业务合约地址。
需要说明的是,请求节点在向区块链网络发送更新请求之前,还需要将开发人员编写的更新业务合约上传至区块链网络,并在区块链上进行发布,得到返回的第四地址,具体的发布过程可以参见上述图3所对应实施例中对步骤S101的描述,这里不再进行赘述。
步骤S205,将第四地址和第一地址作为参数输入至合约模板,生成测试代理合约;
具体的,节点服务器可以从合约管理平台中获取合约模板,将数据合约第一地址和第四地址作为参数输入合约模板中,通过输入参数之后的合约模板,可以从第四地址对应的更新业务合约中调用设置数据合约地址的方法,将第一地址输入更新业务合约中,可以将数据合约和更新业务合约进行绑定,得到新的代理合约,也可以成为测试代理合约。测试代理合约的具体生成过程可以参见上述图3所对应实施例中对代理合约生成过程的描述,这里不再进行赘述。
步骤S206,当测试代理合约通过测试时,冻结代理合约,将代理合约中的第二地址更新为测试通过状态的测试代理合约中的第四地址;
具体的,在生成测试代理合约后,需要对生成的测试代理合约进行测试,即检测测试代理合约中的合约代码是否存在漏洞。测试代理合约的测试实质上是合约方法的测试过程,在测试代理合约部署成功后,节点服务器可以调用测试代理合约中的合约方法,完成一次交易数据的处理过程,当交易数据的处理结果满足预期结果时,表示测试代理合约测试通过,如进行一次转账交易,若转账成功,则表示测试代理合约测试通过;若转账不成功,则表示测试代理合约测试未通过。在测试代理合约通过测试时,可以冻结区块链中的代理合约,即暂时停止对代理合约的调用,将代理合约中的第二地址更新为测试通过的测试代理合约中的第四地址。换言之,测试代理合约测试通过之后,将代理合约中原有业务合约的第二地址更换为更新业务合约对应的第四地址,此时更新后的代理合约中包含数据合约对应的第一地址和更新业务合约对应的第四地址。
步骤S207,将包含第一地址和第四地址的代理合约确定为更新后的代理合约;更新后的代理合约与第三地址相关联。
具体的,在代理合约中的第二地址更换为更新业务合约对应的第四地址后,可以得到更新后的代理合约,更新后的代理合约对应的地址保持不变,仍然为更新之前的第三地址,激活更新后的代理合约,完成合约的更新。可见,可以在不影响现有线上业务的情形下,对测试代理合约进行测试,在测试通过后再冻结代理合约,更新代理合约中的业务合约地址,完成合约的更新过程,更新后的代理合约同样需要进行正式上链,存储在区块链中。
请一并参见图6,是本申请实施例提供的一种合约升级场景示意图。如图6所示,区块链中的智能合约是在以太坊虚拟机40a中解释执行的,若在区块链中已部署了代理合约40c,该代理合约40c是将数据合约40e对应的地址1和业务合约40d对应的地址2作为参数,输入合约管理平台40b中的合约模板所生成的,代理合约40c可以调用业务合约40d,业务合约40d可以调用数据合约40e。当业务需求变更时,需要对业务合约40d进行更新,开发人员可以编写更新业务合约40f,并由请求节点将更新业务合约40f上传至区块链网络中,在更新业务合约40f存储于区块链中后,区块链节点可以向请求节点返回更新业务合约40f对应的地址3,进而请求节点可以向区块链节点发送针对代理合约40c的更新请求,区块链网络中的节点1在获取到该更新请求后,可以获取该更新请求携带的地址1以及地址3,节点1可以从合约管理平台40b中获取合约模板,将地址1和地址3作为参数输入合约模板中,将地址1对应的数据合约40e与地址3对应的更新业务合约40f进行绑定,生成测试代理合约40g。
节点1可以对测试代理合约40g进行测试,如调用测试代理合约40g中的合约方法,即通过地址3调用测试代理合约40g,测试代理合约40g调用更新业务合约40f,更新业务合约40f调用数据合约40e,如调用测试代理合约40g中的合约方法进行一次转账交易处理,若转账交易成功,则表示测试代理合约40g测试通过。在测试代理合约40g测试通过后,可以冻结代理合约40c,将代理合约40c中的地址2更新为测试代理合约40g中的地址4,得到更新后的代理合约40h。换言之,更新后的代理合约40h对应的合约地址与代理合约40c对应的地址相同(地址保持不变),更新后的代理合约40h可以调用更新业务合约40f,更新业务合约40f可以调用数据合约40e。节点1可以将更新后的代理合约40h打包成区块40i,在区块40i根据共识算法在区块链网络中通过共识验证后,可以将区块40i进行正式上链,并将区块40i存储至节点1的本地数据库40j中。
在本申请实施例中,通过在区块链中创建合约管理平台,并在合约管理平台中编写一个合约模板,将业务合约地址和数据合约地址作为参数输入合约模板中即可生成代理合约,即区块链节点可以基于合约管理平台中的合约模板,将数据合约和业务合约进行绑定,完成代理合约在区块链中的部署过程,当区块链中需要部署多个代理合约时,根据合约模板可以快速生成多个代理合约,减少代理合约的开发过程,进而可以提高区块链中合约的开发效率;通过将代理合约中的业务合约地址更新为新业务合约地址,即可完成合约的升级过程,可以提高合约升级效率。
请参见图7,是本申请实施例提供的一种区块链合约部署装置的结构示意图,该区块链合约部署装置1可以应用于区块链节点。如图7所示,该区块链合约部署装置1可以包括:接收模块10,创建模块11,存储模块12;
接收模块10,用于接收请求节点发送的合约注册请求,获取合约注册请求携带的合约名称、数据合约对应的第一地址以及业务合约对应的第二地址;数据合约用于存储业务数据,业务合约用于存储业务逻辑;
创建模块11,用于从合约管理平台中获取合约模板,基于合约模板对第一地址和第二地址进行绑定,得到与业务合约和数据合约相关联的代理合约,生成代理合约对应的第三地址;
存储模块12,用于生成第三地址和合约名称之间的映射关系信息,将映射关系信息存储在合约管理平台中。
其中,接收模块10,创建模块11,存储模块12的具体功能实现方式可以参见上述图3所对应实施例中的步骤S101-步骤S103,这里不再进行赘述。
请一并参见图7,区块链合约部署装置1还可以包括:区块生成模块13,共识模块14,地址确定模块15,遍历模块16,验证模块17,查询请求接收模块18,地址查询模块19,交易数据获取模块22,数据操作模块23;
区块生成模块13,用于获取请求节点上传的数据合约和业务合约,根据数据合约和业务合约生成合约区块;
共识模块14,用于当合约区块在区块链网络中共识通过时,将数据合约和业务合约确定为发布成功状态;
地址确定模块15,用于根据请求节点对应的账号信息,确定处于发布成功状态的数据合约对应的第一地址,以及处于发布成功状态的业务合约对应的第二地址,将第一地址和第二地址发送至请求节点;
遍历模块16,用于基于合约名称,对合约管理平台中存储的历史映射关系信息进行遍历;
验证模块17,用于若历史映射关系信息中存在合约名称,则向请求节点返回名称更改提示信息;
验证模块17,还用于若历史映射关系信息中不存在合约名称,则生成第三地址和合约名称之间的映射关系信息,将映射关系信息存储在合约管理平台中;
查询请求接收模块18,用于当接收到请求节点发送的合约查询请求时,获取合约查询请求所携带的合约名称;
地址查询模块19,用于从合约管理平台中获取与合约名称具有映射关系的第三地址,将第三地址返回至请求节点,以使请求节点将第三地址与合约名称存储在本地中;
交易数据获取模块22,用于获取请求节点上传的交易数据,基于交易数据携带的第三地址获取代理合约;
数据操作模块23,用于根据代理合约调用业务合约,并基于业务合约中的业务逻辑,对数据合约和交易数据进行操作,生成交易数据对应的合约处理结果。
其中,合约管理平台包括第三地址与多个节点之间的关联关系,多个节点包括代理合约对应的管理节点和授权访问节点;
区块链合约部署装置1还可以包括:关联节点获取模块20,查询权限确定模块21;
关联节点获取模块20,用于从合约管理平台中获取与合约名称具有映射关系的第三地址,获取与第三地址相关联的多个节点;
查询权限确定模块21,用于若多个节点中存在请求节点,则确定请求节点具有查询权限,将第三地址返回至请求节点,以使请求节点将第三地址与合约名称存储在本地中;
查询权限确定模21,还用于若多个节点中不存在请求节点,则确定请求节点不具有查询权限,向请求节点返回权限提示信息。
其中,区块链合约部署装置1还可以包括:更新请求获取模块24,测试合约生成模块25,合约更新模块26;
更新请求获取模块24,用于获取针对代理合约的更新请求,基于更新请求获取第一地址以及更新业务合约对应的第四地址;
测试合约生成模块25,用于将第四地址和第一地址作为参数输入至合约模板,生成测试代理合约;
合约更新模块26,用于当测试代理合约通过测试时,基于通过测试的测试代理合约,对代理合约进行更新。
其中,区块生成模块13,共识模块14,地址确定模块15的具体功能实现方式可以参见上述图3所对应实施例中的步骤S101,遍历模块16,验证模块17的具体功能实现方式可以参见上述图3所对应实施例中的步骤S103,查询请求接收模块18,地址查询模块19,关联节点获取模块20,查询权限确定模块21,交易数据获取模块22,数据操作模块23的具体功能实现方式可以参见上述图3所对应实施例中的步骤S103以及图4所对应的实施例,更新请求获取模块24,测试合约生成模块25,合约更新模块26的具体功能实现方式可以参见上述图5所对应实施例中的步骤S204-步骤S207,这里不再进行赘述。
请一并参见图7,构建模块11可以包括:参数输入单元111,接口调用单元112,绑定单元113;
参数输入单元111,用于从合约管理平台中获取合约模板,将第一地址和第二地址作为参数输入合约模板中;
接口调用单元112,用于基于合约模板,从第二地址对应的业务合约中调用地址设置接口;
绑定单元113,用于根据地址设置接口,将第一地址输入业务合约中,对业务合约和数据合约进行绑定,得到代理合约。
其中,参数输入单元111,接口调用单元112,绑定单元113的具体功能实现方式可以参见上述图3所对应实施例中的步骤S102,这里不再进行赘述。
请一并参见图7,合约更新模块26可以包括:地址更新单元261,更新合约确定单元262;
地址更新单元261,用于当测试代理合约通过测试时,冻结代理合约,将代理合约中的第二地址更新为测试通过状态的测试代理合约中的第四地址;
更新合约确定单元262,用于将包含第一地址和第四地址的代理合约确定为更新后的代理合约;更新后的代理合约与第三地址相关联。
其中,地址更新单元261,更新合约确定单元262的具体功能实现方式可以参见上述图5所对应实施例中的步骤S206-步骤S207,这里不再进行赘述。
在本申请实施例中,通过在区块链中创建合约管理平台,并在合约管理平台中编写一个合约模板,将业务合约地址和数据合约地址作为参数输入合约模板中即可生成代理合约,即区块链节点可以基于合约管理平台中的合约模板,将数据合约和业务合约进行绑定,完成代理合约在区块链中的部署过程,当区块链中需要部署多个代理合约时,根据合约模板可以快速生成多个代理合约,减少代理合约的开发过程,进而可以提高区块链中合约的开发效率;通过将代理合约中的业务合约地址更新为新业务合约地址,即可完成合约的升级过程,可以提高合约升级效率。
请参见图8,是本申请实施例提供的一种节点设备的结构示意图。如图8所示,该节点设备1000可以包括:处理器1001,网络接口1004和存储器1005,此外,上述节点设备1000还可以包括:用户接口1003,和至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。其中,用户接口1003可以包括显示屏(Display)、键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1004可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图8所示,作为一种计算机可读存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及设备控制应用程序。
在如图8所示的节点设备1000中,网络接口1004可提供网络通讯功能;而用户接口1003主要用于为用户提供输入的接口;而处理器1001可以用于调用存储器1005中存储的设备控制应用程序,以实现:
接收请求节点发送的合约注册请求,获取合约注册请求携带的合约名称、数据合约对应的第一地址以及业务合约对应的第二地址;数据合约用于存储业务数据,业务合约用于存储业务逻辑;
从合约管理平台中获取合约模板,基于合约模板对第一地址和第二地址进行绑定,得到与业务合约和数据合约相关联的代理合约,生成代理合约对应的第三地址;
生成第三地址和合约名称之间的映射关系信息,将映射关系信息存储在合约管理平台中。
应当理解,本申请实施例中所描述的节点设备1000可执行前文图3、图5任一个所对应实施例中对区块链合约部署方法的描述,也可执行前文图7所对应实施例中对区块链合约部署装置1的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
此外,这里需要指出的是:本申请实施例还提供了一种计算机可读存储介质,且计算机可读存储介质中存储有前文提及的区块链合约部署装置1所执行的计算机程序,且计算机程序包括程序指令,当处理器执行程序指令时,能够执行前文图3、图5任一个所对应实施例中对区块链合约部署方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机可读存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,计算机程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,可读存储介质可为磁碟、光盘、只读存储存储器(Read-Only Memory,ROM)或随机存储存储器(Random AccessMemory,RAM)等。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。
Claims (12)
1.一种区块链合约部署方法,其特征在于,包括:
接收请求节点发送的合约注册请求,获取所述合约注册请求携带的合约名称、数据合约对应的第一地址以及业务合约对应的第二地址;所述数据合约用于存储业务数据,所述业务合约用于存储业务逻辑;
从合约管理平台中获取合约模板,基于所述合约模板对所述第一地址和所述第二地址进行绑定,得到与所述业务合约和所述数据合约相关联的代理合约,生成所述代理合约对应的第三地址;
生成所述第三地址和所述合约名称之间的映射关系信息,将所述映射关系信息存储在所述合约管理平台中。
2.根据权利要求1所述的方法,其特征在于,还包括:
获取所述请求节点上传的所述数据合约和所述业务合约,根据所述数据合约和所述业务合约生成合约区块;
当所述合约区块在区块链网络中共识通过时,将所述数据合约和所述业务合约确定为发布成功状态;
根据所述请求节点对应的账号信息,确定处于所述发布成功状态的数据合约对应的所述第一地址,以及处于所述发布成功状态的业务合约对应的所述第二地址,将所述第一地址和所述第二地址发送至所述请求节点。
3.根据权利要求1所述的方法,其特征在于,所述从合约管理平台中获取合约模板,基于所述合约模板对所述第一地址和所述第二地址进行绑定,得到与所述业务合约和所述数据合约相关联的代理合约,包括:
从所述合约管理平台中获取合约模板,将所述第一地址和所述第二地址作为参数输入所述合约模板中;
基于所述合约模板,从所述第二地址对应的所述业务合约中调用地址设置接口;
根据所述地址设置接口,将所述第一地址输入所述业务合约中,对所述业务合约和所述数据合约进行绑定,得到所述代理合约。
4.根据权利要求1所述的方法,其特征在于,还包括:
基于所述合约名称,对所述合约管理平台中存储的历史映射关系信息进行遍历;
若所述历史映射关系信息中存在所述合约名称,则向所述请求节点返回名称更改提示信息;
若所述历史映射关系信息中不存在所述合约名称,则执行所述生成所述第三地址和所述合约名称之间的映射关系信息,将所述映射关系信息存储在所述合约管理平台中步骤。
5.根据权利要求1所述的方法,其特征在于,还包括:
当接收到所述请求节点发送的合约查询请求时,获取所述合约查询请求所携带的所述合约名称;
从所述合约管理平台中获取与所述合约名称具有映射关系的所述第三地址,将所述第三地址返回至所述请求节点,以使所述请求节点将所述第三地址与所述合约名称存储在本地中。
6.根据权利要求1所述的方法,其特征在于,所述合约管理平台包括所述第三地址与多个节点之间的关联关系,所述多个节点包括所述代理合约对应的管理节点和授权访问节点;
还包括:
当接收到所述请求节点发送的合约查询请求时,获取所述合约查询请求所携带的所述合约名称;
从所述合约管理平台中获取与所述合约名称具有映射关系的所述第三地址,获取与所述第三地址相关联的所述多个节点;
若所述多个节点中存在所述请求节点,则确定所述请求节点具有查询权限,将所述第三地址返回至所述请求节点,以使所述请求节点将所述第三地址与所述合约名称存储在本地中;
若所述多个节点中不存在所述请求节点,则确定所述请求节点不具有查询权限,向所述请求节点返回权限提示信息。
7.根据权利要求5或6所述的方法,其特征在于,还包括:
获取所述请求节点上传的交易数据,基于所述交易数据携带的所述第三地址获取所述代理合约;
根据所述代理合约调用所述业务合约,并基于所述业务合约中的业务逻辑,对所述数据合约和所述交易数据进行操作,生成所述交易数据对应的合约处理结果。
8.根据权利要求1所述的方法,其特征在于,还包括:
获取针对所述代理合约的更新请求,基于所述更新请求获取所述第一地址以及更新业务合约对应的第四地址;
将所述第四地址和所述第一地址作为参数输入至所述合约模板,生成测试代理合约;
当所述测试代理合约通过测试时,基于通过测试的测试代理合约,对所述代理合约进行更新。
9.根据权利要求8所述的方法,其特征在于,所述当所述测试代理合约通过测试时,基于通过测试的测试代理合约,对所述代理合约进行更新,包括:
当所述测试代理合约通过测试时,冻结所述代理合约,将所述代理合约中的所述第二地址更新为所述测试通过状态的测试代理合约中的所述第四地址;
将包含所述第一地址和所述第四地址的代理合约确定为更新后的代理合约;所述更新后的代理合约与所述第三地址相关联。
10.一种区块链合约部署装置,其特征在于,包括:
接收模块,用于接收请求节点发送的合约注册请求,获取所述合约注册请求携带的合约名称、数据合约对应的第一地址以及业务合约对应的第二地址;所述数据合约用于存储业务数据,所述业务合约用于存储业务逻辑;
创建模块,用于从合约管理平台中获取合约模板,基于所述合约模板对所述第一地址和所述第二地址进行绑定,得到与所述业务合约和所述数据合约相关联的代理合约,生成所述代理合约对应的第三地址;
存储模块,用于生成所述第三地址和所述合约名称之间的映射关系信息,将所述映射关系信息存储在所述合约管理平台中。
11.一种节点设备,其特征在于,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如权利要求1至9中任一项所述方法的步骤。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时,执行如权利要求1至9中任一项所述方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110929848.2A CN113691597B (zh) | 2019-11-27 | 2019-11-27 | 区块链合约部署方法、装置、设备以及存储介质 |
CN201911180240.3A CN110933163B (zh) | 2019-11-27 | 2019-11-27 | 区块链合约部署方法、装置、设备以及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911180240.3A CN110933163B (zh) | 2019-11-27 | 2019-11-27 | 区块链合约部署方法、装置、设备以及存储介质 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110929848.2A Division CN113691597B (zh) | 2019-11-27 | 2019-11-27 | 区块链合约部署方法、装置、设备以及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110933163A true CN110933163A (zh) | 2020-03-27 |
CN110933163B CN110933163B (zh) | 2021-08-24 |
Family
ID=69852130
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110929848.2A Active CN113691597B (zh) | 2019-11-27 | 2019-11-27 | 区块链合约部署方法、装置、设备以及存储介质 |
CN201911180240.3A Active CN110933163B (zh) | 2019-11-27 | 2019-11-27 | 区块链合约部署方法、装置、设备以及存储介质 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110929848.2A Active CN113691597B (zh) | 2019-11-27 | 2019-11-27 | 区块链合约部署方法、装置、设备以及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN113691597B (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111459504A (zh) * | 2020-03-30 | 2020-07-28 | 百度国际科技(深圳)有限公司 | 智能合约的处理方法、装置、设备和存储介质 |
CN111597269A (zh) * | 2020-05-21 | 2020-08-28 | 昆明大棒客科技有限公司 | 一种基于区块链的合约实现方法、装置及设备 |
CN111782551A (zh) * | 2020-08-04 | 2020-10-16 | 腾讯科技(深圳)有限公司 | 针对区块链项目的测试方法、装置及计算机设备 |
CN111797374A (zh) * | 2020-07-21 | 2020-10-20 | 浙江同善人工智能技术有限公司 | 一种基于公链智能合约的供应链访问控制系统和方法 |
CN111932215A (zh) * | 2020-09-18 | 2020-11-13 | 杭州趣链科技有限公司 | 一种智能合约版本的管理方法、设备及可读存储介质 |
CN112015399A (zh) * | 2020-08-31 | 2020-12-01 | 京东数字科技控股股份有限公司 | 一种生成智能合约的数据处理方法及装置 |
CN112035897A (zh) * | 2020-11-06 | 2020-12-04 | 腾讯科技(深圳)有限公司 | 区块链存证方法和相关装置 |
CN112686671A (zh) * | 2021-01-07 | 2021-04-20 | 腾讯科技(深圳)有限公司 | 基于区块链的智能合约部署方法、装置、设备以及介质 |
CN113379422A (zh) * | 2021-08-12 | 2021-09-10 | 腾讯科技(深圳)有限公司 | 基于智能合约的数据处理方法、设备以及可读存储介质 |
WO2022077186A1 (zh) * | 2020-10-12 | 2022-04-21 | 北京和联共识科技有限公司 | 区块链中智能合约的执行方法及装置和电子设备 |
CN115293769A (zh) * | 2022-10-08 | 2022-11-04 | 中铱数字科技有限公司 | 一种基于区块链的动态管理和校验节点系统 |
WO2023020193A1 (zh) * | 2021-08-19 | 2023-02-23 | 中国人民银行数字货币研究所 | 智能合约的执行方法和装置 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114490874A (zh) * | 2022-01-25 | 2022-05-13 | 鼎链数字科技(厦门)有限公司 | 一种区块链智能合约调用管理方法 |
CN117811920A (zh) * | 2024-02-29 | 2024-04-02 | 粤港澳大湾区数字经济研究院(福田) | 一种基于区块链的智能合约管理方法、系统、终端及介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106919419A (zh) * | 2017-02-03 | 2017-07-04 | 中钞信用卡产业发展有限公司北京智能卡技术研究院 | 区块链上的智能合约程序的更新方法及装置 |
CN107943950A (zh) * | 2017-11-24 | 2018-04-20 | 中钞信用卡产业发展有限公司杭州区块链技术研究院 | 一种区块链中数据智能合约生成的方法及系统 |
WO2018137564A1 (zh) * | 2017-01-26 | 2018-08-02 | 阿里巴巴集团控股有限公司 | 一种业务处理方法及装置 |
CN109559229A (zh) * | 2018-11-30 | 2019-04-02 | 众安信息技术服务有限公司 | 基于区块链的更新智能合约组的方法 |
CN109683869A (zh) * | 2018-12-29 | 2019-04-26 | 北京阿斯特时代科技有限公司 | Dapp的开发方法和装置 |
CN109960696A (zh) * | 2019-03-22 | 2019-07-02 | 杭州复杂美科技有限公司 | 一种智能合约的配置方法、设备和存储介质 |
US10373129B1 (en) * | 2018-03-05 | 2019-08-06 | Winklevoss Ip, Llc | System, method and program product for generating and utilizing stable value digital assets |
CN110097464A (zh) * | 2019-04-10 | 2019-08-06 | 北京京东尚科信息技术有限公司 | 智能合约的生成方法、装置、电子设备与存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106778329B (zh) * | 2016-11-28 | 2020-12-04 | 中国银行股份有限公司 | 一种区块链智能合约模板动态更新方法、装置及系统 |
US10452776B2 (en) * | 2017-07-28 | 2019-10-22 | International Business Machines Corporation | Cognitive mediator for generating blockchain smart contracts |
WO2019191687A1 (en) * | 2018-03-30 | 2019-10-03 | Exposition Park Holdings Secz | Blockchain loan transaction systems and methods |
CN109544341B (zh) * | 2018-11-23 | 2023-07-07 | 苏州朗润创新知识产权运营有限公司 | 基于区块链的数字化检测方法及装置 |
CN110430186B (zh) * | 2019-07-31 | 2020-07-21 | 国网电子商务有限公司 | 基于代理重加密和智能合约的区块链数据交易系统及方法 |
-
2019
- 2019-11-27 CN CN202110929848.2A patent/CN113691597B/zh active Active
- 2019-11-27 CN CN201911180240.3A patent/CN110933163B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018137564A1 (zh) * | 2017-01-26 | 2018-08-02 | 阿里巴巴集团控股有限公司 | 一种业务处理方法及装置 |
CN106919419A (zh) * | 2017-02-03 | 2017-07-04 | 中钞信用卡产业发展有限公司北京智能卡技术研究院 | 区块链上的智能合约程序的更新方法及装置 |
CN107943950A (zh) * | 2017-11-24 | 2018-04-20 | 中钞信用卡产业发展有限公司杭州区块链技术研究院 | 一种区块链中数据智能合约生成的方法及系统 |
US10373129B1 (en) * | 2018-03-05 | 2019-08-06 | Winklevoss Ip, Llc | System, method and program product for generating and utilizing stable value digital assets |
CN109559229A (zh) * | 2018-11-30 | 2019-04-02 | 众安信息技术服务有限公司 | 基于区块链的更新智能合约组的方法 |
CN109683869A (zh) * | 2018-12-29 | 2019-04-26 | 北京阿斯特时代科技有限公司 | Dapp的开发方法和装置 |
CN109960696A (zh) * | 2019-03-22 | 2019-07-02 | 杭州复杂美科技有限公司 | 一种智能合约的配置方法、设备和存储介质 |
CN110097464A (zh) * | 2019-04-10 | 2019-08-06 | 北京京东尚科信息技术有限公司 | 智能合约的生成方法、装置、电子设备与存储介质 |
Non-Patent Citations (2)
Title |
---|
王继辉: "区块链与智能合约图谱分析", 《网络空间安全》 * |
鸵鸟区块链: "统一实现智能合约集成模板ArcBlock要做区块链3.0时代的基石提供者", 《鸵鸟区块链》 * |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111459504A (zh) * | 2020-03-30 | 2020-07-28 | 百度国际科技(深圳)有限公司 | 智能合约的处理方法、装置、设备和存储介质 |
CN111459504B (zh) * | 2020-03-30 | 2023-07-04 | 百度国际科技(深圳)有限公司 | 智能合约的处理方法、装置、设备和存储介质 |
CN111597269A (zh) * | 2020-05-21 | 2020-08-28 | 昆明大棒客科技有限公司 | 一种基于区块链的合约实现方法、装置及设备 |
CN111797374B (zh) * | 2020-07-21 | 2023-06-06 | 浙江同善人工智能技术有限公司 | 一种基于公链智能合约的供应链访问控制系统和方法 |
CN111797374A (zh) * | 2020-07-21 | 2020-10-20 | 浙江同善人工智能技术有限公司 | 一种基于公链智能合约的供应链访问控制系统和方法 |
CN111782551A (zh) * | 2020-08-04 | 2020-10-16 | 腾讯科技(深圳)有限公司 | 针对区块链项目的测试方法、装置及计算机设备 |
CN112015399A (zh) * | 2020-08-31 | 2020-12-01 | 京东数字科技控股股份有限公司 | 一种生成智能合约的数据处理方法及装置 |
CN111932215A (zh) * | 2020-09-18 | 2020-11-13 | 杭州趣链科技有限公司 | 一种智能合约版本的管理方法、设备及可读存储介质 |
CN111932215B (zh) * | 2020-09-18 | 2023-09-29 | 杭州趣链科技有限公司 | 一种智能合约版本的管理方法、设备及可读存储介质 |
WO2022077186A1 (zh) * | 2020-10-12 | 2022-04-21 | 北京和联共识科技有限公司 | 区块链中智能合约的执行方法及装置和电子设备 |
CN112035897A (zh) * | 2020-11-06 | 2020-12-04 | 腾讯科技(深圳)有限公司 | 区块链存证方法和相关装置 |
CN112686671A (zh) * | 2021-01-07 | 2021-04-20 | 腾讯科技(深圳)有限公司 | 基于区块链的智能合约部署方法、装置、设备以及介质 |
CN113379422A (zh) * | 2021-08-12 | 2021-09-10 | 腾讯科技(深圳)有限公司 | 基于智能合约的数据处理方法、设备以及可读存储介质 |
CN113988845A (zh) * | 2021-08-12 | 2022-01-28 | 腾讯科技(深圳)有限公司 | 基于智能合约的数据处理方法、设备以及可读存储介质 |
CN113379422B (zh) * | 2021-08-12 | 2021-10-15 | 腾讯科技(深圳)有限公司 | 基于智能合约的数据处理方法、设备以及可读存储介质 |
WO2023020193A1 (zh) * | 2021-08-19 | 2023-02-23 | 中国人民银行数字货币研究所 | 智能合约的执行方法和装置 |
CN115293769A (zh) * | 2022-10-08 | 2022-11-04 | 中铱数字科技有限公司 | 一种基于区块链的动态管理和校验节点系统 |
Also Published As
Publication number | Publication date |
---|---|
CN113691597B (zh) | 2022-06-14 |
CN113691597A (zh) | 2021-11-23 |
CN110933163B (zh) | 2021-08-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110933163B (zh) | 区块链合约部署方法、装置、设备以及存储介质 | |
CN112214780B (zh) | 一种数据处理方法、装置、智能设备及存储介质 | |
CN111543031B (zh) | 用于控制和/或监控装置的方法和控制系统 | |
CN111492624B (zh) | 用于控制和/或监控装置的方法和控制系统 | |
EP4216077A1 (en) | Blockchain network-based method and apparatus for data processing, and computer device | |
CN110598434B (zh) | 基于区块链网络的房屋信息处理方法、装置、电子设备及存储介质 | |
WO2019177764A1 (en) | Industrial data verification using secure, distributed ledger | |
EP4002786B1 (en) | Distributed ledger system | |
CN111934870B (zh) | 区块链网络中的根证书更新方法、装置、设备以及介质 | |
CN110601896B (zh) | 一种基于区块链节点的数据处理方法以及设备 | |
CN112313908B (zh) | 用于控制和/或监控装置的方法和控制系统 | |
CN111488372A (zh) | 一种数据处理方法、设备及存储介质 | |
CN112804354B (zh) | 跨链进行数据传输的方法、装置、计算机设备和存储介质 | |
CN110597541B (zh) | 基于区块链的接口更新处理方法、装置、设备及存储介质 | |
CN112700246B (zh) | 基于区块链的数据处理方法、装置、设备及可读存储介质 | |
CN110866265A (zh) | 一种基于区块链的数据存储方法、设备及存储介质 | |
CN111492355A (zh) | 用于控制和/或监控装置的方法和控制系统 | |
CN113261253A (zh) | 用于控制资源的释放的方法和系统 | |
CN111869165B (zh) | 用于控制和/或监控装置的方法和控制系统 | |
JP2023525576A (ja) | ソフトウェア更新のための認証キーの制御範囲 | |
CN111817859A (zh) | 基于零知识证明的数据共享方法、装置、设备及存储介质 | |
US20200043016A1 (en) | Network node for processing measurement data | |
CN116975901A (zh) | 基于区块链的身份验证方法、装置、设备、介质及产品 | |
CN112425121A (zh) | 关于分布式数据库的使用控制数据网络 | |
US20240070167A1 (en) | Tracing data in complex replication system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40021568 Country of ref document: HK |
|
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |