CN110535928A - 一种区块链的java智能合约的事件推送方法 - Google Patents
一种区块链的java智能合约的事件推送方法 Download PDFInfo
- Publication number
- CN110535928A CN110535928A CN201910776138.3A CN201910776138A CN110535928A CN 110535928 A CN110535928 A CN 110535928A CN 201910776138 A CN201910776138 A CN 201910776138A CN 110535928 A CN110535928 A CN 110535928A
- Authority
- CN
- China
- Prior art keywords
- event
- contract
- user
- block chain
- java
- 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.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/55—Push-based network services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开一种区块链的JAVA智能合约的事件推送方法,该方法通过实现一个区块链上JAVA智能合约产生的日志事件能够主动推送到客户端的通知形式,虚拟机执行引擎对每一个合约生成一个唯一的合约地址并实例化一个合约对象,该对象用于处理发送到该合约地址上的所有方法调用,虚拟机执行引擎验证请求参数合法后,开始处理相应的请求,并返回结果给客户端,同时在合约方法调用期间,触发了用户自定义的合约事件,则会将事件内容发送到区块链节点,在数据落盘后将合约执行期间产生的日志事件推送到客户端。由于本产品是基于JAVA合约的事件推送,用户可以自定义事件的数据和筛选条件,方便用户对于事件的拓展。
Description
技术领域
本发明涉及区块链技术,尤其涉及一种区块链的JAVA智能合约的事件推送方法。
背景技术
区块链技术,区块链是一种新型去中心化协议,能安全地存储数字货币交易或其他数据,信息不可伪造和篡改;智能合约是一种可以在区块链网络环境中部署和执行的一段代码,这段代码的部署以及执行都是可以在区块链网络中以交易的形式呈现,其部署和执行结果可以随着交易被全网共识;目前智能合约支持的语言包括Solidity、JAVA等等,智能合约也在基于区块链的各种业务应用中广泛应用。
传统联盟区块链智能合约执行引擎包括EVM和JVM,支持的语言分别为Solidity和JAVA,但是在合约执行环境中,是一个区块链节点的沙箱环境,所以导致外部难以感知到合约内部的执行状态,作为用户很难去监控,只能通过合约的返回结果来做判断,尤其是作为JAVA语言编写的智能合约,不像特定的智能合约语言Solidity难以实现定制化的事件推送,通过推送的数据来监控合约的执行情况。
区块链的去中心化与不可篡改的特性给智能合约提供了一个很好的发展环境,因此近年来,比特币网络、以太坊网络等一系列区块链社区都陆续开始提供了公开的智能合约编程的接口。但在智能合约执行过程中,一直缺少一个事件推送的模式来通知客户端合约执行的中间过程,尤其缺少一种基于当前主流编程语言的智能合约推送方法。
发明内容
针对现有技术的不足,本发明提出了一种区块链的JAVA智能合约的事件推送方法,从智能合约事件的生成、触发、推送、订阅、解码等方面的过程来实现整个推送事件流程,具体技术方案如下:
一种区块链的JAVA智能合约的事件推送方法,其特征在于,
所述的事件的虚拟机执行引擎为JAVA虚拟机,该虚拟机执行引擎接受以JAR形式的合约文件部署在区块链平台上,通过自定义的类加载器加载合约文件并初始化出合约实例,并通过接口的形式调用智能合约;
所述的JAVA智能合约继承自BaseContract虚类,所述的事件推送方法定义在所述的JAVA智能合约的父类中,所述的事件包括topics过滤条件和data数据部分;
所述的事件推送方法具体包括如下步骤:
S1:所述的JAVA智能合约定义的事件接收用户输入的三个参数,第一个参数为Object类型的任意类型数据,即为用户最终想要推送到客户端的数据;第二个参数为字符串类型,即用户自定义的当前事件的名称,该名称最终也会作为topics过滤条件的一部分;第三个参数为类型为任意数量和任意长度的字符串数组,用于用户增加过滤条件;
S2:当包含事件的智能合约方法被调用时,事件被触发,所述的执行引擎将用户期望推送的数据序列化后,同topics过滤条件一起发送给区块链节点,区块链节点收到JAVA智能合约发过来的事件推送信息后,将当前事件的合约地址、区块号、事件的topics过滤条件和data数据部分保存到状态数据库中;
S3:当包含合约事件的交易所属的区块落盘后,所述的事件分发被触发,所述的区块链节点将用户对订阅事件指定的topics过滤条件和当前区块的状态数据库中保存的事件topics进行对比,当两者完全相同时,该事件被分发到用户的订阅列表中,并依据用户指定的推送形式将消息发送到客户端。
进一步地,所述的topics过滤条件和data数据部分在所述的推送事件被执行前指定或从合约方法参数动态传入时指定。
进一步地,所述的执行引擎通过JNI方法将在JAVA中的数据发送到区块链节点。
本发明的有益效果:
本发明应用于区块链平台上,提供了一套全新的智能合约事件推送的方法,实现了合约事件的生成、触发、推送、订阅、解码,为用户合约监控提供了便捷。同时,合约事件产生的记录会保存在区块链状态数据库中,方便之后用户查询。
附图说明
图1是合约事件结构图;
图2是合约事件推送图。
具体实施方式
下面根据附图和优选实施例详细描述本发明,本发明的目的和效果将变得更加明白,应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1-2所示,一种区块链的JAVA智能合约的事件推送方法,其特征在于,
所述的事件的虚拟机执行引擎为JAVA虚拟机,该虚拟机执行引擎接受以JAR形式的合约文件部署在区块链平台上,通过自定义的类加载器加载合约文件并初始化出合约实例,并通过接口的形式调用智能合约;
所述的JAVA智能合约继承自BaseContract虚类,所述的事件推送方法定义在所述的JAVA智能合约的父类中,所述的事件包括topics过滤条件和data数据部分;
所述的事件推送方法具体包括如下步骤:
S1:所述的JAVA智能合约定义的事件接收用户输入的三个参数,第一个参数为Object类型的任意类型数据,即为用户最终想要推送到客户端的数据;第二个参数为字符串类型,即用户自定义的当前事件的名称,该名称最终也会作为topics过滤条件的一部分;第三个参数为类型为任意数量和任意长度的字符串数组,用于用户增加过滤条件;
S2:当包含事件的智能合约方法被调用时,事件被触发,所述的执行引擎将用户期望推送的数据序列化后,同topics过滤条件一起发送给区块链节点,区块链节点收到JAVA智能合约发过来的事件推送信息后,将当前事件的合约地址、区块号、事件的topics过滤条件和data数据部分保存到状态数据库中;
S3:当包含合约事件的交易所属的区块落盘后,所述的事件分发被触发,所述的区块链节点将用户对订阅事件指定的topics过滤条件和当前区块的状态数据库中保存的事件topics进行对比,当两者完全相同时,该事件被分发到用户的订阅列表中,并依据用户指定的推送形式将消息发送到客户端。
用户在客户端按所需的推送形式,可以采用MQ或者WebSocket,向区块链节点发送订阅请求并获取到推送的网络连接,之后符合条件的事件将通过该条网络连接来发送,用户订阅的时候可以指定订阅的合约地址、区块号区间、event事件的topics过滤条件。在收到节点的推送数据后,通过解析数据格式,取出用户在合约中希望推送的数据后,将数据反序列化为对应的数据结构即可使用,若用户期望指定不同的过滤条件,则可以向节点发送多次订阅来创建多个推送连接,从而获取不同订阅的事件推送数据。
所述的步骤一中,定义的event事件可以指定任意类型的数据,最终序列化推送到客户端的数据形式很轻量;可以定义多个topics过滤条件,为用户订阅扩展了更多的过滤形式。
所述的步骤一中,用户定义了合约事件的topics过滤条件后,事件推送数据可以是合约执行过程中的某些关键数据变更状态,将特殊的数据推送给指定的topics过滤条件,可以让用户做更加精确地事件推送接受并处理。同时事件的使用也很方便,用户只需要调用父类方法即可。
所述的步骤二中,合约事件定义在合约方法内部,随着该合约方法执行时,自动触发定义的合约事件,同时将合约某些数据通过参数的形式传送给event事件,而topics则可以在合约方法执行之前通过硬编码决定,也可以是执行时动态指定。
所述的步骤二中,当合约指定过程中触发了合约事件后,JAVA虚拟机执行引擎通过JNI方法将在JAVA中的数据发送到区块链平台,通过这种跨语言的形式减少了很多传输的开销,同时还可以共享一片内存。在节点收到事件推送的数据后,保存到状态数据库中。
所述的步骤二中,等交易所在区块落盘后,区块链节点便从状态数据库中,开始分发不同的事件到指定的订阅通道中,需要将事件的topics和订阅的topics做一一对比后,都相同才会推送。
所述的步骤二中,用户可以开启MQ或者WebSocket的连接方式向平台获取订阅的数据,订阅的规则可以指定合约地址、区块号范围、topics过滤条件等。
本领域普通技术人员可以理解,以上所述仅为发明的优选实例而已,并不用于限制发明,尽管参照前述实例对发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实例记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在发明的精神和原则之内,所做的修改、等同替换等均应包含在发明的保护范围之内。
Claims (3)
1.一种区块链的JAVA智能合约的事件推送方法,其特征在于,
所述的事件的虚拟机执行引擎为JAVA虚拟机,该虚拟机执行引擎接受以JAR形式的合约文件部署在区块链平台上,通过自定义的类加载器加载合约文件并初始化出合约实例,并通过接口的形式调用智能合约;
所述的JAVA智能合约继承自BaseContract虚类,所述的事件推送方法定义在所述的JAVA智能合约的父类中,所述的事件包括topics过滤条件和data数据部分。
所述的事件推送方法具体包括如下步骤:
S1:所述的JAVA智能合约定义的事件接收用户输入的三个参数,第一个参数为Object类型的任意类型数据,即为用户最终想要推送到客户端的数据;第二个参数为字符串类型,即用户自定义的当前事件的名称,该名称最终也会作为topics过滤条件的一部分;第三个参数为类型为任意数量和任意长度的字符串数组,用于用户增加过滤条件;
S2:当包含事件的智能合约方法被调用时,事件被触发,所述的执行引擎将用户期望推送的数据序列化后,同topics过滤条件一起发送给区块链节点,区块链节点收到JAVA智能合约发过来的事件推送信息后,将当前事件的合约地址、区块号、事件的topics过滤条件和data数据部分保存到状态数据库中;
S3:当包含合约事件的交易所属的区块落盘后,所述的事件分发被触发,所述的区块链节点将用户对订阅事件指定的topics过滤条件和当前区块的状态数据库中保存的事件topics进行对比,当两者完全相同时,该事件被分发到用户的订阅列表中,并依据用户指定的推送形式将消息发送到客户端。
2.根据权利要求1所述的区块链的JAVA智能合约的事件推送方法,其特征在于,所述的topics过滤条件和data数据部分在所述的推送事件被执行前指定或从合约方法参数动态传入时指定。
3.根据权利要求1所述的区块链的JAVA智能合约的事件推送方法,其特征在于,所述的执行引擎通过JNI方法将在JAVA中的数据发送到区块链节点。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910776138.3A CN110535928B (zh) | 2019-08-22 | 2019-08-22 | 一种区块链的java智能合约的事件推送方法 |
CN202210181716.0A CN114553953A (zh) | 2019-08-22 | 2019-08-22 | 一种区块链的java智能合约的事件推送方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910776138.3A CN110535928B (zh) | 2019-08-22 | 2019-08-22 | 一种区块链的java智能合约的事件推送方法 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210181716.0A Division CN114553953A (zh) | 2019-08-22 | 2019-08-22 | 一种区块链的java智能合约的事件推送方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110535928A true CN110535928A (zh) | 2019-12-03 |
CN110535928B CN110535928B (zh) | 2022-04-01 |
Family
ID=68664023
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910776138.3A Active CN110535928B (zh) | 2019-08-22 | 2019-08-22 | 一种区块链的java智能合约的事件推送方法 |
CN202210181716.0A Pending CN114553953A (zh) | 2019-08-22 | 2019-08-22 | 一种区块链的java智能合约的事件推送方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210181716.0A Pending CN114553953A (zh) | 2019-08-22 | 2019-08-22 | 一种区块链的java智能合约的事件推送方法 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN110535928B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112199221A (zh) * | 2020-12-04 | 2021-01-08 | 杭州趣链科技有限公司 | 事件推送方法、系统、区块链平台、合约调用端及介质 |
CN112214802A (zh) * | 2020-09-30 | 2021-01-12 | 电子科技大学 | 一种区块链智能合约消息发布订阅方法 |
CN112346820A (zh) * | 2020-11-16 | 2021-02-09 | 杭州复杂美科技有限公司 | 区块链jvm应用方法、设备和存储介质 |
CN112905554A (zh) * | 2021-02-07 | 2021-06-04 | 全链通有限公司 | 基于区块链的数据共享方法和装置 |
CN113222766A (zh) * | 2021-05-13 | 2021-08-06 | 杭州趣链科技有限公司 | 金融产品的信息监管方法、装置、计算机设备及介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107103473A (zh) * | 2017-04-27 | 2017-08-29 | 电子科技大学 | 一种基于区块链的智能合约实现方法 |
CN107562513A (zh) * | 2017-07-18 | 2018-01-09 | 杭州趣链科技有限公司 | 一种基于java的智能合约生命周期的管理方法 |
CN109582438A (zh) * | 2018-10-30 | 2019-04-05 | 广州斯拜若科技有限公司 | 一种具有多个智能合约执行引擎的虚拟机及其实现方法 |
US20190108140A1 (en) * | 2017-10-11 | 2019-04-11 | International Business Machines Corporation | Smart contract creation and monitoring for event identification in a blockchain |
CN109710384A (zh) * | 2018-12-29 | 2019-05-03 | 杭州趣链科技有限公司 | 一种安全的Java智能合约解释执行引擎及方法 |
CN110097364A (zh) * | 2019-04-30 | 2019-08-06 | 翟红鹰 | 区块链智能合约模块化生成方法、系统、终端及存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10341105B2 (en) * | 2017-06-07 | 2019-07-02 | At&T Intellectual Property I, L.P. | Blockchain-based social media history maps |
CN110083629B (zh) * | 2019-04-22 | 2024-05-07 | 深圳前海微众银行股份有限公司 | 一种基于区块链的事件订阅的方法及装置 |
-
2019
- 2019-08-22 CN CN201910776138.3A patent/CN110535928B/zh active Active
- 2019-08-22 CN CN202210181716.0A patent/CN114553953A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107103473A (zh) * | 2017-04-27 | 2017-08-29 | 电子科技大学 | 一种基于区块链的智能合约实现方法 |
CN107562513A (zh) * | 2017-07-18 | 2018-01-09 | 杭州趣链科技有限公司 | 一种基于java的智能合约生命周期的管理方法 |
US20190108140A1 (en) * | 2017-10-11 | 2019-04-11 | International Business Machines Corporation | Smart contract creation and monitoring for event identification in a blockchain |
CN109582438A (zh) * | 2018-10-30 | 2019-04-05 | 广州斯拜若科技有限公司 | 一种具有多个智能合约执行引擎的虚拟机及其实现方法 |
CN109710384A (zh) * | 2018-12-29 | 2019-05-03 | 杭州趣链科技有限公司 | 一种安全的Java智能合约解释执行引擎及方法 |
CN110097364A (zh) * | 2019-04-30 | 2019-08-06 | 翟红鹰 | 区块链智能合约模块化生成方法、系统、终端及存储介质 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112214802A (zh) * | 2020-09-30 | 2021-01-12 | 电子科技大学 | 一种区块链智能合约消息发布订阅方法 |
CN112214802B (zh) * | 2020-09-30 | 2023-04-28 | 电子科技大学 | 一种区块链智能合约消息发布订阅方法 |
CN112346820A (zh) * | 2020-11-16 | 2021-02-09 | 杭州复杂美科技有限公司 | 区块链jvm应用方法、设备和存储介质 |
CN112199221A (zh) * | 2020-12-04 | 2021-01-08 | 杭州趣链科技有限公司 | 事件推送方法、系统、区块链平台、合约调用端及介质 |
CN112199221B (zh) * | 2020-12-04 | 2021-03-30 | 杭州趣链科技有限公司 | 事件推送方法、系统、区块链平台、合约调用端及介质 |
WO2022116342A1 (zh) * | 2020-12-04 | 2022-06-09 | 杭州趣链科技有限公司 | 事件推送方法、系统、区块链平台、合约调用端及介质 |
CN112905554A (zh) * | 2021-02-07 | 2021-06-04 | 全链通有限公司 | 基于区块链的数据共享方法和装置 |
CN112905554B (zh) * | 2021-02-07 | 2024-05-10 | 全链通有限公司 | 基于区块链的数据共享方法和装置 |
CN113222766A (zh) * | 2021-05-13 | 2021-08-06 | 杭州趣链科技有限公司 | 金融产品的信息监管方法、装置、计算机设备及介质 |
CN113222766B (zh) * | 2021-05-13 | 2023-02-07 | 杭州趣链科技有限公司 | 金融产品的信息监管方法、装置、计算机设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN114553953A (zh) | 2022-05-27 |
CN110535928B (zh) | 2022-04-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110535928A (zh) | 一种区块链的java智能合约的事件推送方法 | |
KR101182463B1 (ko) | 세션 이니시에이션 프로토콜을 이용한 호출 그룹 관리 | |
JP5400305B2 (ja) | 式の処理を改良した方法、装置、およびコンピュータプログラム | |
CN104219316A (zh) | 一种分布式系统中的调用请求处理方法及装置 | |
CN113055421B (zh) | 一种服务网格治理方法及系统 | |
CN101778004B (zh) | 用于执行基于门限值调度的设备管理的终端和方法 | |
CN103176892A (zh) | 一种页面监控方法及系统 | |
US20120239680A1 (en) | Generating database scripts for executing business rules related to enterprise software in a database runtime environment | |
US8224933B2 (en) | Method and apparatus for case-based service composition | |
CN109117127A (zh) | 程序代码生成方法、装置及计算机可读存储介质 | |
EP1782571B1 (en) | Client provisioning with linking | |
CN102090039A (zh) | 执行数据中间处理的方法以及关联的计算机程序产品、数据中间处理设备和信息系统 | |
US20130297755A1 (en) | Network element configuration management | |
CN111159142B (zh) | 一种数据处理方法及装置 | |
JP2005190221A (ja) | キャッシュ制御装置およびその方法ならびにコンピュータプログラム | |
CN101141663B (zh) | 一种用于提高智能网访问数据库效率的方法及系统 | |
CN111125110B (zh) | 非主键字段的检查方法、装置、计算机设备及存储介质 | |
CN113076107A (zh) | 一种通过有限状态机对日志进行自动采集融合的方法 | |
EP1872205A1 (en) | System and method for efficient hosting of wireless applications by encoding application component definitions | |
US20090313307A1 (en) | Manipulation of network management information | |
US9235382B2 (en) | Input filters and filter-driven input processing | |
CN115098760B (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN115134167B (zh) | 一种漏洞扫描方法、装置、设备及存储介质 | |
CN110837453B (zh) | 一种公文交换平台的监控方法及相关装置 | |
CN111383071B (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 |