I wonder if there's a mechanism of transferring assets with receiver fee payment. Something like permit functions in solidity language?
Is it possible to copy this approach with PDAs? Share some sources if u know.
This is certainly possible! In general, it's much safer to approve someone to take funds, rather than to transfer them yourself. For example, if I want to transfer 10 A tokens to you, I'll delegate 10 A tokens from my account to your wallet. That way, you can transfer them from my account yourself.
Unfortunately, I still need to pay a Solana transaction fee to delegate to you. Even if you go through an escrow account using your own program and PDAs, the sender must still pay a transaction fee to move their funds.
If you want to do this with the receiver paying the entire fee, you can go through some signing API. For example, you send a request to my off-chain server asking for 10 tokens, and I reply with a signed transaction that transfers 10 tokens from my account to yours, but with you as the fee payer. You add your signature and then send it off to the network.