for (uint256 i = 0; i < path.length - 1;) {
// 直接使用传入的pair地址获取reserves
(uint256 reserve0, uint256 reserve1, ) = Pair(pair[i]).getReserves();
// 根据token顺序确定reserveIn和reserveOut
address token0 = path[i] < path[i + 1] ? path[i] : path[i + 1];
(uint256 reserveIn, uint256 reserveOut) = path[i] == token0
? (reserve0, reserve1)
: (reserve1, reserve0);
amounts[i + 1] = getAmountOut(amounts[i], reserveIn, reserveOut);
unchecked { ++i; }
}
正常别的合约使用只花费3w+ gas,这种写法使用了6w