1、问题场景
假设你的平台要支持50种ERC20代币,用户会向你的平台生成的以太坊地址充值,然后你要归集这些平台地址上的代币到你的冷钱包。
问题:你为用户生成的平台充值地址上并没有以太币,因此就没有办法直接用这个地址来调用ERC20代币的trasfer()方法进行归集。我知道gas费用不能省掉,那么能不能使用其他账户为这些支付这些充值地址上的ERC20代币的转账交易?
2、解决方案
要快速掌握区块链应用开发,推荐汇智网的区块链开发系列教程。内容涵盖比特币、以太坊、EOS、超级账本、Tendermint等多种主流区块链 平台,同时支持Java、C#、Python、PHP、JavaScript、Dart等多种开发 语言。
简单说,无论如何你的代币充值地址需要有一定量的以太币来支付gas费用。现有的ERC20标准也不支持以其他账户代付gas费。虽然目前已经有一些提议从不同的角度尝试解决这一问题,但是都还没有形成标准。例如:
- EIP 865:支持代理转账/delegatedTransfer,
- EIP 965:扩展了ERC777,增加了一个支票操作员/Cheque Operator,
这些提议都要求代币合约的修改,因此对于已经存在的ERC20代币而言并没有什么用。
因此显而易见的解决方案,就是向生成的地址发送足量的以太币来涵盖归集代币所需要的gas成本。
3、交易所是怎么做的?
大部分的交易所(如果不是全部的话)采用如下的方案:
- 生成充值地址
- 向地址转入一定量的以太币用来覆盖几次代币转账的gas成本
- 当用户超过一段时间不活跃后收回该地址上的以太币
- 每个用户的所有ERC20代币使用同一充值地址
原文链接:怎么归集ERC20代币 - 汇智网
本文来自投稿,不代表本人立场,如若转载,请注明出处:http://www.souzhinan.com/kj/256975.html