栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

区块链之java(六.1) 合约监听

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

区块链之java(六.1) 合约监听

之前写的那一篇呢,好像有点点问题。就是在设定监听的时候,没有编写具体监听的方法。

今天带来一篇新的方式的合约监听

前面的就不赘述了。合约上的监听是一样的。

在java中。根据abi生产的文件,其实在里面是有监听方法的

代码如下:

 public Flowable stoEventFlowable(EthFilter filter) {
        return web3j.ethLogFlowable(filter).map(new Function() {
            @Override
            public StoEventResponse apply(Log log) {
                EventValuesWithLog eventValues = extractEventParametersWithLog(STO_EVENT, log);
                StoEventResponse typedResponse = new StoEventResponse();
                typedResponse.log = log;
                typedResponse.number = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
                return typedResponse;
            }
        });
    }

实际上呢,在初始化合约后,直接使用合约调取监听。会比后期写监听方便一些。

这里方便的点有如下几点:

1.不用手动转换数据类型,可以拿到直接使用

2.不用装配监听的方法等。(底层已实现)

具体调用如下。(钱包加载,管理器加载,合约地址这些也不赘述了)

 Storage storage = Storage.load(address, web3j, transactionManager, gasPrice, Contract.GAS_LIMIT);
            BigInteger staBlock = web3j.ethBlockNumber().send().getBlockNumber();

            storage.stoEventFlowable(DefaultBlockParameter.valueOf(staBlock),     DefaultBlockParameterName.LATEST).subscribe(tx -> {

                System.out.println(tx.number);

            });

是不是比上一篇方便很多。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/999624.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号