CN112214802B - 一种区块链智能合约消息发布订阅方法 - Google Patents
一种区块链智能合约消息发布订阅方法 Download PDFInfo
- Publication number
- CN112214802B CN112214802B CN202011063262.4A CN202011063262A CN112214802B CN 112214802 B CN112214802 B CN 112214802B CN 202011063262 A CN202011063262 A CN 202011063262A CN 112214802 B CN112214802 B CN 112214802B
- Authority
- CN
- China
- Prior art keywords
- contract
- message
- intelligent
- blockchain
- topic
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45516—Runtime code conversion or optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
Abstract
本发明公开了一种区块链智能合约消息发布订阅方法,涉及区块链技术领域。该方法通过对主题字段的定义,智能合约可以在运行过程中将有关主题的信息以合约调用的方式发送到其它智能合约,从而获取到合约执行过程中的关键信息。这样一种方法为智能合约执行过程中获取信息提供了一种全新的思路,使智能合约能够应用于对数据信息有更高要求的场景。合约事件产生的记录会保存在区块链平台的数据库中,同时区块链技术的不可篡改性保证了数据的真实可靠。
Description
技术领域
本发明涉及到区块链技术,特别涉及一种区块链智能合约消息发布订阅方法。
背景技术
区块链技术是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算范式。简单来讲,在区块链系统中,每过一段时间,各参与主体产生的交易数据会被打包成一个数据区块,数据区块按照时间顺序依次排列,形成数据区块的链条,各参与主体拥有同样的数据区块的链条,且无法单方面篡改,任何信息的修改只有经过约定比例的主体同意方可进行,并且只能添加新的信息,无法删除或修改旧的信息,从而实现多主体间的信息共享和一致决策,确保各主体身份和主体间交易信息的不可篡改、公开透明。
智能合约是一种无需中介、自我验证、自动执行合约条款的计算机交易协议,近年来随着区块链技术的日益普及而备受关注,区块链上的智能合约具有去中心化、去信任、可编程、不可篡改等特性,可以灵活嵌入各种数据和资产,帮助实现安全高效地信息交换、价值转移和资产管理,有望深入变革传统商业模式和社会生产关系,为构建可编程资产、系统和社会奠定基础。
通常智能合约执行引擎较为常见的是以太虚拟机(Ethereum Virtual Machine,EVM)和J AVA虚拟机(Java Virtual Machine,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是本发明实施例的消息推送流程图。
具体实施方案
下面根据附图和实施例详细阐述此发明,并对本发明的技术方案进行清楚的描述。此处所选的实施例仅用于解释该发明,并不能够限定此发明。
一种区块链智能合约的消息发布订阅方法,其特点在于所述事件的虚拟机执行引擎为J VM虚拟机,该虚拟机接收以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接收到订阅主题的相关推送信息。
4)在该订阅方案中,对合约A、B、S中函数的调用都将以数据的形式记录到区块链,且不可篡改。
以上所述,仅为本发明的具体实施方式,本说明书中所公开的任一特征,除非特别叙述,均可被其他等效或具有类似目的的替代特征加以替换;所公开的所有特征、或所有方法或过程中的步骤,除了互相排斥的特征和/或步骤以外,均可以任何方式组合;本领域的技术人员根据本发明技术方案的技术特征所做出的任何非本质的添加、替换,均属于本发明的保护范围。
Claims (4)
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订阅的主题必须存在于该主题表中;
其中,所述步骤S2)具体包括:
1)合约A在执行过程中,如果遇到带有主题字段的上下文,会自动触发emit函数,该函数主要功能是将上下文以(“topic”,“message”)键值对的形式发送到合约S;
2)合约S收到(“topic”,“message”)键值对,会调用本地的check方法,该方法用来检查收到的topic是否储存在本地的映射表中,若存在则返回true,否则返回false;
3)当check函数返回true值,则合约S需要调用订阅该主题的合约B中的handle方法,将从合约A收到的message信息通过handle方法发送给合约B,至此合约B接收到订阅主题的相关推送信息;
4)在该订阅方案中,对合约A、合约B以及智能合约S中函数的调用都将以数据的形式记录到区块链,且不可篡改。
2.根据权利要求1所述的区块链智能合约消息发布订阅方法,其特征在于,所述步骤S1)中所述合约A是储存在区块链上的智能合约,由任何节点创建,该合约实例具有确定的地址以及相应的变量、方法,合约A是执行任意流程的智能合约。
3.根据权利要求2所述的区块链智能合约消息发布订阅方法,其特征在于,所述步骤S1)中所述合约B由消息的订阅方创建,且在加入订阅方案时需要指定订阅主题,并根据该主题接收订阅消息。
4.根据权利要求3所述的区块链智能合约消息发布订阅方法,其特征在于,所述步骤S1)中所述智能合约S在该方法中的合约A与合约B确定时由代码创建生成,智能合约S的实质是维护一张订阅方与订阅主题的映射表,用来接收合约A发送的消息,并匹配主题转发给合约B。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011063262.4A CN112214802B (zh) | 2020-09-30 | 2020-09-30 | 一种区块链智能合约消息发布订阅方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011063262.4A CN112214802B (zh) | 2020-09-30 | 2020-09-30 | 一种区块链智能合约消息发布订阅方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112214802A CN112214802A (zh) | 2021-01-12 |
CN112214802B true CN112214802B (zh) | 2023-04-28 |
Family
ID=74052057
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011063262.4A Active CN112214802B (zh) | 2020-09-30 | 2020-09-30 | 一种区块链智能合约消息发布订阅方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112214802B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114125057B (zh) * | 2022-01-26 | 2022-04-26 | 中科边缘智慧信息科技(苏州)有限公司 | 一种面向多业务中心的分布式数据交互方法及装置 |
CN114912856B (zh) * | 2022-07-19 | 2022-09-30 | 安胜(天津)飞行模拟系统有限公司 | 一种基于区块链的飞行模拟器维护方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109450856A (zh) * | 2018-10-12 | 2019-03-08 | 西安电子科技大学 | 基于区块链的数据链信息流转控制系统及方法 |
CN110024352A (zh) * | 2016-12-30 | 2019-07-16 | 英特尔公司 | 用于iot装置的分散式数据存储和处理 |
CN110535928A (zh) * | 2019-08-22 | 2019-12-03 | 杭州趣链科技有限公司 | 一种区块链的java智能合约的事件推送方法 |
CN111159307A (zh) * | 2020-04-02 | 2020-05-15 | 支付宝(杭州)信息技术有限公司 | 跨链数据订阅方法及装置 |
CN111526047A (zh) * | 2020-04-15 | 2020-08-11 | 杭州溪塔科技有限公司 | 一种基于区块链的消息队列设计方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7130885B2 (en) * | 2000-09-05 | 2006-10-31 | Zaplet, Inc. | Methods and apparatus providing electronic messages that are linked and aggregated |
US20190303541A1 (en) * | 2018-04-02 | 2019-10-03 | Ca, Inc. | Auditing smart contracts configured to manage and document software audits |
-
2020
- 2020-09-30 CN CN202011063262.4A patent/CN112214802B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110024352A (zh) * | 2016-12-30 | 2019-07-16 | 英特尔公司 | 用于iot装置的分散式数据存储和处理 |
CN109450856A (zh) * | 2018-10-12 | 2019-03-08 | 西安电子科技大学 | 基于区块链的数据链信息流转控制系统及方法 |
CN110535928A (zh) * | 2019-08-22 | 2019-12-03 | 杭州趣链科技有限公司 | 一种区块链的java智能合约的事件推送方法 |
CN111159307A (zh) * | 2020-04-02 | 2020-05-15 | 支付宝(杭州)信息技术有限公司 | 跨链数据订阅方法及装置 |
CN111526047A (zh) * | 2020-04-15 | 2020-08-11 | 杭州溪塔科技有限公司 | 一种基于区块链的消息队列设计方法及装置 |
Non-Patent Citations (1)
Title |
---|
张胜利等.高性能许可公链.《深圳大学学报理工版》.2020,第37卷(第3期),第227-233页. * |
Also Published As
Publication number | Publication date |
---|---|
CN112214802A (zh) | 2021-01-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6882474B2 (ja) | リプレイ攻撃の検出のためのシステム及び方法 | |
CN107193490B (zh) | 一种基于区块链的分布式数据存储系统及方法 | |
US11356282B2 (en) | Sending cross-chain authenticatable messages | |
CN112214802B (zh) | 一种区块链智能合约消息发布订阅方法 | |
CN104838620B (zh) | 电信网中的事件管理的设备和方法 | |
CN106375458B (zh) | 服务调用系统、方法及装置 | |
CN103067918B (zh) | 一种通信网络中隐私数据匿名化方法、装置及系统 | |
CN104219316A (zh) | 一种分布式系统中的调用请求处理方法及装置 | |
CN108694589A (zh) | 一种基于区块链的资产监控方法 | |
CN111585913B (zh) | 基于回收令牌的服务流量限制方法及存储介质 | |
CN111143476A (zh) | 一种基于数据库的智能合约数据快速查询方法 | |
CN113486114B (zh) | 一种区块链智能合约调用管理方法 | |
CN102034144A (zh) | 用于在场的群组组成算法 | |
CN115174279A (zh) | 一种以太坊智能合约漏洞实时检测方法、终端及存储介质 | |
CN101951568B (zh) | 短信信息拦截处理方法及装置 | |
CN113409047B (zh) | 基于区块链的数据处理方法、装置、设备及可读存储介质 | |
CN102143126B (zh) | Cpm会谈历史记录的访问方法及消息存储服务器 | |
US7693185B1 (en) | Method and apparatus for creation and management of intelligent packets | |
Wang et al. | Smart contract microservitization | |
CN116502283A (zh) | 一种隐私数据处理方法及装置 | |
US20070038979A1 (en) | Method and system for transparently controlling the behavior of service methods in a service oriented architecture | |
CN114416314B (zh) | 一种基于api网关的服务编排方法 | |
CN114244520A (zh) | 一种基于区块链技术的物联网设备准入方法、系统、设备及存储介质 | |
CN113987574A (zh) | 一种区块链私密交易方法、装置、设备及可读存储介质 | |
CN113222596A (zh) | 一种基于区块链智能合约的电力数据存储方法和系统 |
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 |