draft-IERC20Permit.sol

hi, why is there no transfer or transferfrom function in draft-IERC20Permit.sol?

Hi, welcome to the community! :wave:

I think this contract is an extension for the ERC20, so there is no need to add these basic functions.

Thanks , so after signing the permit function to the user, does it mean that I can transfer tokens with the IERC20.transfer function? So it would be wrong to write something like ( IERC20Permit.transfer ), right? I would be very happy if you could share a sample code where I can sign the User a permit function and then transfer tokens before the deadline.

Emmmm, you know, there are two ways to transfer tokens: transfer and transferFrom, but for the latter, users have got to call approve() at first, so in order to do not send an extra transaction, permit() comes, users can transfer token with the signed message with permit().

So I think when you use permit(), you are expected to use transferFrom() rather than transfer()

Thanks for everything, I'm trying to write a marketplace contract, the part I'm stuck with is collecting the offers with the permit function and processing the offer that the user deems appropriate. As far as I understand from what you said, are you saying that after signing the permit function, I can process the signature with IERC20Permit().permit() during the acceptance phase of the offer and then transfer the token with IERC20().transferFrom? so this way?

IERC20Permit payToken = IERC20Permit(offerNft.payToken);
payToken.permit(
offerNft.signer.offerer,
offerNft.signer.spender,
offerNft.signer.offerAmount,
offerNft.signer.deadline,
v,
r,
s);
IERC20(listedNft.payToken).transferFrom(
address(this),
royaltyRecipient,
royaltyAmount);

Yeah, almost like what you said.

function supplyWithPermit(
    xxx,
    uint8 permitV,
    bytes32 permitR,
    bytes32 permitS
) public {
    IERC20WithPermit(token).permit(xxx);
    IERC20WithPermit(token).transferFrom(xxx);
}

That's exactly what I'm trying to say, actually from the very beginning, there is no transferFrom function in interface IERC20Permit {...}.

So when I inherit the draft-IERC20Permit.sol contract from openzeppelin, I cannot write IER20Permit().TransferFrom() and I get an error. Actually, I'm trying to figure out how to solve this...

hello, So, in order to use the TransferFrom function, do I need to write an interface for the ERC20Permit contract myself?

Maybe your token should just like Maker: Dai Stablecoin | Etherscan
It has the function permit() and transferFrom()