使用 w3.eth.contract() 部署智能合约时出错:"The method eth_sendTransaction is not supported"

Error when deploying a smart contract with w3.eth.contract(): "The method eth_sendTransaction is not supported"

我正在使用 Web3.py 和经过许可的 Hyperledger Besu 网络。

当尝试使用 w3.eth.contract(...) 方法将智能合约部署到网络中时,出现以下错误:

ValueError: {'code': -32604, 'message': 'The method eth_sendTransaction is not supported. Use eth_sendRawTransaction to send a signed transaction to Besu.'}

我想 eth_sendTransaction 在执行 w3.eth.contract(...) 时被调用。有没有其他方法可以部署合约而不会遇到这个问题?

您可能会使用 Infura 节点或类似节点。

You need to sign the transaction locally with Web3.py and have your app to manage the private key for you.

您需要在发送前签署交易,更多详情:https://web3py.readthedocs.io/en/stable/web3.eth.account.html#sign-a-transaction