web3js实现通过合约方法进行代币交易查询余额

web3js

这里使用MetaMask注入的etherum

js 复制代码
import MetaMaskSDK from '@metamask/sdk';
import Web3 from 'web3';

let option = {
  injectProvider: false,
  communicationLayerPreference: 'webrtc',
  preferDesktop: true
}
const MMSDK = new MetaMaskSDK(option);
const ethereum = MMSDK.getProvider();
let web3 = new Web3(ethereum);

获取合同

js 复制代码
getContract(abi, address) {
    if (!web3) return false;
    let contract = new web3.eth.Contract(abi, address);
    return contract
  }

交易

通过合同实现交易,具体参数根据合约需要,数量一般为16进制

js 复制代码
async sendTransactionByContract(param) {
    const myContract = this.getContract(param.abi, param.address);
    if (!myContract) return;
    return new Promise((resolve, reject) => {
      myContract.methods[param.funcName](param.amount ? this.toHex(param.amount) : null).send({
        from: param.from
      }).then(res => {
        resolve(res)
      }).catch(err => {
        reject(err);
        showToast(err)
      })
    })
  }

获取余额等

通过合同查询余额等

js 复制代码
async queryTransactionByContract(param) {
  const myContract = this.getContract(param.abi, param.address);
  if (!myContract) return;
  let ret = await myContract.methods[param.funcName](param.from).call()
  return ret;
}
相关推荐
遂心_13 小时前
JavaScript 函数参数传递机制:一道经典面试题解析
前端·javascript
遂心_13 小时前
深入理解 React Hook:useEffect 完全指南
前端·javascript·react.js
前端Hardy14 小时前
HTML&CSS: 谁懂啊!用代码 “擦去”图片雾气
前端·javascript·css
前端Hardy14 小时前
HTML&CSS:好精致的导航栏
前端·javascript·css
一个不爱写代码的瘦子14 小时前
迭代器和生成器
前端·javascript
源猿人18 小时前
企业级文件浏览系统的Vue实现:架构设计与最佳实践
前端·javascript·数据可视化
RoyLin18 小时前
TypeScript设计模式:迭代器模式
javascript·后端·node.js
小桥风满袖20 小时前
极简三分钟ES6 - ES9中for await of
前端·javascript
编程贝多芬20 小时前
Promise 的场景和最佳实践
前端·javascript
Asort20 小时前
JavaScript 从零开始(四):基础语法详解——从变量声明到数据类型的完全指南
前端·javascript