Go-Ethereum

如何使用 web3.py 發送交易

  • April 30, 2019

我正在嘗試將 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)

希望這可以幫助。

引用自:https://ethereum.stackexchange.com/questions/70240