问题描述
嘿嘿!
当我运行连接到我的智能合约的 Dapp 应用程序时出现以下错误:未捕获(承诺)错误:返回错误:执行已恢复。
我猜测错误发生在我的多调用函数被调用的地方。我已经从 pancakeswap 分叉了这个函数:
1. const rawEarnings = await multicall(masterchefABI,calls)
2. const parsedEarnings = rawEarnings.map((earnings) => {
3. return new BigNumber(earnings).toJSON()
export const multicall = async (abi: any[],calls: Call[],requireSuccess = true) => {
const web3 = getWeb3NoAccount()
const multi = new web3.eth.Contract(MultiCallAbi as unkNown as AbiItem,getMulticallAddress())
const itf = new Interface(abi)
const calldata = calls.map((call) => [call.address.toLowerCase(),itf.encodefunctionData(call.name,call.params)])
const returnData = await multi.methods.aggregate(requireSuccess,calldata).call()
const res = returnData.map((call,i) => {
const [result,data] = call
return {
result,data: itf.decodefunctionResult(calls[i].name,data),}
})
return res
}
聚合函数:
function aggregate(Call[] memory calls) public returns (uint256 blockNumber,bytes[] memory returnData) {
blockNumber = block.number;
returnData = new bytes[](calls.length);
for (uint256 i = 0; i < calls.length; i++) {
(bool success,bytes memory ret) = calls[i].target.call(calls[i].callData);
require(success);
returnData[i] = ret;
}
}
调用:
interface Call {
address: string // Address of the contract
name: string // Function name on the contract (example: balanceOf)
params?: any[] // Function params
}
所以我在第 1 行调用我的函数,代码也通过这一行运行(console.log 在第 1 行之后)。但是rawEarnings中的returnValue一直没有保存,代码等待,出现错误。
Web 应用程序仅适用于特定的 masterChef 地址,但一旦我更改地址,它就会停止工作。也许我需要添加一些与我的主厨地址相对应的其他内容。
但是,它仍然没有解释为什么不保存 returnValue .. 请帮忙
非常感谢您提前
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)