区块链之java(六) 合约监听
合约监听。
顾名思义,当合约发生交易的时候,我们想要得到交易的某些信息。
这个就是合约监听。
首先呢,我们需要知道,智能合约的编写。因为如果只提供部分代码的话,是完全看不懂意思的。
其中合约监听有几种方式。
观察者,发布订阅模式。
这个什么模式,现在没搞太懂
首先,上个合约代码看看。
// SPDX-License-Identifier: GPL-3.0pragma solidity >=0.7.0 <0.9.0;/*** @title Storage* @dev Store & retrieve value in a variable* @custom:dev-run-script ./scripts/deploy_with_ethers.ts*/
contract Storage {event storages(uint256 number);uint256 number;/*** @dev Store value in variable* @param num value to store*/function store(uint256 num) public {number = num;emit storages(num);}/*** @dev Return value * @return value of 'number'*/function retrieve() public view returns (uint256){return number;}}
其中呢,event storages(xxx)就是定义事件监听的基础。其次,出发消息,是在emit storages(xxx);
目前合约这块整好了。那么接下来,我们看看java这块的代码
前面呢,基本变化不大,就是一些初始化web3j的工作。如链地址,链id。钱包地址等等
package org.saiwen.paul;import org.web3j.protocol.Web3j;
import org.web3j.protocol.core.DefaultBlockParameterName;
import org.web3j.protocol.core.methods.request.EthFilter;
import org.web3j.protocol.http.HttpService;/*** @Author paul.peng* @Date 2022/6/6* @Version 1.0*/
public class App
{private static String netWorkUrl = "链地址";private static String credentialsAddress = "钱包地址";private static String contractAddress = "合约地址";public static void main( String[] args ){try {//连接对应的以太坊Web3j web3 = Web3j.build(new HttpService(netWorkUrl));//创建监听事件EthFilter filter = new EthFilter(DefaultBlockParameterName.EARLIEST,DefaultBlockParameterName.LATEST, contractAddress);//执行监听web3.ethLogFlowable(filter).subscribe(log -> {System.out.println(log.getBlockNumber());System.out.println(log.toString());});}catch (Exception e){e.printStackTrace();}}
}
其中呢,web3.ethLogFlowable最初的版本,可能叫做(web3.ethLogObservable)
这个就是个版本的问题,因为我这边引入的maven包是5.0.0的。所以只有ethLogFlowable方法。
然后。我们看看执行结果
第一个log.getBlockNumber()显示的是一个交易id。或者叫区块id。就是相当于订单的唯一id。
第二个。log.toString()实际就是里面的一些参数。
log里面的data就是交易双方的一个值。
这次输入的,就是一个1.所以显示的是0x000000...1这样。如果输入的指是2,那么就会显示0x00000...2这样的。
大概的监听就是这样的啦。
区块链之java(六) 合约监听相关推荐
- java服务端监听_Java客户端正在监听WebSphere MQ服务器?
我需要编写一个监听WebSphere MQ服务器的Java客户机.消息放入服务器的队列中.Java客户端正在监听WebSphere MQ服务器? 我开发了这个代码,但我不确定它是否正确.如果正确,那我 ...
- Java中事件监听机制
Java中事件监听机制 一.事件监听机制的定义 要想了解Java中的事件监听机制,首先就要去了解一下在Java中事件是怎样去定义的呢!在使用Java编写好一个界面后,我们就会对界面进行一些操作,比如, ...
- java监听机制_详解java的事件监听机制和观察者设计模式
首先说说监听器: 监听器就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上述事件后,监听器某个方法将立即被执 行. java的事件监 ...
- 用java的事件监听机制实现一个简单的画板应用:通过选择图形按钮和颜色按钮来画出自己想画的图形:直线、空心矩形、圆形、折线、多边形、圆角矩形、弧线、曲线、喷枪
今天做一个简单的画板,完整代码附在文章末尾处. - 功能:通过选择图形按钮和颜色按钮来画出自己想画的图形. - 界面展示: - 思路: 1.做一个可视化界面:创建JFrame对象,并设置Title.S ...
- java中事件监听_Java中的事件监听机制
鼠标事件监听机制的三个方面: 1.事件源对象: 事件源对象就是能够产生动作的对象.在Java语言中所有的容器组件和元素组件都是事件监听中的事件源对象.Java中根据事件的动作来区分不同的事件源对象,动 ...
- 13、Java Swing事件监听:事件处理模型和事件监听器
事件表示程序和用户之间的交互,例如在文本框中输入,在列表框或组合框中选择,选中复选框和单选框,单击按钮等.事件处理表示程序对事件的响应,对用户的交互或者说对事件的处理是事件处理程序完成的. 当事件发生 ...
- java 多个监听_java中监听一个客户端怎么做?监听多个怎么做?
随着时代的不断进步与发展,人们对于科学技术的使用也越来越普遍化.人们都开始自己学习编程语言以更好的适应时代的发展.今天就来为大家介绍一下,java中监听一个客户端怎么做?监听多个怎么做?一起来看看吧. ...
- java addlistener_Java怎样监听文本//比如下面 y.addInputMethodListener((InputMethodListener) this);...
Java怎样监听文本//比如下面 y.addInputMethodListener((InputMethodListener) this);0 import java.awt.*; import ja ...
- java swing事件监听_Java swing(awt):事件监听机制的实现原理+简单示例
(1)实现原理 事件监听机制的实现: 参考图:事件模型_ActionEvent 为了节省资源,系统无法对某个事件进行实时的监听.故实现的机制是当发生某个事件后,处理代码将被自动运行,类似钩子一般.(回 ...
最新文章
- gorm软删除_gorm踩坑:软删除与某个字段的唯一性
- 程序员都和谁一起睡觉?
- ubuntu 开启关闭mysql 服务
- 仿微博国际版首页点击显示分组列表(popupwindow悬浮阴影效果)
- 机器学习算法之 KNN
- cnn 回归 坐标 特征图_RCNN, Fast R-CNN 与 Faster RCNN理解及改进方法
- CCF NOI1038 玩扑克
- Z-score标准化[转载]
- mysql 密码sa_重置MySQL root密码
- T1-商贸宝,提取暂存单据提示没有权限
- MATLAB struct函数(结构体数组)
- 苏州持续深化区块链技术在公证领域的应用
- 使用 VMware Server 在 Oracle Enterprise Linux 上安装 Oracle RAC 10g
- 1.3【展讯平台】Android 驱动(Kernel)、系统(framework) 定制,调试日志
- 北科智能车为什么能这么牛?
- 从王庆根自杀到欧建新自杀之我见
- 史玉柱10大广告法则:洞悉人性敢投入精于执行
- 在线考试系统(4)——学生端主页设计
- 天池NLP学习赛(1)赛题理解
- linux下qt编程小游戏,Demo_2:Qt实现猜字小游戏