使用web3转bep20 token时如何从另一个账户支付gas费用?

How to paid gas charges from another account when transfer bep20 token using web3?

let contract= new web3.eth.Contract(BUSD_TOKEN_ABI, BUSD_TOKEN_ADDRESS)
await contract.methods.transfer(toAddress, transFerValue).send({from: defaultAddress})

我可以使用上面的代码轻松地将 bep20 令牌从一个地址发送到另一个地址,并且工作正常,但在这种情况下,我需要从 defaultAddress 支付汽油费。但我想从另一个账户支付汽油费。使用web3转bep20代币时,有没有办法从另一个账户支付gas费? 我搜索了很多但没有找到任何合适的答案。如果有人知道答案,请回复正确的指导方针。

简单回答:否

我假设您的目标是不支付代币所有者的任何费用,因此 approve() 功能也不存在问题。如果不是这种情况,代币所有者可以调用 approve() 函数(为此支付汽油费;允许指定的消费者花费他们的代币),然后消费者可以调用 transferFrom() 指定从哪个地址(批准他们使用代币的所有者)他们想要转移代币。

有一些代币合约允许通过接受代币所有者签署的消息到交易发送者调用的自定义函数来进行元传输——有效地从所有者转移代币和交易发送者支付的所有费用。但这需要 BUSD 合约(以及大多数代币合约)没有实现的自定义实现。