Go-Ethereum
如何使用 web3.py 發送交易
我正在嘗試將 web3.py 與 infura.io 一起使用來與我的智能合約進行互動。這是我的簡單迎賓契約程式碼
pragma solidity ^0.5.7; contract greeter{ string greeting; function greet(string memory _greeting)public { greeting=_greeting; } function getGreeting() public view returns(string memory) { return greeting; } }
我將它部署在 ropsten 測試網上。使用 web3.py,我可以從鏈中讀取問候語。我想用
greet
函式添加新的問候字元串。但不知何故,我不知道簽署交易。誰能幫助我了解如何使用 web3.py 簽署交易並在契約中添加問候語?
在 web3py 中,您可以使用buildTransaction方法:
myContract.functions.myMethod(*args, **kwargs).buildTransaction(transaction)
在您的範例中,您可以執行以下操作:
tx = greeter.functions.greet("newGreet").buildTransaction({'nonce': web3.eth.getTransactionCount('your accountaddress')}}
然後您可以使用以下命令簽署交易:
signed_tx = web3.eth.account.signTransaction(tx, private_key='your privateKey')
最後,您可以發送使用以下命令簽名的交易:
web3.eth.sendRawTransaction(signed_tx.rawTransaction)
希望這可以幫助。