Ganache
Web3.py 無法與/呼叫合約功能進行交易,合約是否正確部署並鏈同步?
我正在嘗試呼叫部署在 Ganache 中的合約函式。我很確定契約已部署,因為我可以進行交易()並使用其他功能。但是當我呼叫()它時,我得到了這個錯誤:
無法與/呼叫合約功能進行交易,合約部署是否正確且鏈同步?
這是我的函式呼叫:
updated_card = magic_ideas.functions.get_card('731759').call()
以前,我必須使用此程式碼“部署考試”並且它可以正常工作:
t_hash1 = magic_ideas.functions.new_card('title', 'example_text', 'www.card.com', '731759').transact()
我得到一個 t_hash1。然後,當我嘗試
get_card
使用時,.call()
我得到了錯誤。我錯過了什麼?編輯
這是契約聲明:
magic_ideas = w3.eth.contract(address="0x246eCb1dA50199FD7FcC20Ad08C617C52e34b128", abi=abi)
abi 是來自 remix 的複制和粘貼。
採用:
updated_card = magic_ideas.functions.get_card('731759').transact()
代替
updated_card = magic_ideas.functions.get_card('731759').call()
我發現呼叫合約函式首先有效。這應該複製合約函式(不是合約)並返回一個副本,但它也更正了 args 欄位。但是,我相信這僅在參數為零的情況下才有效。
例子:
updated_card = magic_ideas.functions.get_card('731759')().call()
注意前面的額外括號
.call()
。