Contract-Development

當我們重新部署一個智能合約時,智能合約是在區塊鏈的同一個區塊上更新還是創建了一個新區塊?

  • June 4, 2022

當我們重新部署智能合約時,智能合約是在創建第一個智能合約的區塊鏈的同一塊上更新還是儲存在新的或不同的塊上?

塊一旦創建就無法修改,因此新部署儲存在新塊上。

來自維基百科,免費的百科全書

區塊鍊是不斷增長的記錄列表,稱為塊,它們安全地連結在一起。每個塊都包含前一個塊的加密雜湊、時間戳和交易數據

每個塊都包含有關它之前的塊的資訊,它們形成一個鏈,每個額外的塊都加強它之前的塊。因此,區塊鏈無法修改其數據,因為一旦記錄,任何給定塊中的數據都無法在不更改所有後續塊的情況下追溯更改。

智能合約程式碼被編譯為字節碼,生成的字節在交易中發送,以持久保存到乙太坊區塊鏈上。這在您部署智能合約時完成一次,因此合約將永遠成為區塊鏈的一部分,並且其地址永遠不會改變。

當您部署新版本的智能合約時,程式碼再次被編譯並在交易中發送到區塊鏈,使用不同的地址創建一個新帳戶,為了與此版本進行互動,您需要使用新地址(除非您使用可升級性)

升級智能合約

可以升級智能合約以修改其行為,同時保留其地址、狀態和余額,但您需要使用多個智能合約來實現這一點。基本思想是使用代理,第一個合約是一個簡單的包裝器或“代理”,使用者直接與之互動並負責將交易轉發到第二個合約,其中包含邏輯

看看這篇文章

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