我试图使用getTokenDepositAmount(uint inputToken)从前端(Reactjs)调用一个智能契约,但我在浏览器控制台中得到了这个错误:
Error: call revert exception [ See: https://links.ethers.org/v5-errors-CALL_EXCEPTION ] (method="getTokenDepositAmount(uint256)", data="0x", errorArgs=null, errorName=null, errorSignature=null, reason=null, code=CALL_EXCEPTION, version=abi/5.7.0)
at Logger.makeError (index.ts:269:1)
at Logger.throwError (index.ts:281:1)
at Interface.decodeFunctionResult (interface.ts:427:1)
at Contract.<anonymous> (index.ts:400:1)
at Generator.next (<anonymous>)
at fulfilled (index.ts:1:1)在“硬帽子”节点控制台中,我得到了以下信息:
eth_call
Contract call: UniswapClone#<unrecognized-selector>
From: 0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266
To: 0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0
Error: Transaction reverted: function selector was not recognized and there's no fallback function
at UniswapClone.<unrecognized-selector> (contracts/UniswapClone.sol:12)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
at HardhatNode.runCall (/home/rishabh/Documents/projects/uniswap-clone/node_modules/hardhat/src/internal/hardhat-network/provider/node.ts:639:20)
at EthModule._callAction (/home/rishabh/Documents/projects/uniswap-clone/node_modules/hardhat/src/internal/hardhat-network/provider/modules/eth.ts:354:9)
at HardhatNetworkProvider._sendWithLogging (/home/rishabh/Documents/projects/uniswap-clone/node_modules/hardhat/src/internal/hardhat-network/provider/provider.ts:139:22)
at HardhatNetworkProvider.request (/home/rishabh/Documents/projects/uniswap-clone/node_modules/hardhat/src/internal/hardhat-network/provider/provider.ts:116:18)
at JsonRpcHandler._handleRequest (/home/rishabh/Documents/projects/uniswap-clone/node_modules/hardhat/src/internal/hardhat-network/jsonrpc/handler.ts:188:20)
at JsonRpcHandler._handleSingleRequest (/home/rishabh/Documents/projects/uniswap-clone/node_modules/hardhat/src/internal/hardhat-network/jsonrpc/handler.ts:167:17)Smart合同功能:
function getTokenDepositAmount(uint inputToken) public view returns (uint) {
uint256 ethReserve = address(this).balance;
return ((inputToken * tokenReserve) / ethReserve) + 1;
}我在这里没有回复语句,但是我得到了这个错误。有人能告诉我我在这里做错了什么吗?
注意:我已经在本地主机上:8545,并将其中一个帐户从“草帽”节点导入到元数据库中。
下面是我调用函数的代码:
async function fetchDepositTokenAmount() {
console.log(contract);
const depositAmount = await contract.getTokenDepositAmount(
ethers.utils.parseEther("1")
);
console.log("deposit amount: ", depositAmount);
}发布于 2023-01-22 07:48:12
你试过预先兑换金额了吗?
async function fetchDepositTokenAmount() {
console.log(contract);
let amount = ethers.utils.parseEther("1");
const depositAmount = await contract.getTokenDepositAmount(amount);
console.log("deposit amount: ", depositAmount);
}现在该起作用了。希望能帮上忙
https://ethereum.stackexchange.com/questions/143408
复制相似问题