如何使用 Python 与币安智能链合约进行交互

Posted

技术标签:

【中文标题】如何使用 Python 与币安智能链合约进行交互【英文标题】:How to interact with a Binance Smart Chain contract using Python 【发布时间】:2021-05-30 04:01:24 【问题描述】:

我首先尝试使用 python 发送交易:

from web3 import Web3

transaction = 
        'chainId': 97,  # 97: Testnet. 56: main.
        'to': '0xmyaddress',
        'value': 1,
        'gas': 2000000,
        'gasPrice': 13,
        'nonce': 0,
    

infura_url = "https://mainnet.infura.io/v3/my-api-key"
w3 = Web3(Web3.HTTPProvider(infura_url))

key = '0xmykey'
signed = w3.eth.account.signTransaction(transaction, key)

w3.eth.sendRawTransaction(signed.rawTransaction)

给我以下错误:ValueError: 'code': -32000, 'message': 'invalid sender'


现在,我正在尝试与合约交互 - 调用方法并提供输入,但我不确定如何完成此操作。

【问题讨论】:

您似乎正在尝试访问以太坊链而不是币安智能链:https://mainnet.infura.io/v3/my-api-key。据我所知,您无法通过 Infura API 访问 BSC。 是的,谢谢@marsbear——我相信你是对的。我不得不使用 Nodejs 和 typescript 执行我的交易。我会建议其他人也这样做,直到进一步支持 python 的 bsc 扩展。 ethereum.stackexchange.com/questions/92806/… - 也许这个来自 stackexchange 的答案有帮助?除了提到的 infura 之外,还有其他网址 【参考方案1】:

web3bsc 可以解决这个问题,只需卸载 web3 pip3 uninstall web3 然后安装 web3bsc pip3 install web3bsc 您现在可以像往常一样导入 web3:

import web3

bsc = web3.bsc.Bsc("pub_key","priv_key")
w3 = web3.Web3()   # HTTPProvider and Binance endpoint not required

# Your code
transaction = 
    'chainId': 56,       # main. test-net maybe not supported yet
    'to': bsc.get_public_key(),
    'value': 1,
    'gas': 2000000,
    'gasPrice': 13,
    'nonce': 0,


signed = w3.eth.account.signTransaction(transaction, bsc.get_private_key())

w3.eth.sendRawTransaction(signed.rawTransaction)

https://pypi.org/project/web3bsc/

【讨论】:

很有可能这是恶意的 - 信誉为 0 且代码不公开的作者

以上是关于如何使用 Python 与币安智能链合约进行交互的主要内容,如果未能解决你的问题,请参考以下文章

如何将 BSCScan 中的合约部署到币安智能链上?

在币安智能链中部署合约时面临错误

0基础教学_在BSC主链上部署智能合约并验证合约_BSC发币_币安发币

币安智能链BSC分红|通缩燃烧|回滚流动池|慈善钱包 合约部署

币安链合约部署bsc智能链发布token|发币教程

Binance Smart Chain - 将合约从测试网迁移到主网