can anyone tell me what's wrong with this function?

function list(address _asset, address _pair, uint _value) public payable {
require(_value > 0, "Value must be positive!");
require(msg.value == listingFee, "Wrong listing fee!");
require(isPair(_pair), "Invalid pair!");
require(pairs[_pair][_asset].pairPool == 0 && pairs[_pair][_asset].assetPool == 0, "You cannot list existing pair!");
IERC20 assetToken = IERC20(_asset);
IERC20 pairToken = IERC20(_pair);
require(assetToken.approve(address(this), _value), "Asset approval failed!");
require(pairToken.approve(address(this), minimumLiquidity[_pair]), "Value approval failed!");
require(assetToken.transferFrom(msg.sender, address(this), _value), "Asset transfer failed");
require(pairToken.transferFrom(msg.sender, address(this), minimumLiquidity[_pair]), "Pair transfer failed!");
pairs[_pair][_asset].k = _value * minimumLiquidity[_pair];
pairs[_pair][_asset].pairPool = minimumLiquidity[_pair];
pairs[_pair][_asset].assetPool = _value;
founder.transfer(msg.value);
}

Jul 9, 2023, 1:38 PM
it reverts on transferFrom
where should i ask it, what topic?
Jul 9, 2023, 1:38 PM
Did you increase allowance first?
Jul 9, 2023, 1:43 PM
i called approve() then, yes
it returns true but reverts transferFrom()
Jul 9, 2023, 2:01 PM

© 2024 Draquery.com All rights reserved.