[Ethereum] How to interact with a BSC contract using Python

pythonweb3.py

Binance Smart Chain. I've first tried sending a transaction with 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)

Giving me the following error: ValueError: {'code': -32000, 'message': 'invalid sender'}


Now, I am trying to interact with a contract – calling methods and giving inputs, but I am unsure how to accomplish this.

Best Answer

Infura does not support 56 nor 97 chain ids. These are for BSC, infura only supports Ethereum I suggest using Binance official node url for BSC Mainnet (56): https://bsc-dataseed.binance.org/ Or chainId 97 BSC Testnet: https://data-seed-prebsc-1-s1.binance.org:8545/