这是我在索尔合同上的职责
function swapExactInputMultihop(uint amountIn, address importToken1,address importToken2,address importToken3,uint fee1,uint fee2, uint fee3)
external
returns (uint)
TransferHelper.safeApprove(importToken1, address(swapRouter), amountIn);
ISwapRouter.ExactInputParams memory params = ISwapRouter
.ExactInputParams({
path: abi.encodePacked(
importToken1,
uint24(fee1),
importToken2,
uint24(fee2),
importToken3,
uint24(fee3),
importToken1
),
recipient: msg.sender,
deadline: block.timestamp,
amountIn: amountIn,
amountOutMinimum: 0
});
uint amountOut = swapRouter.exactInput(params);
console.log("HEEELP",amountOut);
return amountOut;
}在JavaScript中,我调用这个函数,我希望得到amountOut
arbitrage = await swapExamples.swapExactInputMultihop(amountIn,importToken1,importToken2,importToken3,fee1,fee2,fee3)
console.log(arbitrage)但我收到了所有的数据
{
hash: '0x97668c1ef43c53e2126e645f8224fe68188be2cb024c0e0e5deb722164c8491f',
type: 2,
accessList: [],
blockHash: '0xcb381a0c0d855f60695f4decc2b18efa9ab1f0939b9634812f8ffd18d0ce406c',
blockNumber: 15466768,
transactionIndex: 0,
confirmations: 1,
from: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266',
gasPrice: BigNumber { value: "6285584267" },
maxPriorityFeePerGas: BigNumber { value: "1000000000" },
maxFeePerGas: BigNumber { value: "11571168534" },
gasLimit: BigNumber { value: "29026840" },
to: '0xFD2Cf3b56a73c75A7535fFe44EBABe7723c64719',
value: BigNumber { value: "0" },
nonce: 289,
data: '0xddae289800000000000000000000000000000000000000000000152d02c7e14af68000000000000000000000000000006b175474e89094c44da98b954eedeac495271d0f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000bb80000000000000000000000000000000000000000000000000000000000000bb8',
r: '0xdbcb97e9e2678b6f4614950351c220abdd8692aa12957953d3409d31181908c1',
s: '0x0f00c2d48f721c265fd68c921f2f3648559a439f0af206e5c9bc464dfa13abe3',
v: 1,
creates: null,
chainId: 31337,
wait: [Function (anonymous)]
}我怎样才能得到amountOut?
发布于 2022-09-03 18:42:08
当进行非视图/纯函数调用时,无法获得返回值。
您必须将返回值放入事件中,并在调用之后读取该事件,或者使用ethers.js callStatic。这将查询节点在进行调用时返回值的大小,但实际上不会发出调用或更改状态。这被看作是一个视图函数。
你可以这样做:
// make the static view call
let arbitrage = await swapExamples.callStatic.swapExactInputMultihop(amountIn,importToken1,importToken2,importToken3,fee1,fee2,fee3)
// make the real call
let tx = await swapExamples.swapExactInputMultihop(amountIn,importToken1,importToken2,importToken3,fee1,fee2,fee3)
connsole.log(arbitrage)https://ethereum.stackexchange.com/questions/134932
复制相似问题