如何使用 web3.py 在钱包之间转移 ERC20 代币

Posted

技术标签:

【中文标题】如何使用 web3.py 在钱包之间转移 ERC20 代币【英文标题】:How to transfer an ERC20 token between wallets with web3.py 【发布时间】:2020-10-15 08:19:07 【问题描述】:

我想知道,使用 web3.py 在两个钱包之间转移 ERC20 代币的正确方法是什么?我正在测试 Rinkeby 测试网络上的所有内容。

这是我尝试过的...

from ethtoken.abi import EIP20_ABI
from web3 import Web3

token_from = "from_address"
token_to = "to_address"
token_to_private_key = "your_private_key"

#w3 = Web3(Web3.HTTPProvider(infura_url))


contractAddress = "contract_address"
infura_url = "https://rinkeby.infura.io/v3/your_infura_key"
# Fill in your infura API key here
w3 = Web3(Web3.HTTPProvider(infura_url))

contract = w3.eth.contract(address=contractAddress, abi=EIP20_ABI)

nonce = w3.eth.getTransactionCount(token_from)  



# Build a transaction that invokes this contract's function, called transfer
token_txn = contract.functions.transfer(
     token_to,
     1,
 ).buildTransaction(
     'chainId': 1,
     'gas': 70000,
     'gasPrice': w3.toWei('1', 'gwei'),
     'nonce': nonce,
 )


signed_txn = w3.eth.account.signTransaction(token_txn, private_key=token_to_private_key)

w3.eth.sendRawTransaction(signed_txn.rawTransaction)  

当我尝试使用我的地址和私钥运行此程序时,我收到错误:ValueError: 'code': -32000, 'message': 'invalid sender'

我该如何解决这个问题?或者......有没有更好的方法来使用 web3.py 传输 erc20 令牌?

感谢任何帮助。

谢谢

【问题讨论】:

【参考方案1】:

https://ethereum.stackexchange.com/questions/17051/how-to-select-a-network-id-or-is-there-a-list-of-network-ids/17101#17101

嗨!你应该在 Rinkeby 测试网中使用 'chainId': 4

【讨论】:

以上是关于如何使用 web3.py 在钱包之间转移 ERC20 代币的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 geth 在钱包之间转移代币

如何使用 web3 将以太坊从一个钱包转移到另一个钱包?

如何使用 python/solidity 生成钱包和转移/铸造代币给他们?

web3.py SendTransaction 只在挂起

比特币最大软件钱包Blockchain增加以太坊支持

最大的比特币软件钱包Blockchain开始支持以太坊