以太坊服务器是否可代用户执行链上交易并由用户承担gas费用?
ERC20部署gas费转嫁方案解答
方案可行性:代发交易用户承担gas的实现方式
目前有两类成熟方案可以实现你要的需求:
- 客户端签名广播方案
服务端只负责返回部署ERC20合约的标准化交易构造参数,用户在自己的钱包客户端完成交易签名后,把签名后的完整交易串传给服务端,服务端只需要将交易串广播到链上即可。整个交易的发起方(from地址)是用户本人,gas费直接从用户地址扣除。 - 元交易/EIP-2771中继方案
如果你不希望用户感知到完整的交易构造流程,可以提前部署符合EIP-2771标准的中继转发合约。用户只需要在客户端对部署ERC20的参数、自身地址、gas费上限做签名,将签名和参数提交给服务端,服务端作为中继方发起交易,转发合约验证签名合法后,会自动从用户地址划转对应gas费给服务端中继地址,最终gas成本仍由用户承担。
客户端签名后服务端广播的gas费问题
该方案完全不需要服务器支付gas费:
以太坊及EVM兼容链的规则是,交易gas费由交易的
from字段对应的地址全额承担。客户端签名后的交易from地址固定为用户地址,服务端仅做广播操作,不需要修改交易内容、也不需要用服务端私钥对交易做任何签名,因此不会产生任何链上gas成本。
注意事项
- 客户端侧需要提前对用户提交的ERC20参数、用户地址余额做前置校验,避免参数非法或用户余额不足以支付gas导致交易失败,引发用户投诉。
- 服务端收到签名后的交易后,可先在节点侧做合法性校验,避免恶意用户提交无效交易浪费节点广播资源。
内容的提问来源于stack exchange,提问作者Jesley Cáceres Marcelino
相关产品推荐
相关产品推荐

