Pancakeswap Router V2 getAmountsOut等函数功能区别及用法问询
PancakeSwap Router V2 四个报价函数功能说明
1. 各函数具体功能
换出类(已知投入金额,计算可换得的产出金额)
getAmountOut:单交易对兑换计算,入参为投入代币数量amountIn、投入代币在交易对的储备量reserveIn、产出代币在交易对的储备量reserveOut,返回扣除手续费后单个交易对直接兑换可得到的产出代币数量。仅支持两个代币直接配对的兑换场景。getAmountsOut:多路径兑换计算,入参为投入代币总数量amountIn、兑换路径数组path(按投入到产出的顺序排列代币地址),函数会自动沿路径顺序查询所有交易对的储备数据,依次计算每一步兑换的金额,最终返回和路径长度一致的金额数组,数组下标和路径下标一一对应各阶段的代币数量。支持包含任意多中间代币的多跳兑换场景。
换入类(已知期望的产出金额,计算需要投入的金额)
getAmountIn:单交易对兑换计算,入参为期望获得的产出代币数量amountOut、投入代币在交易对的储备量reserveIn、产出代币在交易对的储备量reserveOut,返回包含手续费在内单个交易对直接兑换到目标产出需要投入的代币数量。仅支持两个代币直接配对的兑换场景。getAmountsIn:多路径兑换计算,入参为期望获得的产出代币总数量amountOut、兑换路径数组path(按投入到产出的顺序排列代币地址),函数会自动逆路径顺序查询所有交易对的储备数据,依次倒推每一步兑换需要的金额,最终返回和路径长度一致的金额数组,数组下标和路径下标一一对应各阶段的代币数量。支持包含任意多中间代币的多跳兑换场景。
2. 带后缀s和不带后缀s版本的差异
- 适用场景不同:不带
s的版本仅支持两个代币直接配对的单交易对兑换报价,带s的版本支持多跳兑换报价,适合两个代币没有直接交易对的场景。 - 入参要求不同:不带
s的版本需要调用方提前手动获取对应交易对的两个代币储备量作为入参,带s的版本仅需传入兑换路径,函数内部会自动查询路径上所有交易对的储备数据,无需调用方提前获取。 - 返回值不同:不带
s的版本返回单个数值,对应单交易对的计算结果;带s的版本返回和兑换路径长度一致的数组,对应路径上每一步的兑换金额。 - 调用成本不同:不带
s的版本是纯数学计算,不需要额外查询其他合约数据,gas消耗极低;带s的版本需要依次查询路径上所有交易对的储备数据,gas消耗随路径长度增加而升高。
内容的提问来源于stack exchange,提问作者Austin
相关产品推荐
相关产品推荐

