一种区块链智能合约消息发布订阅方法技术

技术编号:27031056 阅读:40 留言:0更新日期:2021-01-12 11:14
本发明专利技术公开了一种区块链智能合约消息发布订阅方法,涉及区块链技术领域。该方法通过对主题字段的定义,智能合约可以在运行过程中将有关主题的信息以合约调用的方式发送到其它智能合约,从而获取到合约执行过程中的关键信息。这样一种方法为智能合约执行过程中获取信息提供了一种全新的思路,使智能合约能够应用于对数据信息有更高要求的场景。合约事件产生的记录会保存在区块链平台的数据库中,同时区块链技术的不可篡改性保证了数据的真实可靠。

【技术实现步骤摘要】
一种区块链智能合约消息发布订阅方法
本专利技术涉及到区块链技术,特别涉及一种区块链智能合约消息发布订阅方法。
技术介绍
区块链技术是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算范式。简单来讲,在区块链系统中,每过一段时间,各参与主体产生的交易数据会被打包成一个数据区块,数据区块按照时间顺序依次排列,形成数据区块的链条,各参与主体拥有同样的数据区块的链条,且无法单方面篡改,任何信息的修改只有经过约定比例的主体同意方可进行,并且只能添加新的信息,无法删除或修改旧的信息,从而实现多主体间的信息共享和一致决策,确保各主体身份和主体间交易信息的不可篡改、公开透明。智能合约是一种无需中介、自我验证、自动执行合约条款的计算机交易协议,近年来随着区块链技术的日益普及而备受关注,区块链上的智能合约具有去中心化、去信任、可编程、不可篡改等特性,可以灵活嵌入各种数据和资产,帮助实现安全高效地信息交换、价值转移和资产管理,有望深入变革传统商业模式和社会生产关系,为构建可编程资产、系统和社会奠定基础。通常智能合约执行引擎较为常见的是以太虚拟机(EthereumVirtualMachine,EVM)和JAVA虚拟机(JavaVirtualMachine,JVM),二者分别用于Solidity和JAVA语言的智能合约开发。EVM可以执行任意复杂算法的编码,以太坊上的账户可以分为外部账户(EOA)与合约账户,其中外部账户由私人密钥控制,合约账户由合约代码控制;而在JVM环境下,智能合约是被抽象为接口的形式进行调用的。传统意义上智能合约的业务内容主要涉及到金融产业及其相关业务,如资产管理、资金的筹集与分散、拍卖、产品交易等,这在很大程度上突显了智能合约用于处理区块链上金融相关业务的作用。然而,对于智能合约的应用不该仅仅局限于此。面对区块链上越来越复杂多变的场景与业务,如何应对其中包含的数据与信息迫在眉睫,尤其是在某些特定场景下,需要智能合约对信息做出应对并自动化处理,具备诸如此类功能的智能合约还有待进一步开发。在对信息数据有更高需求和复杂业务的场景中,往往需要多方参与调用者智能合约,在各方间形成高效安全的消息收发机制与适用于具体场景下的信息回路,来保证业务的顺利执行,并配合共识机制写入区块,以达到数据不可篡改的目的。因此,在智能合约业务的执行过程中,缺乏一种区块链智能合约的消息发布订阅机制,将执行过程中的重要消息发布到客户端。
技术实现思路
本专利技术要解决的问题是当目前场景对信息数据有复杂需求和业务时,如何在区块链的基础上,形成信息传递的回路并确保业务的顺利执行。本专利技术为解决上述技术问题,本专利技术提出了一种区块链智能合约消息发布订阅方法,该方法是在JVM虚拟机环境下执行的,合约文件以JAR文件形式部署在以JAVA为开发语言的区块链平台上,且智能合约以接口的形式被程序调用。该方法在JVM虚拟机环境下的执行主要包括以下步骤:1)合约创建1-1)在该智能合约消息发布订阅方法中,有一类智能合约会发送带有特定主题的信息到其它智能合约,我们称此类合约为合约A;另一类智能合约通过设定订阅主题来接收推送消息,我们称之为合约B。合约A、B分别作为该方法的推送方和订阅方。1-2)智能合约S用来维护一张映射表,该表记录了合约B以及合约B中订阅的相关主题。1-3)任何一个合约B可以订阅多个主题的信息。2)消息推送2-1)作为推送方的合约A在执行过程中,遇到有主题字段的上下文时,会触发消息推送事件,并对智能合约S发起调用。2-2)智能合约S根据所维护的映射表,检查是否有订阅该主题的合约B。2-3)若检索到符合条件的合约B,则合约S通过调用合约B中的方法,将合约A发来的对应主题的信息推送到合约B;否则,合约S对合约A的调用不做处理。3)主题策略参与该订阅方案的智能合约S需要共同维护一张主题表,用来记录方案中的可被订阅的主题。合约A仅对表中的主题触发消息推送事件,同时合约B订阅的主题必须存在于该主题表中。本专利技术应用于以JAVA语言开发的区块链平台上,提供了一种较为合理的区块链智能合约消息发布订阅方法,通过对主题字段的定义,智能合约可以在运行过程中将有关主题的信息以合约调用的方式发送到其它智能合约,从而获取到合约执行过程中的关键信息。这样一种方法为智能合约执行过程中获取信息提供了一种全新的思路,使智能合约能够应用于对数据信息有更高要求的场景。合约事件产生的记录会保存在区块链平台的数据库中,同时区块链技术的不可篡改性保证了数据的真实可靠。附图说明图1是本专利技术的合约创建结构图。图2是本专利技术实施例的消息推送流程图。具体实施方案下面根据附图和实施例详细阐述此专利技术,并对本专利技术的技术方案进行清楚的描述。此处所选的实施例仅用于解释该专利技术,并不能够限定此专利技术。一种区块链智能合约的消息发布订阅方法,其特点在于所述事件的虚拟机执行引擎为JVM虚拟机,该虚拟机接收以JAR形式的合约文件部署在区块链平台上,通过自定义的类加载器加载合约文件并初始化合约实例,客户端可以通过接口的形式调用智能合约。如图1所示,本专利技术实施例提供一种区块链智能合约消息发布订阅方法,该方法包括如下步骤:S1:合约A是储存在区块链上的智能合约,可以由任何节点创建,该合约实例具有确定的地址以及相应的变量、方法,合约A可以是执行任意流程的智能合约。S2:合约B由消息的订阅方创建,且在加入订阅方案时需要指定订阅主题,并根据该主题接收订阅消息。S3:合约S在该方法中的合约A(消息发送方)与合约B(消息订阅方)确定时由代码创建生成。合约S的实质是维护一张订阅方与订阅主题的映射表,用来接收合约A发送的消息,并匹配主题转发给B。如图2所示,当方法中发生消息推送的事件时,进行以下步骤:1)合约A在执行过程中,如果遇到带有主题字段的上下文,会自动触发emit函数,该函数主要功能是将上下文以(“topic”,“message”)键值对的形式发送到合约S,例如(“topic3”,“message”)。2)合约S收到(“topic”,“message”)键值对,会调用本地的check方法,该方法用来检查收到的topic是否储存在本地的映射表中,若存在则返回true,否则返回false。例如S收到的是topic3,则check函数的返回值是true。3)当check函数返回true值,则合约S需要调用订阅该主题的合约B中的handle方法,将从合约A收到的message信息通过handle方法发送给合约B,例如合约S收到了(“topic3”,“message”),则需要调用合约B2、B3中的handle方法,将message字段发送给合约B2、B3。至此合约B接收到订阅主题的相关推送本文档来自技高网
...

【技术保护点】
1.一种区块链智能合约消息发布订阅方法,其特征在于,该方法在JVM虚拟机环境下执行,合约文件以JAR文件形式部署在以JAVA为开发语言的区块链平台上,且智能合约以接口的形式被程序调用;该方法在JVM虚拟机环境下的执行主要包括以下步骤:/nS1)合约创建/nS11)在该智能合约消息发布订阅方法中,有一类智能合约会发送带有特定主题的信息到其它智能合约,称此类合约为合约A;另一类智能合约通过设定订阅主题来接收推送消息,称之为合约B,合约A、B分别作为该方法的推送方和订阅方;/nS12)智能合约S用来维护一张映射表,该表记录了合约B以及合约B中订阅的相关主题;/nS13)任何一个合约B可以订阅多个主题的信息;/nS2)消息推送/nS21)作为推送方的合约A在执行过程中,遇到有主题字段的上下文时,会触发消息推送事件,并对智能合约S发起调用;/nS22)智能合约S根据所维护的映射表,检查是否有订阅该主题的合约B;/nS23)若检索到符合条件的合约B,则合约S通过调用合约B中的方法,将合约A发来的对应主题的信息推送到合约B;否则,合约S对合约A的调用不做处理;/nS3)主题策略/n参与该订阅方案的智能合约S需要共同维护一张主题表,用来记录该订阅方案中的可被订阅的主题,合约A仅对表中的主题触发消息推送事件,同时合约B订阅的主题必须存在于该主题表中。/n...

【技术特征摘要】
1.一种区块链智能合约消息发布订阅方法,其特征在于,该方法在JVM虚拟机环境下执行,合约文件以JAR文件形式部署在以JAVA为开发语言的区块链平台上,且智能合约以接口的形式被程序调用;该方法在JVM虚拟机环境下的执行主要包括以下步骤:
S1)合约创建
S11)在该智能合约消息发布订阅方法中,有一类智能合约会发送带有特定主题的信息到其它智能合约,称此类合约为合约A;另一类智能合约通过设定订阅主题来接收推送消息,称之为合约B,合约A、B分别作为该方法的推送方和订阅方;
S12)智能合约S用来维护一张映射表,该表记录了合约B以及合约B中订阅的相关主题;
S13)任何一个合约B可以订阅多个主题的信息;
S2)消息推送
S21)作为推送方的合约A在执行过程中,遇到有主题字段的上下文时,会触发消息推送事件,并对智能合约S发起调用;
S22)智能合约S根据所维护的映射表,检查是否有订阅该主题的合约B;
S23)若检索到符合条件的合约B,则合约S通过调用合约B中的方法,将合约A发来的对应主题的信息推送到合约B;否则,合约S对合约A的调用不做处理;
S3)主题策略
参与该订阅方案的智能合约S需要共同维护一张主题表,用来记录该订阅方案中的可被订阅的主题,合约A仅对表中的主题触发消息推送事件,同时合约B订阅的主题必须存在于该主题表中。


2.根据权利要求1所述的区块链智能合约消息发布订阅方法,其特征在于,所述步骤S1)中所述合约A是储存在区块链上的智能合约,由任何节点创建,该...

【专利技术属性】
技术研发人员:夏琦
申请(专利权)人:电子科技大学
类型:发明
国别省市:四川;51

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

1