I'm trying to get a WETH by calling the WETH contract on Kovan (using ethers.js) but something goes wrong. Here's my code:
const swapETHForWETH = async(eth: string) => {
const wethAddr = "0xd0a1e359811322d97991e03f863a0c30c2cf029c";
const wetAbi = [
"function allowance(address owner, address spender) external view returns (uint256 remaining)",
"function approve(address spender, uint256 value) external returns (bool success)",
"function balanceOf(address owner) external view returns (uint256 balance)",
"function decimals() external view returns (uint8 decimalPlaces)",
"function name() external view returns (string memory tokenName)",
"function symbol() external view returns (string memory tokenSymbol)",
"function totalSupply() external view returns (uint256 totalTokensIssued)",
"function transfer(address to, uint256 value) external returns (bool success)",
"function transferFrom(address from, address to, uint256 value) external returns (bool success)",
"function deposit() external",
"function withdraw(uint wad) external"
];
const contract = new Contract(wethAddr, wetAbi, wallet);
try {
const tx = await contract.deposit({
from: wallet.address,
value: utils.parseEther(eth)
});
const txResponse = await tx.wait();
console.log(txResponse);
} catch(err) {
console.log(err);
}
};
The error states that:
Error: non-payable method cannot override value (operation="overrides.value", value={"type":"BigNumber","hex":"0x016345785d8a0000"}, code=UNSUPPORTED_OPERATION, version=contracts/5.5.0)
at Logger.makeError (/home/whiteboii/POC/aave_poc/node_modules/@ethersproject/logger/lib/index.js:199:21)
at Logger.throwError (/home/whiteboii/POC/aave_poc/node_modules/@ethersproject/logger/lib/index.js:208:20)
at /home/whiteboii/POC/aave_poc/node_modules/@ethersproject/contracts/lib/index.js:247:36
at step (/home/whiteboii/POC/aave_poc/node_modules/@ethersproject/contracts/lib/index.js:48:23)
at Object.next (/home/whiteboii/POC/aave_poc/node_modules/@ethersproject/contracts/lib/index.js:29:53)
at fulfilled (/home/whiteboii/POC/aave_poc/node_modules/@ethersproject/contracts/lib/index.js:20:58) {
reason: 'non-payable method cannot override value',
code: 'UNSUPPORTED_OPERATION',
operation: 'overrides.value',
value: BigNumber { _hex: '0x016345785d8a0000', _isBigNumber: true }
}
Best Answer
As far as I know your
deposit
function should be marked aspayable
in your ABI definition.So using
function deposit() external payable
should work.