合约监听。

顾名思义,当合约发生交易的时候,我们想要得到交易的某些信息。

这个就是合约监听。

首先呢,我们需要知道,智能合约的编写。因为如果只提供部分代码的话,是完全看不懂意思的。

其中合约监听有几种方式。

观察者,发布订阅模式。

这个什么模式,现在没搞太懂

首先,上个合约代码看看。

// 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(六) 合约监听相关推荐

  1. java服务端监听_Java客户端正在监听WebSphere MQ服务器?

    我需要编写一个监听WebSphere MQ服务器的Java客户机.消息放入服务器的队列中.Java客户端正在监听WebSphere MQ服务器? 我开发了这个代码,但我不确定它是否正确.如果正确,那我 ...

  2. Java中事件监听机制

    Java中事件监听机制 一.事件监听机制的定义 要想了解Java中的事件监听机制,首先就要去了解一下在Java中事件是怎样去定义的呢!在使用Java编写好一个界面后,我们就会对界面进行一些操作,比如, ...

  3. java监听机制_详解java的事件监听机制和观察者设计模式

    首先说说监听器: 监听器就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上述事件后,监听器某个方法将立即被执 行. java的事件监 ...

  4. 用java的事件监听机制实现一个简单的画板应用:通过选择图形按钮和颜色按钮来画出自己想画的图形:直线、空心矩形、圆形、折线、多边形、圆角矩形、弧线、曲线、喷枪

    今天做一个简单的画板,完整代码附在文章末尾处. - 功能:通过选择图形按钮和颜色按钮来画出自己想画的图形. - 界面展示: - 思路: 1.做一个可视化界面:创建JFrame对象,并设置Title.S ...

  5. java中事件监听_Java中的事件监听机制

    鼠标事件监听机制的三个方面: 1.事件源对象: 事件源对象就是能够产生动作的对象.在Java语言中所有的容器组件和元素组件都是事件监听中的事件源对象.Java中根据事件的动作来区分不同的事件源对象,动 ...

  6. 13、Java Swing事件监听:事件处理模型和事件监听器

    事件表示程序和用户之间的交互,例如在文本框中输入,在列表框或组合框中选择,选中复选框和单选框,单击按钮等.事件处理表示程序对事件的响应,对用户的交互或者说对事件的处理是事件处理程序完成的. 当事件发生 ...

  7. java 多个监听_java中监听一个客户端怎么做?监听多个怎么做?

    随着时代的不断进步与发展,人们对于科学技术的使用也越来越普遍化.人们都开始自己学习编程语言以更好的适应时代的发展.今天就来为大家介绍一下,java中监听一个客户端怎么做?监听多个怎么做?一起来看看吧. ...

  8. java addlistener_Java怎样监听文本//比如下面 y.addInputMethodListener((InputMethodListener) this);...

    Java怎样监听文本//比如下面 y.addInputMethodListener((InputMethodListener) this);0 import java.awt.*; import ja ...

  9. java swing事件监听_Java swing(awt):事件监听机制的实现原理+简单示例

    (1)实现原理 事件监听机制的实现: 参考图:事件模型_ActionEvent 为了节省资源,系统无法对某个事件进行实时的监听.故实现的机制是当发生某个事件后,处理代码将被自动运行,类似钩子一般.(回 ...

最新文章

  1. gorm软删除_gorm踩坑:软删除与某个字段的唯一性
  2. 程序员都和谁一起睡觉?
  3. ubuntu 开启关闭mysql 服务
  4. 仿微博国际版首页点击显示分组列表(popupwindow悬浮阴影效果)
  5. 机器学习算法之 KNN
  6. cnn 回归 坐标 特征图_RCNN, Fast R-CNN 与 Faster RCNN理解及改进方法
  7. CCF NOI1038 玩扑克
  8. Z-score标准化[转载]
  9. mysql 密码sa_重置MySQL root密码
  10. T1-商贸宝,提取暂存单据提示没有权限
  11. MATLAB struct函数(结构体数组)
  12. 苏州持续深化区块链技术在公证领域的应用
  13. 使用 VMware Server 在 Oracle Enterprise Linux 上安装 Oracle RAC 10g
  14. 1.3【展讯平台】Android 驱动(Kernel)、系统(framework) 定制,调试日志
  15. 北科智能车为什么能这么牛?
  16. 从王庆根自杀到欧建新自杀之我见
  17. 史玉柱10大广告法则:洞悉人性敢投入精于执行
  18. 在线考试系统(4)——学生端主页设计
  19. 天池NLP学习赛(1)赛题理解
  20. linux下qt编程小游戏,Demo_2:Qt实现猜字小游戏

热门文章

  1. Opera全球CEO:计划近期推出中国版浏览器
  2. InfoGAN论文笔记+源码解析
  3. 【Linux操作系统】——网络配置与SSH远程
  4. 路由器交换机:配置命令
  5. 细说inchat系统客户端开发之路
  6. Cloudera和Hortonworks宣布合并:对Hadoop的一记重创!
  7. ATECC508A芯片开发笔记(六):产生CSR以及申请证书(X.509)流程及其内容分析
  8. 微信小程序-开发入门(一)
  9. mysql设置初始密码(linux)
  10. react 生命挂钩_秋田+ React挂钩=耸人听闻的国家管理食谱