主页 > 苹果手机下载imtoken钱包流程 > 转以太坊ERC20代币-python版

转以太坊ERC20代币-python版

在研究过程中,我遇到了一个问题。 如果有人将代币转入交易所的充币地址,交易所如何将这笔资产转入交易所的钱包?

我们都知道所有的资产转移都需要ETH作为旷工费。 按照现在的价格,转一笔资产的价格至少需要50元的ETH,但是在交易所的充值地址一般是没有ETH的(除非你自己收了,不过没转过),那怎么办这些代币依赖于 gas?

为了弄清楚这个问题,我去zb买了几个EOS,先提一下我的钱包以太坊链可以转erc20吗,然后充值看看。

1.购买3个EOS,提现到钱包

搭建以太坊公链节点_ubuntu以太坊私有链_以太坊链可以转erc20吗

失血,买了3个,扣了1个手续费

2.充值金币

ubuntu以太坊私有链_以太坊链可以转erc20吗_搭建以太坊公链节点

图片.png

3. 2天后,扫了一眼区块浏览器

搭建以太坊公链节点_以太坊链可以转erc20吗_ubuntu以太坊私有链

图片.png

嗯,他没帮我拿走,还在充币地址上,可能是金额太小,不够手续费哈哈。 . .

好吧,花了几十个大洋以太坊链可以转erc20吗,才知道这个。 毕竟我没在交易所做过,不知道具体机制。 . .

嗯,单体存储技术还是可以写的,那我们继续从纯技术的角度来看python是如何传递token的

地址有ETH,直接转账

这应该是最直接的传输方式。 前提是账户同时有ETH作为gas。 如果没有,只需转移它。 我不知道有什么好方法。 其实就是调用合约的transfer方法。

from web3 import Web3
web3=Web3(HTTPProvider(...))
contract=web3.eth.contract(abi,address)
web3.personal.unlockAccount(from_address,passphrase,60)
contract.transact({'from':from_address, 'gas': 90000}).transfer(to_address,amount_of_token)

ubuntu以太坊私有链_以太坊链可以转erc20吗_搭建以太坊公链节点

代币转移示例

也可以使用sendTransaction方法,但是参数比较复杂,,

ubuntu以太坊私有链_以太坊链可以转erc20吗_搭建以太坊公链节点

图片.png

ERC20的批准和TransferFrom

这是在ERC20标准中提出的。 对某个地址的授权允许该地址转移该地址的令牌。 授权后,gas将通过授权账户支付。 你可能没有eth,但是授权步骤还是要消耗gas的。 . ,好处是只要授权后不超过限额,充币地址不需要gas,还不如全部转到交易所~~

contract.transact({'from':sub_address, 'gas': 90000}).approve(gas_address,amount_of_token) #授权gas_address可以从sub_address转移amount_of_token的代币
contract.transact({'from':gas_address, 'gas': 90000}).transferFrom(sub_address,wallet_address,1) #授权转移

搭建以太坊公链节点_以太坊链可以转erc20吗_ubuntu以太坊私有链

使用transferfrom后授权金额变少