在inputData里,32byte 为一个参数,
0-31 :recipient
32-63:amountIn
64-95:amountOutMin
128-159: payerIsUser
192-223:token0
224-255:token1
差不多就这么一个参数
if (command == Commands.V2_SWAP_EXACT_IN) {
// equivalent: abi.decode(inputs, (address, uint256, uint256, bytes, bool))
address recipient;
uint256 amountIn;
uint256 amountOutMin;
bool payerIsUser;
assembly {
recipient := calldataload(inputs.offset)
amountIn := calldataload(add(inputs.offset, 0x20))
amountOutMin := calldataload(add(inputs.offset, 0x40))
// 0x60 offset is the path, decoded below
payerIsUser := calldataload(add(inputs.offset, 0x80))
}
address[] calldata path = inputs.toAddressArray(3);
address payer = payerIsUser ? lockedBy : address(this);
v2SwapExactInput(map(recipient), amountIn, amountOutMin, path, payer);
}