我创建了一个智能契约(让我们称之为MyContract),并将其部署在孟买测试网上。我使用本教程连接到MyContract。这是我的密码:
import maticjs from '@maticnetwork/maticjs';
const { POSClient,use } = maticjs;
import maticjsWeb3 from '@maticnetwork/maticjs-web3';
const { Web3ClientPlugin } = maticjsWeb3;
import HDWalletProvider from "@truffle/hdwallet-provider";
import * as dotenv from 'dotenv'
dotenv.config()
// install web3 plugin
use(Web3ClientPlugin);
const posClient = new POSClient();
let fromAddress = "<my private address (also the miner of the contract)>";
await posClient.init({
network: 'testnet',
version: 'mumbai',
parent: {
provider: new HDWalletProvider(process.env.MNEMONIC, process.env.MUMBAI_RPC_URL)
},
child: {
provider: new HDWalletProvider(process.env.MNEMONIC, process.env.MUMBAI_RPC_URL),
defaultConfig: {
from : fromAddress
}
}
});
const erc20ChildToken = posClient.erc20("<MyContract address>");
const balance = await erc20ChildToken.getBalance(fromAddress);
console.log('balance', balance/10**18);
const result = await erc20ChildToken.stake(10);
console.log('result ', result)正如您在最后2行中看到的,我有一个调用erc20ChildToken.stake,我打算通过它调用契约的stake函数,但是我得到了这个错误:
TypeError: erc20ChildToken.stake is not a function
如何访问不属于标准ERC20接口的“特殊”函数?
发布于 2022-10-19 17:30:01
您需要提供正确的ABI并与其创建合同。您也可以使用低级别的调用,但更好的方法是使用正确的ABI。
https://ethereum.stackexchange.com/questions/137801
复制相似问题