Web3js
契約 ABI 可以更改嗎?
我正在開發一個使用該
etherscan-api
包的應用程序。我用它來獲取契約 ABI。
問題是我每次呼叫函式時都通過 API 檢索它。
我的問題是:契約 ABI 可以隨時更改嗎?我可以將 ABI json 儲存在數據庫欄位中以減少處理時間嗎?
雖然開發人員可以將“合約可升級性”的概念建構到他們的智能合約邏輯中,但智能合約不能在該過程中更新他們的合約 ABI。
智能合約的暴露功能一旦創建就不可變,因此合約 ABI 也是不可變的。
契約 ABI 永遠不應該改變。您可以安全地使用從合約部署中提取的 ABI。
此外,如果您打算使用,請擴展 @shawn-tabrizi 所說的“契約可升級性”。借助“合約可升級性”,您可以將邏輯和數據分離到單獨的智能合約中。它本質上意味著,我們使用一個合約來實現邏輯,而另一個合約來儲存數據。