Solidity

使用 TestRPC 客戶端時,是否可以在每次 Truffle 編譯和遷移時使用重置標誌?

  • March 14, 2018

我只是花了相當多的時間撓頭,試圖弄清楚為什麼我的松露遷移在嘗試部署到 TestRPC 客戶端時沒有做任何事情。它只是一直說“使用網路 testrpc”,沒有任何後續狀態消息。我嘗試再次執行編譯,在調試會話中多次執行,並且沒有錯誤。

然後我使用“–reset”標誌進行了遷移,發現在遷移過程中沒有找到我添加的新智能合約文件(“未定義”。由於程式碼和合約那裡,所以仍在努力)。

為了將來節省時間,至少在使用 TestRPC 客戶端時,在進行 Truffle 編譯和遷移時始終包含 –reset 標誌有什麼害處嗎?

在主網上執行遷移時以及在測試網上及時使用“–reset”標誌有什麼缺點(假設有)?

“–reset”標誌是否會以類似於“清理”C++ 項目的方式導致編譯速度變慢,從而觸發需要再次將所有源文件重新編譯為目標文件?通過遷移,它是否觸發了將所有智能合約程式碼“重新發布”到部署網路的需求,而不僅僅是更改的智能合約(即 - 只是差異)?

--reset標誌將強制再次執行所有遷移腳本。如果某些契約發生了變化,則進行編譯。您必須再次為整個遷移支付 gas。對於 ganache/testrpc 來說,這不應該是一個問題,它只是一個額外的延遲。但是對於針對公共網路的部署:主網、rinkeby、ropsten 等,不得不等待微小的變化真的很煩人。

--all標誌將強制重新編譯您的所有契約。即使他們沒有改變。編譯所有合約需要更多時間,之後它必須再次執行所有部署腳本。

我發現 truffle 有時會無法確認合約已被修改,並且不會再次編譯它,也不會執行部署腳本。即使有兩個標誌--all--reset它也行不通。如果一切都失敗了,您可以刪除該build/目錄。這將強制重新編譯所有合約並再次執行所有部署腳本。

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