合约地址示例

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调用智能合约取事件相关推荐

  1. 使用web3调用智能合约的简单例子

    当使用Solidity语言开发完成一个智能合约并部署后,如何在一个Web应用程序(或者手机App)中调用它?使用web3.js库,可以很容易的做到这些.通过一个最简单的例子我们来看看如何做到这些,分为 ...

  2. MetaMask与Web3中智能合约调用

    MetaMask 是一款浏览器插件钱包,简称小狐狸,可以连接以太坊实现购买NFT,只需添加至浏览器扩展程序即可使用,非常方便. 下载链接 Web3 浏览器检测 要验证浏览器是否正在运行 MetaMas ...

  3. Web3与智能合约交互实战

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. Web3与智能合约交互实战 以太坊中智能合约和web3交互实战 最近区块链.以太坊十分的火,所有就会有许多人去进入区块链 ...

  4. 以太坊Dapp通过web3js部署调用智能合约

    通过web3js部署调用智能合约 1.在线编译智能合约 2.部署合约 3.调用合约 参考视频:https://www.bilibili.com/video/BV14z4y1Z7Jd?p=1 1.在线编 ...

  5. 智能合约:从 Python 调用智能合约

    智能合约:从 Python 调用智能合约 以太坊带来了智能合约的进步,其是可公开验证的代码.如果我们改变合约状态,我们将花费一些gas.现在,让我们创建一个Python程序,它可以在以太坊上调用智能合 ...

  6. 智能合约 web3j Java_Java使用web3j调用智能合约

    1.Java程序引入相关依赖,后面用于调用智能合约中的函数 org.web3j core 5.0.0 org.web3j codegen 5.0.0 org.fisco-bcos solcJ 0.5. ...

  7. web3:智能合约-虚拟机(EVM、HVM、WASM、MOVE)

    在区块链上,用户通过运行部署在区块链上的合约,完成需要共识的操作.而为智能合约提供运行环境的便是对应的虚拟机. 目录 EVM 基础概念 技术细节 EVM的存储模型 交易在EVM的执行 普通转账交易 智 ...

  8. 在英文版的remix部署,拿到部署地址在中文版的remix 中 合约地址中输入地址,再部署可以实现调用 java调用智能合约Unmatched arguments from index 2

    目录 java调用智能合约 在英文版的remix部署,拿到部署地址

  9. Java智能合约工具包|Java调用智能合约|Java调用ERC20、ERC721、ERC1155合约

    Magician-ContractsTools是一个用于调用智能合约的工具包,你可以非常容易地在Java程序中调用智能合约进行查询和写入操作. 有三个内置的标准合约模板,分别是ERC20.ERC721 ...

  10. 区块链之java调用智能合约(一)编译智能合约

    前言 首先,还是一贯的思路,带着问题学习. 在最后,附带上我的Gitee代码,因为国内访问github有时候真的很蛋疼. 提问 1.Solidity是什么? 2.java如何调用Solidity? 解 ...

最新文章

  1. SysTick定时器的一个简单应用
  2. 神经网络为什么可以实现分类?---三分类网络0,1,2与弹性振子力学系统
  3. 新一代的树莓派3版本——Raspberry Pi 3 发布了
  4. B1277 [HNOI2002]Tinux系统 树形dp
  5. 转 学习:设置Windows live writer “不发布”到博客园随笔
  6. 收集Java 性能优化的44个建议
  7. java count 在哪一类里_count 是java关键字吗
  8. 【干货分享】自己总结录制的web前端精讲视频,零基础入门学习资料,开发工具
  9. RCE 0day影响数万台QNAP SOHO NAS 设备
  10. mybatis基础_动态代理开发
  11. Atitit 提升战力眼光和组织能力的几大要点 目录 1. 成长金字塔模型 德雷福斯模型 1 2. 提升战略眼光, 3 2.1. 视野与格局 3 2.2. 未来预测 未来发展负责,判断未来趋势, 3
  12. 红米7pro支持html不,可以畅快的刷机了,红米Note 7 Pro等机型适配 TWRP
  13. Windows XP 64位注册表删除问题
  14. 我们试用了市面上几款微信自动化软件,哪家弱哪家强?
  15. Web前端工程师 VS 前端工程师?What?
  16. ubuntu服务器系统进入安全模式,ubuntu bios 无法进入安全模式
  17. TensorFlow Serving
  18. 华三模拟器HCL文件打开/导入失败解决方法
  19. 10年过去,人们买不起旗舰机了
  20. 莫纳什大学计算机专业研究生在哪个校区,盘点莫纳什大学2019年计算机类硕士课程...

热门文章

  1. MP3的采样率和比特率
  2. 流量红利渐失,电商的“新故事”往哪讲?
  3. MySQL数据库创建表
  4. Akka-CQRS(9)- gRPC,实现前端设备与平台系统的高效集成
  5. Python——组合数据类型(字符串、元组、列表、字典)转换总结
  6. 1.定义一个基类 Base,有两个公有成员函数fn1( ),fn2 ( )。 私有派生出Derived类,如何通过Derived 类的对象调用基类的函数fnl() ?
  7. C. Banh-mi
  8. 利用spring集成redis使用
  9. jenkins k8s trying and failing to pull image
  10. 红警2补丁和联机网络配置