怎么归集无余额地址的ERC20代币?

有一个在开发交易平台时常见的问题是:为用户生成的以太坊地址没有以太币,那么怎么归集用户充进来的ERC20代币?能不能用一个其他地址来为这些ERC20代币的转账交易代付gas费?本文将解答这一问题。

有一个在开发交易平台时常见的问题是:**为用户生成的以太坊地址没有以太币,那么怎么归集用户充进来的ERC20代币**?能不能用一个其他地址来为这些ERC20代币的转账交易代付gas费?本文将解答这一问题。 ## 1、问题场景 假设你的平台要支持50种ERC20代币,用户会向你的平台生成的以太坊地址充值,然后你要归集这些平台地址上的代币到你的冷钱包。 问题:你为用户生成的平台充值地址上并没有以太币,因此就没有办法直接用这个地址来调用ERC20代币的`trasfer()`方法进行归集。我知道 gas费用不能省掉,那么能不能使用其他账户为这些充值地址上的ERC20代币的转账交易支付? ## 2、解决方案 简单说,无论如何你的代币充值地址需要有一定量的以太币来支付gas费用。 现有的ERC20标准也不支持以其他账户代付gas费。虽然目前已经有一些提议 从不同的角度尝试解决这一问题,但是都还没有形成标准。例如: * EIP 865:支持代理转账/delegatedTransfer,详见[EIP 865](https://github.com/ethereum/EIPs/issues/865) * EIP 955:扩展了ERC777,增加了一个支票操作员/Cheque Operator,详见[EIP 965](https://github.com/ethereum/EIPs/issues/965) 这些提议都要求代币合约的修改,因此对于已经存在的ERC20代币而言并没有什么用。 因此显而易见的解决方案,就是向生成的地址发送足量的以太币来涵盖归集代币所需要的gas成本。 ## 3、交易所是怎么做的? 大部分的交易所(如果不是全部的话)采用如下的方案: * 生成充值地址 * 向地址转入一定量的以太币用来覆盖几次代币转账的gas成本 * 当用户超过一段时间不活跃后收回该地址上的以太币 * 每个用户的所有ERC20代币使用同一充值地址 本文转自:http://blog.hubwiz.com/2019/11/09/transfer-erc20-without-ether/

有一个在开发交易平台时常见的问题是:为用户生成的以太坊地址没有以太币,那么怎么归集用户充进来的ERC20代币?能不能用一个其他地址来为这些ERC20代币的转账交易代付gas费?本文将解答这一问题。

1、问题场景

假设你的平台要支持50种ERC20代币,用户会向你的平台生成的以太坊地址充值,然后你要归集这些平台地址上的代币到你的冷钱包。

问题:你为用户生成的平台充值地址上并没有以太币,因此就没有办法直接用这个地址来调用ERC20代币的trasfer()方法进行归集。我知道 gas费用不能省掉,那么能不能使用其他账户为这些充值地址上的ERC20代币的转账交易支付?

2、解决方案

简单说,无论如何你的代币充值地址需要有一定量的以太币来支付gas费用。 现有的ERC20标准也不支持以其他账户代付gas费。虽然目前已经有一些提议 从不同的角度尝试解决这一问题,但是都还没有形成标准。例如:

  • EIP 865:支持代理转账/delegatedTransfer,详见EIP 865
  • EIP 955:扩展了ERC777,增加了一个支票操作员/Cheque Operator,详见EIP 965

这些提议都要求代币合约的修改,因此对于已经存在的ERC20代币而言并没有什么用。

因此显而易见的解决方案,就是向生成的地址发送足量的以太币来涵盖归集代币所需要的gas成本。

3、交易所是怎么做的?

大部分的交易所(如果不是全部的话)采用如下的方案:

  • 生成充值地址
  • 向地址转入一定量的以太币用来覆盖几次代币转账的gas成本
  • 当用户超过一段时间不活跃后收回该地址上的以太币
  • 每个用户的所有ERC20代币使用同一充值地址

本文转自:http://blog.hubwiz.com/2019/11/09/transfer-erc20-without-ether/

区块链技术网。

  • 发表于 2020-02-02 23:21
  • 阅读 ( 2700 )
  • 学分 ( 8 )
  • 分类:交易所

评论