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;
}
相关推荐
Knight_AL15 小时前
浅拷贝与深拷贝详解:概念、代码示例与后端应用场景
android·java·开发语言
枫叶丹415 小时前
【Qt开发】输入类控件(六)-> QDial
开发语言·qt
U.2 SSD16 小时前
Echart仪表盘示例
javascript·echarts
qq_18417767716 小时前
前端自动部署项目到服务器
服务器·前端·javascript
Never_Satisfied16 小时前
在JavaScript / HTML / Node.js中,post方式的Content-Type属性的text的三种编码
javascript·node.js·html
思考的笛卡尔16 小时前
Go语言实战:高并发服务器设计与实现
服务器·开发语言·golang
努力努力再努力wz16 小时前
【C++进阶系列】:万字详解智能指针(附模拟实现的源码)
java·linux·c语言·开发语言·数据结构·c++·python
凤年徐16 小时前
【C++】string的模拟实现
c语言·开发语言·c++
Never_Satisfied16 小时前
在JavaScript / HTML中,Chrome报错Refused to execute inline script
javascript·chrome·html
敲代码的嘎仔16 小时前
JavaWeb零基础学习Day2——JS & Vue
java·开发语言·前端·javascript·数据结构·学习·算法