作者:@愚指导
漏洞在代码 PositionManager.sol#L61 处。
function mint(
MintParams calldata params
)
external
payable
override
checkDeadline(params.deadline)
returns (
uint256 positionId,
uint128 liquidity,
uint256 amount0,
uint256 amount1
)
{因为我们的合约并不支持原生代币的交易,所以也没有做原生代币的提取,我们的合约中的 payable 其实是没有必要的,相反它还可能会导致意外转入原生代币到合约之后无法提取。
修复方法如下,去掉 payable 即可。
function mint(
MintParams calldata params
)
external
- payable
override
checkDeadline(params.deadline)
returns (
uint256 positionId,
uint128 liquidity,
uint256 amount0,
uint256 amount1
)
{这个是漏洞提交的简单的示例模板,你可以提交 PR 来提交你发现的漏洞,帮助社区同学学习。