5 [Solidity]请问这种Pair之间的计算输出有没有更省gas的写法

        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

请先 登录 后评论
  • 0 关注
  • 0 收藏,799 浏览
  • 用户_20484 提出于 2025-03-23 11:02