一种兼顾安全与性能的区块链合约建立方法及系统与流程

文档序号:16063427发布日期:2018-11-24 12:25阅读:239来源:国知局

本发明涉及区块链技术领域,尤其涉及一种兼顾安全与性能的区块链合约建立方法及系统。

背景技术

为了适应更多的应用场景,区块链引入了合约机制,允许第三方编写、签名部署、签名调用合约。由于合约的调用执行可能引发计算资源(包括cpu、内存和存储)的过度占用,区块链通常采用所谓的“安全沙箱”,将合约的执行隔离在一个合约容器内。

合约容器采用进程隔离,监视和约束合约执行进程对计算资源的占用,一旦发现异常,将强制终止合约执行并释放计算资源。从而确保区块链节点本身的安全。由于合约的执行依赖区块链节点提供执行上下文并调用区块链节点提供的底层api,因此需要在合约容器与区块链节点之间进行跨进程通信和api调用,导致合约执行性能的下降。



技术实现要素:

本发明提供的兼顾安全与性能的区块链合约建立方法及系统,能够通过引入actor模型,实现对合约部署策略自适应调整,提高合约部署策略的灵活性,更好的同时兼顾合约执行的安全性和合约执行性能。

第一方面,本发明提供一种兼顾安全与性能的区块链合约建立方法,包括:

将部署至区块链节点进程、或单独的合约执行进程运行的合约对应合约容器封装为actor,以使合约调用者通过异步消息接收向合约容器发起合约调用、以及返回执行结果;

根据合约安全程度,选择将合约部署至区块链节点进程运行、或单独的合约执行进程运行。

可选地,所述根据合约安全程度,选择将合约部署至区块链节点进程运行、或单独的合约执行进程运行包括:

获取合约开发场景;

根据合约开发场景判断合约是否为安全程度高的受信任合约;

如果合约为安全程度高的受信任合约,则将合约部署至区块链节点进程运行;

如果合约为安全程度低的不受信任合约,则将合约部署至单独的合约执行进程运行,其中,所述单独的合约执行进程隔离在区块链节点进程外。

可选地,所述根据合约开发场景判断合约是否为安全程度高的受信任合约包括:

如果合约开发场景为平台内置的基础合约,则所述基础合约安全性高,并将其作为受信任合约;

如果合约开发环境为第三方开发的合约,则所述第三方开发的合约安全性低,并将其作为不受信任合约。

可选地,在所述将部署至区块链节点进程、或单独的合约执行进程运行的合约对应合约容器封装为actor之后,所述方法还包括:

将共识策略封装为actor;

由封装为actor的共识策略通过异步消息调用由actor封装在区块链节点进程运行合约的第一合约容器;

由封装为actor的共识策略通过异步消息调用由actor封装在单独的合约执行进程运行合约的第二合约容器。

可选地,所述通过异步消息发起第一合约容器和第二合约容器传入传出格式均一致。

可选地,在所述将部署至区块链节点进程、或单独的合约执行进程运行的合约对应合约容器封装为actor之后,所述方法还包括:

由封装为actor的共识策略通过集群调用设置于其他主机上并由actor封装在区块链节点进程运行合约的第三合约容器、或设置于其他主机上并由actor封装在单独的合约执行进程运行合约的第四合约容器。

可选地,所述选择部署模块包括:

获取子模块,用于获取合约开发场景;

判断子模块,用于根据合约开发场景判断合约是否为安全程度高的受信任合约;

第一部署子模块,用于如果合约为安全程度高的受信任合约,则将合约部署至区块链节点进程运行;

第二部署子模块,用于如果合约为安全程度低的不受信任合约,则将合约部署至单独的合约执行进程运行,其中,所述单独的合约执行进程隔离在区块链节点进程外。

可选地,所述系统还包括:

共识封装模块,用于将共识策略封装为actor;

第一调用模块,用于由封装为actor的共识策略通过异步消息调用由actor封装在区块链节点进程运行合约的第一合约容器;

第二调用模块,用于由封装为actor的共识策略通过异步消息调用由actor封装在单独的合约执行进程运行合约的第二合约容器。

可选地,所述系统还包括:

集群调用模块,用于由封装为actor的共识策略通过集群调用设置于其他主机上并由actor封装在区块链节点进程运行合约的第三合约容器、或设置于其他主机上并由actor封装在单独的合约执行进程运行合约的第四合约容器。

本发明实施例提供的兼顾安全与性能的区块链合约建立方法及系统,所述方法主要是引入actor模型,将合约容器封装为actor,从而实现对合约的透明化调用,进而使得进程内、跨进程、或者跨主机、跨链合约调用的代码完全一致。所述方法还能够根据合约开发场景选择最佳的合约部署策略,同时最大化提高区块链合约机制的性能、以及安全性。本实施例所述方法主要是根据合约开发场景确定合约部署策略;例如,根据合约开发场景确定合约的可信任级别,然后按照合约的可信任级别,采用与之相应的合约部署策略,对可信任的合约性能优先,采用区块链节点进程内部署;对第三方合约安全优先,采用单独的合约执行进程隔离的部署;或者根据合约开发场景确定合约交易种类,采用与之相应的合约部署策略,通过自适应合约部署策略,提高合约部署策略的灵活性,更好的同时兼顾合约执行的安全性和合约执行性能。

附图说明

图1为本发明一实施例区块链合约建立方法的流程图;

图2为本发明另一实施例区块链合约建立方法的流程图;

图3为本发明一实施例区块链合约建立系统的结构示意图;

图4为本发明另一实施例区块链合约建立系统的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例提供一种兼顾安全与性能的区块链合约建立方法,如图1所示,所述方法包括:

s11、将部署至区块链节点进程、或单独的合约执行进程运行的合约对应合约容器封装为actor,以使合约调用者通过异步消息接收向合约容器发起合约调用、以及返回执行结果;

s12、根据合约安全程度,选择将合约部署至区块链节点进程运行、或单独的合约执行进程运行。

本发明实施例提供的兼顾安全与性能的区块链合约建立方法主要是引入actor模型,其中,所述actor模型是著名的并发计算模型,目前其已成为研制并发面向对象语言的一种重要的基础模型,将合约容器封装为actor,从而通过将合约容器actor化实现对合约的透明化调用,进而使得进程内、跨进程、或者跨主机、跨链合约调用的代码完全一致。所述方法还能够根据合约开发场景选择最佳的合约部署策略,同时最大化提高区块链合约机制的性能、以及安全性。本实施例所述方法主要是根据合约开发场景确定合约部署策略;例如,根据合约开发场景确定合约的可信任级别,然后按照合约的可信任级别,采用与之相应的合约部署策略,对可信任的合约性能优先,采用区块链节点进程内部署;对第三方合约安全优先,采用单独的合约执行进程隔离的部署;或者根据合约开发场景确定合约交易种类,采用与之相应的合约部署策略,通过自适应合约部署策略,提高合约部署策略的灵活性,更好的同时兼顾合约执行的安全性和合约执行性能。

另外,本实施例所述方法还对允许并发执行且存在瓶颈的合约,以actor集群的方式部署,支持性能的弹性扩充,进一步提高区块链合约机制的安全性和运行性能。

可选地,如图2所示,所述根据合约安全程度,选择将合约部署至区块链节点进程运行、或单独的合约执行进程运行包括:

获取合约开发场景;

根据合约开发场景判断合约是否为安全程度高的受信任合约;

如果合约为安全程度高的受信任合约,则将合约部署至区块链节点进程运行;

如果合约为安全程度低的不受信任合约,则将合约部署至单独的合约执行进程运行,其中,所述单独的合约执行进程隔离在区块链节点进程外。

可选地,所述根据合约开发场景判断合约是否为安全程度高的受信任合约包括:

如果合约开发场景为平台内置的基础合约,则所述基础合约安全性高,并将其作为受信任合约;

如果合约开发环境为第三方开发的合约,则所述第三方开发的合约安全性低,并将其作为不受信任合约。

可选地,在所述将部署至区块链节点进程、或单独的合约执行进程运行的合约对应合约容器封装为actor之后,所述方法还包括:

将共识策略封装为actor;

由封装为actor的共识策略通过异步消息调用由actor封装在区块链节点进程运行合约的第一合约容器;例如,如图2所示,主机1中合约执行actor1为本实施例方法中所述第一合约容器;

由封装为actor的共识策略通过异步消息调用由actor封装在单独的合约执行进程运行合约的第二合约容器,例如,如图2所示,主机1中合约执行actor2为本实施例方法中所述第二合约容器。

可选地,所述通过异步消息发起第一合约容器和第二合约容器传入传出格式均一致。

可选地,如图2所示,在所述将部署至区块链节点进程、或单独的合约执行进程运行的合约对应合约容器封装为actor之后,所述方法还包括:

由封装为actor的共识策略通过集群调用设置于其他主机上并由actor封装在区块链节点进程运行合约的第三合约容器、或设置于其他主机上并由actor封装在单独的合约执行进程运行合约的第四合约容器。

具体的,本实施例所述方法能够通过集群调用设置于主机2或主机3中的合约执行actor1、或者设置于主机2或主机3中的合约执行actor2;其中,设置于主机2或主机3中的合约执行actor1和合约执行actor2可分别为由actor封装在区块链节点进程运行合约的第三合约容器、或由actor封装在单独的合约执行进程运行合约的第四合约容器;或者,设置于主机2或主机3中的合约执行actor1和合约执行actor2可同时为由actor封装在区块链节点进程运行合约的第三合约容器、或由actor封装在单独的合约执行进程运行合约的第四合约容器。所述方法能够通过集群调用方式进一步提升合约并发执行性能。

综上所述,本实施例所述方法将合约容器封装为actor后,无论是在进程内、跨进程抑或是跨主机,对合约容器actor发起调用,调用方式和代码是一致的,均通过异步消息发起合约调用。因此,尽管在进程内调用的场景下,经actor封装后的合约容器由于异步消息的序列化/反序列化导致的性能损失,其执行效率不如函数级别的调用,但切换到需要安全隔离的分布式调用场景,却不需要做额外的编码或者封装工作。actor模型的这种特性,使得我们在部署策略的选择上可以根据合约的受信任程度灵活调整,更好的同时兼顾合约执行的安全性和合约执行性能。

因此,本实施例所述方法还根据合约开发场景将合约按照受信任程度进行分类:

将平台内置的基础合约,即平台运维者自行开发的合约,作为受信任合约,部署在区块链节点进程内运行,放弃安全隔离、追求执行效率。

将第三方开发的合约,作为不受信任合约,将其隔离在单独的合约执行进程,对其资源消耗进行严格的监视和约束,避免由于合约的性能缺陷,导致宿主节点宕机。这种场景下,降低执行效率要求,追求安全隔离。

其中,所述经actor封装的合约容器通过反序列化将签名交易解析为结构化数据,支持对输入的签名交易进行两种处理:

交易预执行:根据交易预执行结果进行输出共识,用于验证预出块是否合法。每个组网节点调用合约容器为交易预执行构造合约上下文环境,顺序逐条执行预出块中包含的交易。执行完之后获得并输出结果,并回滚worldstate到预出块执行前的状态。

交易执行:收到正式出块之后,每个组网节点首先将正式出块写入区块链,调用合约容器为交易执行构造合约上下文环境,顺序逐条执行正式出块中包含的交易,执行过程中持久化读写worldstate。

最后,所述经actor封装的合约容器负责将合约执行的结果序列化之后,以消息回送给调用者,输出结果主要包括以下信息:

执行结果,可以是任意类型;

合约执行中对worldstate的读取和写入操作,以操作日志的方式体现;

执行中抛出的异常信息。

本发明实施例还提供一种兼顾安全与性能的区块链合约建立系统,如图3所示,所述系统包括:

封装模块11,用于将部署至区块链节点进程、或单独的合约执行进程运行的合约对应合约容器封装为actor,以使合约调用者通过异步消息接收向合约容器发起合约调用、以及返回执行结果;

选择部署模块12,用于根据合约安全程度,选择将合约部署至区块链节点进程运行、或单独的合约执行进程运行。

本发明实施例提供的兼顾安全与性能的区块链合约建立系统主要是引入actor模型,由封装模块将合约容器封装为actor,从而实现对合约的透明化调用,进而使得进程内、跨进程、或者跨主机、跨链合约调用的代码完全一致。所述系统还能够由选择部署模块根据合约开发场景选择最佳的合约部署策略,同时最大化提高区块链合约机制的性能、以及安全性。本实施例所述系统主要是根据合约开发场景确定合约部署策略;例如,根据合约开发场景确定合约的可信任级别,然后按照合约的可信任级别,采用与之相应的合约部署策略,对可信任的合约性能优先,采用区块链节点进程内部署;对第三方合约安全优先,采用单独的合约执行进程隔离的部署;或者根据合约开发场景确定合约交易种类,采用与之相应的合约部署策略,通过自适应合约部署策略,提高合约部署策略的灵活性,更好的同时兼顾合约执行的安全性和合约执行性能。

可选地,如图4所示,所述选择部署模块12包括:

获取子模块121,用于获取合约开发场景;

判断子模块122,用于根据合约开发场景判断合约是否为安全程度高的受信任合约;

第一部署子模块123,用于如果合约为安全程度高的受信任合约,则将合约部署至区块链节点进程运行;

第二部署子模块124,用于如果合约为安全程度低的不受信任合约,则将合约部署至单独的合约执行进程运行,其中,所述单独的合约执行进程隔离在区块链节点进程外。

可选地,所述系统还包括:

共识封装模块13,用于将共识策略封装为actor;

第一调用模块14,用于由封装为actor的共识策略通过异步消息调用由actor封装在区块链节点进程运行合约的第一合约容器;

第二调用模块15,用于由封装为actor的共识策略通过异步消息调用由actor封装在单独的合约执行进程运行合约的第二合约容器。

可选地,所述系统还包括:

集群调用模块16,用于由封装为actor的共识策略通过集群调用设置于其他主机上并由actor封装在区块链节点进程运行合约的第三合约容器、或设置于其他主机上并由actor封装在单独的合约执行进程运行合约的第四合约容器。

本实施例的系统,可以用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)或随机存储记忆体(randomaccessmemory,ram)等。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1