Contract-Invocation

web3py - 將交易發送到應付契約功能

  • January 29, 2020

我已經部署了一個包含應付功能的智能合約 d fundit(address _to)。現在我正在嘗試使用一個Contract對象將乙太發送到函式:

tx_hash = instance.fundit.sendTransaction(instance2.address, {"from": w3.eth.accounts[0], "value": 1})

但是,我收到以下錯誤:

'Contract' object has no attribute 'fundit'

我該如何解決這個問題?

假設instance是一個Contract對象,在成員內部可以找到呼叫合約函式的類Contract.function。您想要做的正確語法是:

contract_function = instance.functions.fundit(instance2.address)
tx_hash = contract_function.transact({"from": w3.eth.accounts[0], "value": 1})
  1. 在第一行中,您ContractFunction使用您希望在事務中使用的輸入呼叫 。
  2. 在第二行中,您呼叫該ContractFunction.transact方法來執行事務。唯一的參數應該是一個事務字典

您當然可以將這兩行合併為一條,我只是將它們分開以使範例更易於閱讀。

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