Contract-Invocation
web3py - 將交易發送到應付契約功能
我已經部署了一個包含應付功能的智能合約 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})
- 在第一行中,您
ContractFunction
使用您希望在事務中使用的輸入呼叫 。- 在第二行中,您呼叫該
ContractFunction.transact
方法來執行事務。唯一的參數應該是一個事務字典。您當然可以將這兩行合併為一條,我只是將它們分開以使範例更易於閱讀。