您当前的位置: 首页 > 

【03】

暂无认证

  • 7浏览

    0关注

    196博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

solidity函数重载以及调用

【03】 发布时间:2022-09-09 17:58:15 ,浏览量:7

如何调用重载方法 web3.js调用

call调用重载方法查数据

const web3 = new Web3('https://mainnet.infura.io/v3/9aa3d95b3bc440fa88ea12eaa4456161')
const contract = new web3.eth.Contract(ContractAbi,ContractAddress)
const rewardsBalance = await contract.methods['f(uint256,address)'](1,"0x0000000000000000000000000000000000000000").call()
console.log('rewardsBalance', rewardsBalance)

send调用重载方法写数据

const web3 = new Web3(library?.provider || 'https://mainnet.infura.io/v3/9aa3d95b3bc440fa88ea12eaa4456161')
const contract = new web3.eth.Contract(ContractAbi,ContractAddress)
const rewardsBalance = await contract.methods['claimRewards(uint256)'](1).send({from: account})
ethers.js调用
const {library, account, chainId} = useWeb3React()
const staticJsonRpcProvider = new ethers.providers.StaticJsonRpcProvider('https://mainnet.infura.io/v3/9aa3d95b3bc440fa88ea12eaa4456161')

let contract = new ethers.Contract(
  ContractAddress,
  ContractAbi,
  library?.getSigner() ?? staticJsonRpcProvider
);
console.log(contract)
const rewardsBalance = await contract['f(uint256,address)'](1,"0x0000000000000000000000000000000000000000")
console.log('rewardsBalance', rewardsBalance.toString())
@chainstarter/multicall-client.js调用
  • 这款是自主研发的支持高并发multicall库

查数据

import {config, Contract as ClientContract, multicallClientSend, multicallClient, ChainId, getWeb3} from "@chainstarter/multicall-client.js";
const contract = new ClientContract(ContractAbi, ContractAddress, ChainId.ETH)
    const call = contract.getRewardsBalance('0x0000000000000000000000000000000000000000')
    const call2 = contract['getRewardsBalance(address,uint256)']('0x0000000000000000000000000000000000000000', 1)
    multicallClient([
      call,
      call2,
      contract.governor()
    ]).then(res => {
      console.log('res', res)
    })

写数据

import {config, Contract as ClientContract, multicallClientSend, multicallClient, ChainId, getWeb3} from "@chainstarter/multicall-client.js";
const contract = new ClientContract(ContractAbi, ContractAddress, ChainId.ETH)
const send1 = contract['claimRewards(uint256)'](1)
    multicallClientSend([
      send1
    ], window.ethereum).send({
      from: account
    }).on('transactionHash', (hash) => {
 
		}).on('receipt', (rec) => {
		    
		}).on('error', (err) => {
		    
		  })
关于solidity函数重载

一个合约可以有多个同名但参数类型不同的函数。这个过程称为“重载”,也适用于继承的函数。下面的例子展示 f了合约范围内函数的重载A

pragma solidity >=0.4.16 =0.4.16 =0.4.16             
关注
打赏
1657344724
查看更多评论
0.0361s