本发明涉及数据处理的技术领域,特别是涉及一种基于以太坊的智能合约更新方法及系统、存储介质及终端。
背景技术:
区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。狭义来讲,区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。广义来讲,区块链技术是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算方式。
以太坊(ethereum)是一个开源的有智能合约功能的公共区块链平台,通过其专用加密货币以太币(ether)提供去中心化的虚拟机来处理点对点合约。随着区块链的普及与使用,以太坊作为基础链已经被大家逐渐接受。越来越多的公司或个人都希望在以太坊上搭建属于自己的分散式的应用程序(decentralizedapplication,dapp)解决方案,从而提供相应的区块链业务解决方案。
区块链技术最初是作为比特币底层技术被提出来的,以比特币为代表的区块链1.0技术以分布式记账为其主要功能,提供去中心化、不可篡改、不可伪造、可追溯的分布式账本,但并不支持在此上面进行开发。以以太坊为代表的区块链2.0技术在此基础上加入了智能合约的功能,使得所有人都可以上面编写自己的智能合约,提供了更丰富的应用场景和功能实现。智能合约(smartcontract)是一种旨在以信息化方式传播、验证或执行合同的计算机协议,就像一个可以被信任的人,总是按照事先的规则执行,从而允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。智能合约概念于1995年由nickszabo首次提出,目的是提供优于传统合约的安全方法,并减少与合约相关的其他交易成本。智能合约的概念并不是随着区块链技术诞生的,但区块链技术给智能合约带来得天独厚的应用前提。
具体地,智能合约包括以下三个主要特点:
(1)自治
自治表示合约一旦启动就会自动运行,而不需要他的发起者进行任何干预。
(2)自足
自足表示智能合约通过提供服务或者锁定数字资产以获取资源,预先定义的条件被出发后,智能合约就执行相应的逻辑。
(3)去中心化
去中心化表示智能合约一旦生成,无论是谁都不能进行干预,直至合约被完成。
现有技术中,基于智能合约开发出不同功能的应用,包括数字合同、数字资产、数字版权等。但是,由于区块链的特性,使得智能合约在使用过程中也存在以下不足:
1、对于智能合约的所有调用都需要知道合约的地址,每次更新合约相当于重新发布一个合约,地址也要更新。使用者需要使用最新的合约地址才能正常调用合约功能,不仅操作繁琐,且容易发生错误。
2、每次更新合约时,之前记录在合约里的业务数据,要么从旧合约里导入到新合约里,要么重新记录数据,影响了业务的连续性。
3、由于区块链的公开透明性,合约接口和数据是对所有人开放的。对于重要接口可能需要做权限控制,以防止恶意调用。如果有多个业务合约,对于每个合约进行权限管理将增加操作的复杂性。
技术实现要素:
鉴于以上所述现有技术的缺点,本发明的目的在于提供一种基于以太坊的智能合约更新方法及系统、存储介质及终端,将所有合约的地址和用户的权限级别进行统一管理,满足业务更新升级的需求。
为实现上述目的及其他相关目的,本发明提供一种基于以太坊的智能合约更新方法,包括以下步骤:基于管理合约管理所有合约的最新地址,并在调用合约时反馈所调用合约的最新地址;基于所述管理合约设置用户在一个或多个合约中的合约调用权限。
于本发明一实施例中,基于接口合约实现业务模块的调用。
于本发明一实施例中,基于用户接口合约实现用户对业务模块的调用。
于本发明一实施例中,基于底层链接口合约实现底层链对业务模块的调用。
于本发明一实施例中,将业务模块划分为业务逻辑合约和业务数据合约,在所述业务逻辑合约和所述业务数据合约的更新彼此独立。
于本发明一实施例中,发布合约时,首先发布所述管理合约,再发布其他合约,并在所述管理合约中设置所述其他合约的最新地址。
于本发明一实施例中,基于财务合约管理所有业务模块的财务,并记录财务日志。
对应地,本发明提供一种基于以太坊的智能合约更新系统,包括地址管理模块和权限管理模块;
所述地址管理模块用于基于管理合约管理所有合约的最新地址,并在调用合约时反馈所调用合约的最新地址;
所述权限管理模块用于基于所述管理合约设置用户在一个或多个合约中的合约调用权限。
本发明提供一种存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述的基于以太坊的智能合约更新方法。
最后,本发明提供一种终端,包括:处理器及存储器;
所述存储器用于存储计算机程序;
所述处理器用于执行所述存储器存储的计算机程序,以使所述终端执行上述的基于以太坊的智能合约更新方法。
如上所述,本发明所述的基于以太坊的智能合约更新方法及系统、存储介质及终端,具有以下有益效果:
(1)在保持合约业务数据和接口不变的同时,能够更新合约的业务逻辑,满足业务更新升级的需求;
(2)通过将各个业务模块化,提供统一的接口合约,使得用户仅基于接口合约的地址就能够使用所有的业务功能,从而将用户请求的接口合约和真正的业务逻辑合约分离;
(3)将每个业务模块的逻辑和数据分离,保证每次更新业务逻辑后,可以继续使用更新前的业务数据;
(4)将所有的接口合约、逻辑合约、数据合约统一在管理合约里进行管理,所有合约需要调用其它合约接口的请求都需要从管理合约获取相应合约的地址,从而保证所有合约都能及时获取最新的合约地址;
(5)在管理合约里对调用接口的用户进行了权限控制,能控制不同角色的用户调用不同权限级别的接口;
(6)简化了智能合约更新流程,极大地提升了用户体验。
附图说明
图1显示为本发明的基于以太坊的智能合约更新方法于一实施例中的流程图;
图2显示为本发明的基于以太坊的智能合约更新系统于一实施例中的结构示意图;
图3显示为本发明的终端于一实施例中的结构示意图。
元件标号说明
21地址管理模块
22权限管理模块
31处理器
32存储器
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
本发明的基于以太坊的智能合约更新方法及系统、存储介质及终端将所有合约的地址记录在管理合约中,将用户对不同合约的调用权限在管理合约中进行统一管理,从而简化了合约调用的流程,满足业务更新升级的需求,极大地提升了用户需求。
如图1所示,于一实施例中,本发明的基于以太坊的智能合约更新方法包括以下步骤:
步骤s1、基于管理合约管理所有合约的最新地址,并在调用合约时反馈所调用合约的最新地址。
具体地,在本发明中设置一管理合约,用于记录所有合约的最新地址、版本号和发布时间等信息。每次有新的合约发布时,都需要通过接口setcontract(contractname,contractaddress)在管理合约中设置该合约的最新地址,以便其他合约通过接口findcontract(contractname)获取该合约的最新地址。
当需要调用任一合约时,均需在所述管理合约中查找对应的最新地址,从而避免了合约地址变化带来的调用错误,且简化了操作。
需要说明的是,在一般情况下,所述管理合约的地址保持不变。
步骤s2、基于所述管理合约设置用户在一个或多个合约中的合约调用权限。
具体地,用户针对任一合约的合约调用权限,均通过接口roleadd(rolename,addressuser)在所述管理合约中进行设置,即将用户添加到相应角色里,如管理角色、合约角色、普通用户等,可以基于业务需求设置权限角色。其他合约可以根据用户地址,通过接口rolehas(rolename,addressuser)进行权限控制。
于本发明一实施例中,本发明的基于以太坊的智能合约更新方法基于接口合约实现业务模块的调用。具体地,通过统一的接口合约实现合约调用,用户只需知道接口合约的地址,即可使用所有的业务功能,从而将用户请求的接口合约和真正的业务逻辑合约分离。具体地,接口合约分为用户接口合约和底层链接口合约,分别用于实现用户和底层链的业务模块调用。其中,基于用户接口合约实现用户对业务模块的调用;基于底层链接口合约实现底层链对业务模块的调用。一般情况下,如果业务接口签名不变,只是逻辑变化,用户接口合约不会更新。一般情况下,底层链接口合约不发生变化。当需要进行业务模块的调用时,调用对应的接口合约,从管理合约中获取所调用合约的最新地址,从而实现合约调用,操作简单,准确度高。
于本发明一实施例中,本发明的基于以太坊的智能合约更新方法中,将业务模块划分为业务逻辑合约和业务数据合约,从而将业务逻辑合约和业务数据合约彼此隔离。在所述业务逻辑合约和所述业务数据合约的更新彼此独立。也就是说,当所述业务逻辑合约更新时,所述业务数据合约保持不变,仍可应用于更新后的业务模块中,从而保证业务的连续性。当所述业务数据合约更新时,所述业务逻辑合约保持不变,从而简化了合约更新流程。
于本发明一实施例中,发布合约时,首先发布所述管理合约,再发布其他合约,并在所述管理合约中设置所述其他合约的最新地址。其中,其他合约的发布顺序无要求。
于本发明一实施例中,本发明的基于以太坊的智能合约更新方法中还设置有财务合约,用于管理所有业务模块的财务,并记录财务日志。同时,在其他合约更新的同时,不会影响到相应的业务模块涉及的财务。
如图2所示,于一实施例中,本发明的基于以太坊的智能合约更新系统包括地址管理模块21和权限管理模块22。
地址管理模块21用于基于管理合约管理所有合约的最新地址,并在调用合约时反馈所调用合约的最新地址。
具体地,在本发明中设置一管理合约,用于记录所有合约的最新地址、版本号和发布时间等信息。每次有新的合约发布时,都需要通过接口setcontract(contractname,contractaddress)在管理合约中设置该合约的最新地址,以便其他合约通过接口findcontract(contractname)获取该合约的最新地址。
当需要调用任一合约时,均需在所述管理合约中查找对应的最新地址,从而避免了合约地址变化带来的调用错误,且简化了操作。
需要说明的是,在一般情况下,所述管理合约的地址保持不变。
权限管理模块22用于基于所述管理合约设置用户在一个或多个合约中的合约调用权限。
具体地,用户针对任一合约的合约调用权限,均通过接口roleadd(rolename,addressuser)在所述管理合约中进行设置,即将用户添加到相应角色里,如管理角色、合约角色、普通用户等,可以基于业务需求设置权限角色。其他合约可以根据用户地址,通过接口rolehas(rolename,addressuser)进行权限控制。
于本发明一实施例中,本发明的基于以太坊的智能合约更新系统基于接口合约实现业务模块的调用。具体地,通过统一的接口合约实现合约调用,用户只需知道接口合约的地址,即可使用所有的业务功能,从而将用户请求的接口合约和真正的业务逻辑合约分离。具体地,接口合约分为用户接口合约和底层链接口合约,分别用于实现用户和底层链的业务模块调用。其中,基于用户接口合约实现用户对业务模块的调用;基于底层链接口合约实现底层链对业务模块的调用。一般情况下,如果业务接口签名不变,只是逻辑变化,用户接口合约不会更新。一般情况下,底层链接口合约不发生变化。当需要进行业务模块的调用时,调用对应的接口合约,从管理合约中获取所调用合约的最新地址,从而实现合约调用,操作简单,准确度高。
于本发明一实施例中,本发明的基于以太坊的智能合约更新系统中,将业务模块划分为业务逻辑合约和业务数据合约,从而将业务逻辑合约和业务数据合约彼此隔离。在所述业务逻辑合约和所述业务数据合约的更新彼此独立。也就是说,当所述业务逻辑合约更新时,所述业务数据合约保持不变,仍可应用于更新后的业务模块中,从而保证业务的连续性。当所述业务数据合约更新时,所述业务逻辑合约保持不变,从而简化了合约更新流程。
于本发明一实施例中,发布合约时,首先发布所述管理合约,再发布其他合约,并在所述管理合约中设置所述其他合约的最新地址。其中,其他合约的发布顺序无要求。
于本发明一实施例中,本发明的基于以太坊的智能合约更新系统中还设置有财务合约,用于管理所有业务模块的财务,并记录财务日志。同时,在其他合约更新的同时,不会影响到相应的业务模块涉及的财务。
需要说明的是,应理解以上装置的各个模块的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且这些模块可以全部以软件通过处理元件调用的形式实现,也可以全部以硬件的形式实现,还可以部分模块通过处理元件调用软件的形式实现,部分模块通过硬件的形式实现。例如:x模块可以为单独设立的处理元件,也可以集成在上述装置的某一个芯片中实现。此外,x模块也可以以程序代码的形式存储于上述装置的存储器中,由上述装置的某一个处理元件调用并执行以上x模块的功能。其它模块的实现与之类似。这些模块全部或部分可以集成在一起,也可以独立实现。这里所述的处理元件可以是一种集成电路,具有信号的处理能力。在实现过程中,上述方法的各步骤或以上各个模块可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(applicationspecificintegratedcircuit,简称asic),一个或多个微处理器(digitalsingnalprocessor,简称dsp),一个或者多个现场可编程门阵列(fieldprogrammablegatearray,简称fpga)等。当以上某个模块通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,如中央处理器(centralprocessingunit,简称cpu)或其它可以调用程序代码的处理器。这些模块可以集成在一起,以片上系统(system-on-a-chip,简称soc)的形式实现。
本发明的存储介质上存储有计算机程序,该程序被处理器执行时实现上述的基于以太坊的智能合约更新方法。所述存储介质包括:rom、ram、磁碟、u盘、存储卡或者光盘等各种可以存储程序代码的介质。
如图3所示,于一实施例中,本发明的终端包括:处理器31及存储器32。
所述存储器32用于存储计算机程序。
所述存储器32包括:rom、ram、磁碟、u盘、存储卡或者光盘等各种可以存储程序代码的介质。
所述处理器31与所述存储器32相连,用于执行所述存储器32存储的计算机程序,以使所述终端执行上述的基于以太坊的智能合约更新方法。
优选地,所述处理器31可以是通用处理器,包括中央处理器(centralprocessingunit,简称cpu)、网络处理器(networkprocessor,简称np)等;还可以是数字信号处理器(digitalsignalprocessor,简称dsp)、专用集成电路(applicationspecificintegratedcircuit,简称asic)、现场可编程门阵列(fieldprogrammablegatearray,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
综上所述,本发明的基于以太坊的智能合约更新方法及系统、存储介质及终端将所有合约的地址和用户的权限级别进行统一管理,满足业务更新升级的需求;通过将各个业务模块化,提供统一的接口合约,使得用户仅基于接口合约的地址就能够使用所有的业务功能,从而将用户请求的接口合约和真正的业务逻辑合约分离;将每个业务模块的逻辑和数据分离,保证每次更新业务逻辑后,可以继续使用更新前的业务数据;将所有的接口合约、逻辑合约、数据合约统一在管理合约里进行管理,所有合约需要调用其它合约接口的请求都需要从管理合约获取相应合约的地址,从而保证所有合约都能及时获取最新的合约地址;在管理合约里对调用接口的用户进行了权限控制,能控制不同角色的用户调用不同权限级别的接口;简化了智能合约更新流程,极大地提升了用户体验。因此,本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。
上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。