web3调用智能合约取事件
合约地址示例
https://hecoinfo.com/address/0x910651F81a605a6Ef35d05527d24A72fecef8bF0#code
在取abi的时候,要先看当前合约是否为代理合约,如果是代理合约的话需要去取源合约的api,因为我们是调用源合约的方法,不能直接通过代理合约去调用源合约的方法(个人理解,有误指正)
以下是代理合约
点击跳转到源合约:https://hecoinfo.com/address/0x543a2ae552d993342a92e87aefc966b69534a798#code
拿到他的abi
getPastEvents调用合约
web3文档
https://web3js.readthedocs.io/en/v1.3.4/web3-eth-contract.html#getpastevents
初始化Contract
import Web3 from 'web3'
import contractABI from '../ABI/contractABI.json'//contractABI为上面源合约地址的abiconst web3 = new Web3(window.ethereum)
var myContractInstance = new web3.eth.Contract(contractABI, adderss, {from: '0x23FCB0E1DDbC821Bd26D5429BA13B7D5c96C0DE0',gasPrice: '100',...
});
adderss取值为代理合约,也就是我们自己合约地址的address,并非源合约地址的address
调用合约
获取所有合约事件
myContractInstance.getPastEvents('allEvents', {filter: {}, fromBlock: 0, toBlock: 'latest'}).then((res) => {console.log(res)})
获取指定合约事件
myContractInstance.getPastEvents('ChargeFee', {filter: {}, fromBlock: 0, toBlock: 'latest'}).then((res) => {console.log(res)})
哪些是事件?
demo
import React from 'react'
import Web3 from 'web3'
import contractABI from '../ABI/contractABI.json'const web3 = new Web3(window.ethereum)
var myContractInstance = new web3.eth.Contract(contractABI, '0x910651F81a605a6Ef35d05527d24A72fecef8bF0', {from: '0x23FCB0E1DDbC821Bd26D5429BA13B7D5c96C0DE0',gasPrice: '100'
});export default function Demo() {const getAllEvens = () => {myContractInstance.getPastEvents('allEvents', {filter: {}, fromBlock: 0, toBlock: 'latest'}).then((res) => {console.log(res)})}const getEven = (event) => {myContractInstance.getPastEvents(event, {filter: {}, fromBlock: 0, toBlock: 'latest'}).then((res) => {console.log(res)})}return (<div><button onClick={getAllEvens}>获取所有事件allEvents</button><button onClick={() => getEven('Transfer')}>获取单个事件Transfer</button><button onClick={() => getEven('ChargeFee')}>获取单个事件ChargeFee</button></div>)
}
结果
合约是在以太坊主链上的,需要连接以太坊主链才能获取到数据,否则为空数组
获取全部和获取某一个事件的区别貌似就是,获取单个事件是从全部事件里面筛选出来的,相当于一个query参数(个人理解),不过这样请求速度肯定会更快
web3调用智能合约取事件相关推荐
- 使用web3调用智能合约的简单例子
当使用Solidity语言开发完成一个智能合约并部署后,如何在一个Web应用程序(或者手机App)中调用它?使用web3.js库,可以很容易的做到这些.通过一个最简单的例子我们来看看如何做到这些,分为 ...
- MetaMask与Web3中智能合约调用
MetaMask 是一款浏览器插件钱包,简称小狐狸,可以连接以太坊实现购买NFT,只需添加至浏览器扩展程序即可使用,非常方便. 下载链接 Web3 浏览器检测 要验证浏览器是否正在运行 MetaMas ...
- Web3与智能合约交互实战
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. Web3与智能合约交互实战 以太坊中智能合约和web3交互实战 最近区块链.以太坊十分的火,所有就会有许多人去进入区块链 ...
- 以太坊Dapp通过web3js部署调用智能合约
通过web3js部署调用智能合约 1.在线编译智能合约 2.部署合约 3.调用合约 参考视频:https://www.bilibili.com/video/BV14z4y1Z7Jd?p=1 1.在线编 ...
- 智能合约:从 Python 调用智能合约
智能合约:从 Python 调用智能合约 以太坊带来了智能合约的进步,其是可公开验证的代码.如果我们改变合约状态,我们将花费一些gas.现在,让我们创建一个Python程序,它可以在以太坊上调用智能合 ...
- 智能合约 web3j Java_Java使用web3j调用智能合约
1.Java程序引入相关依赖,后面用于调用智能合约中的函数 org.web3j core 5.0.0 org.web3j codegen 5.0.0 org.fisco-bcos solcJ 0.5. ...
- web3:智能合约-虚拟机(EVM、HVM、WASM、MOVE)
在区块链上,用户通过运行部署在区块链上的合约,完成需要共识的操作.而为智能合约提供运行环境的便是对应的虚拟机. 目录 EVM 基础概念 技术细节 EVM的存储模型 交易在EVM的执行 普通转账交易 智 ...
- 在英文版的remix部署,拿到部署地址在中文版的remix 中 合约地址中输入地址,再部署可以实现调用 java调用智能合约Unmatched arguments from index 2
目录 java调用智能合约 在英文版的remix部署,拿到部署地址
- Java智能合约工具包|Java调用智能合约|Java调用ERC20、ERC721、ERC1155合约
Magician-ContractsTools是一个用于调用智能合约的工具包,你可以非常容易地在Java程序中调用智能合约进行查询和写入操作. 有三个内置的标准合约模板,分别是ERC20.ERC721 ...
- 区块链之java调用智能合约(一)编译智能合约
前言 首先,还是一贯的思路,带着问题学习. 在最后,附带上我的Gitee代码,因为国内访问github有时候真的很蛋疼. 提问 1.Solidity是什么? 2.java如何调用Solidity? 解 ...
最新文章
- SysTick定时器的一个简单应用
- 神经网络为什么可以实现分类?---三分类网络0,1,2与弹性振子力学系统
- 新一代的树莓派3版本——Raspberry Pi 3 发布了
- B1277 [HNOI2002]Tinux系统 树形dp
- 转 学习:设置Windows live writer “不发布”到博客园随笔
- 收集Java 性能优化的44个建议
- java count 在哪一类里_count 是java关键字吗
- 【干货分享】自己总结录制的web前端精讲视频,零基础入门学习资料,开发工具
- RCE 0day影响数万台QNAP SOHO NAS 设备
- mybatis基础_动态代理开发
- Atitit 提升战力眼光和组织能力的几大要点 目录 1. 成长金字塔模型 德雷福斯模型	1 2. 提升战略眼光,	3 2.1. 视野与格局	3 2.2. 未来预测 未来发展负责,判断未来趋势,	3
- 红米7pro支持html不,可以畅快的刷机了,红米Note 7 Pro等机型适配 TWRP
- Windows XP 64位注册表删除问题
- 我们试用了市面上几款微信自动化软件,哪家弱哪家强?
- Web前端工程师 VS 前端工程师?What?
- ubuntu服务器系统进入安全模式,ubuntu bios 无法进入安全模式
- TensorFlow Serving
- 华三模拟器HCL文件打开/导入失败解决方法
- 10年过去,人们买不起旗舰机了
- 莫纳什大学计算机专业研究生在哪个校区,盘点莫纳什大学2019年计算机类硕士课程...
热门文章
- MP3的采样率和比特率
- 流量红利渐失,电商的“新故事”往哪讲?
- MySQL数据库创建表
- Akka-CQRS(9)- gRPC,实现前端设备与平台系统的高效集成
- Python——组合数据类型(字符串、元组、列表、字典)转换总结
- 1.定义一个基类 Base,有两个公有成员函数fn1( ),fn2 ( )。 私有派生出Derived类,如何通过Derived 类的对象调用基类的函数fnl() ?
- C. Banh-mi
- 利用spring集成redis使用
- jenkins k8s trying and failing to pull image
- 红警2补丁和联机网络配置