CN110580624B - 链码升级方法及装置 - Google Patents
链码升级方法及装置 Download PDFInfo
- Publication number
- CN110580624B CN110580624B CN201810591924.1A CN201810591924A CN110580624B CN 110580624 B CN110580624 B CN 110580624B CN 201810591924 A CN201810591924 A CN 201810591924A CN 110580624 B CN110580624 B CN 110580624B
- Authority
- CN
- China
- Prior art keywords
- version
- chain code
- version set
- world state
- target version
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- 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
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/389—Keeping log of transactions for guaranteeing non-repudiation of a transaction
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开了一种链码升级的方法及装置,涉及区块链技术领域。该方法包括:背书节点Endorse获取待升级链码Chaincode对应的第一目标版本集,在独立的运行环境中根据第一目标版本集对待升级链码进行模拟升级,若第一目标版本集的第二世界状态World State与第一世界状态一致,则背书节点在独立的运行环境外对待升级链码进行实际升级。其中,第一目标版本集包括第一目标版本的升级包、升级包的相关配置,独立的运行环境不影响自身之外的运行环境,第一世界状态为待升级链码模拟升级前的世界状态,第二世界状态为待升级链码在模拟升级后的世界状态。
Description
技术领域
本申请涉及区块链技术领域,尤其涉及一种链码升级方法及装置。
背景技术
在区块链技术中,所有参与的节点共同验证每一笔交易,并且每个节点均存储交易的账本,使得达成一致的双方能直接进行交易,不需第三方背书。具体的,链码用于指示交易的逻辑与交易处理的规则,节点通过执行链码将至少一个交易(包括交易资金的付款方和收款方、交易资金的金额等)的相关记录包含在区块中,该区块作为一个账页。区块链网络中存在的交易可被记录在多个区块中,每一区块按照一定顺序连接在一起就形成了区块链,形成的区块链也就是区块链网络中记录交易的账本。
当用户需要进行不同类型的交易时,需部署不同的链码(即智能合约),进而,节点获取部署的新链码后,能够执行新链码来处理每一笔交易,满足用户需求。此外,用户还可以对链码进行版本升级,节点通过执行更高版本的链码来处理每一笔交易。目前,可由客户端发起链码升级流程。具体的,客户端向预设节点发起链码升级命令,用以指示将链码升级至哪个版本,预设节点验证客户端的证书及签名,若确认客户端的身份合法,则将相应版本链码的升级包和相关配置存储至状态数据库。后续,当客户端发起交易时,节点可调用状态数据库中的升级后的链码,并执行升级后的链码来处理交易,使得客户端的交易顺利进行。
但是,在现有技术中,由于节点仅仅确认客户端的身份,却无法避免来自合法客户端的逻辑缺陷链码,如此,节点根据逻辑缺陷链码处理交易时极易产生错误,并错置交易的世界状态,降低区块链交易的准确性。
发明内容
本申请实施例提供一种链码升级方法及装置,可以提升区块链交易的准确性。
为到达上述目的,本申请实施例采用如下技术方案:
第一方面,本申请实施例提供一种链码升级方法,该方法包括:背书节点(Endorse)获取待升级链码(Chaincode)对应的第一目标版本集,并在独立的运行环境中根据第一目标版本集对待升级链码进行模拟升级,若第一目标版本集的第二世界状态世界状态与第一世界状态一致,则背书节点在独立的运行环境外对待升级链码进行实际升级。其中,第一世界状态为待升级链码模拟升级前的世界状态,第二世界状态为待升级链码在模拟升级后的世界状态,第一目标版本集包括第一目标版本的升级包、升级包的相关配置,独立的运行环境不影响自身之外的运行环境。
与现有技术中仅验证目标版本链码是否来自合法客户端,使得存在逻辑缺陷的目标版本链码篡改世界状态,提升交易风险相比,本申请实施例提供的链码升级的方法,背书节点获取待升级链码对应的第一目标版本集,并在独立运行环境内根据第一目标版本集对待升级链码进行模拟升级,只有当确定模拟升级后的第二世界状态与模拟升级前的第一世界状态一致后,才在该独立运行环境外对待升级链码进行实际升级。首先,在独立运行环境保护的内存中进行模拟升级流程,不会对独立运行环境外的其他应用程序产生干扰,也就是不会对该独立运行环境外的实际交易和区块链数据产生破坏。其次,模拟升级后的第二世界状态与模拟升级前的第一世界状态一致,说明第一目标版本链码并未篡改世界状态,由于已经在独立运行环境中对链码升级的可行性进行验证,那么在实际升级过程中,第一目标版本链码篡改世界状态的概率也就相应减小,使得实际升级后基于未篡改的世界状态进行的交易的准确度有所提升,提升区块链交易的安全性。
在一种可能的设计中,在背书节点获取待升级链码对应的目标版本集之后,还可以执行如下步骤:若第一目标版本集的第二世界状态与第一世界状态不一致,则背书节点将第一目标版本集更新为第二目标版本集,第二目标版本集为第一目标版本集所属版本树的分支中版本最新的合法版本集,合法版本集的第二世界状态与第一世界状态一致。
基于本申请实施例提供的版本树管理方法,当需回退到某个链码版本时,可根据版本树快速的回退到最新的有效版本集,并且该有效版本集不会篡改世界状态,从而保证客户端之间的交易成功进行。
在一种可能的设计中,当第一目标版本集所属版本树的分支中存在第一目标版本的版本集,且第一目标版本的版本集的第二世界状态与第一世界状态不一致时,第一目标版本集的第二世界状态与第一世界状态不一致,其中,第一目标版本为第一目标版本集对应的版本。
如此,当用户重复上传非法版本集时,背书节点可通过查询版本树获知该非法版本集的历史情况,避免客户端调用该非法版本集对应的链码进行交易,提升交易安全性。并且,由于通过查询版本树已获知版本集是否为非法版本集,因此,无需再对版本集进行身份验证(即来自哪个客户端)、模拟升级等操作,简化了链码升级流程。
在一种可能的设计中,版本树包括根节点和子节点,子节点包括第一子节点和第二子节点,第一子节点为根节点的第一级子节点,第二子节点为除第一级子节点外的其他级子节点,每一第一子节点为一个领域链码的版本根节点,版本根节点下连接领域链码的第二子节点,领域链码的第一子节点和领域链码的第二子节点构成领域链码的版本树分支;每一子节点对应一个版本集,版本集包括版本的升级包和版本升级包的相关配置,不同领域链码具有不同的链码标识。
在一种可能的设计中,第一目标版本集连接在所属版本树分支中最新版本的版本集后。
在一种可能的设计中,创建版本树的方法可实现为:背书节点根据待升级链码所属的领域确定第一目标版本集所属的版本树分支,并将第一目标版本集连接在第一目标版本集所属版本树分支中版本最新的版本集后。可选的,版本树的某一分支中按照版本的更新时间顺序挂接不同版本的版本集,新版本集基于上一级的旧版本集。
在一种可能的设计中,在Endorse获取待升级链码链码对应的第一目标版本集之后,还可执行如下步骤:若第一目标版本集的第二世界状态与第一世界状态一致,则Endorse将第一目标版本集存储至状态数据库,或者,若第一目标版本集的第二世界状态与第一世界状态不一致,则Endorse将第二目标版本集存储至状态数据库。
本申请实施例中,将合法的最新版本集存储至状态数据库中,这意味着合法版本集可被客户端调用,非法版本集并不存储至状态数据库,从而,客户端不会调用到非法版本集对应的链码,降低调用非法版本集进行交易的风险性。
第二方面,本申请实施例提供一种链码升级装置,该装置设置有处理器、存储器。
其中,存储器,用于存储包括程序指令的信息;处理器,用于获取待升级链码链码对应的第一目标版本集,第一目标版本集包括第一目标版本的升级包、升级包的相关配置;在独立的运行环境中根据第一目标版本集对待升级链码进行模拟升级,独立的运行环境不影响自身之外的运行环境;若第一目标版本集的第二世界状态世界状态与第一世界状态一致,则在独立的运行环境外对待升级链码进行实际升级,第一世界状态为待升级链码模拟升级前的世界状态;第二世界状态为待升级链码在模拟升级后的世界状态。
在一种可能的设计中,处理器,还用于若第一目标版本集的第二世界状态与第一世界状态不一致,则将第一目标版本集更新为第二目标版本集,第二目标版本集为第一目标版本集所属版本树的分支中版本最新的合法版本集,合法版本集的第二世界状态与第一世界状态一致。
在一种可能的设计中,当第一目标版本集所属版本树的分支中存在第一目标版本的版本集,且第一目标版本的版本集的第二世界状态与第一世界状态不一致时,第一目标版本集的第二世界状态与第一世界状态不一致,其中,第一目标版本为第一目标版本集对应的版本。
在一种可能的设计中,版本树包括根节点和子节点,子节点包括第一子节点和第二子节点,第一子节点为根节点的第一级子节点,第二子节点为除第一级子节点外的其他级子节点,每一第一子节点为一个领域链码的版本根节点,版本根节点下连接领域链码的第二子节点,领域链码的第一子节点和领域链码的第二子节点构成领域链码的版本树分支;每一子节点对应一个版本集,版本集包括版本的升级包和版本升级包的相关配置,不同领域链码具有不同的链码标识。
在一种可能的设计中,第一目标版本集连接在所属版本树分支中最新版本的版本集后。
在一种可能的设计中,处理器,还用于根据待升级链码所属的领域确定第一目标版本集所属的版本树分支,并将第一目标版本集连接在第一目标版本集所属版本树分支中版本最新的版本集后。可选的,版本树的某一分支中按照版本的更新时间顺序挂接不同版本的版本集,新版本集基于上一级的旧版本集。
在一种可能的设计中,处理器,还用于若第一目标版本集的第二世界状态与第一世界状态一致,则Endorse将第一目标版本集存储至状态数据库;或者,若第一目标版本集的第二世界状态与第一世界状态不一致,则Endorse将第二目标版本集存储至状态数据库。
第三方面,提供一种链码升级装置,该装置具有实现上述第一方面任一项的方法的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。
第四方面,提供一种链码升级装置,包括:处理器和存储器;该存储器用于存储计算机执行指令,当该装置运行时,该处理器执行该存储器存储的该计算机执行指令,以使该装置执行如上述第一方面中任一项的链码升级方法。
第五方面,提供一种装置,包括:处理器;处理器用于与存储器耦合,并读取存储器中的指令之后,根据指令执行如上述第一方面中任一项的链码升级方法。
第六方面,提供一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机可以执行上述第一方面中任一项的链码升级方法。
第七方面,提供一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机可以执行上述第一方面中任一项的链码升级方法。
第八方面,提供一种芯片系统,该芯片系统包括处理器,用于支持上述装置实现上述第一方面中所涉及的功能。在一种可能的设计中,该芯片系统还包括存储器,该存储器,用于保存该装置必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包含芯片和其他分立器件。
第九方面,提供一种电路系统,该电路系统包括处理电路,该处理电路被配置为执行上述第一方面所涉及的功能。
其中,第二方面至第九方面中任一种设计方式所带来的技术效果可参见第一方面中不同设计方式所带来的技术效果,此处不再赘述。
附图说明
图1为本申请实施例提供的区块链系统的架构示意图;
图2为本申请实施例提供的一种背书节点的结构示意图一;
图3为本申请实施例提供的一种获取目标版本集方法的流程示意图;
图4为现有技术中链码升级流程以及世界状态的示意图;
图5为本申请实施例提供的链码升级方法的流程示意图;
图6为本申请实施例提供的链码升级流程以及世界状态的示意图;
图7为本申请实施例提供的创建版本树的方法流程图;
图8为本申请实施例提供的版本树的示意图;
图9为本申请实施例提供的版本树管理方法的流程图;
图10为本实施例提供的背书节点的结构示意图二。
具体实施方式
在本申请的描述中,除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。并且,在本申请的描述中,除非另有说明,“多个”是指两个或多于两个。另外,为了便于清楚描述本申请实施例的技术方案,在本申请的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
此外,本申请实施例描述的网络架构以及业务场景是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域普通技术人员可知,随着网络架构的演变和新业务场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
首先,对本申请实施例涉及的术语进行介绍:
账本(Ledger):用于记录区块链系统中的每一笔交易,通常包括区块链和当前的世界状态。其中,区块链由首尾相连的一组区块(block)构成。
世界状态(World State):用于指示交易的执行结果以及状态,通常由一组变量组成。
以下给出本申请实施例所涉及的区块链系统结构:
如图1所示,为本申请实施例的区块链系统结构示意图。该区块链系统100包括客户端(Client)101、至少一个背书节点102(图1中仅仅示例性的示出一个)、至少一个提交节点(Committer)103以及至少一个共识节点(Orderer)104(图1仅示例性的示出一个)。
其中,客户端101与背书节点102之间可以通过无线网络(例如Wi-Fi、蓝牙以及蜂窝移动网络等)或者有线网络(例如光纤等)连接,本申请实施例对此不作任何限制。
客户端101与共识节点104之间也可以通过无线网络(例如Wi-Fi、蓝牙以及蜂窝移动网络等)或者有线网络(例如光纤等)连接,本申请实施例对此不作任何限制。
同样的,共识节点104与背书节点102之间也可以通过无线网络(例如Wi-Fi、蓝牙以及蜂窝移动网络等)或者有线网络(例如光纤等)连接,本申请实施例对此不作任何限制。
客户端101,用于向背书节点102等发送链码部署、链码升级请求、发起交易请求等。还用于向共识节点104发送每一交易。其中,客户端101中部署有软件开发包(SoftwareDevelopment Kit,SDK),用户可使用客户端101提供的SDK创建链码,提交链码升级请求,以触发链码的升级流程。
需要说明的是,在区块链系统100中,客户端101存储有秘钥(key),从而可以通过该秘钥进行身份验证,以便于提升区块链系统100的安全性。
可选的,上述所涉及到的客户端可以包括各种具有计算功能的计算设备、个人数字助理(personal digital assistant,PDA)电脑、平板型电脑、手持设备(handheld)、膝上型电脑(laptop computer)、用户设备(user equipment,UE),终端设备(terminal device)等。为方便描述,本申请中,上面提到的设备统称为终端。
背书节点102,用于响应客户端101发起的链码部署请求、链码升级请求、交易请求等,并验证每一请求的合法性(包括客户端身份的合法性),若请求为合法请求,则背书节点102为该请求执行背书操作,并将背书结果反馈给客户端101,以使得客户端101根据背书结果将交易发送给共识节点104,用以确定该交易在区块链中的顺序。还用于响应链码升级请求,在独立的运行环境内对待升级链码进行模拟升级,仅当确定待升级链码在模拟升级后不篡改当前的世界状态(即待升级链码在模拟升级前的世界状态和模拟升级后的世界状态一致)后,才在独立的运行环境外对待升级链码进行实际升级。并且,同样用于存储每一版本链码的版本树,该版本树用于回溯链码版本。需要说明的是,背书节点102中部署有链码,背书节点102执行链码,从而执行客户端所请求的每一交易。
可选的,本申请实施例中的背书节点102可由一个设备实现,还可以是一个设备内的一个功能模块,本申请实施例对此不作具体限定。可以理解的是,上述功能模块既可以是硬件设备中的网络元件,也可以是在硬件设备上运行的软件功能,或者是平台(例如,云平台)上实例化的虚拟化功能。
提交节点103,用于获取经共识节点104排序后的有序区块链。
可选的,提交节点103可由一个设备实现,还可以是一个设备内的一个功能模块,或具有其他实现方式,本申请实施例对此不作具体限定。
需要说明的是,背书节点102和提交节点103可合设在一个设备中,该设备具有背书节点102的功能,也具有提交节点103的功能。其中,背书节点102和提交节点103可实现为一个设备中的不同组件,也可实现为一个设备中的不同功能模块,本申请实施例对此不进行限制。
共识节点104,用于对客户端101发送的每一交易进行排序,以保证每个交易按照正确顺序被写入区块链。还用于将排序后的交易通知给提交节点103。
可选的,共识节点104可由一个设备实现,还可以是一个设备内的一个功能模块,或者具有其他实现方式,本申请实施例对此不作具体限定。
本申请实施例提供的链码升级方法主要应用于上述背书节点中,本申请实施例中的背书节点可具有图1所示的背书节点101和提交节点102的功能,其中,当由硬件设备实现时,图2示出了一种示例性的背书节点的硬件结构示意图。该背书节点200包括至少一个处理器201,通信线路202,存储器203以及至少一个收发器204。
处理器201可以是一个通用中央处理器(central processing unit,CPU),微处理器,特定应用集成电路(application-specific integrated circuit,ASIC),或一个或多个用于控制本申请方案程序执行的集成电路。
通信线路202可包括一通路,在上述组件之间传送信息。
收发器204,用于与其他设备或通信网络通信,如以太网,无线接入网(radioaccess network,RAN),无线局域网(wireless local area networks,WLAN)等。
存储器203可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electricallyerasable programmable read-only memory,EEPROM)、只读光盘(compact disc read-only memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在,通过通信线路202与处理器相连接。存储器也可以和处理器集成在一起。
其中,存储器203用于存储执行本申请方案的计算机执行指令,并由处理器201来控制执行。处理器201用于执行存储器203中存储的计算机执行指令,从而实现本申请下述实施例提供的链码升级方法。可选的,存储器203中存储有图2所示的模拟升级应用程序代码、版本树管理应用程序代码、背书应用程序代码、交易存储应用程序代码、提交应用程序代码、区块组装应用程序代码、链码生命周期管理(Life Service of Chain Code,LSCC)应用程序代码等。其中,模拟升级应用程序代码用于提供链码的模拟升级功能。版本树管理应用程序代码用于提供版本树相应的管理功能。背书应用程序代码用于提供背书功能。交易存储应用程序代码用于提供对每一交易进行记账的功能。提交应用程序代码用于提供向其他类型节点提交内容的功能。区块组装应用程序代码用于提供将区块组装成区块链的功能。LSCC用于提供链码生命周期管理的功能。
可选的,本申请实施例中的计算机执行指令也可以称之为应用程序代码,本申请实施例对此不作具体限定。
在具体实现中,作为一种实施例,处理器201可以包括一个或多个CPU,例如图2中的CPU0和CPU1。
在具体实现中,作为一种实施例,背书节点200可以包括多个处理器,例如图2中的处理器201和处理器207。这些处理器中的每一个可以是一个单核(single-CPU)处理器,也可以是一个多核(multi-CPU)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
在具体实现中,作为一种实施例,背书节点200还可以包括输出设备205和输入设备206。输出设备205和处理器201通信,可以以多种方式来显示信息。例如,输出设备205可以是液晶显示器(liquid crystal display,LCD),发光二级管(light emitting diode,LED)显示设备,阴极射线管(cathode ray tube,CRT)显示设备,或投影仪(projector)等。输入设备206和处理器201通信,可以以多种方式接收用户的输入。例如,输入设备206可以是鼠标、键盘、触摸屏设备或传感设备等。
上述的背书节点200可以是一个通用设备或者是一个专用设备。在具体实现中,背书节点200可以是台式机、便携式电脑、掌上电脑(personal digital assistant,PDA)、移动手机、平板电脑、无线终端设备或有图2中类似结构的设备。本申请实施例不限定背书节点200的类型。
下面将结合图1、图2对本申请实施的技术方案进行详细阐述。首先,如图3给出背书节点获取目标版本集的流程。该获取目标版本集的流程是本申请下述实施例提供的链码升级方法的基础,包括如下步骤:
S301、客户端接收用户输入的安装包上传指令。
这里,升级包为待升级链码的第一目标版本的安装包。例如,需将待升级链码升级至2.0版本,则安装包为2.0版本的安装包。由于本申请实施例主要应用于链码升级流程中,因此,本文中的安装包也可称为升级包。
可选的,用户通过子命令方式输入安装包上传指令,或者,用户通过用户界面(User Interface,UI)方式输入安装包上传指令,当然,用户还可以通过其他方式输入安装包上传指令,本申请实施例对此不进行限制。
S302、响应于安装包上传指令,客户端将待升级链码的第一目标版本的安装包上报给背书节点。
S303、背书节点存储第一目标版本的安装包。
基于本实施例提供的上传安装包的流程,背书节点中存储有第一目标版本的安装包,进而就可以根据用户需求使用相应安装包将待升级链码升级至第一目标版本,满足更多新业务的需求。
以贵金属交易为例,如图4所示,假定初始时,甲企业与乙企业签订了一份贵金属交易的合约,并使用区块链技术进行贵金属交易,双方约定各自的初始账户额度均为20万。区块链系统执行这个合约(即链码)的初始化过程,合约中的初始世界状态(例如初始账户状态、初始账户额度)被记录在每一背书节点的账本上。其中,初始合约中双方的账户额度为:甲的账户额度20万,乙的账户额度20万。
需要说明的是,在区块链技术中,智能合约与链码是同一个概念,在此进行说明,下文不再赘述。
之后,甲企业向乙企业支付2万元,用于购买某种贵金属。此时,甲企业的账户余额为18万,乙企业的账户余额为22万。随着交易行情的变化,乙企业认为贵金属的交易单价应该提升,于是,乙企业和甲企业重新签订合约,约定中记载有贵金属的新的交易单价。区块链系统验证新链码(合约)是否为甲企业或乙企业所提交的,若新链码是甲企业或乙企业提交的,则区块链系统确认该新链码合法,则执行新链码的初始化流程,新链码(合约)中的账户初始值被账本记录。但是,当新链码存在逻辑缺陷时,很可能错置交易的世界状态(例如账户状态、账户初始值、账户余额等)。仍参见图4,甲企业的账户余额应当为22万,但是,由于新链码存在逻辑缺陷,甲企业的账户余额被错置为20万,同样的,乙企业的账户余额被错置为20万。
可见,现有技术中,在链码升级(即部署新合约)时很可能对交易的世界状态产生非预期的修改,使得记录的区块链出现差错,导致用户的链下资产受损。
对此,本申请实施例提供一种链码升级方法,如图5所示,该方法包括如下步骤:
S501、客户端向背书节点发送链码升级请求,该链码升级请求携带有升级提案,用于请求背书节点将待升级链码升级至第一目标版本,升级提案包含第一目标版本安装包在背书节点中的路径以及安装包的相关配置。这里,安装包的相关配置包括但不限于安装包对应的链码的名称,对应的链码版本。
其中,用户可通过命令行或UI方式对链码进行升级,当然,用户还可以采用其他方式对链码进行升级。若采用命令行方式,在一种示例中,用户通过客户端输入链码升级指令,以触发客户端执行S501。具体的,用户在客户端输入链码升级指令后,客户端根据该链码升级指令生成代码结构体(Spec),根据Spec生成部署Spec,根据部署Spec生成升级提案(upgrade Proposal)。这里,为了确保升级提案来自合法客户端,客户端可对升级提案进行数字签名。具体的,客户端使用私钥加密该升级提案,以实现对该升级提案的签名。
之后,客户端通过诸如远程过程调用(Remote Procedure Call Protocol,RPC)协议向背书节点发送携带有升级提案的链码升级请求,用以通知背书节点将待升级链码升级至第一目标版本。
S502、背书节点获取待升级链码对应的第一目标版本集,第一目标版本集包括第一目标版本的升级包、升级包的相关配置。
其中,如上文所描述,一个版本的升级包即该版本的安装包。
背书节点在接收到链码升级请求后,调用提案处理(ProcessProposal)接口处理携带的升级提案,验证升级提案的签名。具体的,背书节点采用客户端的公钥验证升级提案是否来自该客户端。背书节点还可以验证该客户端的证书以及权限,从而进一步加强区块链系统的安全性。若验证均通过,则背书节点根据升级提案中第一目标版本安装包的路径获取第一目标版本的安装包以及第一目标版本安装包的相关配置。为方便描述,本文中将一个版本的安装包的路径以及该版本安装包的相关配置称为一个版本集,这里统一做出说明,下文不再赘述。如此,第一目标版本安装包的路径以及第一目标版本安装包的相关配置合称目标版本集。
S503、背书节点创建独立的运行环境。
可选的,独立的运行环境为容器,容器为独立运行的至少一个应用以及至少一个应用的运行环境。当然,独立的运行环境也可以有其他实现形式,例如,实现为虚拟机等运行环境,本申请实施例对此不进行限制。
其中,独立的运行环境不影响自身之外的运行环境。例如,不会改变该独立运行环境外Host文件系统的数据,不会对该独立运行环境外实际的状态数据库中的数据进行篡改。
可选的,背书节点调用应用程序编程接口(Application ProgrammingInterface,API)创建独立的运行环境,例如,背书节点调用API接口创建容器。
背书节点可在S501之前预先创建一个独立运行环境,后续,可直接使用预先创建的独立运行环境。或者,背书节点在获取第一目标版本集后创建,当然,也可在其他时间创建该独立的运行环境。也就是,本申请实施例对创建独立运行环境的时机不做限制。
S504、背书节点获取第一世界状态。其中,第一世界状态为待升级链码模拟升级前的世界状态。
需要说明的是,本申请实施例并不对获取第一世界状态的时机进行限制,例如,背书节点可在S503之后执行S504,也可以在S502之前或之后执行S504。
S505、背书节点在独立的运行环境内根据第一目标版本集对待升级链码进行模拟升级。
可选的,背书节点对第一目标版本集(即第一目标版本的安装包以及第一目标版本安装包的相关配置)所指示的链码进行编译,根据编译后链码的二进制文件生成镜像。
之后,背书节点启动上述生成的镜像,在独立运行环境内根据镜像中包含的第一目标版本集的信息执行链码的模拟升级流程。具体的,背书节点在独立运行环境内根据第一目标版本安装包以及安装包的相关配置对待升级链码进行模拟升级,对模拟升级后的第一目标版本链码进行初始化。这里,对链码进行模拟升级的流程与对链码进行实际升级的流程相似,所不同的是,模拟升级流程在独立的运行环境内进行,不影响背书节点中该独立运行环境外的其他应用程序代码的运行,即模拟升级流程不会对该独立运行环境外的其他操作产生干扰,该独立运行环境外的应用程序等无法感知上述模拟升级流程。
其中,升级链码以及初始化链码的具体流程可参见现有技术,这里不再赘述。
S506、背书节点获取第二世界状态,第二世界状态为待升级链码在模拟升级后的世界状态。
结合图6中链码升级的示例性流程,第一目标版本链码初始化后对应的第二世界状态为:甲企业的账户余额为18万,乙企业的账户余额为22万。
S507、若第二世界状态与第一世界状态一致,则背书节点在独立运行环境外对待升级链码进行实际升级。
S507这里的升级为实际的链码升级流程,包括第一目标版本链码的初始化流程。
上述步骤S501至S507中背书节点的动作可以由图2所示的处理器201调用存储器203中存储的应用程序代码来执行。例如,处理器201调用存储器203中存储的模拟升级应用程序代码执行S505的模拟升级动作。当然,还可以采取其他方式执行上述动作,本申请实施例对此不进行任何限制。
与现有技术中仅验证目标版本链码是否来自合法客户端,使得存在逻辑缺陷的目标版本链码篡改世界状态,提升交易风险相比,本申请实施例提供的链码升级的方法,背书节点获取待升级链码对应的第一目标版本集,并在独立运行环境内根据第一目标版本集对待升级链码进行模拟升级,只有当确定模拟升级后的第二世界状态与模拟升级前的第一世界状态一致后,才在该独立运行环境外对待升级链码进行实际升级。首先,在独立运行环境保护的内存中进行模拟升级流程,不会对独立运行环境外的其他应用程序产生干扰,也就是不会对该独立运行环境外的实际交易和区块链数据产生破坏。其次,模拟升级后的第二世界状态与模拟升级前的第一世界状态一致,说明第一目标版本链码并未篡改世界状态,由于已经在独立运行环境中对链码升级的可行性进行验证,那么在实际升级过程中,第一目标版本链码篡改世界状态的概率也就相应减小,使得实际升级后基于未篡改的世界状态进行的交易的准确度有所提升,提升区块链交易的安全性。
在本申请的另一些实施例中,还提供一种链码的版本树管理方法,如图7所示,给出创建版本树的流程,该版本树创建流程是本申请下述实施例提供的版本树管理方法的基础,包括如下步骤:
S701、背书节点获取链码对应的新版本集。
其中,S701的描述可参见S502,这里不再赘述。
可选的,背书节点的处理器201调用存储器203中的LSCC,LSCC获取链码对应的新版本集。
S702、背书节点根据新版本集对应的链码所属的领域确定新版本集所属的版本树分支。
可选的,处理器201调用存储器203中的版本树管理应用程序代码,由版本树管理应用程序代码根据链码所属的领域确定新版本集所属的版本树分支。
其中,不同领域链码具有不同的链码标识。版本树包括根节点和子节点,根节点为虚拟节点,不对应具有实际意义的版本集,子节点包括第一子节点和第二子节点,第一子节点为根节点的第一级子节点,第二子节点为除第一级子节点外的其他级子节点。每一第一子节点为一个领域链码的版本根节点,版本根节点下直接或间接连接该领域链码的第二子节点,领域链码的第一子节点和领域链码的第二子节点构成领域链码的版本树分支。在版本树中,每一子节点对应一个版本集,一个版本集包括该版本的安装包和该版本安装包的相关配置。可选的,版本树的某一分支中按照版本的更新时间挂接不同版本的版本集,新版本集基于上一级的旧版本集。
在本申请实施例中,领域可用于描述链码的功能,也可用于区分不同的用户业务。参见图8,领域1对应贵金属交易的链码,领域2对应慈善机构的慈善款链码,领域3对应股票交易的链码。图8中的版本树包括根节点和多个子节点,贵金属领域分支包括该领域的版本根节点(第一级子节点)和其他级子节点,其中,版本根节点对应1.0版本的版本集(即1.0版本链码的安装包、1.0版本链码的安装包的相关配置),该版本根节点下连接的第二级子节点对应2.0版本的版本集,第三级子节点对应3.0版本的版本集。同样的,慈善款领域分支和股票领域分支中的每一节点对应一个版本集。
在一个示例中,结合图4、图6的举例,待升级链码为甲企业和乙企业进行贵金属交易这一领域的链码,且甲企业和乙企业需将待升级链码升级至4.0版本,则新版本为4.0版本,新版本集所属的版本树分支为图8所示的贵金属领域分支。
S703、背书节点将获取的新版本集连接在该新版本集所属版本树分支中最新版本的版本集后。
可选的,背书节点的处理器201调用存储器203中的版本树管理应用程序代码将新版本集连接在所属版本树分支上。
如图8所示,在贵金属领域的版本树分支中,版本最新的版本集为3.0版本集,则将新获取的4.0版本集连接在3.0版本集后。
结合图5所示的实施例,在图7所示的实施例中,还可判断每一版本集是否合法。具体的,若背书节点确定某一版本链码模拟升级后的第二世界状态与模拟升级前的第一世界状态一致,说明该版本链码并未篡改世界状态,则确定该版本集为合法版本集,即在本申请实施例中,合法版本集指的是模拟升级前后世界状态一致的版本集,这里统一做出说明。若背书节点确定某一版本链码模拟升级后的第二世界状态与模拟升级前的第一世界状态不一致,则确定该版本集为非法版本集,也就是说,在本申请实施例中,非法版本集指的是模拟升级前后世界状态不一致的版本集,这里统一说明。作为一种可能的实现方式,若背书节点的处理器201初步确定某一版本集为合法版本集,则在独立运行环境内调用图2所示的模拟升级应用程序代码,模拟升级应用程序代码使用私钥1对该版本集进行签名。后续,在独立容器外,背书节点的处理器201调用图2所示的LSCC,LSCC使用公钥1(公钥1与私钥1为成对使用的秘钥)验证该版本集是否经过模拟升级应用程序代码处理,若是,则最终确定该版本集为合法版本集。
仍参见图8,贵金属领域链码的每一版本集中,1.0版本集、2.0、3.0版本集为合法版本集,4.0版本为非法版本集;慈善款领域链码的每一版本集中,1.0版本集、2.0版本集为合法版本集;股票领域链码的每一版本集中,1.0版本集、2.0版本集为合法版本集。
在本申请实施例中,可将合法版本集存储至状态数据库中,这意味着状态数据库中的合法版本集可被客户端调用,非法版本集不存储至状态数据库,从而,客户端不会调用到非法版本集对应的链码,降低调用非法版本集进行交易的风险性。
需要说明的是,背书节点将新版本集连接在所属版本树分支(即新增节点)这一动作可作为触发条件,用以触发背书节点创建上文提及的独立运行环境。当然,创建独立容器这一事件的触发条件不局限于此,本申请实施例不对此进行限制。
基于本实施提供的版本树创建流程,背书节点中存储有每一版本链码的版本集,即背书节点有链码安装、每一次升级的历史记录,每一领域链码的版本树分支中按照旧版本集到新版本集的顺序顺次连接,进而可根据后续的业务需求追溯链码版本,选取合适版本的链码作为提供交易业务的链码,提升用户体验。
结合图5、图7所示的实施例,以下给出本申请实施例提供的版本树管理方法的流程,如图9所示,该方法包括如下步骤:
S901、背书节点获取待升级链码对应的第一目标版本集。
S901的详细描述可参见S502的相关描述,这里不再赘述。
S902、背书节点根据第一目标版本集查询版本树。
可选的,第一目标版本集还包括链码所属领域或链码所属的版本树分支,用以指示背书节点查询相应的版本树分支。假定背书节点查询的版本树如图8所示,且第一目标版本链码所属的版本树分支为贵金属领域分支。
S903、背书节点判断版本树中是否存在第一目标版本的版本集,若版本树中存在第一目标版本的版本集且该第一目标版本的版本集为非法版本集,则执行S904、S905、S906,若版本树中存在第一目标版本的版本集且该第一目标版本的版本集为合法版本集,则执行S906,若版本树中不存在第一目标版本的版本集,则执行S907。
其中,第一目标版本为第一目标版本集的版本。
S904、背书节点确定第一目标版本集为非法版本集。
在一个示例中,假定需升级至版本4.0,即第一目标版本集为4.0版本集,如图8所示,在贵金属领域的版本树分支中,存在一个4.0版本集,且4.0版本集为非法版本集,那么,背书节点可确定第一目标版本集也为非法版本集。
S905、背书节点将第一目标版本集更新为第二目标版本集。
其中,第二目标版本集为第一目标版本集所属版本树的分支中版本最新的合法版本集。
结合上述举例,第一目标版本4.0为非法版本,则背书节点可将贵金属领域中最新的合法版本3.0版本作为第二目标版本,相应的,3.0版本集作为第二目标版本集。
S906、背书节点将更新后的目标版本集作为有效版本集。
结合上述S905中的举例,背书节点将状态数据库中贵金属领域的3.0版本集(即第二目标版本集)作为有效版本集,有效版本集用以被客户端调用,从而完成后续的客户端之间的交易。作为一种可能的实现方式,背书节点将状态数据库中贵金属领域的3.0版本集设置为有效,则后续客户端调用贵金属领域的链码时,直接调用该3.0版本的有效版本集。
或者,当用户指定将贵金属领域链码升级至3.0版本时,由于贵金属领域的版本树分支中已存在3.0版本的合法版本集,则背书节点直接将状态数据库中的3.0版本集设置为有效,用以被客户端调用。
S907、背书节点在独立运行环境内根据第一目标版本集对待升级链码进行模拟升级。
在一个示例中,用户指定将贵金属领域链码升级至5.0版本,由于版本树中不存在5.0版本的贵金属领域分支,则背书节点可执行图5所示的模拟升级流程,当确定5.0版本链码不会篡改世界状态后,背书节点将该5.0版本链码作为向客户端提供服务的链码。或者,当确定5.0版本链码会篡改世界状态后,背书节点执行上述S905和S906,将第一目标版本集更新为第二目标版本集,以便重新确定可用的有效版本集,其中,第二目标版本集为第一目标版本集所属版本树分支中版本最新的合法版本集。比如,如图8所示,若第一目标版本集(例如5.0版本集)的第二世界状态与第一世界状态不一致,说明5.0版本链码很可能会篡改区块链系统的世界状态,为了避免该情况发生,背书节点执行S905、S906,重新确定图8所示的贵金属领域中3.0版本集为有效版本集,并采用该3.0版本集为客户端提供服务。
基于本申请实施例提供的版本树管理方法,当需回退到某个链码版本时,可根据版本树快速的回退到最新的有效版本集,并且该有效版本集不会篡改世界状态,从而保证客户端之间的交易成功进行。例如,当用户重复上传非法版本集时,背书节点可通过查询版本树获知该非法版本集的历史情况,避免客户端调用该非法版本集对应的链码进行交易,提升交易安全性。并且,由于通过查询版本树已获知版本集是否为非法版本集,因此,无需再对版本集进行身份验证(即来自哪个客户端)、模拟升级等操作,简化了链码升级流程。
当然,本申请的版本树管理相关的业务场景不局限于图9所示的实施例,在另一些实施例中,区块链系统可能发生故障,用户无法及时对链码进行升级,此时,基于本申请实施例提供的版本树管理方法,背书节点可根据版本树回退至最新版本的有效版本集,从而确保客户端调用最新版本的有效版本集来进行交易。
本申请实施例可以根据上述方法示例对上述背书节点进行功能模块或者功能单元的划分,例如,可以对应各个功能划分各个功能模块或者功能单元,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块或者功能单元的形式实现。其中,本申请实施例中对模块或者单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
图10示出了上述实施例中所涉及的背书节点的一种可能的结构示意图。如图10所示,该背书节点1000包括:存储单元1001、处理单元1002和通信单元1003。
其中,存储单元1001,例如可存储链码对应的版本树。处理单元1002,用于对背书节点1000的动作进行控制管理,以执行本申请实施例的技术方案步骤。通信单元1003,用于支持背书节点1000与图1所示通信系统中的其他设备通信。例如,支持背书节点1000执行图5中的S501。
需要说明的是,存储单元1001可以实现为图2中的背书节点的存储器203。处理单元1002可以实现为图2中背书节点的处理器201或207,通信单元1003可以实现为图2中背书节点的收发器204。
其中,上述方法实施例涉及的各步骤的所有相关内容均可以援引到图10所示装置中对应功能模块的功能描述,在此不再赘述。
由于本申请实施例提供的背书节点可执行上述的资源配置方法,因此其所能获得的技术效果可参考上述方法实施例,在此不再赘述。
本申请实施例还提供一种计算机可读存储介质,计算机可读存储介质中存储有指令,当背书节点执行该指令时,该背书节点执行上述方法实施例所示的方法流程中背书节点执行的各个步骤。
其中,计算机可读存储介质,例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(Random Access Memory,RAM)、只读存储器(Read-Only Memory,ROM)、可擦式可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)、寄存器、硬盘、光纤、便携式紧凑磁盘只读存储器(Compact Disc Read-Only Memory,CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合、或者本领域熟知的任何其它形式的计算机可读存储介质。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于特定用途集成电路(Application Specific Integrated Circuit,ASIC)中。在本申请实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
可选的,本申请实施例还提供了一种芯片系统,应用于背书节点,该芯片系统包括处理器,用于支持背书节点实现上述各实施例中的方法,例如在容器内对待升级链码进行模拟升级。在一种可能的设计中,该芯片系统还包括存储器。该存储器,用于保存背书节点必要的程序指令和数据。当然,存储器也可以不在芯片系统中。该芯片系统,可以由芯片构成,也可以包含芯片和其他分立器件,本申请实施例对此不作具体限定。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (14)
1.一种链码升级方法,其特征在于,包括:
背书节点获取待升级链码对应的第一目标版本集,所述第一目标版本集包括第一目标版本的升级包、所述升级包的相关配置;
所述背书节点在独立的运行环境中根据所述第一目标版本集对所述待升级链码进行模拟升级,所述独立的运行环境不影响自身之外的运行环境;
若所述第一目标版本集的第二世界状态与第一世界状态一致,则所述背书节点在所述独立的运行环境外对所述待升级链码进行实际升级,所述第一世界状态为所述待升级链码模拟升级前的世界状态;所述第二世界状态为所述待升级链码在模拟升级后的世界状态;
若所述第一目标版本集的第二世界状态与所述第一世界状态不一致,则所述背书节点将所述第一目标版本集更新为第二目标版本集,所述第二目标版本集为所述第一目标版本集所属版本树的分支中版本最新的合法版本集,所述合法版本集的第二世界状态与第一世界状态一致。
2.根据权利要求1所述的链码升级方法,其特征在于,当所述第一目标版本集所属版本树的分支中存在第一目标版本的版本集,且所述第一目标版本的版本集的第二世界状态与第一世界状态不一致时,所述第一目标版本集的第二世界状态与第一世界状态不一致,其中,所述第一目标版本为所述第一目标版本集对应的版本。
3.根据权利要求2或1所述的链码升级方法,其特征在于,所述版本树包括根节点和子节点,所述子节点包括第一子节点和第二子节点,所述第一子节点为所述根节点的第一级子节点,所述第二子节点为除所述第一级子节点外的其他级子节点,每一第一子节点为一个领域链码的版本根节点,所述版本根节点下连接所述领域链码的第二子节点,所述领域链码的第一子节点和所述领域链码的第二子节点构成所述领域链码的版本树分支;每一子节点对应一个版本集,所述版本集包括版本的升级包和版本升级包的相关配置,不同领域链码具有不同的链码标识。
4.根据权利要求3所述的链码升级方法,其特征在于,所述第一目标版本集连接在所属版本树分支中最新版本的版本集后。
5.根据权利要求1或2或4所述的链码升级方法,其特征在于,在所述背书节点获取待升级链码对应的第一目标版本集之后,所述链码升级方法还包括:
若所述第一目标版本集的第二世界状态与第一世界状态一致,则所述背书节点将所述第一目标版本集存储至状态数据库;
若所述第一目标版本集的第二世界状态与第一世界状态不一致,则所述背书节点将所述第二目标版本集存储至状态数据库。
6.根据权利要求3所述的链码升级方法,其特征在于,在所述背书节点获取待升级链码对应的第一目标版本集之后,所述链码升级方法还包括:
若所述第一目标版本集的第二世界状态与第一世界状态一致,则所述背书节点将所述第一目标版本集存储至状态数据库;
若所述第一目标版本集的第二世界状态与第一世界状态不一致,则所述背书节点将所述第二目标版本集存储至状态数据库。
7.一种链码升级装置,其特征在于,所述链码升级装置设置有处理器、存储器;
所述存储器,用于存储包括程序指令的信息;
处理器,用于获取待升级链码对应的第一目标版本集,所述第一目标版本集包括第一目标版本的升级包、所述升级包的相关配置;在独立的运行环境中根据所述第一目标版本集对所述待升级链码进行模拟升级,所述独立的运行环境不影响自身之外的运行环境;若所述第一目标版本集的第二世界状态与第一世界状态一致,则在所述独立的运行环境外对所述待升级链码进行实际升级,所述第一世界状态为所述待升级链码模拟升级前的世界状态;所述第二世界状态为所述待升级链码模拟升级后的世界状态;
所述处理器,还用于若所述第一目标版本集的第二世界状态与所述第一世界状态不一致,则将所述第一目标版本集更新为第二目标版本集,所述第二目标版本集为所述第一目标版本集所属版本树的分支中版本最新的合法版本集,所述合法版本集的第二世界状态与第一世界状态一致。
8.根据权利要求7所述的链码升级装置,其特征在于,当所述第一目标版本集所属版本树的分支中存在第一目标版本的版本集,且所述第一目标版本的版本集的第二世界状态与第一世界状态不一致时,所述第一目标版本集的第二世界状态与第一世界状态不一致,其中,所述第一目标版本为所述第一目标版本集对应的版本。
9.根据权利要求7或8所述的链码升级装置,其特征在于,所述版本树包括根节点和子节点,所述子节点包括第一子节点和第二子节点,所述第一子节点为所述根节点的第一级子节点,所述第二子节点为除所述第一级子节点外的其他级子节点,每一第一子节点为一个领域链码的版本根节点,所述版本根节点下连接所述领域链码的第二子节点,所述领域链码的第一子节点和所述领域链码的第二子节点构成所述领域链码的版本树分支;每一子节点对应一个版本集,所述版本集包括版本的升级包和版本升级包的相关配置,不同领域链码具有不同的链码标识。
10.根据权利要求9所述的链码升级装置,其特征在于,所述第一目标版本集连接在所属版本树分支中最新版本的版本集后。
11.根据权利要求7或8或10所述的链码升级装置,其特征在于,
所述处理器,还用于若所述第一目标版本集的第二世界状态与第一世界状态一致,则将所述第一目标版本集存储至状态数据库;若所述第一目标版本集的第二世界状态与第一世界状态不一致,则将所述第二目标版本集存储至状态数据库。
12.根据权利要求9所述的链码升级装置,其特征在于,
所述处理器,还用于若所述第一目标版本集的第二世界状态与第一世界状态一致,则将所述第一目标版本集存储至状态数据库;若所述第一目标版本集的第二世界状态与第一世界状态不一致,则将所述第二目标版本集存储至状态数据库。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有程序或指令,当所述程序或指令被执行时,如权利要求1至6中任一项所述的链码升级方法被实现。
14.一种电路系统,其特征在于,所述电路系统包括处理电路,所述处理电路被配置为执行如权利要求1至6任意一项所述的链码升级方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810591924.1A CN110580624B (zh) | 2018-06-07 | 2018-06-07 | 链码升级方法及装置 |
PCT/CN2019/090206 WO2019233454A1 (zh) | 2018-06-07 | 2019-06-05 | 链码升级方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810591924.1A CN110580624B (zh) | 2018-06-07 | 2018-06-07 | 链码升级方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110580624A CN110580624A (zh) | 2019-12-17 |
CN110580624B true CN110580624B (zh) | 2022-02-18 |
Family
ID=68770083
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810591924.1A Active CN110580624B (zh) | 2018-06-07 | 2018-06-07 | 链码升级方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN110580624B (zh) |
WO (1) | WO2019233454A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111221568B (zh) * | 2020-01-10 | 2023-05-26 | 杭州趣链科技有限公司 | 一种基于物理机部署的Fabric链码生命周期管理系统 |
WO2024002468A1 (en) * | 2022-06-28 | 2024-01-04 | Huawei Cloud Computing Technologies Co., Ltd. | Automated smart contract hot updates |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106709704A (zh) * | 2016-11-23 | 2017-05-24 | 杭州秘猿科技有限公司 | 一种基于许可链的智能合约升级方法 |
CN106775619A (zh) * | 2016-11-12 | 2017-05-31 | 杭州复杂美科技有限公司 | 灵活区块链架构 |
CN106778329A (zh) * | 2016-11-28 | 2017-05-31 | 中国银行股份有限公司 | 一种区块链智能合约模板动态更新方法、装置及系统 |
CN106919419A (zh) * | 2017-02-03 | 2017-07-04 | 中钞信用卡产业发展有限公司北京智能卡技术研究院 | 区块链上的智能合约程序的更新方法及装置 |
CN107464148A (zh) * | 2017-08-23 | 2017-12-12 | 众安信息技术服务有限公司 | 一种基于联盟链的智能合约升级方法和系统 |
CN107562513A (zh) * | 2017-07-18 | 2018-01-09 | 杭州趣链科技有限公司 | 一种基于java的智能合约生命周期的管理方法 |
TWI614713B (zh) * | 2017-01-23 | 2018-02-11 | 現代財富控股有限公司 | 基於區塊鏈的智能合約版本控管系統及其方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107659536A (zh) * | 2016-07-25 | 2018-02-02 | 中兴通讯股份有限公司 | 一种应用区块链的方法、装置及系统 |
US20180123779A1 (en) * | 2016-11-01 | 2018-05-03 | Jiangang Zhang | Flexible Blockchain Smart-Contract Deployment |
US11176519B2 (en) * | 2016-11-11 | 2021-11-16 | International Business Machines Corporation | Smart contract admission check and fault tolerance in a blockchain |
CN107832139A (zh) * | 2017-09-26 | 2018-03-23 | 上海点融信息科技有限责任公司 | 用于管理区块链节点的计算资源的方法、设备和系统 |
CN107943580A (zh) * | 2017-11-13 | 2018-04-20 | 上海点融信息科技有限责任公司 | 用于管理区块链节点处的用户智能合约的方法以及设备 |
-
2018
- 2018-06-07 CN CN201810591924.1A patent/CN110580624B/zh active Active
-
2019
- 2019-06-05 WO PCT/CN2019/090206 patent/WO2019233454A1/zh active Application Filing
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106775619A (zh) * | 2016-11-12 | 2017-05-31 | 杭州复杂美科技有限公司 | 灵活区块链架构 |
CN106709704A (zh) * | 2016-11-23 | 2017-05-24 | 杭州秘猿科技有限公司 | 一种基于许可链的智能合约升级方法 |
CN106778329A (zh) * | 2016-11-28 | 2017-05-31 | 中国银行股份有限公司 | 一种区块链智能合约模板动态更新方法、装置及系统 |
TWI614713B (zh) * | 2017-01-23 | 2018-02-11 | 現代財富控股有限公司 | 基於區塊鏈的智能合約版本控管系統及其方法 |
CN106919419A (zh) * | 2017-02-03 | 2017-07-04 | 中钞信用卡产业发展有限公司北京智能卡技术研究院 | 区块链上的智能合约程序的更新方法及装置 |
CN107562513A (zh) * | 2017-07-18 | 2018-01-09 | 杭州趣链科技有限公司 | 一种基于java的智能合约生命周期的管理方法 |
CN107464148A (zh) * | 2017-08-23 | 2017-12-12 | 众安信息技术服务有限公司 | 一种基于联盟链的智能合约升级方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
WO2019233454A1 (zh) | 2019-12-12 |
CN110580624A (zh) | 2019-12-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI737944B (zh) | 基於區塊鏈的交易執行方法及裝置、電子設備 | |
JP6946435B2 (ja) | スマートコントラクトへ、確認済みで、監査可能で且つ不変の入力を提供する方法及びシステム | |
US10269011B2 (en) | Configuring a plurality of security isolated wallet containers on a single mobile device | |
US10546284B2 (en) | Mobile wallet as provider of services consumed by service provider applications | |
US10026079B2 (en) | Selecting ecosystem features for inclusion in operational tiers of a multi-domain ecosystem platform for secure personalized transactions | |
WO2020220761A1 (zh) | 基于区块链的缴费代扣签约方法及装置、电子设备 | |
CN110874739B (zh) | 实现高完整性、高带宽、低延迟、安全处理的分布式计算和存储网络 | |
US20200380505A1 (en) | Auto-pilot transactions using smart contracts | |
EP4102768A1 (en) | Blockchain-based transaction methods | |
CN109493203A (zh) | 一种数据核算方法、装置及存储介质 | |
CN110400217B (zh) | 智能合约的规则变更处理方法及装置 | |
US10474506B1 (en) | Finite state machine driven workflows | |
CN111047327A (zh) | 一种智能合约的执行方法、装置及设备 | |
CN110580624B (zh) | 链码升级方法及装置 | |
CN109711840A (zh) | 一种交易数据处理方法、装置及存储介质 | |
KR101306173B1 (ko) | 보조금 사업 통합 관리 서버 및 방법 | |
CN110033367A (zh) | 基于区块链的合同记录方法及装置、电子设备 | |
CN111325586B (zh) | 基于区块链网络的票据代开方法、装置、服务器及介质 | |
WO2023091082A1 (en) | Methods and systems for transaction processing using a blockchain | |
CN115018499A (zh) | 一种基于区块链的数字凭证发行方法、装置和系统 | |
CN114066451A (zh) | 管理资金交易的方法和系统、电子设备 | |
CN113592646A (zh) | 智能合约的执行方法、装置和系统 | |
KR20200092210A (ko) | 계층화된 스마트 컨트랙트를 포함하는 블록체인 노드 및 그 블록체인 노드의 동작 방법 | |
KR102227442B1 (ko) | 본인정보 판매대금 정산 방법 | |
KR20230094701A (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 |