Go-Ethereum
辨識何時在網路中再次部署智能合約
我想從腳本自動響應智能合約。有什麼方法可以確定合約何時在網路中再次部署以發送響應?
更新:如果解決方案使用事件,如果您不呼叫任何函式,當合約發送事件時,如何從啟動的 dapp 的腳本中辨識?
場景:Dapp 執行。再次部署合約並向腳本發送事件。腳本應該在不呼叫任何函式的情況下獲取事件。
換句話說,如何保持腳本“監聽”直到接收到事件。
有幾種方法可以做到這一點:
活動
正如@Nulik 在上面的評論中所說,您可以設置一個工作人員來讀取契約中的所有事件並對這些事件執行您的操作。如果契約沒有發出任何事件來檢查您正在嘗試做什麼,這將不起作用。
呼叫合約
您可以設置一個工人(類似於上面提到的那個),它不斷地從契約中呼叫相關的公共變數來讀取它們是否已經更新。它的功能類似於事件,因為您可以查找合約的更新並根據這些更新執行操作。如果您要查找的內容不會更改狀態或更新合約中的公共變數,則此方法不起作用。
看地址
最終的解決方案可能是簡單地設置一個觀察者來觀察合約本身的地址並檢查它是否有傳入的交易。如果你正在尋找一個特定的函式,你知道每個事務與數據一起呼叫該函式將是你正在尋找的(當一個函式被呼叫時,前 4 個字節的數據是方法ID)。從這裡,您可以分析您正在搜尋的任何數據。