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

用户_20484 用户_20484 提出于 2025-03-23 11:02 7684 浏览
        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

2 个回答

make it 2025-04-02 09:13
DDY 2025-04-08 13:20

写回答

你需要登录后才可以回答问题,登录