一种基于联盟链的智能合约升级方法和系统技术方案

技术编号:16780500 阅读:24 留言:0更新日期:2017-12-13 00:27
本发明专利技术公开了一种基于联盟链的智能合约升级方法,其包括步骤:100:通过联盟链调用入口发起升级交易,提交新智能合约的执行代码;200:联盟链调用入口对升级交易进行第一校验;300:升级交易由原始智能合约的创建者发起时,升级交易才被提交至联盟链的节点;400:节点对升级交易进行第二校验;500:只有在第二校验结果为升级交易是由原始智能合约的创建者通过授权节点发起时,升级交易才被提交至整个联盟链;600:联盟链接收并执行升级交易,并将新智能合约的执行代码写入相应的原始智能合约的存储位置。此外还公开了相应的系统。本发明专利技术可以在保证兼容性的前提下实现智能合约的低成本升级。

【技术实现步骤摘要】
一种基于联盟链的智能合约升级方法和系统
本专利技术涉及区块链开发技术,尤其涉及一种智能合约升级方法和系统。
技术介绍
区块链(BlockChain)技术是基于去中心化的对等网络,将密码学原理与共识机制相结合,来保障分布式各节点的数据连贯和持续,实现信息即时验证、可追溯、难篡改等特性,从而创造了一套隐私、高效、安全的分布式信任体系。区块链根据访问权限,通常可以分为公有链、联盟链和私有链。公有链是指任何人都可以根据协议接入并参与共识的区块链;联盟链是指共识过程受到预选节点控制的区块链;私有链是指权限在一个组织中,并受该组织完全控制的区块链。智能合约是指运行在区块链上的实现复杂功能的去中心化应用框架。智能合约通常由高级语言编写,经对应编译器编译之后生成区块链能够识别并执行的编码,部署在区块链之中,提供相应的功能。在现有的区块链技术中,智能合约部署成功之后,便无法进行修改。但是在实际情况中,智能合约可能存在漏洞,并且存在希望在约定允许的范围内对智能合约进行局部修改的需求。而无法修改的特性,会导致合约因漏洞而造成严重后果,以及因极小的改动需求而不得不创建新合约所带来的冗余工作。因此,智能合约的升级问题成为制约智能合约灵活性的关键问题。针对上述问题,现有的技术方案主要有两种:第一种是在智能合约的业务逻辑中实现。通过配置路由合约,间接地调用动态合约的功能,在需要进行合约升级时,由路由合约更新动态合约,实现间接升级合约的功能。第二种是修改智能合约的执行过程以及存储逻辑,通过约定合约保留方法和定制数据结构,实现直接升级合约的功能。上述现有技术具有以下缺点:第一种间接升级合约的方法需要编写极其复杂的路由合约,合约的存储与执行都需要额外消耗大量资源。同时,如果路由合约本身存在漏洞,是无法升级路由合约本身的。第二种直接升级合约的方法虽然避免了消耗大量资源的缺点,但是需要约定合约保留方法并定制特殊的数据结构。首先约定合约保留方法限制了智能合约的灵活性,其次定制数据结构导致与现有的运行中的区块链不再兼容,该方案只能实施在新建的区块链之中。
技术实现思路
本专利技术的目的之一是提供一种基于联盟链的智能合约升级方法,基于该方法可以在保证兼容性的前提下实现智能合约的低成本升级。根据上述目的,本专利技术提出了一种基于联盟链的智能合约升级方法,其包括步骤:100:通过联盟链调用入口发起对部署在联盟链上的原始智能合约进行升级的升级交易,提交原始智能合约升级后的新智能合约的执行代码;200:联盟链调用入口对所述升级交易进行第一校验,以校验升级交易是否由原始智能合约的创建者发起;300:只有在第一校验结果为升级交易由原始智能合约的创建者发起时,所述升级交易才被提交至联盟链的节点;400:接收到所述升级交易的联盟链的节点对升级交易进行第二校验,以校验所述升级交易是否由原始智能合约的创建者通过授权节点发起;500:只有在第二校验结果为所述升级交易是由原始智能合约的创建者通过授权节点发起时,所述升级交易才被提交至整个联盟链;600:联盟链接收并执行所述升级交易,并将所述新智能合约的执行代码写入相应的原始智能合约的存储位置。本专利技术所述的基于联盟链的智能合约升级方法,其通过联盟链调用入口对所述升级交易进行第一校验,以校验升级交易是否由原始智能合约的创建者发起,还通过联盟链的节点对升级交易进行第二校验,以校验所述升级交易是否由原始智能合约的创建者通过授权节点发起,从而实现升级权限的校验,在通过升级权限校验后,就可以以不修改现有联盟链的数据存储结构并保留原始智能合约原有的状态数据的方式,将所述新智能合约的执行代码写入相应的原始智能合约的存储位置,从而在保证兼容性的前提下实现智能合约的低成本升级。其中:步骤100中,通常智能合约需要进行升级的情况主要包括两种,第一种是合约存在漏洞,第二种是合约需要进行局部修改以改变合约行为。如果需要大幅度修改智能合约,通常创建一份新的智能合约将是更加合理的方案,而非选择升级。因此,在本专利技术中,通常约定合约升级的范围为保留原有的合约状态变量不变,允许追加状态变量,并且允许对合约方法进行增删改。步骤200-步骤500涉及升级权限的校验。为了保证合约升级的安全性,本专利技术仅允许原始智能合约的创建者通过授权节点发起合约升级。由此升级权限的校验分为两部分。第一部分是校验升级交易是否由原始智能合约的创建者发起,对应步骤200和步骤300的第一校验。第二部分是校验所述升级交易是否由原始智能合约的创建者通过授权节点发起,对应步骤400和步骤500的第二校验。智能合约升级是区块链交易中影响较大的操作,通常不允许任意节点发起,因此联盟链通常校验升级交易的发起节点对交易的签名,如果为非授权节点,则拒绝继续执行该交易并停止向联盟链中继续广播该交易。步骤600涉及升级交易的执行。联盟链在执行升级交易时,将新智能合约的执行代码写入相应的原始智能合约的存储位置。由于在步骤100中通常约定在合约升级时,合约已有的状态变量保持不变,仅允许追加变量,因此根据智能合约对状态变量的定位规则,合约升级之后,将不影响已有的合约状态变量值。另外,根据联盟链保留历史的特性,修改仅发生在新生成的区块中,若追溯到历史区块中,执行当时的合约,其结果完全不受后续升级影响。至此,智能合约升级完成。智能合约升级完成后,使用新的调用方法进行合约调用,将得到预期的结果。同时旧的调用方法将不再得到支持,如果强行使用旧的调用方法进行调用,根据合约的修改程度,将得到或正确或错误的结果。进一步地,本专利技术所述的基于联盟链的智能合约升级方法中,步骤100还包括提交原始智能合约的地址。上述方案中,所述原始智能合约的地址可以用于确定原始智能合约的存储位置。此外,所述原始智能合约的地址还可以用于升级权限的校验。更进一步地,上述基于联盟链的智能合约升级方法中,在步骤200中,联盟链调用入口基于原始智能合约的创建者的账户地址以及原始智能合约的创建者的当前账户nonce值进行计算得到一判定nonce值,如果该判定nonce值与原始智能合约的创建者的账户地址进行计算能够得到所述原始智能合约的地址,则判定升级交易是由原始智能合约的创建者发起,如果该判定nonce值与原始智能合约的创建者的账户地址进行计算不能得到所述原始智能合约的地址,则判定升级交易不是由原始智能合约的创建者发起。也就是说,在步骤200中,本专利技术所述的方法是在通过计算“寻找”一个满足条件的nonce值,基于原始智能合约的创建者的账户地址和该nonce值计算,能够得到原始智能合约的地址。nonce值是指账户含有的一个连续递增的数值。进一步地,本专利技术所述的基于联盟链的智能合约升级方法中,在步骤300中,所述升级交易被打包成标准格式交易被提交至联盟链的节点。上述方案中,升级交易通常根据现有的标准交易格式被打包成标准格式交易,保证兼容性,并避免因定制专门的保留方法而牺牲智能合约的灵活性。标准格式的升级交易通常包括作为升级交易识别标志的一个预编译合约地址、原始智能合约的地址、原始智能合约的创建者在创建原始智能合约时的账户nonce值。其中预编译合约地址是联盟链中为实现特殊功能而保留的若干地址。进一步地,本专利技术所述的基于联盟链的智能合约升级方法中,将原始智能合约的地址本文档来自技高网
...
一种基于联盟链的智能合约升级方法和系统

【技术保护点】
一种基于联盟链的智能合约升级方法,其特征在于,包括步骤:100:通过联盟链调用入口发起对部署在联盟链上的原始智能合约进行升级的升级交易,提交原始智能合约升级后的新智能合约的执行代码;200:联盟链调用入口对所述升级交易进行第一校验,以校验升级交易是否由原始智能合约的创建者发起;300:只有在第一校验结果为升级交易由原始智能合约的创建者发起时,所述升级交易才被提交至联盟链的节点;400:接收到所述升级交易的联盟链的节点对升级交易进行第二校验,以校验所述升级交易是否由原始智能合约的创建者通过授权节点发起;500:只有在第二校验结果为所述升级交易是由原始智能合约的创建者通过授权节点发起时,所述升级交易才被提交至整个联盟链;600:联盟链接收并执行所述升级交易,并将所述新智能合约的执行代码写入相应的原始智能合约的存储位置。

【技术特征摘要】
1.一种基于联盟链的智能合约升级方法,其特征在于,包括步骤:100:通过联盟链调用入口发起对部署在联盟链上的原始智能合约进行升级的升级交易,提交原始智能合约升级后的新智能合约的执行代码;200:联盟链调用入口对所述升级交易进行第一校验,以校验升级交易是否由原始智能合约的创建者发起;300:只有在第一校验结果为升级交易由原始智能合约的创建者发起时,所述升级交易才被提交至联盟链的节点;400:接收到所述升级交易的联盟链的节点对升级交易进行第二校验,以校验所述升级交易是否由原始智能合约的创建者通过授权节点发起;500:只有在第二校验结果为所述升级交易是由原始智能合约的创建者通过授权节点发起时,所述升级交易才被提交至整个联盟链;600:联盟链接收并执行所述升级交易,并将所述新智能合约的执行代码写入相应的原始智能合约的存储位置。2.如权利要求1所述的基于联盟链的智能合约升级方法,其特征在于,步骤100还包括提交原始智能合约的地址。3.如权利要求2所述的基于联盟链的智能合约升级方法,其特征在于,在步骤200中,联盟链调用入口基于原始智能合约的创建者的账户地址以及原始智能合约的创建者的当前账户nonce值进行计算得到一判定nonce值,如果该判定nonce值与原始智能合约的创建者的账户地址进行计算能够得到所述原始智能合约的地址,则判定升级交易是由原始智能合约的创建者发起,如果该判定nonce值...

【专利技术属性】
技术研发人员:曹京奇邴凯
申请(专利权)人:众安信息技术服务有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1